diff --git a/Cargo.lock b/Cargo.lock index 1d8a2c1f2..5d4255658 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -85,7 +85,7 @@ dependencies = [ [[package]] name = "alien-agent" -version = "1.10.3" +version = "1.10.4" dependencies = [ "aegis", "alien-client-config", @@ -127,7 +127,7 @@ dependencies = [ [[package]] name = "alien-aws-clients" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-aws-clients", "alien-client-core", @@ -169,7 +169,7 @@ dependencies = [ [[package]] name = "alien-azure-clients" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-client-core", "alien-core", @@ -212,7 +212,7 @@ dependencies = [ [[package]] name = "alien-bindings" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-aws-clients", "alien-azure-clients", @@ -262,7 +262,7 @@ dependencies = [ [[package]] name = "alien-build" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-build", "alien-core", @@ -296,7 +296,7 @@ dependencies = [ [[package]] name = "alien-cli" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-bindings", "alien-build", @@ -365,7 +365,7 @@ dependencies = [ [[package]] name = "alien-cli-common" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-core", "alien-deployment", @@ -379,7 +379,7 @@ dependencies = [ [[package]] name = "alien-client-config" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-aws-clients", "alien-azure-clients", @@ -397,7 +397,7 @@ dependencies = [ [[package]] name = "alien-client-core" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-error", "anyhow", @@ -416,7 +416,7 @@ dependencies = [ [[package]] name = "alien-cloudformation" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-core", "alien-error", @@ -431,7 +431,7 @@ dependencies = [ [[package]] name = "alien-commands" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-aws-clients", "alien-azure-clients", @@ -465,7 +465,7 @@ dependencies = [ [[package]] name = "alien-commands-client" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-core", "base64 0.22.1", @@ -480,7 +480,7 @@ dependencies = [ [[package]] name = "alien-core" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-error", "alien-macros", @@ -511,7 +511,7 @@ dependencies = [ [[package]] name = "alien-deploy-cli" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-agent", "alien-cli-common", @@ -549,7 +549,7 @@ dependencies = [ [[package]] name = "alien-deployment" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-aws-clients", "alien-azure-clients", @@ -579,7 +579,7 @@ dependencies = [ [[package]] name = "alien-error" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-error-derive", "anyhow", @@ -592,7 +592,7 @@ dependencies = [ [[package]] name = "alien-error-derive" -version = "1.10.3" +version = "1.10.4" dependencies = [ "proc-macro2", "quote", @@ -602,7 +602,7 @@ dependencies = [ [[package]] name = "alien-gcp-clients" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-client-core", "alien-core", @@ -635,10 +635,11 @@ dependencies = [ [[package]] name = "alien-helm" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-core", "alien-error", + "alien-helm", "indexmap 2.14.0", "insta", "serde", @@ -649,7 +650,7 @@ dependencies = [ [[package]] name = "alien-infra" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-aws-clients", "alien-azure-clients", @@ -709,7 +710,7 @@ dependencies = [ [[package]] name = "alien-k8s-clients" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-client-core", "alien-core", @@ -738,7 +739,7 @@ dependencies = [ [[package]] name = "alien-local" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-bindings", "alien-build", @@ -775,7 +776,7 @@ dependencies = [ [[package]] name = "alien-macros" -version = "1.10.3" +version = "1.10.4" dependencies = [ "proc-macro2", "quote", @@ -784,7 +785,7 @@ dependencies = [ [[package]] name = "alien-manager" -version = "1.10.3" +version = "1.10.4" dependencies = [ "aegis", "alien-bindings", @@ -843,7 +844,7 @@ dependencies = [ [[package]] name = "alien-manager-api" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-error", "chrono", @@ -860,7 +861,7 @@ dependencies = [ [[package]] name = "alien-permissions" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-core", "alien-error", @@ -879,7 +880,7 @@ dependencies = [ [[package]] name = "alien-platform-api" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-error", "chrono", @@ -896,7 +897,7 @@ dependencies = [ [[package]] name = "alien-preflights" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-core", "alien-error", @@ -913,7 +914,7 @@ dependencies = [ [[package]] name = "alien-runtime" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-bindings", "alien-commands", @@ -971,14 +972,14 @@ dependencies = [ [[package]] name = "alien-sdk" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-bindings", ] [[package]] name = "alien-terraform" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-core", "alien-error", @@ -993,7 +994,7 @@ dependencies = [ [[package]] name = "alien-test" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-aws-clients", "alien-azure-clients", @@ -1039,7 +1040,7 @@ dependencies = [ [[package]] name = "alien-test-app" -version = "1.10.3" +version = "1.10.4" dependencies = [ "alien-bindings", "alien-error", diff --git a/client-sdks/manager/openapi.json b/client-sdks/manager/openapi.json index d951b290c..3645aa324 100644 --- a/client-sdks/manager/openapi.json +++ b/client-sdks/manager/openapi.json @@ -932,6 +932,46 @@ ] } }, + "/v1/rejoin": { + "post": { + "tags": [ + "sync" + ], + "summary": "`POST /v1/rejoin` — re-acquire a deployment-scoped sync token for an\nexisting deployment by name. The OSS handler is intentionally lean:\nthe dg-token caller specifies the name, the store looks up the row,\nand a fresh `Deployment` token is minted and returned. Returns\n`404 Deployment not found` when no row matches — agents should fall\nback to `/v1/initialize` in that case.", + "description": "Distinct from `/v1/initialize`'s idempotency branch because the agent\nwants an explicit, distinguishable code path for \"I lost local state,\nplease re-attach me\" vs \"I'm a brand-new pod claiming a name\". The\nplatform-mode override forwards this to the SaaS rejoin endpoint\nwhere audit / event semantics differ.", + "operationId": "rejoin", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RejoinRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Existing deployment rejoined; fresh token returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RejoinResponse" + } + } + } + }, + "404": { + "description": "No deployment with that name in caller's deployment group" + } + }, + "security": [ + { + "bearer": [] + } + ] + } + }, "/v1/releases": { "get": { "tags": [ @@ -1402,17 +1442,55 @@ "deploymentId" ], "properties": { + "agentArch": { + "type": [ + "string", + "null" + ], + "description": "Agent host arch — `x86_64` / `aarch64`." + }, + "agentImageRepository": { + "type": [ + "string", + "null" + ], + "description": "Image repository the agent was pulled from (no tag), injected by\nthe chart at install time. Surfaced in the dashboard so admins see\nthe registry a pinned tag will be pulled from. Optional and\nKubernetes-only." + }, + "agentOs": { + "type": [ + "string", + "null" + ], + "description": "Agent host OS — `linux` / `macos` / `windows`." + }, + "agentVersion": { + "type": [ + "string", + "null" + ], + "description": "Agent binary version (from `env!(\"CARGO_PKG_VERSION\")` at build time).\nLets the manager build fleet inventory and decide whether to send an\n`agent_target` in the response." + }, "currentState": { "description": "Current deployment state as reported by the agent.\nWhen present, the manager updates the deployment record to reflect\nthe agent's progress (status, stack_state, etc.)." }, "deploymentId": { "type": "string" + }, + "regime": { + "type": [ + "string", + "null" + ], + "description": "Supervisor regime — `os-service` / `kubernetes`." } } }, "AgentSyncResponse": { "type": "object", "properties": { + "agentTarget": { + "description": "Desired agent self-update target. The payload carries either `binary`\n(OS-service flow) or `helm` (Kubernetes flow); the agent picks the\none matching its regime." + }, "commandsUrl": { "type": [ "string", @@ -5991,6 +6069,30 @@ "createdAt" ], "properties": { + "agentArch": { + "type": [ + "string", + "null" + ] + }, + "agentImageRepository": { + "type": [ + "string", + "null" + ] + }, + "agentOs": { + "type": [ + "string", + "null" + ] + }, + "agentVersion": { + "type": [ + "string", + "null" + ] + }, "createdAt": { "type": "string" }, @@ -6050,6 +6152,12 @@ "type": "string", "description": "Required by the platform-SDK Deployment schema. Standalone is\nsingle-tenant; reuse the same synthetic project id used in the\ndeployment-groups route." }, + "regime": { + "type": [ + "string", + "null" + ] + }, "retryRequested": { "type": "boolean" }, @@ -6059,6 +6167,12 @@ "status": { "type": "string" }, + "targetAgentVersion": { + "type": [ + "string", + "null" + ] + }, "updatedAt": { "type": [ "string", @@ -11139,6 +11253,33 @@ } } }, + "RejoinRequest": { + "type": "object", + "description": "`POST /v1/rejoin` — re-acquire a deployment-scoped sync token for an\nagent whose persistent state was wiped (e.g. emptyDir on pod restart).\n\nThe agent calls this when `/v1/initialize` returns a name-conflict\nerror: the deployment row already exists, so creating it would 409,\nbut the agent legitimately needs a new sync token to keep operating\nagainst it. Auth is the same dg bearer the chart originally mounted.\n\n`name` is required — without it the server can't disambiguate which\nrow to reattach to.", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + } + } + }, + "RejoinResponse": { + "type": "object", + "required": [ + "deploymentId", + "token" + ], + "properties": { + "deploymentId": { + "type": "string" + }, + "token": { + "type": "string" + } + } + }, "ReleaseRequest": { "type": "object", "required": [ diff --git a/client-sdks/manager/rust/openapi-3.0.json b/client-sdks/manager/rust/openapi-3.0.json index 421a5b243..b8695f8e5 100644 --- a/client-sdks/manager/rust/openapi-3.0.json +++ b/client-sdks/manager/rust/openapi-3.0.json @@ -932,6 +932,46 @@ ] } }, + "/v1/rejoin": { + "post": { + "tags": [ + "sync" + ], + "summary": "`POST /v1/rejoin` — re-acquire a deployment-scoped sync token for an\nexisting deployment by name. The OSS handler is intentionally lean:\nthe dg-token caller specifies the name, the store looks up the row,\nand a fresh `Deployment` token is minted and returned. Returns\n`404 Deployment not found` when no row matches — agents should fall\nback to `/v1/initialize` in that case.", + "description": "Distinct from `/v1/initialize`'s idempotency branch because the agent\nwants an explicit, distinguishable code path for \"I lost local state,\nplease re-attach me\" vs \"I'm a brand-new pod claiming a name\". The\nplatform-mode override forwards this to the SaaS rejoin endpoint\nwhere audit / event semantics differ.", + "operationId": "rejoin", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RejoinRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Existing deployment rejoined; fresh token returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RejoinResponse" + } + } + } + }, + "404": { + "description": "No deployment with that name in caller's deployment group" + } + }, + "security": [ + { + "bearer": [] + } + ] + } + }, "/v1/releases": { "get": { "tags": [ @@ -1392,17 +1432,45 @@ "deploymentId" ], "properties": { + "agentArch": { + "type": "string", + "description": "Agent host arch — `x86_64` / `aarch64`.", + "nullable": true + }, + "agentImageRepository": { + "type": "string", + "description": "Image repository the agent was pulled from (no tag), injected by\nthe chart at install time. Surfaced in the dashboard so admins see\nthe registry a pinned tag will be pulled from. Optional and\nKubernetes-only.", + "nullable": true + }, + "agentOs": { + "type": "string", + "description": "Agent host OS — `linux` / `macos` / `windows`.", + "nullable": true + }, + "agentVersion": { + "type": "string", + "description": "Agent binary version (from `env!(\"CARGO_PKG_VERSION\")` at build time).\nLets the manager build fleet inventory and decide whether to send an\n`agent_target` in the response.", + "nullable": true + }, "currentState": { "description": "Current deployment state as reported by the agent.\nWhen present, the manager updates the deployment record to reflect\nthe agent's progress (status, stack_state, etc.)." }, "deploymentId": { "type": "string" + }, + "regime": { + "type": "string", + "description": "Supervisor regime — `os-service` / `kubernetes`.", + "nullable": true } } }, "AgentSyncResponse": { "type": "object", "properties": { + "agentTarget": { + "description": "Desired agent self-update target. The payload carries either `binary`\n(OS-service flow) or `helm` (Kubernetes flow); the agent picks the\none matching its regime." + }, "commandsUrl": { "type": "string", "description": "Public URL for the commands API. Cloud-deployed workers use this\nto poll for pending commands instead of the agent's local sync URL.", @@ -5224,6 +5292,22 @@ "createdAt" ], "properties": { + "agentArch": { + "type": "string", + "nullable": true + }, + "agentImageRepository": { + "type": "string", + "nullable": true + }, + "agentOs": { + "type": "string", + "nullable": true + }, + "agentVersion": { + "type": "string", + "nullable": true + }, "createdAt": { "type": "string" }, @@ -5267,6 +5351,10 @@ "type": "string", "description": "Required by the platform-SDK Deployment schema. Standalone is\nsingle-tenant; reuse the same synthetic project id used in the\ndeployment-groups route." }, + "regime": { + "type": "string", + "nullable": true + }, "retryRequested": { "type": "boolean" }, @@ -5276,6 +5364,10 @@ "status": { "type": "string" }, + "targetAgentVersion": { + "type": "string", + "nullable": true + }, "updatedAt": { "type": "string", "nullable": true @@ -9500,6 +9592,33 @@ } } }, + "RejoinRequest": { + "type": "object", + "description": "`POST /v1/rejoin` — re-acquire a deployment-scoped sync token for an\nagent whose persistent state was wiped (e.g. emptyDir on pod restart).\n\nThe agent calls this when `/v1/initialize` returns a name-conflict\nerror: the deployment row already exists, so creating it would 409,\nbut the agent legitimately needs a new sync token to keep operating\nagainst it. Auth is the same dg bearer the chart originally mounted.\n\n`name` is required — without it the server can't disambiguate which\nrow to reattach to.", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + } + } + }, + "RejoinResponse": { + "type": "object", + "required": [ + "deploymentId", + "token" + ], + "properties": { + "deploymentId": { + "type": "string" + }, + "token": { + "type": "string" + } + } + }, "ReleaseRequest": { "type": "object", "required": [ diff --git a/client-sdks/platform/openapi.json b/client-sdks/platform/openapi.json index 6d31a10cd..f7cb8a7a4 100644 --- a/client-sdks/platform/openapi.json +++ b/client-sdks/platform/openapi.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"title":"Alien API","version":"1.0.0","contact":{"name":"Alien Team","url":"https://alien.dev"}},"servers":[{"url":"https://api.alien.dev","description":"Alien API - Production"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key for authentication, must be provided as a Bearer token. Generate an API key at https://alien.dev/api-keys"}},"schemas":{"Membership":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"role":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","logoUrl","role","createdAt"],"additionalProperties":false},"APIError":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."}},"required":["code","message","internal"]},"UserProfile":{"type":"object","properties":{"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","description":"User's email address"},"name":{"type":"string","description":"User's display name"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"},"githubUsername":{"type":"string","nullable":true,"description":"Linked GitHub username"},"cliConnected":{"type":"boolean","description":"Whether this user has ever authenticated a request from the Alien CLI. Latched on first CLI request, never cleared."},"company":{"type":"string","nullable":true,"description":"Company name collected during profile setup."},"acquisitionSource":{"type":"string","nullable":true,"enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other",null],"description":"How the user heard about Alien."},"acquisitionSourceDetail":{"type":"string","nullable":true,"description":"Additional acquisition source detail when the source is other."},"useCases":{"type":"string","nullable":true,"description":"What the user is hoping to use Alien for."},"profileSetupCompletedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the user completed the required profile setup dialog."},"profileSetupVersion":{"type":"integer","nullable":true,"description":"Version of the required profile setup dialog the user completed."}},"required":["id","email","name","image","githubUsername","cliConnected","company","acquisitionSource","acquisitionSourceDetail","useCases","profileSetupCompletedAt","profileSetupVersion"],"additionalProperties":false},"UserProfileSetupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"},"company":{"type":"string","minLength":1,"maxLength":120,"description":"Company name"},"acquisitionSource":{"type":"string","enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other"],"description":"How the user heard about Alien"},"acquisitionSourceDetail":{"type":"string","minLength":1,"maxLength":200,"description":"Required when acquisitionSource is other"},"useCases":{"type":"string","maxLength":2000,"description":"What the user is hoping to use Alien for"}},"required":["name","company","acquisitionSource"],"additionalProperties":false},"GitNamespace":{"type":"object","properties":{"id":{"type":"number","nullable":true},"name":{"type":"string"},"slug":{"type":"string"},"installationId":{"type":"number","nullable":true},"type":{"type":"string","enum":["team","user"]},"provider":{"type":"string","enum":["github"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","slug","installationId","type","provider","createdAt"],"additionalProperties":false},"GitRepository":{"type":"object","properties":{"name":{"type":"string"},"private":{"type":"boolean"},"defaultBranch":{"type":"string"},"pushedAt":{"type":"string","format":"date-time"}},"required":["name","private","defaultBranch"],"additionalProperties":false},"Subject":{"oneOf":[{"$ref":"#/components/schemas/UserSubject"},{"$ref":"#/components/schemas/ServiceAccountSubject"}],"discriminator":{"propertyName":"kind","mapping":{"user":"#/components/schemas/UserSubject","serviceAccount":"#/components/schemas/ServiceAccountSubject"}},"description":"Authenticated principal that can be either a user (with workspace-scoped permissions) or a service account (with configurable scope and role)"},"UserSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["user"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","format":"email","description":"User's email address"},"workspaceId":{"type":"string","description":"ID of the workspace the user is authenticated within"},"workspaceName":{"type":"string","description":"Name of the workspace the user is authenticated within"},"role":{"$ref":"#/components/schemas/UserRole"}},"required":["kind","id","email","workspaceId","role"],"description":"Authenticated user subject with workspace-scoped permissions"},"UserRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"User's role within the workspace","example":"workspace.member"},"ServiceAccountSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["serviceAccount"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique service account identifier (API key ID)"},"workspaceId":{"type":"string","description":"ID of the workspace the service account belongs to"},"workspaceName":{"type":"string","description":"Name of the workspace the service account belongs to"},"scope":{"$ref":"#/components/schemas/SubjectScope"},"role":{"$ref":"#/components/schemas/Role"}},"required":["kind","id","workspaceId","scope","role"],"description":"Authenticated service account subject with scoped permissions (workspace, project, or deployment level)"},"SubjectScope":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["workspace"],"description":"Workspace-scoped access"}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["project"],"description":"Project-scoped access"},"projectId":{"type":"string","description":"ID of the specific project this scope applies to"}},"required":["type","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment"],"description":"Deployment-scoped access"},"deploymentId":{"type":"string","description":"ID of the specific deployment this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"}},"required":["type","deploymentId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"],"description":"Deployment group-scoped access"},"deploymentGroupId":{"type":"string","description":"ID of the specific deployment group this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"}},"required":["type","deploymentGroupId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["manager"],"description":"Manager-scoped access"},"managerId":{"type":"string","description":"ID of the specific manager this scope applies to"}},"required":["type","managerId"]}],"description":"Authorization scope defining what resources this service account can access"},"Role":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"$ref":"#/components/schemas/ProjectRole"},{"$ref":"#/components/schemas/DeploymentRole"},{"$ref":"#/components/schemas/DeploymentGroupRole"},{"$ref":"#/components/schemas/ManagerRole"}],"description":"Role defining what actions this service account can perform within its scope","example":"workspace.member"},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"ProjectRole":{"type":"string","enum":["project.viewer","project.developer"],"description":"Role for project-scoped service accounts","example":"project.developer"},"DeploymentRole":{"type":"string","enum":["deployment.viewer","deployment.manager","deployment.telemetry-writer"],"description":"Role for deployment-scoped service accounts","example":"deployment.manager"},"DeploymentGroupRole":{"type":"string","enum":["deployment-group.deployer"],"description":"Role for deployment group-scoped service accounts","example":"deployment-group.deployer"},"ManagerRole":{"type":"string","enum":["manager.runtime"],"description":"Role for manager-scoped service accounts","example":"manager.runtime"},"Workspace":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name.","example":"my-workspace"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"onboardingDismissedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the Getting Started walkthrough was dismissed or completed for this workspace. Null means it has never been dismissed; the dashboard auto-promotes the walkthrough until this is set."},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","onboardingDismissedAt","createdAt"],"additionalProperties":false},"WorkspaceMember":{"type":"object","properties":{"userId":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"image":{"type":"string","nullable":true},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"joinedAt":{"type":"string","format":"date-time"}},"required":["userId","email","name","image","role","joinedAt"],"additionalProperties":false},"ProjectListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"deploymentCount":{"type":"number"},"latestRelease":{"$ref":"#/components/schemas/ProjectReleaseInfo"}}}]},"DeploymentPortalAppearancePreset":{"type":"string","enum":["clean","technical","enterprise","playful","minimal"],"default":"clean","description":"Curated visual style for the deployment portal."},"DeploymentPortalAccentColor":{"type":"string","enum":["blue","purple","green","orange","pink","slate"],"default":"blue","description":"Accent color used for highlights and primary actions."},"DeploymentPortalDensity":{"type":"string","enum":["comfortable","compact"],"default":"comfortable","description":"Layout density for portal content."},"ProjectReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","gitMetadata","createdAt"]},"GitMetadata":{"type":"object","nullable":true,"properties":{"commitSha":{"type":"string","nullable":true,"maxLength":40,"description":"The hash of the commit","example":"dc36199b2234c6586ebe05ec94078a895c707e29"},"commitMessage":{"type":"string","nullable":true,"maxLength":1024,"description":"The commit message","example":"add method to measure Interaction to Next Paint (INP) (#36490)"},"commitRef":{"type":"string","nullable":true,"maxLength":256,"description":"The branch or tag on which the commit was made","example":"main"},"commitDate":{"type":"string","nullable":true,"format":"date-time","description":"The date and time when the commit was created","example":"2026-03-16T12:00:00Z"},"dirty":{"type":"boolean","nullable":true,"description":"Whether or not there have been modifications to the working tree since the latest commit","example":true},"remoteUrl":{"type":"string","nullable":true,"maxLength":2048,"description":"The git repository's remote origin url","example":"https://github.com/alienplatform/alien"},"commitAuthorName":{"type":"string","nullable":true,"maxLength":256,"description":"The name of the author of the commit (from git config)","example":"John Doe"},"commitAuthorEmail":{"type":"string","nullable":true,"maxLength":256,"format":"email","description":"The email of the author of the commit (from git config)","example":"john@example.com"},"commitAuthorLogin":{"type":"string","nullable":true,"maxLength":256,"description":"The provider username of the commit author (e.g., GitHub login), resolved server-side from the commit email","example":"johndoe"},"commitAuthorAvatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"The avatar URL of the commit author, resolved server-side from the provider login","example":"https://github.com/johndoe.png"},"provider":{"$ref":"#/components/schemas/GitProvider"}}},"GitProvider":{"oneOf":[{"$ref":"#/components/schemas/GitHubProvider"},{"$ref":"#/components/schemas/GitLabProvider"},{"nullable":true}],"description":"Provider-specific repository information, resolved server-side from remoteUrl"},"GitHubProvider":{"type":"object","properties":{"type":{"type":"string","enum":["github"]},"org":{"type":"string","maxLength":256,"description":"Repository owner (user or organization)"},"repo":{"type":"string","maxLength":256,"description":"Repository name"}},"required":["type","org","repo"]},"GitLabProvider":{"type":"object","properties":{"type":{"type":"string","enum":["gitlab"]},"namespace":{"type":"string","maxLength":256,"description":"Group/project namespace"},"project":{"type":"string","maxLength":256,"description":"Project name"}},"required":["type","namespace","project"]},"Project":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","name","createdAt","workspaceId"]},"ProjectIDOrNamePathParam":{"type":"string","maxLength":100,"description":"Project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"ProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","redirectUris"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"hasClientSecret":{"type":"boolean","enum":[true]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","clientId","hasClientSecret","redirectUris"]}]},"GcpOAuthClientId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[a-zA-Z0-9_-]+-[a-zA-Z0-9_-]+\\.apps\\.googleusercontent\\.com$","description":"Google OAuth web client ID.","example":"1234567890-abc123.apps.googleusercontent.com"},"UpdateProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId"]}]},"GcpOAuthClientSecret":{"type":"string","minLength":1,"maxLength":512,"description":"Google OAuth web client secret. Write-only; never returned by the API.","example":"GOCSPX-example"},"UpdateProject":{"type":"object","properties":{"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."}}},"DeploymentPortalDomainResponse":{"type":"object","properties":{"deploymentPortalEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"},"packageEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["deploymentPortalEndpoint","packageEndpoint"]},"DomainEndpoint":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"dend_[0-9a-z]{28}$","description":"Unique identifier for the domain endpoint.","example":"dend_1bb6gdvm1bs74acqkjstcgv"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domainId":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"kind":{"$ref":"#/components/schemas/DomainEndpointKind"},"owner":{"$ref":"#/components/schemas/DomainEndpointOwner"},"hostname":{"type":"string","minLength":1,"maxLength":253},"status":{"$ref":"#/components/schemas/DomainEndpointStatus"},"provider":{"type":"string","nullable":true},"providerState":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"managedDnsRecords":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPortalManagedDnsRecord"}},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"retryAttempts":{"type":"integer","minimum":0},"nextStepAfter":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","workspaceId","domainId","kind","owner","hostname","status","managedDnsRecords","retryAttempts","createdAt","updatedAt"]},"DomainEndpointKind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"DomainEndpointOwner":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/DomainEndpointOwnerType"},"id":{"type":"string"}},"required":["type","id"]},"DomainEndpointOwnerType":{"type":"string","enum":["workspace","project","manager"]},"DomainEndpointStatus":{"type":"string","enum":["waiting_for_domain","provisioning","waiting_for_dns","waiting_for_health","active","failed","deleting"]},"DeploymentPortalManagedDnsRecord":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"value":{"type":"string"},"ttl":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true}},"required":["name","type","value"]},"DeploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments allowed in this deployment group"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","projectId","workspaceId","createdAt"]},"CreateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"project":{"type":"string","maxLength":100,"description":"Project ID or name this deployment group belongs to"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments in this deployment group"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"maxDeployments":{"type":"integer","minimum":1,"description":"Maximum number of deployments in this deployment group"}}},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateDeploymentGroupTokenRequest":{"type":"object","properties":{"description":{"type":"string","description":"Description for the API key"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"},"deploymentSetupConfig":{"$ref":"#/components/schemas/DeploymentSetupConfig"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"DeploymentSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"}},"required":["metadata","policy","environmentVariables"]},"DeploymentSetupMetadata":{"type":"object","additionalProperties":{"nullable":true}},"DeploymentSetupPolicy":{"type":"object","properties":{"allowedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"allowedDeploymentModels":{"type":"array","items":{"type":"string","enum":["push","pull","airgapped"]}},"allowedNetworkModes":{"type":"array","items":{"type":"string","enum":["none","create","default","byo"]}},"allowedUpdatesModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required"]}},"allowedTelemetryModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required","off"]}},"allowedHeartbeatsModes":{"type":"array","items":{"type":"string","enum":["on","off"]}},"allowExternalBindings":{"type":"boolean"},"allowCustomRegistry":{"type":"boolean"}}},"EnvironmentVariableConfig":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"value":{"type":"string","maxLength":10000,"description":"Variable value (encrypted in database)"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","value","type","targetResources"]},"EnvironmentVariableType":{"type":"string","enum":["plain","secret"],"description":"Variable type (plain or secret)"},"EncryptedStackInputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EncryptedStackInputValue"},"default":{}},"EncryptedStackInputValue":{"type":"object","properties":{"value":{"type":"string","description":"Encrypted JSON-encoded input value."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"]},"secret":{"type":"boolean","description":"Whether the original input is secret."}},"required":["value","kind","secret"]},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"Package":{"type":"object","properties":{"id":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"type":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Types of packages that can be built"},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string","description":"Package version (e.g., '1.0.0', 'rel_abc123')"},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"setupFingerprints":{"$ref":"#/components/schemas/SetupFingerprintMap"},"packageBuildInputHash":{"type":"string","description":"Hash of Platform-known package build request inputs: package type, source release, setup fingerprints, package config, and setup contract version"},"config":{"oneOf":[{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"}},"required":["displayName","name"],"description":"Branding configuration for the deploy CLI binary."},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for CloudFormation packages"},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"}},"required":["chartName","description"],"description":"Configuration for the Helm chart package"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"}},"required":["displayName","name"],"description":"Branding configuration for the Operator image."},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for Terraform package generation."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]}],"description":"Type-specific configuration"},"outputs":{"oneOf":[{"allOf":[{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"digest":{"type":"string","description":"Image digest (e.g., \"sha256:abc123...\")"},"image":{"type":"string","description":"Full image reference (e.g., \"public.ecr.aws/acme/operators/project-id:1.2.3\")"}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]},{"nullable":true}],"description":"Package outputs (only when status is 'ready')"},"error":{"nullable":true,"description":"Error information if status is 'failed'"},"sourceBinarySha256":{"type":"string","nullable":true,"description":"Builder-recorded source binary SHA256 (for cli/terraform packages)"},"retries":{"type":"integer","minimum":0,"description":"Number of build retries"},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","projectId","workspaceId","type","status","version","sourceReleaseId","setupFingerprints","packageBuildInputHash","config","retries","createdAt","updatedAt"]},"SetupFingerprintMap":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SetupFingerprintInfo"},"description":"Per-target setup compatibility fingerprints copied from the source release"},"SetupFingerprintInfo":{"type":"object","properties":{"target":{"$ref":"#/components/schemas/SetupTarget"},"fingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"version":{"$ref":"#/components/schemas/SetupFingerprintVersion"}},"required":["target","fingerprint","version"]},"SetupTarget":{"type":"string","minLength":1,"description":"Stable target key for the setup contract, e.g. aws/us-east-1"},"SetupFingerprint":{"type":"string","minLength":1,"description":"Deterministic setup contract fingerprint for one setup target"},"SetupFingerprintVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup fingerprint algorithm version"},"ReleaseListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Release"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"StackByPlatform":{"type":"object","properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"Release":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"projectId":{"type":"string","maxLength":128},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"workspaceId":{"type":"string","maxLength":128}},"required":["id","projectId","createdAt","stack","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256}},"required":["project"]},"ReleaseAuthorFilterItem":{"type":"object","properties":{"login":{"type":"string","nullable":true,"description":"Provider username (e.g., GitHub login)"},"name":{"type":"string","nullable":true,"description":"Git commit author name"},"avatarUrl":{"type":"string","nullable":true,"format":"uri","description":"Author avatar URL"}},"required":["login","name","avatarUrl"]},"DeploymentListItemResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint version"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if in a failed state"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"$ref":"#/components/schemas/ManagerID"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"ManagerID":{"type":"string","pattern":"mgr_[0-9a-z]{28}$","description":"ID of the manager","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"DeploymentReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","createdAt"]},"DeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"}},"required":["id","name"]},"DeploymentProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"}},"required":["id","name"]},"DeploymentStats":{"type":"object","properties":{"total":{"type":"number","description":"Total number of deployments matching filters"},"byStatus":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by status (only includes statuses with non-zero counts)"},"byPlatform":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by platform (only includes platforms with non-zero counts)"},"byCurrentRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by currentReleaseId. The empty string key represents deployments with no current release (initial provisioning)."},"byPinnedRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by pinnedReleaseId among deployments that are pinned. Excludes unpinned deployments."}},"required":["total","byStatus","byPlatform","byCurrentRelease","byPinnedRelease"]},"DeploymentDetailResponse":{"allOf":[{"$ref":"#/components/schemas/Deployment"},{"type":"object","properties":{"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}}}]},"Deployment":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"targetEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of target environment variables for the deployment"},"currentEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of current environment variables for the deployment"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentConnectionInfo":{"type":"object","properties":{"arc":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Manager URL for commands"},"deploymentId":{"type":"string","description":"Deployment ID to use in command requests"}},"required":["url","deploymentId"]},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"publicEndpoints":{"type":"object","additionalProperties":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"host":{"type":"string"},"wildcardHost":{"type":"string"}},"required":["url"]},"description":"Public endpoints keyed by endpoint name."}},"required":["type"]},"description":"Deployed resources and their public endpoints"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment"]},"NewDeploymentRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentGroupId":{"type":"string","description":"Required for workspace/project tokens. Deployment group tokens use their own group automatically."},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Optional manager to assign. If omitted, the project default or system manager is selected."}]},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"Stack settings for deployment customization"},"resourcePrefix":{"$ref":"#/components/schemas/ResourcePrefix"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method that created the deployment. Defaults to cli."}]},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup method metadata used to guide privileged teardown."}]},"inputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{},"description":"Stack input values provided by the deployment creator."}},"required":["name","platform","project"],"additionalProperties":false,"description":"Request schema for creating a new deployment"},"ResourcePrefix":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?=[a-z0-9])){1,38}[a-z0-9]$","description":"Optional physical-name prefix for generated cloud resources. Omit to let the manager generate one."},"ImportDeploymentRequest":{"oneOf":[{"$ref":"#/components/schemas/ForwardImportRequest"},{"$ref":"#/components/schemas/PersistImportedDeploymentRequest"}],"description":"Request schema for importing a deployment from resolved setup infrastructure"},"ForwardImportRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["forward"],"default":"forward"},"project":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user-session callers."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Required for user-session callers. Deployment-group tokens use their own group automatically.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager ID. If omitted, the first suitable manager for the source platform is used."}]},"source":{"$ref":"#/components/schemas/ImportSource"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["source"]},"ImportSource":{"type":"object","properties":{"deploymentName":{"type":"string","minLength":1,"description":"User-chosen deployment name. Must be unique within the deployment group; the manager returns 409 on collision."},"resourcePrefix":{"allOf":[{"$ref":"#/components/schemas/ResourcePrefix"},{"description":"Stable physical-name prefix used by the setup artifact."}]},"sourceKind":{"$ref":"#/components/schemas/ImportSourceKind"},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup source metadata needed to guide privileged teardown."}]},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release that produced the setup artifact. Defaults to latest.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Cloud platform of the imported stack"},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"region":{"type":"string","description":"Region or location reported by the setup artifact"},"setupTarget":{"allOf":[{"$ref":"#/components/schemas/SetupTarget"},{"description":"Setup target this package was generated for"}]},"setupImportFormatVersion":{"$ref":"#/components/schemas/SetupImportFormatVersion"},"setupFingerprint":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprint"},{"description":"Setup compatibility fingerprint embedded in the package"}]},"setupFingerprintVersion":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintVersion"},{"description":"Setup fingerprint algorithm version embedded in the package"}]},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ImportedResource"},"minItems":1}},"required":["deploymentName","resourcePrefix","platform","region","setupTarget","setupImportFormatVersion","setupFingerprint","setupFingerprintVersion","stackSettings","resources"],"description":"Resolved setup import payload"},"ImportSourceKind":{"type":"string","enum":["cloudformation","terraform","helm"],"description":"Source label for observability only — does not affect import behavior."},"KubernetesBasePlatform":{"type":"string","enum":["aws","gcp","azure"],"description":"Base cloud platform for cloud-backed Kubernetes imports."},"SetupImportFormatVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup import payload format version embedded in the package"},"ImportedResource":{"type":"object","properties":{"id":{"type":"string","description":"Resource id from the active stack"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"importData":{"type":"object","additionalProperties":{"nullable":true},"description":"Resolved typed import payload"}},"required":["id","type","importData"]},"PersistImportedDeploymentRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["persist"]},"name":{"type":"string","minLength":1,"description":"Deployment name. Must be unique within the deployment group."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"stackState":{"nullable":true},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"runtimeMetadata":{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"default":"provisioning","description":"Deployment status in the deployment lifecycle"},"currentReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"setupMetadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"setupTarget":{"$ref":"#/components/schemas/SetupTarget"},"setupFingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"setupFingerprintVersion":{"$ref":"#/components/schemas/SetupFingerprintVersion"},"deploymentToken":{"type":"string"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["mode","name","deploymentGroupId","managerId","platform","stackSettings","runtimeMetadata","deploymentProtocolVersion","setupTarget","setupFingerprint","setupFingerprintVersion"]},"SetFirstPartyDeploymentInputsResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"SetFirstPartyDeploymentInputsRequest":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["platform"]},"SetupRegistrationOperationResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"status":{"$ref":"#/components/schemas/SetupRegistrationOperationStatus"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"physicalResourceId":{"type":"string","nullable":true},"result":{"$ref":"#/components/schemas/SetupRegistrationOperationResult"},"error":{"type":"object","nullable":true,"properties":{"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["message","retryable"]}},"required":["id","action","sourceKind","status","deploymentId","physicalResourceId","result","error"]},"SetupRegistrationAction":{"type":"string","enum":["create","update","delete"]},"SetupRegistrationOperationStatus":{"type":"string","enum":["pending","processing","waiting-for-handoff","succeeded","failed","responding","responded"]},"SetupRegistrationOperationResult":{"type":"object","nullable":true,"properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentToken":{"type":"string","nullable":true},"helmValues":{"type":"string","nullable":true}},"required":["deploymentId","deploymentToken","helmValues"]},"CreateSetupRegistrationOperationRequest":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"source":{"allOf":[{"$ref":"#/components/schemas/ImportSource"}],"nullable":true},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":512},"cloudFormation":{"$ref":"#/components/schemas/SetupRegistrationCloudFormationTarget"}},"required":["action","sourceKind"],"additionalProperties":false},"SetupRegistrationCloudFormationTarget":{"type":"object","nullable":true,"properties":{"stackId":{"type":"string","minLength":1},"requestId":{"type":"string","minLength":1},"logicalResourceId":{"type":"string","minLength":1},"responseUrl":{"type":"string","format":"uri"},"physicalResourceId":{"type":"string","nullable":true,"minLength":1},"serviceTimeoutSeconds":{"type":"integer","minimum":60,"maximum":7200,"default":3300}},"required":["stackId","requestId","logicalResourceId","responseUrl"],"additionalProperties":false},"DeleteDeploymentResponse":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]},"message":{"type":"string"}},"required":["action","message"]},"DeleteDeploymentRequest":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]}},"required":["action"]},"PinReleaseRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release ID to pin the deployment to. Set to null to unpin and use active release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for pinning/unpinning deployment release"},"UpdateDeploymentEnvironmentVariablesRequest":{"type":"object","properties":{"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"value":{"type":"string","description":"Variable value"},"type":{"type":"string","enum":["plain","secret"],"description":"Variable type"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources)"}},"required":["name","value","type"]},"description":"Environment variables for the deployment"}},"required":["variables"],"additionalProperties":false,"description":"Request schema for updating deployment environment variables"},"CreateDeploymentTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The generated deployment token (only shown once)"},"deploymentId":{"type":"string","description":"The deployment ID that this token is scoped to"}},"required":["token","deploymentId"]},"CreateDeploymentTokenRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128,"description":"Optional description for the deployment token"},"expiresAt":{"type":"string","format":"date-time","description":"Optional expiration date for the deployment token"}},"required":["description"]},"CreateManagerResponse":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["pending"]},"setupToken":{"type":"string"},"setupTokenId":{"type":"string"},"deploymentLink":{"type":"string"},"setupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["plain","secret"]},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"}}},"required":["name","type","targetResources"]}}},"required":["metadata","policy","environmentVariables"]},"setup":{"oneOf":[{"type":"object","properties":{"method":{"type":"string","enum":["cloudformation"]},"deploymentPortalUrl":{"type":"string"},"launchUrl":{"type":"string"},"templateUrl":{"type":"string"},"stackName":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","launchUrl","templateUrl","stackName","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["google-oauth"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"oauthStartUrl":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","oauthStartUrl","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["terraform"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"providerSource":{"type":"string"},"moduleSource":{"type":"string"},"moduleVersion":{"type":"string"},"moduleInputs":{"type":"object","additionalProperties":{"type":"string"}},"mainTf":{"type":"string"},"tfvars":{"type":"string"},"commands":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","providerSource","moduleSource","moduleInputs","mainTf","tfvars","commands","stackSettings"]}]}},"required":["managerId","setupStatus","setupToken","setupTokenId","deploymentLink","setupConfig","setup"]},"NewManagerRequest":{"type":"object","properties":{"name":{"type":"string"},"cloud":{"$ref":"#/components/schemas/PrivateManagerCloud"},"region":{"type":"string","minLength":1,"maxLength":64,"description":"Cloud region for the manager."},"setupMethod":{"$ref":"#/components/schemas/PrivateManagerSetupMethod"},"network":{"type":"string","enum":["create","default"],"description":"Optional network mode for the private-manager setup. Defaults to create for production isolation; default uses the provider default network for faster dev/test setup."},"otlpConfig":{"type":"object","properties":{"logsEndpoint":{"type":"string","format":"uri","description":"External OTLP logs endpoint (e.g. https://api.axiom.co/v1/logs)"},"logsAuthHeader":{"type":"string","description":"Auth header in 'key=value,...' format (e.g. 'authorization=Bearer ,x-axiom-dataset=')"}},"required":["logsEndpoint","logsAuthHeader"],"description":"Optional external OTLP config for forwarding logs to Axiom, Datadog, etc. Falls back to built-in DeepStore when not set."}},"required":["name","cloud","region"]},"PrivateManagerCloud":{"type":"string","enum":["aws","gcp","azure"],"description":"Cloud where the private manager will be deployed."},"PrivateManagerSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform"],"description":"Optional setup method. Defaults to cloudformation for AWS, google-oauth for GCP, and terraform for Azure."},"ManagerRetryResponse":{"oneOf":[{"allOf":[{"$ref":"#/components/schemas/CreateManagerResponse"},{"type":"object","properties":{"mode":{"type":"string","enum":["setup"]}},"required":["mode"]}]},{"$ref":"#/components/schemas/ManagerRetryDeploymentResponse"}]},"ManagerRetryDeploymentResponse":{"type":"object","properties":{"mode":{"type":"string","enum":["deployment"]},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["provisioning"]},"deploymentId":{"type":"string"},"message":{"type":"string"}},"required":["mode","managerId","setupStatus","deploymentId","message"]},"Manager":{"type":"object","properties":{"id":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for the manager"}]},"name":{"type":"string","description":"Display name of the manager"},"targets":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where this private manager is deployed"},"region":{"type":"string","nullable":true,"description":"Cloud region selected for this private manager"},"setupStatus":{"type":"string","nullable":true,"enum":["pending","provisioning","active","failed","deleting","deleted",null],"description":"Private manager setup lifecycle status"},"url":{"type":"string","nullable":true,"format":"uri","description":"Manager URL (self-reported via heartbeat). DeepStore endpoints are exposed through this URL (e.g., {url}/v1/logs)"},"managementConfigs":{"$ref":"#/components/schemas/ManagerManagementConfigs"},"isSystem":{"type":"boolean","description":"Whether this is a system manager (Alien-hosted)"},"workspaceId":{"type":"string","description":"The workspace ID (for system managers, this is ALIEN_WORKSPACE_ID)"},"status":{"$ref":"#/components/schemas/ManagerStatus"},"version":{"type":"string","nullable":true,"description":"Manager version (self-reported via heartbeat)"},"metrics":{"type":"object","nullable":true,"properties":{"activeDeployments":{"type":"number","description":"Number of active deployments"},"pendingDeployments":{"type":"number","description":"Number of pending deployments"},"memoryUsageMb":{"type":"number","description":"Memory usage in megabytes"},"cpuUsagePercent":{"type":"number","description":"CPU usage percentage"}},"description":"Runtime metrics (self-reported via heartbeat)"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the manager"},"logsDatabaseId":{"type":"string","nullable":true,"description":"ID of the logs database associated with this manager"},"managedDeploymentCount":{"type":"integer","minimum":0,"description":"Number of deployments currently being managed by this manager"},"defaultProjectCount":{"type":"integer","minimum":0,"description":"Number of projects that select this manager as a default manager"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the manager was created"}},"required":["id","name","targets","managementConfigs","isSystem","workspaceId","status","managedDeploymentCount","defaultProjectCount","createdAt"],"description":"Manager schema"},"ManagerManagementConfigs":{"type":"object","properties":{"aws":{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"},"platform":{"type":"string","enum":["aws"]}},"required":["managingRoleArn","platform"]},"gcp":{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"},"platform":{"type":"string","enum":["gcp"]}},"required":["serviceAccountEmail","platform"]},"azure":{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."},"platform":{"type":"string","enum":["azure"]}},"required":["managingTenantId","oidcIssuer","oidcSubject","platform"]},"kubernetes":{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}},"description":"Per-platform management configurations for cross-account access (self-reported via heartbeat)"},"ManagerStatus":{"type":"string","enum":["healthy","degraded","unhealthy","unknown"],"description":"Current health status"},"ManagerDomainBindingResponse":{"type":"object","properties":{"managerDomainBinding":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["managerDomainBinding"]},"UpdateManagerDomainBinding":{"type":"object","properties":{"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"}},"additionalProperties":false},"UpdateManagerRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Optional release ID to update to. If not provided, the active release will be chosen","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for updating a manager to a new release"},"Event":{"type":"object","properties":{"id":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"debugSessionId":{"type":"string","nullable":true,"pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"data":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["LoadingConfiguration"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["Finished"]}},"required":["type"]},{"type":"object","properties":{"stack":{"type":"string","description":"Name of the stack being built"},"type":{"type":"string","enum":["BuildingStack"]}},"required":["stack","type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform being targeted"},"stack":{"type":"string","description":"Name of the stack being checked"},"type":{"type":"string","enum":["RunningPreflights"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"targetTriple":{"type":"string","description":"Target triple for the runtime"},"type":{"type":"string","enum":["DownloadingAlienRuntime"]},"url":{"type":"string","description":"URL being downloaded from"}},"required":["targetTriple","type","url"]},{"type":"object","properties":{"relatedResources":{"type":"array","items":{"type":"string"},"description":"All resource names sharing this build (for deduped container groups)"},"resourceName":{"type":"string","description":"Name of the resource being built"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["BuildingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being built"},"type":{"type":"string","enum":["BuildingImage"]}},"required":["image","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being pushed"},"progress":{"oneOf":[{"type":"object","properties":{"bytesUploaded":{"type":"integer","minimum":0,"description":"Bytes uploaded so far"},"layersUploaded":{"type":"integer","minimum":0,"description":"Number of layers uploaded so far"},"operation":{"type":"string","description":"Current operation being performed"},"totalBytes":{"type":"integer","minimum":0,"description":"Total bytes to upload"},"totalLayers":{"type":"integer","minimum":0,"description":"Total number of layers to upload"}},"required":["bytesUploaded","layersUploaded","operation","totalBytes","totalLayers"],"description":"Progress information for image push operations"},{"nullable":true}]},"type":{"type":"string","enum":["PushingImage"]}},"required":["image","type"]},{"type":"object","properties":{"destination":{"type":"string","nullable":true,"description":"Human-readable destination for pushed images"},"platform":{"type":"string","description":"Target platform"},"stack":{"type":"string","description":"Name of the stack being pushed"},"type":{"type":"string","enum":["PushingStack"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"resourceName":{"type":"string","description":"Name of the resource being pushed"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["PushingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"project":{"type":"string","description":"Project name"},"type":{"type":"string","enum":["CreatingRelease"]}},"required":["project","type"]},{"type":"object","properties":{"language":{"type":"string","description":"Language being compiled (rust, typescript, etc.)"},"progress":{"type":"string","nullable":true,"description":"Current progress/status line from the build output"},"type":{"type":"string","enum":["CompilingCode"]}},"required":["language","type"]},{"type":"object","properties":{"nextState":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},"suggestedDelayMs":{"type":"integer","nullable":true,"minimum":0,"description":"An suggested duration to wait before executing the next step."},"type":{"type":"string","enum":["StackStep"]}},"required":["nextState","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["GeneratingCloudFormationTemplate"]}},"required":["type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform for which the template is being generated"},"type":{"type":"string","enum":["GeneratingTemplate"]}},"required":["platform","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being provisioned"},"releaseId":{"type":"string","description":"ID of the release being deployed to the agent"},"type":{"type":"string","enum":["ProvisioningAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being updated"},"releaseId":{"type":"string","description":"ID of the new release being deployed to the agent"},"type":{"type":"string","enum":["UpdatingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being deleted"},"releaseId":{"type":"string","description":"ID of the release that was running on the agent"},"type":{"type":"string","enum":["DeletingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being debugged"},"debugSessionId":{"type":"string","description":"ID of the debug session"},"type":{"type":"string","enum":["DebuggingAgent"]}},"required":["agentId","debugSessionId","type"]},{"type":"object","properties":{"strategyName":{"type":"string","description":"Name of the deployment strategy being used"},"type":{"type":"string","enum":["PreparingEnvironment"]}},"required":["strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being deployed"},"type":{"type":"string","enum":["DeployingStack"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being tested"},"type":{"type":"string","enum":["RunningTestWorker"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpStack"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpEnvironment"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"platformName":{"type":"string","description":"Name of the platform (e.g., \"AWS\", \"GCP\")"},"type":{"type":"string","enum":["SettingUpPlatformContext"]}},"required":["platformName","type"]},{"type":"object","properties":{"repositoryName":{"type":"string","description":"Name of the docker repository"},"type":{"type":"string","enum":["EnsuringDockerRepository"]}},"required":["repositoryName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeployingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"roleArn":{"type":"string","description":"ARN of the role to assume"},"type":{"type":"string","enum":["AssumingRole"]}},"required":["roleArn","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"type":{"type":"string","enum":["ImportingStackStateFromCloudFormation"]}},"required":["cfnStackName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeletingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"bucketNames":{"type":"array","items":{"type":"string"},"description":"Names of the S3 buckets being emptied"},"type":{"type":"string","enum":["EmptyingBuckets"]}},"required":["bucketNames","type"]},{"type":"object","properties":{"deploymentGroupId":{"type":"string","description":"ID of the deployment group this slot belongs to"},"deploymentId":{"type":"string","description":"ID of the deployment that was created"},"releaseId":{"type":"string","nullable":true,"description":"Initial release the slot was created with, if any"},"type":{"type":"string","enum":["DeploymentCreated"]}},"required":["deploymentGroupId","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously live, if any"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentReleased"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release the platform was trying to deploy, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"phase":{"type":"string","enum":["preflights","provisioning","updating","deleting"],"description":"Phase of a deployment at which a failure occurred.\n\nDerived from the source deployment status: `preflights-failed` →\n`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` →\n`Updating`, `delete-failed` → `Deleting`.\n`refresh-failed` is modelled separately via `DeploymentDegraded`."},"type":{"type":"string","enum":["DeploymentFailed"]}},"required":["deploymentId","error","phase","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"type":{"type":"string","enum":["DeploymentDegraded"]}},"required":["deploymentId","error","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentRecovered"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment that was deleted"},"type":{"type":"string","enum":["DeploymentDeleted"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release that the failed attempt was targeting, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousError":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"type":{"type":"string","enum":["DeploymentRetryRequested"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release being redeployed"},"type":{"type":"string","enum":["DeploymentRedeployRequested"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"pinnedReleaseId":{"type":"string","description":"ID of the release that is now pinned"},"previousPinnedReleaseId":{"type":"string","nullable":true,"description":"ID of the previously pinned release, if any"},"type":{"type":"string","enum":["DeploymentReleasePinned"]}},"required":["deploymentId","pinnedReleaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousPinnedReleaseId":{"type":"string","description":"ID of the release that was previously pinned"},"type":{"type":"string","enum":["DeploymentReleaseUnpinned"]}},"required":["deploymentId","previousPinnedReleaseId","type"]},{"type":"object","properties":{"changedKeys":{"type":"array","items":{"type":"string"},"description":"Names of the environment variables that changed (added, removed, or modified)"},"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentEnvironmentUpdated"]}},"required":["changedKeys","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentDeletionRequested"]}},"required":["deploymentId","type"]}]},"state":{"oneOf":[{"type":"object","properties":{"failed":{"type":"object","properties":{"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]}},"description":"Event failed with an error"}},"required":["failed"]},{"type":"string","enum":["none"]},{"type":"string","enum":["started"]},{"type":"string","enum":["success"]}],"description":"Represents the state of an event"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","data","state","projectId","createdAt","workspaceId"]},"GenerateManagerTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string","description":"Platform JWT for authenticating with the manager"},"expiresIn":{"type":"number","nullable":true,"description":"Token lifetime in seconds"},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string","description":"Manager URL for direct access"},"databaseId":{"type":"string","nullable":true,"description":"Log database ID (null if logs not configured)"},"controlPlaneUrl":{"type":"string","nullable":true,"description":"Log control plane URL (null if logs not configured)"}},"required":["accessToken","expiresIn","tokenType","managerUrl","databaseId","controlPlaneUrl"]},"GenerateManagerTokenRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to scope token access to. When omitted, the token is scoped to all projects accessible by the current user."}}},"ResolveManagerGcpOAuthProviderResponse":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId","clientSecret"]}]},"ResolveManagerGcpOAuthProviderRequest":{"type":"object","properties":{"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group bearer token whose project-level OAuth provider should be resolved."},"returnOrigin":{"type":"string","format":"uri","description":"Browser origin that will receive the Google OAuth callback result. Must be a first-party dashboard origin or the active portal origin for the deployment group's project."}},"required":["deploymentGroupToken"]},"ManagerHeartbeatResponse":{"type":"object","properties":{"acknowledged":{"type":"boolean"},"timestamp":{"type":"string"}},"required":["acknowledged","timestamp"]},"ManagerHeartbeatRequest":{"type":"object","properties":{"status":{"type":"string","enum":["healthy","degraded","unhealthy"],"description":"Current health status"},"version":{"type":"string","description":"Manager version"},"url":{"type":"string","format":"uri","description":"Manager public URL (for accessing DeepStore endpoints)"},"managementConfigs":{"allOf":[{"$ref":"#/components/schemas/ManagerManagementConfigs"},{"description":"Per-platform management configurations for cross-account access"}]},"metrics":{"type":"object","properties":{"activeDeployments":{"type":"number"},"pendingDeployments":{"type":"number"},"memoryUsageMb":{"type":"number"},"cpuUsagePercent":{"type":"number"}},"description":"Optional runtime metrics"}},"required":["status","url","managementConfigs"]},"ManagerDeployment":{"type":"object","properties":{"platform":{"type":"string","description":"Platform of the internal deployment"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status of the internal deployment"},"deploymentId":{"type":"string","description":"Internal deployment ID"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Currently deployed private manager release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Target private manager release for an in-progress update","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"error":{"nullable":true,"description":"Latest provision / upgrade / delete error"},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type"},"status":{"type":"string","description":"Resource status"},"outputs":{"type":"object","additionalProperties":{"nullable":true},"description":"Resource outputs"}},"required":["type","status"]},"description":"Simplified stack state resources"},"environmentInfo":{"nullable":true,"description":"Manager environment info"}},"required":["platform","status","deploymentId","resources"]},"APIKey":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"},"createdByUser":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"email":{"type":"string"},"image":{"type":"string","nullable":true}},"required":["id","email","image"],"description":"User information associated with the API key"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig","createdByUser"],"description":"API key information"},"APIKeyDeploymentSetupConfig":{"type":"object","nullable":true,"properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/APIKeyDeploymentSetupEnvironmentVariable"}}},"required":["metadata","policy","environmentVariables"]},"APIKeyDeploymentSetupEnvironmentVariable":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]},"CreateAPIKeyResponse":{"type":"object","properties":{"apiKey":{"type":"string","description":"The generated API key value (only shown once)"},"keyInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig"]}},"required":["apiKey","keyInfo"],"description":"Response containing the new API key and its metadata"},"CreateAPIKeyRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"scope":{"$ref":"#/components/schemas/Scope"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"required":["description","scope","expiresAt"],"description":"Request schema for creating a new API key"},"Scope":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceScope"},{"$ref":"#/components/schemas/ProjectScope"},{"$ref":"#/components/schemas/DeploymentScope"},{"$ref":"#/components/schemas/DeploymentGroupScope"},{"$ref":"#/components/schemas/ManagerScope"}],"discriminator":{"propertyName":"type","mapping":{"workspace":"#/components/schemas/WorkspaceScope","project":"#/components/schemas/ProjectScope","deployment":"#/components/schemas/DeploymentScope","deployment-group":"#/components/schemas/DeploymentGroupScope","manager":"#/components/schemas/ManagerScope"}},"description":"Scope and role configuration for service accounts"},"WorkspaceScope":{"type":"object","properties":{"type":{"type":"string","enum":["workspace"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["type","role"],"description":"Workspace-scoped configuration"},"ProjectScope":{"type":"object","properties":{"type":{"type":"string","enum":["project"]},"projectId":{"type":"string","description":"ID of the project this is scoped to"},"role":{"$ref":"#/components/schemas/ProjectRole"}},"required":["type","projectId","role"],"description":"Project-scoped configuration"},"DeploymentScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment"]},"deploymentId":{"type":"string","description":"ID of the deployment this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"},"role":{"$ref":"#/components/schemas/DeploymentRole"}},"required":["type","deploymentId","projectId","role"],"description":"Deployment-scoped configuration"},"DeploymentGroupScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"]},"deploymentGroupId":{"type":"string","description":"ID of the deployment group this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"},"role":{"$ref":"#/components/schemas/DeploymentGroupRole"}},"required":["type","deploymentGroupId","projectId","role"],"description":"Deployment group-scoped configuration"},"ManagerScope":{"type":"object","properties":{"type":{"type":"string","enum":["manager"]},"managerId":{"type":"string","description":"ID of the manager this is scoped to"},"role":{"$ref":"#/components/schemas/ManagerRole"}},"required":["type","managerId","role"],"description":"Manager-scoped configuration"},"UpdateAPIKeyRequest":{"type":"object","properties":{"enabled":{"type":"boolean"},"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"deploymentSetupConfig":{"$ref":"#/components/schemas/UpdateDeploymentSetupPolicy"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"description":"Request schema for updating an API key"},"UpdateDeploymentSetupPolicy":{"type":"object","properties":{"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"}},"required":["policy"],"description":"Editable part of a deployment link's setup config. Locked env vars and input values are preserved."},"DeleteAPIKeysRequest":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"minItems":1}},"required":["ids"]},"DomainWithUsage":{"allOf":[{"$ref":"#/components/schemas/Domain"},{"type":"object","properties":{"endpoints":{"type":"array","items":{"$ref":"#/components/schemas/DomainEndpoint"}},"usage":{"type":"object","properties":{"deploymentUrlProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"portalBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true},"hostname":{"type":"string"}},"required":["id","projectId","projectName","hostname"]}},"packageDomains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"type":"string"}},"required":["id","hostname"]}},"managerBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"managerId":{"type":"string"},"managerName":{"type":"string"},"hostname":{"type":"string"}},"required":["id","managerId","managerName","hostname"]}}},"required":["deploymentUrlProjects","portalBindings","packageDomains","managerBindings"]}},"required":["endpoints","usage"]}]},"Domain":{"type":"object","properties":{"id":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domain":{"type":"string"},"isSystem":{"type":"boolean"},"claimToken":{"type":"string"},"hostedZoneId":{"type":"string","nullable":true},"nameServers":{"type":"array","nullable":true,"items":{"type":"string"}},"status":{"type":"string","enum":["pending-zone-creation","pending-verification","verified","lost-verification","failed","deleting"]},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","workspaceId","domain","isSystem","claimToken","status","createdAt","updatedAt"]},"CommandListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Command"},{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/CommandDeploymentInfo"},"project":{"$ref":"#/components/schemas/CommandProjectInfo"}}}]},"CommandDeploymentInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"$ref":"#/components/schemas/CommandDeploymentGroupInfo"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"managerId":{"type":"string","description":"Manager ID for obtaining access tokens"},"managerUrl":{"type":"string","nullable":true,"format":"uri","description":"URL of the manager for direct payload access"},"managerName":{"type":"string","nullable":true,"description":"Human-readable name of the manager"},"managerIsSystem":{"type":"boolean","nullable":true,"description":"Whether the manager is Alien-hosted (system)"}},"required":["id","name","managerId"]},"CommandDeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"CommandProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string"}},"required":["id","name"]},"Command":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","description":"Command name (e.g., 'analyze-repository', 'sync-data')"},"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Command states in the Commands protocol lifecycle"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model captured from deployment at creation time"},"attempt":{"type":"number","nullable":true,"description":"Current attempt number"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","nullable":true,"description":"Size of command params in bytes"},"responseSizeBytes":{"type":"number","nullable":true,"description":"Size of command response in bytes"},"createdAt":{"type":"string","format":"date-time","description":"When the command was created"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command was dispatched to the deployment"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command completed"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if command failed"},"result":{"nullable":true,"description":"Decoded command result when available"}},"required":["id","deploymentId","projectId","workspaceId","name","state","deploymentModel","attempt","deadline","requestSizeBytes","responseSizeBytes","createdAt","dispatchedAt","completedAt","error"]},"ListCommandNamesResponse":{"type":"object","properties":{"names":{"type":"array","items":{"type":"string"}}},"required":["names"]},"ListCommandDeploymentsResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"required":["id","name"]}}},"required":["deployments"]},"CreateCommandResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"projectId":{"type":"string","description":"Project ID (for manager to use in routing)"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"How to dispatch the command"}},"required":["id","projectId","deploymentModel"]},"CreateCommandRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Target deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Command name (e.g., 'analyze-repository')"},"params":{"nullable":true,"description":"Command parameters for public invocation"},"initialState":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Initial state (PENDING_UPLOAD if params require upload, PENDING if inline)"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Size of command params in bytes"}},"required":["deploymentId","name"]},"UpdateCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"New command state"},"attempt":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Current attempt number"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command was dispatched"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command completed"},"responseSizeBytes":{"type":"number","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Size of response in bytes"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if failed"}}},"DebugSessionListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DebugSession"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"},"DebugSession":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"owner":{"type":"string","nullable":true,"maxLength":128},"state":{"$ref":"#/components/schemas/DebugSessionState"},"mode":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"provider":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Represents the target cloud platform."},"presignedUrls":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DebugPackagePresignedURLs"}},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","state","mode","presignedUrls","createdAt","expiresAt","deploymentId","projectId","workspaceId"]},"DebugSessionState":{"type":"string","enum":["pending","running","stopping","stopped","expired","failed"]},"DebugPackagePresignedURLs":{"type":"object","properties":{"readUrl":{"type":"string","maxLength":2048,"format":"uri"},"writeUrl":{"type":"string","maxLength":2048,"format":"uri"}},"required":["readUrl","writeUrl"]},"CreateDebugSessionRequest":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Override the generated id. Manager passes the registry session id so logs correlate.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"owner":{"type":"string","nullable":true,"maxLength":128},"expiresAt":{"type":"string","format":"date-time"},"state":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Initial state. Defaults to 'pending'."}]}},"required":["deploymentId","expiresAt"]},"UpdateDebugSessionRequest":{"type":"object","properties":{"state":{"$ref":"#/components/schemas/DebugSessionState"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"expiresAt":{"type":"string","format":"date-time"}}},"DeploymentInfo":{"type":"object","properties":{"tokenType":{"type":"string","enum":["deployment","deployment-group"],"description":"Type of token used to authenticate this request"},"deployment":{"type":"object","properties":{"name":{"type":"string"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"required":["name","platform"],"description":"Deployment details (present when using a deployment-scoped token)"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"}},"required":["id","name"],"description":"Deployment group details (present when using a deployment-group token)"},"workspace":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name"]},"project":{"type":"object","properties":{"name":{"type":"string"},"portal":{"type":"object","properties":{"appearance":{"$ref":"#/components/schemas/DeploymentPortalAppearance"}},"required":["appearance"]},"stackSummary":{"type":"object","nullable":true,"properties":{"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"publicHttpsEndpoints":{"type":"integer","minimum":0,"description":"Resources that declare managed public HTTPS endpoint setup"},"externalInfra":{"type":"integer","minimum":0,"description":"Storage, queue, KV, vault, database, or cache resources that Kubernetes needs Terraform to provision"},"total":{"type":"integer","minimum":0}},"required":["workers","containers","publicHttpsEndpoints","externalInfra","total"]},"publicEndpoints":{"type":"array","items":{"type":"object","properties":{"resourceId":{"type":"string"},"endpointName":{"type":"string"},"hostLabel":{"type":"string"},"wildcardSubdomains":{"type":"boolean"}},"required":["resourceId","endpointName","hostLabel","wildcardSubdomains"]},"description":"Public endpoints declared by the active release stack"}},"required":["platforms","resourceCounts","publicEndpoints"]}},"required":["name","portal"]},"packages":{"type":"object","properties":{"ready":{"type":"boolean","description":"True if all enabled packages are ready for deployment"},"cli":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"commandName":{"type":"string","description":"CLI command name to use in install instructions"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},"error":{"nullable":true},"installScripts":{"type":"object","properties":{"windows":{"type":"string","format":"uri"},"mac":{"type":"string","format":"uri"},"linux":{"type":"string","format":"uri"}},"required":["windows","mac","linux"],"description":"Install script URLs for each OS"}},"required":["status","commandName","installScripts"]},"cloudformation":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},"error":{"nullable":true},"mode":{"type":"string","enum":["auto","outputs"]},"launchUrl":{"type":"string","format":"uri","description":"CloudFormation launch URL"},"outputsSchema":{"nullable":true}},"required":["status","mode","launchUrl"]},"terraform":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},"error":{"nullable":true},"providerSource":{"type":"string","description":"Terraform provider source (without https://)"},"moduleSources":{"type":"object","additionalProperties":{"type":"string"},"description":"Terraform module sources by target"},"moduleVersion":{"type":"string"},"managerUrls":{"type":"object","additionalProperties":{"type":"string"},"description":"Manager URLs by Terraform target"}},"required":["status","providerSource","moduleSources","managerUrls"]},"helm":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},"error":{"nullable":true},"chartRef":{"type":"string","description":"OCI chart reference"},"managerFetchExample":{"type":"string"},"localImportExample":{"type":"string"}},"required":["status","chartRef"]}},"required":["ready"]},"installContext":{"type":"object","properties":{"targets":{"type":"object","additionalProperties":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managerUrl":{"type":"string","format":"uri"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"awsManagingAccountId":{"type":"string"}},"required":["platform","managerUrl"]},"description":"Deployment-session install context by Terraform/installer target"}},"required":["targets"]},"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"},"setupConfig":{"$ref":"#/components/schemas/DeploymentInfoSetupConfig"}},"required":["tokenType","workspace","project","packages","installContext","supportedRegions"]},"DeploymentPortalAppearance":{"type":"object","properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}}},"SupportedCloudRegions":{"type":"object","properties":{"aws":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by this Alien environment."},"gcp":{"type":"array","items":{"type":"string"},"description":"GCP regions supported by this Alien environment."},"azure":{"type":"array","items":{"type":"string"},"description":"Azure locations supported by this Alien environment."}},"required":["aws","gcp","azure"]},"DeploymentInfoSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]}},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."}},"inputValues":{"type":"array","items":{"$ref":"#/components/schemas/ResolvedStackInputSummary"}}},"required":["metadata","policy","environmentVariables"]},"ResolvedStackInputSummary":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"]}},"required":{"type":"boolean"},"secret":{"type":"boolean"},"provided":{"type":"boolean"}},"required":["id","label","providedBy","required","secret","provided"]},"DeploymentComputePlan":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string"},"workloads":{"type":"array","items":{"type":"string"}},"requirements":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"scale":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["fixed"]},"machines":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","machines"]},{"type":"object","properties":{"type":{"type":"string","enum":["autoscale"]},"min":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]},"max":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","min","max"]}]},"selected":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"recommended":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"machines":{"type":"array","items":{"type":"object","properties":{"machine":{"type":"string"},"profile":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"recommended":{"type":"boolean"}},"required":["machine","profile","recommended"]}},"errors":{"type":"array","items":{"type":"string"}}},"required":["poolId","workloads","requirements","scale","selected","recommended","machines"]}}},"required":["pools"]},"PreparedDeploymentStack":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"setup":{"$ref":"#/components/schemas/SetupFingerprintInfo"}},"required":["platform","stack","setup"]},"SyncListResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"userEnvironmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"deploymentToken":{"type":"string","nullable":true},"lockedBy":{"type":"string","nullable":true},"lockedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId","userEnvironmentVariables"]}}},"required":["deployments"],"description":"Full deployment records for manager operation"},"SyncListRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. Manager-scoped tokens are always constrained to their own manager ID."}]},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to include"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by deployment platform"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Filter by deployment group ID","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Maximum records to return"}},"additionalProperties":false,"description":"Request to list full operational deployments"},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the acquired deployment","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Deployment group ID the deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method recorded on the deployment when it has a setup-owned path."}]},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state (includes releases)"},"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration"}},"required":["deploymentId","projectId","deploymentGroupId","current","config"]},"description":"List of acquired deployments with deployment context"},"failures":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the deployment that failed","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"error":{"allOf":[{"$ref":"#/components/schemas/APIError"},{"description":"Error that occurred during context building"}]}},"required":["deploymentId","projectId","error"]},"description":"List of deployments that failed during context building (locks already released)"}},"required":["deployments","failures"],"description":"Acquired deployments and failures"},"SyncAcquireRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. If omitted, resolved from each deployment's managerId column."}]},"session":{"type":"string","description":"Unique session identifier for lock tracking"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to lock (for Pull model sync)"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by platforms (default: all platforms the Manager supports)"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Filter by setup method for setup-owned acquisition paths"}]},"acquireMode":{"type":"string","enum":["runtime","setup-run","setup-teardown"],"description":"Phase ownership mode for deployment acquisition"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model from stackSettings.deploymentModel (Manager should use 'push')"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session"],"additionalProperties":false,"description":"Request to acquire deployments for processing"},"SyncReconcileResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the state was reconciled"},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state after reconciliation"},"target":{"type":"object","properties":{"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration\n\nConfiguration for how to perform the deployment.\nNote: Credentials (ClientConfig) are passed separately to step() function."},"releaseInfo":{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."}},"required":["config","releaseInfo"],"description":"Target deployment if update is needed"}},"required":["success","current"],"description":"State reconciliation result with optional target"},"SyncReconcileRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to reconcile state for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Lock session (push model only) - verifies lock ownership"},"state":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Complete deployment state after step() execution"},"updateHeartbeat":{"type":"boolean","description":"Update heartbeat timestamp (for successful health checks)"},"suggestedDelayMs":{"type":"integer","minimum":0,"description":"Delay before this deployment should be acquired again."},"heartbeats":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"description":"Latest typed resource heartbeats collected during this step."}},"required":["deploymentId","state"],"additionalProperties":false,"description":"Request to reconcile deployment state"},"SyncReleaseRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to release","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Session identifier to release"}},"required":["deploymentId","session"],"additionalProperties":false,"description":"Request to release deployment lock"},"ResolveResponse":{"type":"object","properties":{"managerId":{"type":"string","description":"Manager ID"},"managerName":{"type":"string","description":"Manager display name"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL"},"managerIsSystem":{"type":"boolean","description":"Whether the manager is Alien-hosted"},"managerCloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where the private manager is hosted. Null for Alien-hosted managers."},"projectId":{"type":"string","description":"Resolved project ID"},"installContext":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}},"required":["platform","managementConfig"],"description":"Target install context derived from platform-managed manager metadata. Present for cloud push platforms."}},"required":["managerId","managerName","managerUrl","managerIsSystem","projectId"]},"CloudRegionsResponse":{"type":"object","properties":{"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"}},"required":["supportedRegions"]},"BillingAuditLogRow":{"type":"object","properties":{"id":{"type":"string"},"workspaceId":{"type":"string","nullable":true},"action":{"type":"string"},"payload":{"nullable":true},"createdAt":{"type":"string"}},"required":["id","workspaceId","action","createdAt"]},"WorkspaceBillingEntitlements":{"type":"object","properties":{"planId":{"$ref":"#/components/schemas/PlanId"},"planStatus":{"$ref":"#/components/schemas/BillingPlanStatus"},"features":{"$ref":"#/components/schemas/BillingFeatureFlags"},"limits":{"$ref":"#/components/schemas/BillingLimits"},"syncedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"}},"required":["planId","planStatus","features","limits","syncedAt","stale"]},"PlanId":{"type":"string","enum":["starter","pro","pro_annual","enterprise"]},"BillingPlanStatus":{"type":"string","enum":["active","trialing","past_due","canceled","none"]},"BillingFeatureFlags":{"type":"object","properties":{"custom_domains":{"type":"boolean"},"private_managers":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","sso_saml","audit_logs","airgapped"]},"BillingLimits":{"type":"object","properties":{"maxDeployments":{"type":"number","nullable":true},"maxProjects":{"type":"number","nullable":true},"maxSeats":{"type":"number","nullable":true},"maxCustomDomains":{"type":"number","nullable":true},"creditUsd":{"type":"number","nullable":true},"seatsIncluded":{"type":"number","nullable":true}},"required":["maxDeployments","maxProjects","maxSeats","maxCustomDomains","creditUsd","seatsIncluded"]}},"parameters":{}},"paths":{"/v1/user/memberships":{"get":{"operationId":"listMemberships","description":"List all workspaces the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listMemberships","responses":{"200":{"description":"List of user's workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Membership"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile":{"get":{"operationId":"getUserProfile","description":"Get the current user's profile and user-scoped onboarding state.","x-speakeasy-group":"user","x-speakeasy-name-override":"getProfile","responses":{"200":{"description":"User profile.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateUserProfile","description":"Update the current user's profile (display name).","x-speakeasy-group":"user","x-speakeasy-name-override":"updateProfile","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"}}}}}},"responses":{"200":{"description":"Profile updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile/setup":{"post":{"operationId":"completeUserProfileSetup","description":"Complete the required beta intake and profile setup dialog.","x-speakeasy-group":"user","x-speakeasy-name-override":"completeProfileSetup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileSetupRequest"}}}},"responses":{"200":{"description":"Profile setup completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/workspaces":{"post":{"operationId":"createWorkspace","description":"Create a new workspace. The current user will be automatically added as an admin.","x-speakeasy-group":"user","x-speakeasy-name-override":"createWorkspace","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name"},"logoUrl":{"type":"string","format":"uri","description":"Optional workspace logo URL"}},"required":["name"]}}}},"responses":{"201":{"description":"Created workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Membership"}}}},"400":{"description":"Bad request - invalid workspace name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Workspace name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces":{"get":{"operationId":"listGitNamespaces","description":"List all git namespaces (GitHub installations) the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaces","parameters":[{"schema":{"type":"string","enum":["github"],"default":"github"},"required":false,"name":"provider","in":"query"}],"responses":{"200":{"description":"List of user's git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/sync":{"post":{"operationId":"syncGitNamespaces","description":"Sync git namespaces from the provider. For GitHub, this fetches all app installations accessible to the user.","x-speakeasy-group":"user","x-speakeasy-name-override":"syncGitNamespaces","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","enum":["github"],"description":"Git provider to sync"}},"required":["provider"]}}}},"responses":{"200":{"description":"Synced git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/{id}/repositories":{"get":{"operationId":"listGitNamespaceRepositories","description":"List repositories accessible through a git namespace (GitHub installation).","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaceRepositories","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Search query to filter repositories by name"},"required":false,"description":"Search query to filter repositories by name","name":"search","in":"query"}],"responses":{"200":{"description":"List of repositories.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitRepository"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Git namespace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/whoami":{"get":{"operationId":"whoami","description":"Get the current authenticated principal (user or service account). Works with both session cookies and API keys.","x-speakeasy-group":"auth","x-speakeasy-name-override":"whoami","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","example":"my-workspace"},"required":false,"description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Current authenticated principal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Subject"}}}},"400":{"description":"Missing required workspace for user credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces":{"get":{"operationId":"listWorkspaces","description":"Retrieve all workspaces.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search workspaces by name"},"required":false,"description":"Search workspaces by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Workspace"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}":{"get":{"operationId":"getWorkspace","description":"Retrieve a workspace by ID.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspace","description":"Update a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"}}}}}},"responses":{"200":{"description":"Workspace updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteWorkspace","description":"Delete a workspace. The workspace must have no projects.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Workspace deleted successfully."},"400":{"description":"Workspace still has projects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members":{"get":{"operationId":"listWorkspaceMembers","description":"List all members of a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"listMembers","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"List of workspace members.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceMember"}}},"required":["items"]}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"addWorkspaceMember","description":"Add a member to a workspace by email. The user must already have an account.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"addMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email of the user to add"},"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"Role to assign"}]}},"required":["email","role"]}}}},"responses":{"201":{"description":"Member added successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"404":{"description":"Workspace or user not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"User is already a member.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members/{userId}":{"patch":{"operationId":"updateWorkspaceMember","description":"Update a workspace member's role.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"New role to assign"}]}},"required":["role"]}}}},"responses":{"200":{"description":"Member role updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"400":{"description":"Cannot remove last admin.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"removeWorkspaceMember","description":"Remove a member from a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"removeMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Member removed successfully."},"400":{"description":"Cannot remove last admin or self.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/dismiss-onboarding":{"post":{"operationId":"dismissWorkspaceOnboarding","description":"Mark the Getting Started walkthrough as dismissed for a workspace. The dashboard stops auto-promoting onboarding once this is set; users can still re-enter the walkthrough via the help menu.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"dismissOnboarding","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace with onboardingDismissedAt populated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects":{"get":{"operationId":"listProjects","description":"Retrieve all projects.","x-speakeasy-group":"projects","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search projects by name"},"required":false,"description":"Search projects by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deploymentCount","latestRelease"]},"description":"Optional fields to include: deploymentCount, latestRelease"},"required":false,"description":"Optional fields to include: deploymentCount, latestRelease","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved projects.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProjectListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createProject","description":"Create a new project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name"]}}}},"responses":{"201":{"description":"Project created successfully.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"}}}]}}}},"400":{"description":"Invalid request or GitHub repository connection failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}":{"get":{"operationId":"getProject","description":"Retrieve a project by ID or name.","x-speakeasy-group":"projects","x-speakeasy-name-override":"get","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateProject","description":"Update a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"update","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProject"}}}},"responses":{"200":{"description":"Project updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteProject","description":"Delete a project. The project must have no deployments.","x-speakeasy-group":"projects","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Project deleted successfully."},"400":{"description":"Project still has deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/gcp-oauth-provider":{"get":{"operationId":"getProjectGcpOAuthProvider","description":"Retrieve redacted project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateProjectGcpOAuthProvider","description":"Update project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"updateGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectGcpOAuthProvider"}}}},"responses":{"200":{"description":"Google Cloud OAuth provider settings updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"400":{"description":"Invalid provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/deployment-portal-domain":{"get":{"operationId":"getProjectDeploymentPortalDomain","description":"Get the deployment portal domain binding for a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentPortalDomain","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved deployment portal domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentPortalDomainResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/import-template":{"post":{"operationId":"createProjectFromTemplate","description":"Create a project by forking alienplatform/alien into your namespace, then configuring GitHub Actions.","x-speakeasy-group":"projects","x-speakeasy-name-override":"createFromTemplate","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$","description":"GitHub owner namespace (user or organization) that will receive the fork"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name","targetNamespace","templatePath"]}}}},"responses":{"201":{"description":"Project created successfully from template.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"},"template":{"type":"object","properties":{"sourceRepository":{"type":"string","enum":["alienplatform/alien"]},"forkRepository":{"type":"string","description":"Fork repository in / format"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"resolvedRootDirectory":{"type":"string"}},"required":["sourceRepository","forkRepository","templatePath","resolvedRootDirectory"]}},"required":["template"]}]}}}},"400":{"description":"Bad request or GitHub integration not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Fork exists but is not ready yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/template-urls":{"get":{"operationId":"getProjectTemplateUrls","description":"Get template URLs for deploying setup stacks in this project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getTemplateUrls","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Template URLs retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"aws":{"type":"object","nullable":true,"properties":{"templateUrl":{"type":"string","format":"uri","description":"URL to download the CloudFormation template"},"launchStackUrl":{"type":"string","format":"uri","description":"URL to launch the template in the AWS CloudFormation console"}},"required":["templateUrl","launchStackUrl"],"description":"Template URLs for deploying an AWS setup stack"}}}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/active-release":{"get":{"operationId":"getProjectActiveRelease","description":"Get the active release for this project. Returns the latest release, or the pinned release if deploymentId is provided and that deployment has a pinned release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getActiveRelease","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Optional deployment ID to check for pinned release"},"required":false,"description":"Optional deployment ID to check for pinned release","name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Active release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or active release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups":{"post":{"operationId":"createDeploymentGroup","tags":["deployment-groups"],"summary":"Create a new deployment group","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group with this name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listDeploymentGroups","tags":["deployment-groups"],"summary":"List deployment groups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of deployment groups","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}":{"get":{"operationId":"getDeploymentGroup","tags":["deployment-groups"],"summary":"Get deployment group details","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Deployment group details","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"},"deploymentCount":{"type":"integer","description":"Current number of deployments in this deployment group"}},"required":["deploymentCount"]}]}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateDeploymentGroup","tags":["deployment-groups"],"summary":"Update deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDeploymentGroup","tags":["deployment-groups"],"summary":"Delete deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Deployment group deleted successfully"},"400":{"description":"Cannot delete deployment group that has deployments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/tokens":{"post":{"operationId":"createDeploymentGroupToken","tags":["deployment-groups"],"summary":"Create deployment group token","description":"Creates a deployment-group scoped API key and returns both the token and formatted deployment link","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenRequest"}}}},"responses":{"200":{"description":"Deployment group token created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/first-party-session":{"post":{"operationId":"createFirstPartyDeploymentSession","tags":["deployment-groups"],"summary":"Create first-party deployment session","description":"Mints a short-lived deployment-group token with the recommended self-deploy policy for the authenticated developer.","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"First-party deployment session created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFirstPartyDeploymentSessionResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages":{"get":{"operationId":"listPackages","description":"List packages with optional filters. Returns packages ordered by creation date (newest first).","x-speakeasy-group":"packages","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Filter by package type"},"required":false,"description":"Filter by package type","name":"type","in":"query"},{"schema":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Filter by package status"},"required":false,"description":"Filter by package status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search packages by type or version"},"required":false,"description":"Search packages by type or version","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of packages.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}":{"get":{"operationId":"getPackage","description":"Get details of a specific package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/rebuild":{"post":{"operationId":"rebuildPackages","description":"Rebuild packages for a project. This will cancel any pending packages and create new ones with auto-incremented versions.","x-speakeasy-group":"packages","x-speakeasy-name-override":"rebuild","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to rebuild packages for"}},"required":["project"]}}}},"responses":{"200":{"description":"Packages rebuilt successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"packagesCreated":{"type":"integer","description":"Number of packages created"}},"required":["packagesCreated"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}/cancel":{"post":{"operationId":"cancelPackage","description":"Cancel a pending or building package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"cancel","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package canceled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"400":{"description":"Package cannot be canceled (not in pending or building status).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases":{"get":{"operationId":"listReleases","description":"Retrieve all releases.","x-speakeasy-group":"releases","x-speakeasy-name-override":"list","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search releases by commit message, branch, SHA, or release ID"},"required":false,"description":"Search releases by commit message, branch, SHA, or release ID","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by git branch (commitRef)"},"required":false,"description":"Filter by git branch (commitRef)","name":"branch","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by commit author login or name"},"required":false,"description":"Filter by commit author login or name","name":"author","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created after this date (ISO 8601)"},"required":false,"description":"Filter releases created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created before this date (ISO 8601)"},"required":false,"description":"Filter releases created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved releases.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createRelease","description":"Create a new release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReleaseRequest"}}}},"responses":{"201":{"description":"Release created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Release"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/branches":{"get":{"operationId":"listReleaseBranches","description":"List distinct git branches across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listBranches","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search branches by name (case-insensitive contains)"},"required":false,"description":"Search branches by name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of branches to return"},"required":false,"description":"Maximum number of branches to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct branches.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/authors":{"get":{"operationId":"listReleaseAuthors","description":"List distinct commit authors across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listAuthors","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search authors by login or name (case-insensitive contains)"},"required":false,"description":"Search authors by login or name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of authors to return"},"required":false,"description":"Maximum number of authors to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct authors.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseAuthorFilterItem"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/{id}":{"get":{"operationId":"getRelease","description":"Retrieve a release by ID.","x-speakeasy-group":"releases","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"required":true,"description":"Unique identifier for the release.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseListItemResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments":{"get":{"operationId":"listDeployments","description":"Retrieve all deployments.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"list","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Filter by exact deployment name. Must be used with deploymentGroup."},"required":false,"description":"Filter by exact deployment name. Must be used with deploymentGroup.","name":"name","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name, public subdomain, or deployment group name"},"required":false,"description":"Search deployments by name, public subdomain, or deployment group name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved deployments.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"400":{"description":"Invalid deployment list filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDeployment","description":"Create a new deployment. Deployment group tokens automatically use their group. Workspace/project tokens must provide deploymentGroupId.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewDeploymentRequest"}}}},"responses":{"201":{"description":"Deployment created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"400":{"description":"Bad request - deployment group has reached max deployments limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Forbidden - insufficient permissions to create deployments in this context.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or deployment group not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/stats":{"get":{"operationId":"getDeploymentStats","description":"Get aggregated deployment statistics. Returns total count and breakdown by status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getStats","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name or deployment group name"},"required":false,"description":"Search deployments by name or deployment group name","name":"search","in":"query"}],"responses":{"200":{"description":"Deployment statistics retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentStats"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-environments":{"get":{"operationId":"listDeploymentFilterEnvironments","description":"List distinct effective environments used by deployments. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterEnvironments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-deployment-groups":{"get":{"operationId":"listDeploymentFilterDeploymentGroups","description":"List deployment groups with deployment counts. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterDeploymentGroups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return"},"required":false,"description":"Maximum number of items to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Deployment groups for filter retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"},"deploymentCount":{"type":"number"},"runningCount":{"type":"number","description":"Number of deployments in 'running' status"},"failedCount":{"type":"number","description":"Number of deployments in a failed status"},"inProgressCount":{"type":"number","description":"Number of deployments in an in-progress status (provisioning, updating, etc.)"}},"required":["id","name","deploymentCount","runningCount","failedCount","inProgressCount"]}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}":{"get":{"operationId":"getDeployment","description":"Retrieve a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentDetailResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/info":{"get":{"operationId":"getDeploymentConnectionInfo","description":"Get deployment connection information including command endpoint and resource URLs.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment connection information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentConnectionInfo"}}}},"400":{"description":"Deployment not ready (no manager assigned).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/import":{"post":{"operationId":"importDeployment","description":"Import a deployment from resolved setup infrastructure such as CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"import","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportDeploymentRequest"}}}},"responses":{"200":{"description":"Deployment import was idempotent and returned an existing deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"201":{"description":"Deployment imported and created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/first-party-inputs":{"put":{"operationId":"setFirstPartyDeploymentInputs","description":"Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setFirstPartyDeploymentInputs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Input values stored on the session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsResponse"}}}},"400":{"description":"A deployment-group token scope is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The token is not a first-party deployment session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to store input values.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations":{"post":{"operationId":"createSetupRegistrationOperation","description":"Start a durable setup registration operation for CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createSetupRegistrationOperation","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupRegistrationOperationRequest"}}}},"responses":{"202":{"description":"Setup registration operation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"400":{"description":"Invalid setup registration operation request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed before callback acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations/{id}":{"get":{"operationId":"getSetupRegistrationOperation","description":"Get setup registration operation status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getSetupRegistrationOperation","parameters":[{"schema":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"required":true,"description":"Unique identifier for the setup registration operation.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Setup registration operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"404":{"description":"Setup registration operation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/delete":{"post":{"operationId":"deleteDeployment","description":"Delete, detach, or forget a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentRequest"}}}},"responses":{"202":{"description":"Deployment deletion request accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentResponse"}}}},"400":{"description":"Cannot delete the deployment in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/redeploy":{"post":{"operationId":"redeployDeployment","description":"Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"redeploy","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment redeployment triggered successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot redeploy - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/pin-release":{"post":{"operationId":"pinDeploymentRelease","description":"Pin or unpin deployment to a specific release. Only works for running deployments. Controller will automatically trigger update to target release.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"pinRelease","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinReleaseRequest"}}}},"responses":{"202":{"description":"Release pin updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot pin release - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/retry":{"post":{"operationId":"retryDeployment","description":"Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"retry","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment retry enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Deployment is not in a failed state that can be retried.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/environment-variables":{"patch":{"operationId":"updateDeploymentEnvironmentVariables","description":"Update a deployment's environment variables. If the deployment is running and not locked, the status will be changed to update-pending to trigger a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateEnvironmentVariables","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentEnvironmentVariablesRequest"}}}},"responses":{"202":{"description":"Environment variables updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/token":{"post":{"operationId":"createDeploymentToken","description":"Create a deployment token (deployment-scoped API key). The deployment must exist before creating a token.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createToken","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenRequest"}}}},"responses":{"201":{"description":"Deployment token created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers":{"post":{"operationId":"createManager","description":"Create a new manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewManagerRequest"}}}},"responses":{"201":{"description":"Manager created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Invalid private manager setup method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"A manager for this target already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listManagers","description":"Retrieve all managers.","x-speakeasy-group":"managers","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search managers by name"},"required":false,"description":"Search managers by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of managers to return"},"required":false,"description":"Maximum number of managers to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved managers.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Manager"}}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/setup-token":{"post":{"operationId":"retryManagerSetup","description":"Revoke previous private-manager setup tokens and issue a fresh setup token/config.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retrySetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"201":{"description":"Fresh manager setup token generated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Manager setup cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or setup config not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/retry":{"post":{"operationId":"retryManager","description":"Retry private-manager setup. Returns a fresh setup action before the internal deployment exists, or requests retry for the internal deployment after it exists.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retry","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager retry handled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerRetryResponse"}}}},"400":{"description":"Manager cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or internal deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/cancel-setup":{"post":{"operationId":"cancelManagerSetup","description":"Cancel pending private-manager setup, revoke setup/runtime tokens, and remove the undeployed manager record.","x-speakeasy-group":"managers","x-speakeasy-name-override":"cancelSetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager setup canceled successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Manager setup cannot be canceled in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}":{"get":{"operationId":"getManager","description":"Retrieve a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"get","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manager"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteManager","description":"Delete a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"delete","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager deletion enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot delete the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Internal deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/domain-binding":{"get":{"operationId":"getManagerDomainBinding","description":"Get the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager domain binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateManagerDomainBinding","description":"Create, update, or remove the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"updateDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerDomainBinding"}}}},"responses":{"200":{"description":"Manager domain binding updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"400":{"description":"Invalid domain binding request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or domain not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/management-config":{"get":{"operationId":"getManagerManagementConfig","description":"Get the management configuration for a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getManagementConfig","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"required":true,"description":"Represents the target cloud platform.","name":"platform","in":"query"}],"responses":{"200":{"description":"Management config retrieved successfully.","content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/provision":{"post":{"operationId":"provisionManager","description":"Enqueue provisioning for a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"provision","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager provisioning enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot provision the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/update":{"post":{"operationId":"updateManager","description":"Update a manager to a specific release ID or active release.","x-speakeasy-group":"managers","x-speakeasy-name-override":"update","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerRequest"}}}},"responses":{"202":{"description":"Manager update enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot update the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/events":{"get":{"operationId":"listManagerEvents","description":"Retrieve all events of a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"listEvents","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}},"required":["items"]}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/token":{"post":{"operationId":"generateManagerToken","description":"Generate a short-lived JWT for direct browser → manager communication. Used for fetching command payloads and querying logs without routing sensitive data through the platform API.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerToken","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenRequest"}}}},"responses":{"200":{"description":"Manager access token and connection info.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/gcp-oauth-provider/resolve":{"post":{"operationId":"resolveManagerGcpOAuthProvider","description":"Resolve decrypted project-level Google Cloud OAuth provider settings for a manager-side deployment bootstrap.","x-speakeasy-group":"managers","x-speakeasy-name-override":"resolveGcpOAuthProvider","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderRequest"}}}},"responses":{"200":{"description":"Resolved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderResponse"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Manager cannot resolve this deployment group's project settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/heartbeat":{"post":{"operationId":"reportManagerHeartbeat","description":"Report Manager health status and metrics.","x-speakeasy-group":"managers","x-speakeasy-name-override":"reportHeartbeat","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatRequest"}}}},"responses":{"200":{"description":"Heartbeat acknowledged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/deployment":{"get":{"operationId":"getManagerDeployment","description":"Get deployment details for a private manager (internal deployment platform, status, resources).","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDeployment","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager deployment details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDeployment"}}}},"404":{"description":"Manager not found or has no internal deployment (alien-hosted managers don't have deployment info).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys":{"get":{"operationId":"listAPIKeys","description":"Retrieve all API keys for the current workspace.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved API keys.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/APIKey"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAPIKey","description":"Create a new API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyRequest"}}}},"responses":{"201":{"description":"API key created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyResponse"}}}},"403":{"description":"Insufficient permissions to create API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/{id}":{"get":{"operationId":"getAPIKey","description":"Retrieve a specific API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateAPIKey","description":"Update an API key (enable/disable, change description).","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAPIKeyRequest"}}}},"responses":{"200":{"description":"API key updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"revokeAPIKey","description":"Revoke (soft delete) an API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"revoke","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"API key revoked successfully."},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/batch-delete":{"post":{"operationId":"deleteAPIKeys","description":"Permanently delete multiple API keys.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"deleteMultiple","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAPIKeysRequest"}}}},"responses":{"200":{"description":"API keys deleted successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"deletedCount":{"type":"number"}},"required":["deletedCount"]}}}},"403":{"description":"Insufficient permissions to delete API keys.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains":{"get":{"operationId":"listDomains","description":"List system domains and workspace domains.","x-speakeasy-group":"domains","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domains.","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/DomainWithUsage"}}},"required":["domains"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDomain","description":"Create a workspace domain and optional initial endpoints.","x-speakeasy-group":"domains","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":253},"setup":{"type":"object","properties":{"deploymentPortal":{"type":"boolean"},"packages":{"type":"boolean"},"deploymentUrlProjectId":{"type":"string","nullable":true,"pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"managerIds":{"type":"array","items":{"type":"string"}}}}},"required":["domain"]}}}},"responses":{"200":{"description":"Returned an existing workspace domain claim.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"201":{"description":"Created domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Domain is reserved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/endpoints":{"post":{"operationId":"createDomainEndpoint","description":"Create an endpoint under a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"createEndpoint","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"owner":{"type":"object","properties":{"type":{"type":"string","enum":["workspace","project","manager"]},"id":{"type":"string"}},"required":["type","id"]}},"required":["kind"]}}}},"responses":{"201":{"description":"Created endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Endpoint cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}":{"get":{"operationId":"getDomain","description":"Get domain by ID.","x-speakeasy-group":"domains","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDomain","description":"Delete a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain deletion requested.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain is in use.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/refresh":{"post":{"operationId":"refreshDomain","description":"Refresh workspace domain verification.","x-speakeasy-group":"domains","x-speakeasy-name-override":"refresh","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain verification refresh requested.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events":{"get":{"operationId":"listEvents","description":"Retrieve all events.","x-speakeasy-group":"events","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter events to a single deployment."},"required":false,"description":"Filter events to a single deployment.","name":"deploymentId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events/{id}":{"get":{"operationId":"getEvent","description":"Retrieve an event by ID.","x-speakeasy-group":"events","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"required":true,"description":"Unique identifier for the event.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved event.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands":{"get":{"operationId":"listCommands","description":"Retrieve commands. Use for dashboard analytics and command history.","x-speakeasy-group":"commands","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Filter by command state"},"required":false,"description":"Filter by command state","name":"state","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Filter by command name"},"required":false,"description":"Filter by command name","name":"name","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search commands by name"},"required":false,"description":"Search commands by name","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created after this date (ISO 8601)"},"required":false,"description":"Filter commands created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created before this date (ISO 8601)"},"required":false,"description":"Filter commands created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deployment","project"]},"description":"Optional fields to include: deployment, project"},"required":false,"description":"Optional fields to include: deployment, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved commands.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommandListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createCommand","description":"Create command metadata. Called by manager when processing commands. Returns project info for routing decisions.","x-speakeasy-group":"commands","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandRequest"}}}},"responses":{"201":{"description":"Command created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/names":{"get":{"operationId":"listCommandNames","description":"List distinct command names. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listNames","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search command names (prefix match)"},"required":false,"description":"Search command names (prefix match)","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct command names.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandNamesResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/deployments":{"get":{"operationId":"listCommandDeployments","description":"List distinct deployments that have commands, including deployment group info. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search deployment or deployment group names"},"required":false,"description":"Search deployment or deployment group names","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct deployments that have commands.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandDeploymentsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/{id}":{"patch":{"operationId":"updateCommand","description":"Update command state. Called by manager when command is dispatched or completes.","x-speakeasy-group":"commands","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCommandRequest"}}}},"responses":{"200":{"description":"Command updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Command not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getCommand","description":"Retrieve a command by ID.","x-speakeasy-group":"commands","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved command.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions":{"get":{"operationId":"listDebugSessions","description":"Retrieve debug sessions for dashboard audit. Filters: project, deployment, state, mode.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Filter by session state"}]},"required":false,"description":"Filter by session state","name":"state","in":"query"},{"schema":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model (push/pull). Joins against the parent deployment."},"required":false,"description":"Filter by deployment model (push/pull). Joins against the parent deployment.","name":"mode","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Filter by cloud provider. Joins against the parent deployment."},"required":false,"description":"Filter by cloud provider. Joins against the parent deployment.","name":"provider","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Paginated debug sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSessionListResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDebugSession","description":"Create a debug-session audit row. Called by the manager when a pull or push debug tunnel is opened. Workspace + project derived from deployment.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDebugSessionRequest"}}}},"responses":{"201":{"description":"Debug session created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions/{id}":{"patch":{"operationId":"updateDebugSession","description":"Update debug-session state. Called by manager on tunnel attach, close, or deadline expiry.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDebugSessionRequest"}}}},"responses":{"200":{"description":"Debug session updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Debug session not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getDebugSession","description":"Retrieve a debug session by ID.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved debug session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info":{"get":{"operationId":"getDeploymentInfo","description":"Get deployment information for the deployment portal. Accepts both deployment-scoped and deployment-group-scoped API keys. Returns project information, package status/outputs, and either deployment or deployment group details depending on the token type. Poll this endpoint to check if packages are ready.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment information retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInfo"}}}},"401":{"description":"Unauthorized — requires a deployment-scoped or deployment-group-scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/compute-plan":{"post":{"operationId":"planDeploymentCompute","description":"Plan deployment compute for the active release before stack preparation. The response contains recommended machine and scale choices for cloud compute pools.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"planCompute","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Compute plan returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentComputePlan"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/prepare-stack":{"post":{"operationId":"prepareDeploymentStack","description":"Prepare the active release stack for a deployment portal setup session. The response contains the generated stack shape plus setup compatibility metadata.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"prepareStack","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Prepared stack returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreparedDeploymentStack"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/list":{"post":{"operationId":"syncList","description":"List full deployment records for manager operational loops. This endpoint is intentionally separate from the public deployments list, which returns lightweight UI rows.","x-speakeasy-group":"sync","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListRequest"}}}},"responses":{"200":{"description":"Full deployment records returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/acquire":{"post":{"operationId":"syncAcquire","description":"Acquire a batch of deployments for processing. Used by Manager to atomically lock deployments matching filters. Each deployment in the batch must be released after processing.","x-speakeasy-group":"sync","x-speakeasy-name-override":"acquire","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireRequest"}}}},"responses":{"200":{"description":"Deployments acquired successfully (empty arrays if none available). Failures indicate deployments that were locked but failed during context building - their locks have been released.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/reconcile":{"post":{"operationId":"syncReconcile","description":"Reconcile deployment state. Push model requests that include a session verify lock ownership. Pull model state reports are accepted as authz-gated agent progress even when they carry an agent-sync session. Accepts full DeploymentState after step() execution.","x-speakeasy-group":"sync","x-speakeasy-name-override":"reconcile","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileRequest"}}}},"responses":{"200":{"description":"State reconciled successfully. If target is present, continue deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment locked (pull) or session mismatch (push).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/release":{"post":{"operationId":"syncRelease","description":"Release a deployment lock. Must be called after processing an acquired deployment, even if processing failed. This is critical to avoid deadlocks.","x-speakeasy-group":"sync","x-speakeasy-name-override":"release","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReleaseRequest"}}}},"responses":{"200":{"description":"Lock released successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}":{"get":{"operationId":"listResourceOverview","x-speakeasy-group":"resources","x-speakeasy-name-override":"listOverview","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Compute resource overview rows from latest heartbeats.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"deploymentCount":{"type":"integer"},"attentionCount":{"type":"integer"},"lastObservedAt":{"type":"string","format":"date-time"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt"]}}},"required":["resources"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/{resourceId}/deployments":{"get":{"operationId":"listResourceDeployments","x-speakeasy-group":"resources","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Deployments where the resource is installed.","content":{"application/json":{"schema":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]}}},"required":["resourceType","resourceId","deployments"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/deployments/{deploymentId}/{resourceId}":{"get":{"operationId":"getResourceDeploymentDetail","x-speakeasy-group":"resources","x-speakeasy-name-override":"getDeploymentDetail","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Latest heartbeat detail for one compute resource deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"deployment":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]},"heartbeat":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","enum":["available"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"staleAt":{"type":"string","format":"date-time"},"platformStale":{"type":"boolean"},"heartbeat":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"raw":{"type":"array","items":{"nullable":true}}},"required":["status","deploymentId","resourceId","resourceType","backend","controllerPlatform","observedAt","staleAt","platformStale","heartbeat","raw"]},{"type":"object","properties":{"status":{"type":"string","enum":["missing"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"}},"required":["status","deploymentId","resourceId","resourceType"]}]}},"required":["deployment","heartbeat"]}}}},"404":{"description":"Deployment or resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resolve":{"get":{"operationId":"resolve","tags":["resolve"],"summary":"Resolve manager for a project and platform","description":"Returns the manager URL for a given project and platform. The project can be provided as a query parameter, or derived from the token's scope (project-scoped, deployment-group-scoped, or deployment-scoped tokens carry an implicit project). This is the single entry point for all CLI tools to discover which manager to talk to.","x-speakeasy-group":"resolve","x-speakeasy-name-override":"resolve","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform to resolve the manager for"},"required":true,"description":"Target platform to resolve the manager for","name":"platform","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope)."},"required":false,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope).","name":"project","in":"query"}],"responses":{"200":{"description":"Manager resolved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveResponse"}}}},"400":{"description":"Missing required project parameter for this token type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found or no manager available for platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Manager not ready yet (no URL reported). Retry after a delay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/cloud-regions":{"get":{"operationId":"getCloudRegions","description":"Get cloud regions supported by this Alien environment.","x-speakeasy-group":"cloudRegions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Supported cloud regions retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudRegionsResponse"}}}}}}},"/v1/billing/audit-log":{"get":{"operationId":"listBillingAuditLog","description":"List billing activity entries for the current workspace.","x-speakeasy-group":"billing","x-speakeasy-name-override":"listAuditLog","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor: id from the previous page."},"required":false,"description":"Cursor: id from the previous page.","name":"before","in":"query"}],"responses":{"200":{"description":"Audit-log rows newest-first.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/BillingAuditLogRow"}},"nextCursor":{"type":"string","nullable":true}},"required":["items","nextCursor"]}}}}}}},"/v1/billing/entitlements":{"get":{"operationId":"getWorkspaceBillingEntitlements","description":"Get the workspace billing entitlements used for product feature gates. Autumn is the source of truth; the response is served through the workspace billing read model with stale-cache fallback.","x-speakeasy-group":"billing","x-speakeasy-name-override":"getEntitlements","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace billing entitlements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceBillingEntitlements"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}}}} \ No newline at end of file +{"openapi":"3.0.0","info":{"title":"Alien API","version":"1.0.0","contact":{"name":"Alien Team","url":"https://alien.dev"}},"servers":[{"url":"https://api.alien.dev","description":"Alien API - Production"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key for authentication, must be provided as a Bearer token. Generate an API key at https://alien.dev/api-keys"}},"schemas":{"Membership":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"role":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","logoUrl","role","createdAt"],"additionalProperties":false},"APIError":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."}},"required":["code","message","internal"]},"UserProfile":{"type":"object","properties":{"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","description":"User's email address"},"name":{"type":"string","description":"User's display name"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"},"githubUsername":{"type":"string","nullable":true,"description":"Linked GitHub username"},"cliConnected":{"type":"boolean","description":"Whether this user has ever authenticated a request from the Alien CLI. Latched on first CLI request, never cleared."},"company":{"type":"string","nullable":true,"description":"Company name collected during profile setup."},"acquisitionSource":{"type":"string","nullable":true,"enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other",null],"description":"How the user heard about Alien."},"acquisitionSourceDetail":{"type":"string","nullable":true,"description":"Additional acquisition source detail when the source is other."},"useCases":{"type":"string","nullable":true,"description":"What the user is hoping to use Alien for."},"profileSetupCompletedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the user completed the required profile setup dialog."},"profileSetupVersion":{"type":"integer","nullable":true,"description":"Version of the required profile setup dialog the user completed."}},"required":["id","email","name","image","githubUsername","cliConnected","company","acquisitionSource","acquisitionSourceDetail","useCases","profileSetupCompletedAt","profileSetupVersion"],"additionalProperties":false},"UserProfileSetupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"},"company":{"type":"string","minLength":1,"maxLength":120,"description":"Company name"},"acquisitionSource":{"type":"string","enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other"],"description":"How the user heard about Alien"},"acquisitionSourceDetail":{"type":"string","minLength":1,"maxLength":200,"description":"Required when acquisitionSource is other"},"useCases":{"type":"string","maxLength":2000,"description":"What the user is hoping to use Alien for"}},"required":["name","company","acquisitionSource"],"additionalProperties":false},"GitNamespace":{"type":"object","properties":{"id":{"type":"number","nullable":true},"name":{"type":"string"},"slug":{"type":"string"},"installationId":{"type":"number","nullable":true},"type":{"type":"string","enum":["team","user"]},"provider":{"type":"string","enum":["github"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","slug","installationId","type","provider","createdAt"],"additionalProperties":false},"GitRepository":{"type":"object","properties":{"name":{"type":"string"},"private":{"type":"boolean"},"defaultBranch":{"type":"string"},"pushedAt":{"type":"string","format":"date-time"}},"required":["name","private","defaultBranch"],"additionalProperties":false},"Subject":{"oneOf":[{"$ref":"#/components/schemas/UserSubject"},{"$ref":"#/components/schemas/ServiceAccountSubject"}],"discriminator":{"propertyName":"kind","mapping":{"user":"#/components/schemas/UserSubject","serviceAccount":"#/components/schemas/ServiceAccountSubject"}},"description":"Authenticated principal that can be either a user (with workspace-scoped permissions) or a service account (with configurable scope and role)"},"UserSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["user"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","format":"email","description":"User's email address"},"workspaceId":{"type":"string","description":"ID of the workspace the user is authenticated within"},"workspaceName":{"type":"string","description":"Name of the workspace the user is authenticated within"},"role":{"$ref":"#/components/schemas/UserRole"}},"required":["kind","id","email","workspaceId","role"],"description":"Authenticated user subject with workspace-scoped permissions"},"UserRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"User's role within the workspace","example":"workspace.member"},"ServiceAccountSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["serviceAccount"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique service account identifier (API key ID)"},"workspaceId":{"type":"string","description":"ID of the workspace the service account belongs to"},"workspaceName":{"type":"string","description":"Name of the workspace the service account belongs to"},"scope":{"$ref":"#/components/schemas/SubjectScope"},"role":{"$ref":"#/components/schemas/Role"}},"required":["kind","id","workspaceId","scope","role"],"description":"Authenticated service account subject with scoped permissions (workspace, project, or deployment level)"},"SubjectScope":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["workspace"],"description":"Workspace-scoped access"}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["project"],"description":"Project-scoped access"},"projectId":{"type":"string","description":"ID of the specific project this scope applies to"}},"required":["type","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment"],"description":"Deployment-scoped access"},"deploymentId":{"type":"string","description":"ID of the specific deployment this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"}},"required":["type","deploymentId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"],"description":"Deployment group-scoped access"},"deploymentGroupId":{"type":"string","description":"ID of the specific deployment group this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"}},"required":["type","deploymentGroupId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["manager"],"description":"Manager-scoped access"},"managerId":{"type":"string","description":"ID of the specific manager this scope applies to"}},"required":["type","managerId"]}],"description":"Authorization scope defining what resources this service account can access"},"Role":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"$ref":"#/components/schemas/ProjectRole"},{"$ref":"#/components/schemas/DeploymentRole"},{"$ref":"#/components/schemas/DeploymentGroupRole"},{"$ref":"#/components/schemas/ManagerRole"}],"description":"Role defining what actions this service account can perform within its scope","example":"workspace.member"},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"ProjectRole":{"type":"string","enum":["project.viewer","project.developer"],"description":"Role for project-scoped service accounts","example":"project.developer"},"DeploymentRole":{"type":"string","enum":["deployment.viewer","deployment.manager","deployment.telemetry-writer"],"description":"Role for deployment-scoped service accounts","example":"deployment.manager"},"DeploymentGroupRole":{"type":"string","enum":["deployment-group.deployer"],"description":"Role for deployment group-scoped service accounts","example":"deployment-group.deployer"},"ManagerRole":{"type":"string","enum":["manager.runtime"],"description":"Role for manager-scoped service accounts","example":"manager.runtime"},"Workspace":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name.","example":"my-workspace"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"onboardingDismissedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the Getting Started walkthrough was dismissed or completed for this workspace. Null means it has never been dismissed; the dashboard auto-promotes the walkthrough until this is set."},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","onboardingDismissedAt","createdAt"],"additionalProperties":false},"WorkspaceMember":{"type":"object","properties":{"userId":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"image":{"type":"string","nullable":true},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"joinedAt":{"type":"string","format":"date-time"}},"required":["userId","email","name","image","role","joinedAt"],"additionalProperties":false},"ProjectListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"deploymentCount":{"type":"number"},"latestRelease":{"$ref":"#/components/schemas/ProjectReleaseInfo"}}}]},"DeploymentPortalAppearancePreset":{"type":"string","enum":["clean","technical","enterprise","playful","minimal"],"default":"clean","description":"Curated visual style for the deployment portal."},"DeploymentPortalAccentColor":{"type":"string","enum":["blue","purple","green","orange","pink","slate"],"default":"blue","description":"Accent color used for highlights and primary actions."},"DeploymentPortalDensity":{"type":"string","enum":["comfortable","compact"],"default":"comfortable","description":"Layout density for portal content."},"ProjectReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","gitMetadata","createdAt"]},"GitMetadata":{"type":"object","nullable":true,"properties":{"commitSha":{"type":"string","nullable":true,"maxLength":40,"description":"The hash of the commit","example":"dc36199b2234c6586ebe05ec94078a895c707e29"},"commitMessage":{"type":"string","nullable":true,"maxLength":1024,"description":"The commit message","example":"add method to measure Interaction to Next Paint (INP) (#36490)"},"commitRef":{"type":"string","nullable":true,"maxLength":256,"description":"The branch or tag on which the commit was made","example":"main"},"commitDate":{"type":"string","nullable":true,"format":"date-time","description":"The date and time when the commit was created","example":"2026-03-16T12:00:00Z"},"dirty":{"type":"boolean","nullable":true,"description":"Whether or not there have been modifications to the working tree since the latest commit","example":true},"remoteUrl":{"type":"string","nullable":true,"maxLength":2048,"description":"The git repository's remote origin url","example":"https://github.com/alienplatform/alien"},"commitAuthorName":{"type":"string","nullable":true,"maxLength":256,"description":"The name of the author of the commit (from git config)","example":"John Doe"},"commitAuthorEmail":{"type":"string","nullable":true,"maxLength":256,"format":"email","description":"The email of the author of the commit (from git config)","example":"john@example.com"},"commitAuthorLogin":{"type":"string","nullable":true,"maxLength":256,"description":"The provider username of the commit author (e.g., GitHub login), resolved server-side from the commit email","example":"johndoe"},"commitAuthorAvatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"The avatar URL of the commit author, resolved server-side from the provider login","example":"https://github.com/johndoe.png"},"provider":{"$ref":"#/components/schemas/GitProvider"}}},"GitProvider":{"oneOf":[{"$ref":"#/components/schemas/GitHubProvider"},{"$ref":"#/components/schemas/GitLabProvider"},{"nullable":true}],"description":"Provider-specific repository information, resolved server-side from remoteUrl"},"GitHubProvider":{"type":"object","properties":{"type":{"type":"string","enum":["github"]},"org":{"type":"string","maxLength":256,"description":"Repository owner (user or organization)"},"repo":{"type":"string","maxLength":256,"description":"Repository name"}},"required":["type","org","repo"]},"GitLabProvider":{"type":"object","properties":{"type":{"type":"string","enum":["gitlab"]},"namespace":{"type":"string","maxLength":256,"description":"Group/project namespace"},"project":{"type":"string","maxLength":256,"description":"Project name"}},"required":["type","namespace","project"]},"Project":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","name","createdAt","workspaceId"]},"ProjectIDOrNamePathParam":{"type":"string","maxLength":100,"description":"Project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"ProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","redirectUris"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"hasClientSecret":{"type":"boolean","enum":[true]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","clientId","hasClientSecret","redirectUris"]}]},"GcpOAuthClientId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[a-zA-Z0-9_-]+-[a-zA-Z0-9_-]+\\.apps\\.googleusercontent\\.com$","description":"Google OAuth web client ID.","example":"1234567890-abc123.apps.googleusercontent.com"},"UpdateProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId"]}]},"GcpOAuthClientSecret":{"type":"string","minLength":1,"maxLength":512,"description":"Google OAuth web client secret. Write-only; never returned by the API.","example":"GOCSPX-example"},"UpdateProject":{"type":"object","properties":{"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."}}},"DeploymentPortalDomainResponse":{"type":"object","properties":{"deploymentPortalEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"},"packageEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["deploymentPortalEndpoint","packageEndpoint"]},"DomainEndpoint":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"dend_[0-9a-z]{28}$","description":"Unique identifier for the domain endpoint.","example":"dend_1bb6gdvm1bs74acqkjstcgv"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domainId":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"kind":{"$ref":"#/components/schemas/DomainEndpointKind"},"owner":{"$ref":"#/components/schemas/DomainEndpointOwner"},"hostname":{"type":"string","minLength":1,"maxLength":253},"status":{"$ref":"#/components/schemas/DomainEndpointStatus"},"provider":{"type":"string","nullable":true},"providerState":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"managedDnsRecords":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPortalManagedDnsRecord"}},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"retryAttempts":{"type":"integer","minimum":0},"nextStepAfter":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","workspaceId","domainId","kind","owner","hostname","status","managedDnsRecords","retryAttempts","createdAt","updatedAt"]},"DomainEndpointKind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"DomainEndpointOwner":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/DomainEndpointOwnerType"},"id":{"type":"string"}},"required":["type","id"]},"DomainEndpointOwnerType":{"type":"string","enum":["workspace","project","manager"]},"DomainEndpointStatus":{"type":"string","enum":["waiting_for_domain","provisioning","waiting_for_dns","waiting_for_health","active","failed","deleting"]},"DeploymentPortalManagedDnsRecord":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"value":{"type":"string"},"ttl":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true}},"required":["name","type","value"]},"DeploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments allowed in this deployment group"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","projectId","workspaceId","createdAt"]},"CreateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"project":{"type":"string","maxLength":100,"description":"Project ID or name this deployment group belongs to"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments in this deployment group"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"maxDeployments":{"type":"integer","minimum":1,"description":"Maximum number of deployments in this deployment group"}}},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateDeploymentGroupTokenRequest":{"type":"object","properties":{"description":{"type":"string","description":"Description for the API key"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"},"deploymentSetupConfig":{"$ref":"#/components/schemas/DeploymentSetupConfig"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"DeploymentSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"}},"required":["metadata","policy","environmentVariables"]},"DeploymentSetupMetadata":{"type":"object","additionalProperties":{"nullable":true}},"DeploymentSetupPolicy":{"type":"object","properties":{"allowedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"allowedDeploymentModels":{"type":"array","items":{"type":"string","enum":["push","pull","airgapped"]}},"allowedNetworkModes":{"type":"array","items":{"type":"string","enum":["none","create","default","byo"]}},"allowedUpdatesModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required"]}},"allowedTelemetryModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required","off"]}},"allowedHeartbeatsModes":{"type":"array","items":{"type":"string","enum":["on","off"]}},"allowExternalBindings":{"type":"boolean"},"allowCustomRegistry":{"type":"boolean"}}},"EnvironmentVariableConfig":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"value":{"type":"string","maxLength":10000,"description":"Variable value (encrypted in database)"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","value","type","targetResources"]},"EnvironmentVariableType":{"type":"string","enum":["plain","secret"],"description":"Variable type (plain or secret)"},"EncryptedStackInputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EncryptedStackInputValue"},"default":{}},"EncryptedStackInputValue":{"type":"object","properties":{"value":{"type":"string","description":"Encrypted JSON-encoded input value."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"]},"secret":{"type":"boolean","description":"Whether the original input is secret."}},"required":["value","kind","secret"]},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"Package":{"type":"object","properties":{"id":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"type":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Types of packages that can be built"},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string","description":"Package version (e.g., '1.0.0', 'rel_abc123')"},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"setupFingerprints":{"$ref":"#/components/schemas/SetupFingerprintMap"},"packageBuildInputHash":{"type":"string","description":"Hash of Platform-known package build request inputs: package type, source release, setup fingerprints, package config, and setup contract version"},"config":{"oneOf":[{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"}},"required":["displayName","name"],"description":"Branding configuration for the deploy CLI binary."},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for CloudFormation packages"},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"}},"required":["chartName","description"],"description":"Configuration for the Helm chart package"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"}},"required":["displayName","name"],"description":"Branding configuration for the Operator image."},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for Terraform package generation."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]}],"description":"Type-specific configuration"},"outputs":{"oneOf":[{"allOf":[{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"digest":{"type":"string","description":"Image digest (e.g., \"sha256:abc123...\")"},"image":{"type":"string","description":"Full image reference (e.g., \"public.ecr.aws/acme/operators/project-id:1.2.3\")"}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]},{"nullable":true}],"description":"Package outputs (only when status is 'ready')"},"error":{"nullable":true,"description":"Error information if status is 'failed'"},"sourceBinarySha256":{"type":"string","nullable":true,"description":"Builder-recorded source binary SHA256 (for cli/terraform packages)"},"retries":{"type":"integer","minimum":0,"description":"Number of build retries"},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","projectId","workspaceId","type","status","version","sourceReleaseId","setupFingerprints","packageBuildInputHash","config","retries","createdAt","updatedAt"]},"SetupFingerprintMap":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SetupFingerprintInfo"},"description":"Per-target setup compatibility fingerprints copied from the source release"},"SetupFingerprintInfo":{"type":"object","properties":{"target":{"$ref":"#/components/schemas/SetupTarget"},"fingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"version":{"$ref":"#/components/schemas/SetupFingerprintVersion"}},"required":["target","fingerprint","version"]},"SetupTarget":{"type":"string","minLength":1,"description":"Stable target key for the setup contract, e.g. aws/us-east-1"},"SetupFingerprint":{"type":"string","minLength":1,"description":"Deterministic setup contract fingerprint for one setup target"},"SetupFingerprintVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup fingerprint algorithm version"},"ReleaseListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Release"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"StackByPlatform":{"type":"object","properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"Release":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"projectId":{"type":"string","maxLength":128},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"workspaceId":{"type":"string","maxLength":128}},"required":["id","projectId","createdAt","stack","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256}},"required":["project"]},"ReleaseAuthorFilterItem":{"type":"object","properties":{"login":{"type":"string","nullable":true,"description":"Provider username (e.g., GitHub login)"},"name":{"type":"string","nullable":true,"description":"Git commit author name"},"avatarUrl":{"type":"string","nullable":true,"format":"uri","description":"Author avatar URL"}},"required":["login","name","avatarUrl"]},"DeploymentListItemResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint version"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if in a failed state"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"$ref":"#/components/schemas/ManagerID"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version reported on the last sync"},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS"},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture"},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime: os-service or kubernetes"},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag)"},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver) for upgrade-driven sync"},"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"ManagerID":{"type":"string","pattern":"mgr_[0-9a-z]{28}$","description":"ID of the manager","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"DeploymentReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","createdAt"]},"DeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"}},"required":["id","name"]},"DeploymentProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"}},"required":["id","name"]},"DeploymentStats":{"type":"object","properties":{"total":{"type":"number","description":"Total number of deployments matching filters"},"byStatus":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by status (only includes statuses with non-zero counts)"},"byPlatform":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by platform (only includes platforms with non-zero counts)"},"byCurrentRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by currentReleaseId. The empty string key represents deployments with no current release (initial provisioning)."},"byPinnedRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by pinnedReleaseId among deployments that are pinned. Excludes unpinned deployments."}},"required":["total","byStatus","byPlatform","byCurrentRelease","byPinnedRelease"]},"DeploymentDetailResponse":{"allOf":[{"$ref":"#/components/schemas/Deployment"},{"type":"object","properties":{"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}}}]},"Deployment":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"targetEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of target environment variables for the deployment"},"currentEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of current environment variables for the deployment"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version reported on the last sync (e.g. \"1.3.5\")"},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS reported on the last sync"},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture reported on the last sync"},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends."},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from."},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target."}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentConnectionInfo":{"type":"object","properties":{"arc":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Manager URL for commands"},"deploymentId":{"type":"string","description":"Deployment ID to use in command requests"}},"required":["url","deploymentId"]},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"publicEndpoints":{"type":"object","additionalProperties":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"host":{"type":"string"},"wildcardHost":{"type":"string"}},"required":["url"]},"description":"Public endpoints keyed by endpoint name."}},"required":["type"]},"description":"Deployed resources and their public endpoints"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment"]},"NewDeploymentRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentGroupId":{"type":"string","description":"Required for workspace/project tokens. Deployment group tokens use their own group automatically."},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Optional manager to assign. If omitted, the project default or system manager is selected."}]},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"Stack settings for deployment customization"},"resourcePrefix":{"$ref":"#/components/schemas/ResourcePrefix"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method that created the deployment. Defaults to cli."}]},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup method metadata used to guide privileged teardown."}]},"inputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{},"description":"Stack input values provided by the deployment creator."}},"required":["name","platform","project"],"additionalProperties":false,"description":"Request schema for creating a new deployment"},"ResourcePrefix":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?=[a-z0-9])){1,38}[a-z0-9]$","description":"Optional physical-name prefix for generated cloud resources. Omit to let the manager generate one."},"RejoinDeploymentResponse":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"token":{"type":"string","description":"Fresh deployment-scoped sync token. The previously-issued token is NOT revoked — callers that want strict single-token semantics should rotate explicitly via the api-keys endpoints."}},"required":["deploymentId","token"]},"RejoinDeploymentRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Deployment name to rejoin. Must already exist in the caller's deployment group."}},"required":["name"],"additionalProperties":false,"description":"Request schema for re-acquiring a deployment-scoped sync token after local state loss."},"ImportDeploymentRequest":{"oneOf":[{"$ref":"#/components/schemas/ForwardImportRequest"},{"$ref":"#/components/schemas/PersistImportedDeploymentRequest"}],"description":"Request schema for importing a deployment from resolved setup infrastructure"},"ForwardImportRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["forward"],"default":"forward"},"project":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user-session callers."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Required for user-session callers. Deployment-group tokens use their own group automatically.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager ID. If omitted, the first suitable manager for the source platform is used."}]},"source":{"$ref":"#/components/schemas/ImportSource"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["source"]},"ImportSource":{"type":"object","properties":{"deploymentName":{"type":"string","minLength":1,"description":"User-chosen deployment name. Must be unique within the deployment group; the manager returns 409 on collision."},"resourcePrefix":{"allOf":[{"$ref":"#/components/schemas/ResourcePrefix"},{"description":"Stable physical-name prefix used by the setup artifact."}]},"sourceKind":{"$ref":"#/components/schemas/ImportSourceKind"},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup source metadata needed to guide privileged teardown."}]},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release that produced the setup artifact. Defaults to latest.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Cloud platform of the imported stack"},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"region":{"type":"string","description":"Region or location reported by the setup artifact"},"setupTarget":{"allOf":[{"$ref":"#/components/schemas/SetupTarget"},{"description":"Setup target this package was generated for"}]},"setupImportFormatVersion":{"$ref":"#/components/schemas/SetupImportFormatVersion"},"setupFingerprint":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprint"},{"description":"Setup compatibility fingerprint embedded in the package"}]},"setupFingerprintVersion":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintVersion"},{"description":"Setup fingerprint algorithm version embedded in the package"}]},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ImportedResource"},"minItems":1}},"required":["deploymentName","resourcePrefix","platform","region","setupTarget","setupImportFormatVersion","setupFingerprint","setupFingerprintVersion","stackSettings","resources"],"description":"Resolved setup import payload"},"ImportSourceKind":{"type":"string","enum":["cloudformation","terraform","helm"],"description":"Source label for observability only — does not affect import behavior."},"KubernetesBasePlatform":{"type":"string","enum":["aws","gcp","azure"],"description":"Base cloud platform for cloud-backed Kubernetes imports."},"SetupImportFormatVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup import payload format version embedded in the package"},"ImportedResource":{"type":"object","properties":{"id":{"type":"string","description":"Resource id from the active stack"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"importData":{"type":"object","additionalProperties":{"nullable":true},"description":"Resolved typed import payload"}},"required":["id","type","importData"]},"PersistImportedDeploymentRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["persist"]},"name":{"type":"string","minLength":1,"description":"Deployment name. Must be unique within the deployment group."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"stackState":{"nullable":true},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"runtimeMetadata":{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"default":"provisioning","description":"Deployment status in the deployment lifecycle"},"currentReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"setupMetadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"setupTarget":{"$ref":"#/components/schemas/SetupTarget"},"setupFingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"setupFingerprintVersion":{"$ref":"#/components/schemas/SetupFingerprintVersion"},"deploymentToken":{"type":"string"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["mode","name","deploymentGroupId","managerId","platform","stackSettings","runtimeMetadata","deploymentProtocolVersion","setupTarget","setupFingerprint","setupFingerprintVersion"]},"SetFirstPartyDeploymentInputsResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"SetFirstPartyDeploymentInputsRequest":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["platform"]},"SetupRegistrationOperationResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"status":{"$ref":"#/components/schemas/SetupRegistrationOperationStatus"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"physicalResourceId":{"type":"string","nullable":true},"result":{"$ref":"#/components/schemas/SetupRegistrationOperationResult"},"error":{"type":"object","nullable":true,"properties":{"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["message","retryable"]}},"required":["id","action","sourceKind","status","deploymentId","physicalResourceId","result","error"]},"SetupRegistrationAction":{"type":"string","enum":["create","update","delete"]},"SetupRegistrationOperationStatus":{"type":"string","enum":["pending","processing","waiting-for-handoff","succeeded","failed","responding","responded"]},"SetupRegistrationOperationResult":{"type":"object","nullable":true,"properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentToken":{"type":"string","nullable":true},"helmValues":{"type":"string","nullable":true}},"required":["deploymentId","deploymentToken","helmValues"]},"CreateSetupRegistrationOperationRequest":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"source":{"allOf":[{"$ref":"#/components/schemas/ImportSource"}],"nullable":true},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":512},"cloudFormation":{"$ref":"#/components/schemas/SetupRegistrationCloudFormationTarget"}},"required":["action","sourceKind"],"additionalProperties":false},"SetupRegistrationCloudFormationTarget":{"type":"object","nullable":true,"properties":{"stackId":{"type":"string","minLength":1},"requestId":{"type":"string","minLength":1},"logicalResourceId":{"type":"string","minLength":1},"responseUrl":{"type":"string","format":"uri"},"physicalResourceId":{"type":"string","nullable":true,"minLength":1},"serviceTimeoutSeconds":{"type":"integer","minimum":60,"maximum":7200,"default":3300}},"required":["stackId","requestId","logicalResourceId","responseUrl"],"additionalProperties":false},"DeleteDeploymentResponse":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]},"message":{"type":"string"}},"required":["action","message"]},"DeleteDeploymentRequest":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]}},"required":["action"]},"PinReleaseRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release ID to pin the deployment to. Set to null to unpin and use active release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for pinning/unpinning deployment release"},"SetTargetAgentVersionRequest":{"type":"object","properties":{"targetAgentVersion":{"type":"string","nullable":true,"pattern":"^\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]+)?$","description":"Target agent version (semver). null or omitted clears the target."}},"additionalProperties":false,"description":"Set or clear the target agent version"},"UpdateDeploymentEnvironmentVariablesRequest":{"type":"object","properties":{"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"value":{"type":"string","description":"Variable value"},"type":{"type":"string","enum":["plain","secret"],"description":"Variable type"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources)"}},"required":["name","value","type"]},"description":"Environment variables for the deployment"}},"required":["variables"],"additionalProperties":false,"description":"Request schema for updating deployment environment variables"},"CreateDeploymentTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The generated deployment token (only shown once)"},"deploymentId":{"type":"string","description":"The deployment ID that this token is scoped to"}},"required":["token","deploymentId"]},"CreateDeploymentTokenRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128,"description":"Optional description for the deployment token"},"expiresAt":{"type":"string","format":"date-time","description":"Optional expiration date for the deployment token"}},"required":["description"]},"CreateManagerResponse":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["pending"]},"setupToken":{"type":"string"},"setupTokenId":{"type":"string"},"deploymentLink":{"type":"string"},"setupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["plain","secret"]},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"}}},"required":["name","type","targetResources"]}}},"required":["metadata","policy","environmentVariables"]},"setup":{"oneOf":[{"type":"object","properties":{"method":{"type":"string","enum":["cloudformation"]},"deploymentPortalUrl":{"type":"string"},"launchUrl":{"type":"string"},"templateUrl":{"type":"string"},"stackName":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","launchUrl","templateUrl","stackName","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["google-oauth"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"oauthStartUrl":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","oauthStartUrl","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["terraform"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"providerSource":{"type":"string"},"moduleSource":{"type":"string"},"moduleVersion":{"type":"string"},"moduleInputs":{"type":"object","additionalProperties":{"type":"string"}},"mainTf":{"type":"string"},"tfvars":{"type":"string"},"commands":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","providerSource","moduleSource","moduleInputs","mainTf","tfvars","commands","stackSettings"]}]}},"required":["managerId","setupStatus","setupToken","setupTokenId","deploymentLink","setupConfig","setup"]},"NewManagerRequest":{"type":"object","properties":{"name":{"type":"string"},"cloud":{"$ref":"#/components/schemas/PrivateManagerCloud"},"region":{"type":"string","minLength":1,"maxLength":64,"description":"Cloud region for the manager."},"setupMethod":{"$ref":"#/components/schemas/PrivateManagerSetupMethod"},"network":{"type":"string","enum":["create","default"],"description":"Optional network mode for the private-manager setup. Defaults to create for production isolation; default uses the provider default network for faster dev/test setup."},"otlpConfig":{"type":"object","properties":{"logsEndpoint":{"type":"string","format":"uri","description":"External OTLP logs endpoint (e.g. https://api.axiom.co/v1/logs)"},"logsAuthHeader":{"type":"string","description":"Auth header in 'key=value,...' format (e.g. 'authorization=Bearer ,x-axiom-dataset=')"}},"required":["logsEndpoint","logsAuthHeader"],"description":"Optional external OTLP config for forwarding logs to Axiom, Datadog, etc. Falls back to built-in DeepStore when not set."}},"required":["name","cloud","region"]},"PrivateManagerCloud":{"type":"string","enum":["aws","gcp","azure"],"description":"Cloud where the private manager will be deployed."},"PrivateManagerSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform"],"description":"Optional setup method. Defaults to cloudformation for AWS, google-oauth for GCP, and terraform for Azure."},"ManagerRetryResponse":{"oneOf":[{"allOf":[{"$ref":"#/components/schemas/CreateManagerResponse"},{"type":"object","properties":{"mode":{"type":"string","enum":["setup"]}},"required":["mode"]}]},{"$ref":"#/components/schemas/ManagerRetryDeploymentResponse"}]},"ManagerRetryDeploymentResponse":{"type":"object","properties":{"mode":{"type":"string","enum":["deployment"]},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["provisioning"]},"deploymentId":{"type":"string"},"message":{"type":"string"}},"required":["mode","managerId","setupStatus","deploymentId","message"]},"Manager":{"type":"object","properties":{"id":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for the manager"}]},"name":{"type":"string","description":"Display name of the manager"},"targets":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where this private manager is deployed"},"region":{"type":"string","nullable":true,"description":"Cloud region selected for this private manager"},"setupStatus":{"type":"string","nullable":true,"enum":["pending","provisioning","active","failed","deleting","deleted",null],"description":"Private manager setup lifecycle status"},"url":{"type":"string","nullable":true,"format":"uri","description":"Manager URL (self-reported via heartbeat). DeepStore endpoints are exposed through this URL (e.g., {url}/v1/logs)"},"managementConfigs":{"$ref":"#/components/schemas/ManagerManagementConfigs"},"isSystem":{"type":"boolean","description":"Whether this is a system manager (Alien-hosted)"},"workspaceId":{"type":"string","description":"The workspace ID (for system managers, this is ALIEN_WORKSPACE_ID)"},"status":{"$ref":"#/components/schemas/ManagerStatus"},"version":{"type":"string","nullable":true,"description":"Manager version (self-reported via heartbeat)"},"metrics":{"type":"object","nullable":true,"properties":{"activeDeployments":{"type":"number","description":"Number of active deployments"},"pendingDeployments":{"type":"number","description":"Number of pending deployments"},"memoryUsageMb":{"type":"number","description":"Memory usage in megabytes"},"cpuUsagePercent":{"type":"number","description":"CPU usage percentage"}},"description":"Runtime metrics (self-reported via heartbeat)"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the manager"},"logsDatabaseId":{"type":"string","nullable":true,"description":"ID of the logs database associated with this manager"},"managedDeploymentCount":{"type":"integer","minimum":0,"description":"Number of deployments currently being managed by this manager"},"defaultProjectCount":{"type":"integer","minimum":0,"description":"Number of projects that select this manager as a default manager"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the manager was created"}},"required":["id","name","targets","managementConfigs","isSystem","workspaceId","status","managedDeploymentCount","defaultProjectCount","createdAt"],"description":"Manager schema"},"ManagerManagementConfigs":{"type":"object","properties":{"aws":{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"},"platform":{"type":"string","enum":["aws"]}},"required":["managingRoleArn","platform"]},"gcp":{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"},"platform":{"type":"string","enum":["gcp"]}},"required":["serviceAccountEmail","platform"]},"azure":{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."},"platform":{"type":"string","enum":["azure"]}},"required":["managingTenantId","oidcIssuer","oidcSubject","platform"]},"kubernetes":{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}},"description":"Per-platform management configurations for cross-account access (self-reported via heartbeat)"},"ManagerStatus":{"type":"string","enum":["healthy","degraded","unhealthy","unknown"],"description":"Current health status"},"ManagerDomainBindingResponse":{"type":"object","properties":{"managerDomainBinding":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["managerDomainBinding"]},"UpdateManagerDomainBinding":{"type":"object","properties":{"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"}},"additionalProperties":false},"UpdateManagerRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Optional release ID to update to. If not provided, the active release will be chosen","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for updating a manager to a new release"},"Event":{"type":"object","properties":{"id":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"debugSessionId":{"type":"string","nullable":true,"pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"data":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["LoadingConfiguration"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["Finished"]}},"required":["type"]},{"type":"object","properties":{"stack":{"type":"string","description":"Name of the stack being built"},"type":{"type":"string","enum":["BuildingStack"]}},"required":["stack","type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform being targeted"},"stack":{"type":"string","description":"Name of the stack being checked"},"type":{"type":"string","enum":["RunningPreflights"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"targetTriple":{"type":"string","description":"Target triple for the runtime"},"type":{"type":"string","enum":["DownloadingAlienRuntime"]},"url":{"type":"string","description":"URL being downloaded from"}},"required":["targetTriple","type","url"]},{"type":"object","properties":{"relatedResources":{"type":"array","items":{"type":"string"},"description":"All resource names sharing this build (for deduped container groups)"},"resourceName":{"type":"string","description":"Name of the resource being built"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["BuildingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being built"},"type":{"type":"string","enum":["BuildingImage"]}},"required":["image","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being pushed"},"progress":{"oneOf":[{"type":"object","properties":{"bytesUploaded":{"type":"integer","minimum":0,"description":"Bytes uploaded so far"},"layersUploaded":{"type":"integer","minimum":0,"description":"Number of layers uploaded so far"},"operation":{"type":"string","description":"Current operation being performed"},"totalBytes":{"type":"integer","minimum":0,"description":"Total bytes to upload"},"totalLayers":{"type":"integer","minimum":0,"description":"Total number of layers to upload"}},"required":["bytesUploaded","layersUploaded","operation","totalBytes","totalLayers"],"description":"Progress information for image push operations"},{"nullable":true}]},"type":{"type":"string","enum":["PushingImage"]}},"required":["image","type"]},{"type":"object","properties":{"destination":{"type":"string","nullable":true,"description":"Human-readable destination for pushed images"},"platform":{"type":"string","description":"Target platform"},"stack":{"type":"string","description":"Name of the stack being pushed"},"type":{"type":"string","enum":["PushingStack"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"resourceName":{"type":"string","description":"Name of the resource being pushed"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["PushingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"project":{"type":"string","description":"Project name"},"type":{"type":"string","enum":["CreatingRelease"]}},"required":["project","type"]},{"type":"object","properties":{"language":{"type":"string","description":"Language being compiled (rust, typescript, etc.)"},"progress":{"type":"string","nullable":true,"description":"Current progress/status line from the build output"},"type":{"type":"string","enum":["CompilingCode"]}},"required":["language","type"]},{"type":"object","properties":{"nextState":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},"suggestedDelayMs":{"type":"integer","nullable":true,"minimum":0,"description":"An suggested duration to wait before executing the next step."},"type":{"type":"string","enum":["StackStep"]}},"required":["nextState","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["GeneratingCloudFormationTemplate"]}},"required":["type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform for which the template is being generated"},"type":{"type":"string","enum":["GeneratingTemplate"]}},"required":["platform","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being provisioned"},"releaseId":{"type":"string","description":"ID of the release being deployed to the agent"},"type":{"type":"string","enum":["ProvisioningAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being updated"},"releaseId":{"type":"string","description":"ID of the new release being deployed to the agent"},"type":{"type":"string","enum":["UpdatingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being deleted"},"releaseId":{"type":"string","description":"ID of the release that was running on the agent"},"type":{"type":"string","enum":["DeletingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being debugged"},"debugSessionId":{"type":"string","description":"ID of the debug session"},"type":{"type":"string","enum":["DebuggingAgent"]}},"required":["agentId","debugSessionId","type"]},{"type":"object","properties":{"strategyName":{"type":"string","description":"Name of the deployment strategy being used"},"type":{"type":"string","enum":["PreparingEnvironment"]}},"required":["strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being deployed"},"type":{"type":"string","enum":["DeployingStack"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being tested"},"type":{"type":"string","enum":["RunningTestWorker"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpStack"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpEnvironment"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"platformName":{"type":"string","description":"Name of the platform (e.g., \"AWS\", \"GCP\")"},"type":{"type":"string","enum":["SettingUpPlatformContext"]}},"required":["platformName","type"]},{"type":"object","properties":{"repositoryName":{"type":"string","description":"Name of the docker repository"},"type":{"type":"string","enum":["EnsuringDockerRepository"]}},"required":["repositoryName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeployingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"roleArn":{"type":"string","description":"ARN of the role to assume"},"type":{"type":"string","enum":["AssumingRole"]}},"required":["roleArn","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"type":{"type":"string","enum":["ImportingStackStateFromCloudFormation"]}},"required":["cfnStackName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeletingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"bucketNames":{"type":"array","items":{"type":"string"},"description":"Names of the S3 buckets being emptied"},"type":{"type":"string","enum":["EmptyingBuckets"]}},"required":["bucketNames","type"]},{"type":"object","properties":{"deploymentGroupId":{"type":"string","description":"ID of the deployment group this slot belongs to"},"deploymentId":{"type":"string","description":"ID of the deployment that was created"},"releaseId":{"type":"string","nullable":true,"description":"Initial release the slot was created with, if any"},"type":{"type":"string","enum":["DeploymentCreated"]}},"required":["deploymentGroupId","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously live, if any"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentReleased"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release the platform was trying to deploy, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"phase":{"type":"string","enum":["preflights","provisioning","updating","deleting"],"description":"Phase of a deployment at which a failure occurred.\n\nDerived from the source deployment status: `preflights-failed` →\n`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` →\n`Updating`, `delete-failed` → `Deleting`.\n`refresh-failed` is modelled separately via `DeploymentDegraded`."},"type":{"type":"string","enum":["DeploymentFailed"]}},"required":["deploymentId","error","phase","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"type":{"type":"string","enum":["DeploymentDegraded"]}},"required":["deploymentId","error","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentRecovered"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment that was deleted"},"type":{"type":"string","enum":["DeploymentDeleted"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"deploymentGroupId":{"type":"string","description":"ID of the deployment group that authorized the rejoin"},"deploymentId":{"type":"string","description":"ID of the deployment whose agent rejoined"},"type":{"type":"string","enum":["DeploymentRejoined"]}},"required":["deploymentGroupId","deploymentId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release that the failed attempt was targeting, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousError":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"type":{"type":"string","enum":["DeploymentRetryRequested"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release being redeployed"},"type":{"type":"string","enum":["DeploymentRedeployRequested"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"pinnedReleaseId":{"type":"string","description":"ID of the release that is now pinned"},"previousPinnedReleaseId":{"type":"string","nullable":true,"description":"ID of the previously pinned release, if any"},"type":{"type":"string","enum":["DeploymentReleasePinned"]}},"required":["deploymentId","pinnedReleaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousPinnedReleaseId":{"type":"string","description":"ID of the release that was previously pinned"},"type":{"type":"string","enum":["DeploymentReleaseUnpinned"]}},"required":["deploymentId","previousPinnedReleaseId","type"]},{"type":"object","properties":{"changedKeys":{"type":"array","items":{"type":"string"},"description":"Names of the environment variables that changed (added, removed, or modified)"},"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentEnvironmentUpdated"]}},"required":["changedKeys","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentDeletionRequested"]}},"required":["deploymentId","type"]}]},"state":{"oneOf":[{"type":"object","properties":{"failed":{"type":"object","properties":{"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]}},"description":"Event failed with an error"}},"required":["failed"]},{"type":"string","enum":["none"]},{"type":"string","enum":["started"]},{"type":"string","enum":["success"]}],"description":"Represents the state of an event"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","data","state","projectId","createdAt","workspaceId"]},"GenerateManagerTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string","description":"Platform JWT for authenticating with the manager"},"expiresIn":{"type":"number","nullable":true,"description":"Token lifetime in seconds"},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string","description":"Manager URL for direct access"},"databaseId":{"type":"string","nullable":true,"description":"Log database ID (null if logs not configured)"},"controlPlaneUrl":{"type":"string","nullable":true,"description":"Log control plane URL (null if logs not configured)"}},"required":["accessToken","expiresIn","tokenType","managerUrl","databaseId","controlPlaneUrl"]},"GenerateManagerTokenRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to scope token access to. When omitted, the token is scoped to all projects accessible by the current user."}}},"ResolveManagerGcpOAuthProviderResponse":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId","clientSecret"]}]},"ResolveManagerGcpOAuthProviderRequest":{"type":"object","properties":{"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group bearer token whose project-level OAuth provider should be resolved."},"returnOrigin":{"type":"string","format":"uri","description":"Browser origin that will receive the Google OAuth callback result. Must be a first-party dashboard origin or the active portal origin for the deployment group's project."}},"required":["deploymentGroupToken"]},"ManagerHeartbeatResponse":{"type":"object","properties":{"acknowledged":{"type":"boolean"},"timestamp":{"type":"string"}},"required":["acknowledged","timestamp"]},"ManagerHeartbeatRequest":{"type":"object","properties":{"status":{"type":"string","enum":["healthy","degraded","unhealthy"],"description":"Current health status"},"version":{"type":"string","description":"Manager version"},"url":{"type":"string","format":"uri","description":"Manager public URL (for accessing DeepStore endpoints)"},"managementConfigs":{"allOf":[{"$ref":"#/components/schemas/ManagerManagementConfigs"},{"description":"Per-platform management configurations for cross-account access"}]},"metrics":{"type":"object","properties":{"activeDeployments":{"type":"number"},"pendingDeployments":{"type":"number"},"memoryUsageMb":{"type":"number"},"cpuUsagePercent":{"type":"number"}},"description":"Optional runtime metrics"}},"required":["status","url","managementConfigs"]},"ManagerDeployment":{"type":"object","properties":{"platform":{"type":"string","description":"Platform of the internal deployment"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status of the internal deployment"},"deploymentId":{"type":"string","description":"Internal deployment ID"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Currently deployed private manager release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Target private manager release for an in-progress update","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"error":{"nullable":true,"description":"Latest provision / upgrade / delete error"},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type"},"status":{"type":"string","description":"Resource status"},"outputs":{"type":"object","additionalProperties":{"nullable":true},"description":"Resource outputs"}},"required":["type","status"]},"description":"Simplified stack state resources"},"environmentInfo":{"nullable":true,"description":"Manager environment info"}},"required":["platform","status","deploymentId","resources"]},"APIKey":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"},"createdByUser":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"email":{"type":"string"},"image":{"type":"string","nullable":true}},"required":["id","email","image"],"description":"User information associated with the API key"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig","createdByUser"],"description":"API key information"},"APIKeyDeploymentSetupConfig":{"type":"object","nullable":true,"properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/APIKeyDeploymentSetupEnvironmentVariable"}}},"required":["metadata","policy","environmentVariables"]},"APIKeyDeploymentSetupEnvironmentVariable":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]},"CreateAPIKeyResponse":{"type":"object","properties":{"apiKey":{"type":"string","description":"The generated API key value (only shown once)"},"keyInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig"]}},"required":["apiKey","keyInfo"],"description":"Response containing the new API key and its metadata"},"CreateAPIKeyRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"scope":{"$ref":"#/components/schemas/Scope"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"required":["description","scope","expiresAt"],"description":"Request schema for creating a new API key"},"Scope":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceScope"},{"$ref":"#/components/schemas/ProjectScope"},{"$ref":"#/components/schemas/DeploymentScope"},{"$ref":"#/components/schemas/DeploymentGroupScope"},{"$ref":"#/components/schemas/ManagerScope"}],"discriminator":{"propertyName":"type","mapping":{"workspace":"#/components/schemas/WorkspaceScope","project":"#/components/schemas/ProjectScope","deployment":"#/components/schemas/DeploymentScope","deployment-group":"#/components/schemas/DeploymentGroupScope","manager":"#/components/schemas/ManagerScope"}},"description":"Scope and role configuration for service accounts"},"WorkspaceScope":{"type":"object","properties":{"type":{"type":"string","enum":["workspace"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["type","role"],"description":"Workspace-scoped configuration"},"ProjectScope":{"type":"object","properties":{"type":{"type":"string","enum":["project"]},"projectId":{"type":"string","description":"ID of the project this is scoped to"},"role":{"$ref":"#/components/schemas/ProjectRole"}},"required":["type","projectId","role"],"description":"Project-scoped configuration"},"DeploymentScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment"]},"deploymentId":{"type":"string","description":"ID of the deployment this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"},"role":{"$ref":"#/components/schemas/DeploymentRole"}},"required":["type","deploymentId","projectId","role"],"description":"Deployment-scoped configuration"},"DeploymentGroupScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"]},"deploymentGroupId":{"type":"string","description":"ID of the deployment group this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"},"role":{"$ref":"#/components/schemas/DeploymentGroupRole"}},"required":["type","deploymentGroupId","projectId","role"],"description":"Deployment group-scoped configuration"},"ManagerScope":{"type":"object","properties":{"type":{"type":"string","enum":["manager"]},"managerId":{"type":"string","description":"ID of the manager this is scoped to"},"role":{"$ref":"#/components/schemas/ManagerRole"}},"required":["type","managerId","role"],"description":"Manager-scoped configuration"},"UpdateAPIKeyRequest":{"type":"object","properties":{"enabled":{"type":"boolean"},"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"deploymentSetupConfig":{"$ref":"#/components/schemas/UpdateDeploymentSetupPolicy"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"description":"Request schema for updating an API key"},"UpdateDeploymentSetupPolicy":{"type":"object","properties":{"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"}},"required":["policy"],"description":"Editable part of a deployment link's setup config. Locked env vars and input values are preserved."},"DeleteAPIKeysRequest":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"minItems":1}},"required":["ids"]},"DomainWithUsage":{"allOf":[{"$ref":"#/components/schemas/Domain"},{"type":"object","properties":{"endpoints":{"type":"array","items":{"$ref":"#/components/schemas/DomainEndpoint"}},"usage":{"type":"object","properties":{"deploymentUrlProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"portalBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true},"hostname":{"type":"string"}},"required":["id","projectId","projectName","hostname"]}},"packageDomains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"type":"string"}},"required":["id","hostname"]}},"managerBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"managerId":{"type":"string"},"managerName":{"type":"string"},"hostname":{"type":"string"}},"required":["id","managerId","managerName","hostname"]}}},"required":["deploymentUrlProjects","portalBindings","packageDomains","managerBindings"]}},"required":["endpoints","usage"]}]},"Domain":{"type":"object","properties":{"id":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domain":{"type":"string"},"isSystem":{"type":"boolean"},"claimToken":{"type":"string"},"hostedZoneId":{"type":"string","nullable":true},"nameServers":{"type":"array","nullable":true,"items":{"type":"string"}},"status":{"type":"string","enum":["pending-zone-creation","pending-verification","verified","lost-verification","failed","deleting"]},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","workspaceId","domain","isSystem","claimToken","status","createdAt","updatedAt"]},"CommandListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Command"},{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/CommandDeploymentInfo"},"project":{"$ref":"#/components/schemas/CommandProjectInfo"}}}]},"CommandDeploymentInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"$ref":"#/components/schemas/CommandDeploymentGroupInfo"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"managerId":{"type":"string","description":"Manager ID for obtaining access tokens"},"managerUrl":{"type":"string","nullable":true,"format":"uri","description":"URL of the manager for direct payload access"},"managerName":{"type":"string","nullable":true,"description":"Human-readable name of the manager"},"managerIsSystem":{"type":"boolean","nullable":true,"description":"Whether the manager is Alien-hosted (system)"}},"required":["id","name","managerId"]},"CommandDeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"CommandProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string"}},"required":["id","name"]},"Command":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","description":"Command name (e.g., 'analyze-repository', 'sync-data')"},"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Command states in the Commands protocol lifecycle"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model captured from deployment at creation time"},"attempt":{"type":"number","nullable":true,"description":"Current attempt number"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","nullable":true,"description":"Size of command params in bytes"},"responseSizeBytes":{"type":"number","nullable":true,"description":"Size of command response in bytes"},"createdAt":{"type":"string","format":"date-time","description":"When the command was created"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command was dispatched to the deployment"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command completed"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if command failed"},"result":{"nullable":true,"description":"Decoded command result when available"}},"required":["id","deploymentId","projectId","workspaceId","name","state","deploymentModel","attempt","deadline","requestSizeBytes","responseSizeBytes","createdAt","dispatchedAt","completedAt","error"]},"ListCommandNamesResponse":{"type":"object","properties":{"names":{"type":"array","items":{"type":"string"}}},"required":["names"]},"ListCommandDeploymentsResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"required":["id","name"]}}},"required":["deployments"]},"CreateCommandResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"projectId":{"type":"string","description":"Project ID (for manager to use in routing)"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"How to dispatch the command"}},"required":["id","projectId","deploymentModel"]},"CreateCommandRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Target deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Command name (e.g., 'analyze-repository')"},"params":{"nullable":true,"description":"Command parameters for public invocation"},"initialState":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Initial state (PENDING_UPLOAD if params require upload, PENDING if inline)"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Size of command params in bytes"}},"required":["deploymentId","name"]},"UpdateCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"New command state"},"attempt":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Current attempt number"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command was dispatched"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command completed"},"responseSizeBytes":{"type":"number","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Size of response in bytes"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if failed"}}},"DebugSessionListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DebugSession"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"},"DebugSession":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"owner":{"type":"string","nullable":true,"maxLength":128},"state":{"$ref":"#/components/schemas/DebugSessionState"},"mode":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"provider":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Represents the target cloud platform."},"presignedUrls":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DebugPackagePresignedURLs"}},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","state","mode","presignedUrls","createdAt","expiresAt","deploymentId","projectId","workspaceId"]},"DebugSessionState":{"type":"string","enum":["pending","running","stopping","stopped","expired","failed"]},"DebugPackagePresignedURLs":{"type":"object","properties":{"readUrl":{"type":"string","maxLength":2048,"format":"uri"},"writeUrl":{"type":"string","maxLength":2048,"format":"uri"}},"required":["readUrl","writeUrl"]},"CreateDebugSessionRequest":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Override the generated id. Manager passes the registry session id so logs correlate.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"owner":{"type":"string","nullable":true,"maxLength":128},"expiresAt":{"type":"string","format":"date-time"},"state":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Initial state. Defaults to 'pending'."}]}},"required":["deploymentId","expiresAt"]},"UpdateDebugSessionRequest":{"type":"object","properties":{"state":{"$ref":"#/components/schemas/DebugSessionState"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"expiresAt":{"type":"string","format":"date-time"}}},"DeploymentInfo":{"type":"object","properties":{"tokenType":{"type":"string","enum":["deployment","deployment-group"],"description":"Type of token used to authenticate this request"},"deployment":{"type":"object","properties":{"name":{"type":"string"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"required":["name","platform"],"description":"Deployment details (present when using a deployment-scoped token)"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"}},"required":["id","name"],"description":"Deployment group details (present when using a deployment-group token)"},"workspace":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name"]},"project":{"type":"object","properties":{"name":{"type":"string"},"portal":{"type":"object","properties":{"appearance":{"$ref":"#/components/schemas/DeploymentPortalAppearance"}},"required":["appearance"]},"stackSummary":{"type":"object","nullable":true,"properties":{"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"publicHttpsEndpoints":{"type":"integer","minimum":0,"description":"Resources that declare managed public HTTPS endpoint setup"},"externalInfra":{"type":"integer","minimum":0,"description":"Storage, queue, KV, vault, database, or cache resources that Kubernetes needs Terraform to provision"},"total":{"type":"integer","minimum":0}},"required":["workers","containers","publicHttpsEndpoints","externalInfra","total"]},"publicEndpoints":{"type":"array","items":{"type":"object","properties":{"resourceId":{"type":"string"},"endpointName":{"type":"string"},"hostLabel":{"type":"string"},"wildcardSubdomains":{"type":"boolean"}},"required":["resourceId","endpointName","hostLabel","wildcardSubdomains"]},"description":"Public endpoints declared by the active release stack"}},"required":["platforms","resourceCounts","publicEndpoints"]}},"required":["name","portal"]},"packages":{"type":"object","properties":{"ready":{"type":"boolean","description":"True if all enabled packages are ready for deployment"},"cli":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"commandName":{"type":"string","description":"CLI command name to use in install instructions"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},"error":{"nullable":true},"installScripts":{"type":"object","properties":{"windows":{"type":"string","format":"uri"},"mac":{"type":"string","format":"uri"},"linux":{"type":"string","format":"uri"}},"required":["windows","mac","linux"],"description":"Install script URLs for each OS"}},"required":["status","commandName","installScripts"]},"cloudformation":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},"error":{"nullable":true},"mode":{"type":"string","enum":["auto","outputs"]},"launchUrl":{"type":"string","format":"uri","description":"CloudFormation launch URL"},"outputsSchema":{"nullable":true}},"required":["status","mode","launchUrl"]},"terraform":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},"error":{"nullable":true},"providerSource":{"type":"string","description":"Terraform provider source (without https://)"},"moduleSources":{"type":"object","additionalProperties":{"type":"string"},"description":"Terraform module sources by target"},"moduleVersion":{"type":"string"},"managerUrls":{"type":"object","additionalProperties":{"type":"string"},"description":"Manager URLs by Terraform target"}},"required":["status","providerSource","moduleSources","managerUrls"]},"helm":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},"error":{"nullable":true},"chartRef":{"type":"string","description":"OCI chart reference"},"managerFetchExample":{"type":"string"},"localImportExample":{"type":"string"}},"required":["status","chartRef"]}},"required":["ready"]},"installContext":{"type":"object","properties":{"targets":{"type":"object","additionalProperties":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managerUrl":{"type":"string","format":"uri"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"awsManagingAccountId":{"type":"string"}},"required":["platform","managerUrl"]},"description":"Deployment-session install context by Terraform/installer target"}},"required":["targets"]},"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"},"setupConfig":{"$ref":"#/components/schemas/DeploymentInfoSetupConfig"}},"required":["tokenType","workspace","project","packages","installContext","supportedRegions"]},"DeploymentPortalAppearance":{"type":"object","properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}}},"SupportedCloudRegions":{"type":"object","properties":{"aws":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by this Alien environment."},"gcp":{"type":"array","items":{"type":"string"},"description":"GCP regions supported by this Alien environment."},"azure":{"type":"array","items":{"type":"string"},"description":"Azure locations supported by this Alien environment."}},"required":["aws","gcp","azure"]},"DeploymentInfoSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]}},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."}},"inputValues":{"type":"array","items":{"$ref":"#/components/schemas/ResolvedStackInputSummary"}}},"required":["metadata","policy","environmentVariables"]},"ResolvedStackInputSummary":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"]}},"required":{"type":"boolean"},"secret":{"type":"boolean"},"provided":{"type":"boolean"}},"required":["id","label","providedBy","required","secret","provided"]},"DeploymentComputePlan":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string"},"workloads":{"type":"array","items":{"type":"string"}},"requirements":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"scale":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["fixed"]},"machines":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","machines"]},{"type":"object","properties":{"type":{"type":"string","enum":["autoscale"]},"min":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]},"max":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","min","max"]}]},"selected":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"recommended":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"machines":{"type":"array","items":{"type":"object","properties":{"machine":{"type":"string"},"profile":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"recommended":{"type":"boolean"}},"required":["machine","profile","recommended"]}},"errors":{"type":"array","items":{"type":"string"}}},"required":["poolId","workloads","requirements","scale","selected","recommended","machines"]}}},"required":["pools"]},"PreparedDeploymentStack":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"setup":{"$ref":"#/components/schemas/SetupFingerprintInfo"}},"required":["platform","stack","setup"]},"SyncListResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version reported on the last sync (e.g. \"1.3.5\")"},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS reported on the last sync"},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture reported on the last sync"},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends."},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from."},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target."},"userEnvironmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"deploymentToken":{"type":"string","nullable":true},"lockedBy":{"type":"string","nullable":true},"lockedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId","userEnvironmentVariables"]}}},"required":["deployments"],"description":"Full deployment records for manager operation"},"SyncListRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. Manager-scoped tokens are always constrained to their own manager ID."}]},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to include"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by deployment platform"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Filter by deployment group ID","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Maximum records to return"}},"additionalProperties":false,"description":"Request to list full operational deployments"},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the acquired deployment","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Deployment group ID the deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method recorded on the deployment when it has a setup-owned path."}]},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state (includes releases)"},"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration"},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver) for upgrade-driven sync"}},"required":["deploymentId","projectId","deploymentGroupId","current","config"]},"description":"List of acquired deployments with deployment context"},"failures":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the deployment that failed","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"error":{"allOf":[{"$ref":"#/components/schemas/APIError"},{"description":"Error that occurred during context building"}]}},"required":["deploymentId","projectId","error"]},"description":"List of deployments that failed during context building (locks already released)"}},"required":["deployments","failures"],"description":"Acquired deployments and failures"},"SyncAcquireRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. If omitted, resolved from each deployment's managerId column."}]},"session":{"type":"string","description":"Unique session identifier for lock tracking"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to lock (for Pull model sync)"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by platforms (default: all platforms the Manager supports)"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Filter by setup method for setup-owned acquisition paths"}]},"acquireMode":{"type":"string","enum":["runtime","setup-run","setup-teardown"],"description":"Phase ownership mode for deployment acquisition"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model from stackSettings.deploymentModel (Manager should use 'push')"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session"],"additionalProperties":false,"description":"Request to acquire deployments for processing"},"SyncReconcileResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the state was reconciled"},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state after reconciliation"},"target":{"type":"object","properties":{"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration\n\nConfiguration for how to perform the deployment.\nNote: Credentials (ClientConfig) are passed separately to step() function."},"releaseInfo":{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."}},"required":["config","releaseInfo"],"description":"Target deployment if update is needed"}},"required":["success","current"],"description":"State reconciliation result with optional target"},"SyncReconcileRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to reconcile state for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Lock session (push model only) - verifies lock ownership"},"state":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Complete deployment state after step() execution"},"updateHeartbeat":{"type":"boolean","description":"Update heartbeat timestamp (for successful health checks)"},"suggestedDelayMs":{"type":"integer","minimum":0,"description":"Delay before this deployment should be acquired again."},"heartbeats":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"description":"Latest typed resource heartbeats collected during this step."},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version from the last /v1/sync."},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS."},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture."},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime: os-service or kubernetes."},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry."}},"required":["deploymentId","state"],"additionalProperties":false,"description":"Request to reconcile deployment state"},"SyncReleaseRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to release","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Session identifier to release"}},"required":["deploymentId","session"],"additionalProperties":false,"description":"Request to release deployment lock"},"ResolveResponse":{"type":"object","properties":{"managerId":{"type":"string","description":"Manager ID"},"managerName":{"type":"string","description":"Manager display name"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL"},"managerIsSystem":{"type":"boolean","description":"Whether the manager is Alien-hosted"},"managerCloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where the private manager is hosted. Null for Alien-hosted managers."},"projectId":{"type":"string","description":"Resolved project ID"},"installContext":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}},"required":["platform","managementConfig"],"description":"Target install context derived from platform-managed manager metadata. Present for cloud push platforms."}},"required":["managerId","managerName","managerUrl","managerIsSystem","projectId"]},"CloudRegionsResponse":{"type":"object","properties":{"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"}},"required":["supportedRegions"]},"BillingAuditLogRow":{"type":"object","properties":{"id":{"type":"string"},"workspaceId":{"type":"string","nullable":true},"action":{"type":"string"},"payload":{"nullable":true},"createdAt":{"type":"string"}},"required":["id","workspaceId","action","createdAt"]},"WorkspaceBillingEntitlements":{"type":"object","properties":{"planId":{"$ref":"#/components/schemas/PlanId"},"planStatus":{"$ref":"#/components/schemas/BillingPlanStatus"},"features":{"$ref":"#/components/schemas/BillingFeatureFlags"},"limits":{"$ref":"#/components/schemas/BillingLimits"},"syncedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"}},"required":["planId","planStatus","features","limits","syncedAt","stale"]},"PlanId":{"type":"string","enum":["starter","pro","pro_annual","enterprise"]},"BillingPlanStatus":{"type":"string","enum":["active","trialing","past_due","canceled","none"]},"BillingFeatureFlags":{"type":"object","properties":{"custom_domains":{"type":"boolean"},"private_managers":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","sso_saml","audit_logs","airgapped"]},"BillingLimits":{"type":"object","properties":{"maxDeployments":{"type":"number","nullable":true},"maxProjects":{"type":"number","nullable":true},"maxSeats":{"type":"number","nullable":true},"maxCustomDomains":{"type":"number","nullable":true},"creditUsd":{"type":"number","nullable":true},"seatsIncluded":{"type":"number","nullable":true}},"required":["maxDeployments","maxProjects","maxSeats","maxCustomDomains","creditUsd","seatsIncluded"]}},"parameters":{}},"paths":{"/v1/user/memberships":{"get":{"operationId":"listMemberships","description":"List all workspaces the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listMemberships","responses":{"200":{"description":"List of user's workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Membership"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile":{"get":{"operationId":"getUserProfile","description":"Get the current user's profile and user-scoped onboarding state.","x-speakeasy-group":"user","x-speakeasy-name-override":"getProfile","responses":{"200":{"description":"User profile.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateUserProfile","description":"Update the current user's profile (display name).","x-speakeasy-group":"user","x-speakeasy-name-override":"updateProfile","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"}}}}}},"responses":{"200":{"description":"Profile updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile/setup":{"post":{"operationId":"completeUserProfileSetup","description":"Complete the required beta intake and profile setup dialog.","x-speakeasy-group":"user","x-speakeasy-name-override":"completeProfileSetup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileSetupRequest"}}}},"responses":{"200":{"description":"Profile setup completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/workspaces":{"post":{"operationId":"createWorkspace","description":"Create a new workspace. The current user will be automatically added as an admin.","x-speakeasy-group":"user","x-speakeasy-name-override":"createWorkspace","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name"},"logoUrl":{"type":"string","format":"uri","description":"Optional workspace logo URL"}},"required":["name"]}}}},"responses":{"201":{"description":"Created workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Membership"}}}},"400":{"description":"Bad request - invalid workspace name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Workspace name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces":{"get":{"operationId":"listGitNamespaces","description":"List all git namespaces (GitHub installations) the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaces","parameters":[{"schema":{"type":"string","enum":["github"],"default":"github"},"required":false,"name":"provider","in":"query"}],"responses":{"200":{"description":"List of user's git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/sync":{"post":{"operationId":"syncGitNamespaces","description":"Sync git namespaces from the provider. For GitHub, this fetches all app installations accessible to the user.","x-speakeasy-group":"user","x-speakeasy-name-override":"syncGitNamespaces","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","enum":["github"],"description":"Git provider to sync"}},"required":["provider"]}}}},"responses":{"200":{"description":"Synced git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/{id}/repositories":{"get":{"operationId":"listGitNamespaceRepositories","description":"List repositories accessible through a git namespace (GitHub installation).","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaceRepositories","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Search query to filter repositories by name"},"required":false,"description":"Search query to filter repositories by name","name":"search","in":"query"}],"responses":{"200":{"description":"List of repositories.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitRepository"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Git namespace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/whoami":{"get":{"operationId":"whoami","description":"Get the current authenticated principal (user or service account). Works with both session cookies and API keys.","x-speakeasy-group":"auth","x-speakeasy-name-override":"whoami","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","example":"my-workspace"},"required":false,"description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Current authenticated principal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Subject"}}}},"400":{"description":"Missing required workspace for user credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces":{"get":{"operationId":"listWorkspaces","description":"Retrieve all workspaces.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search workspaces by name"},"required":false,"description":"Search workspaces by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Workspace"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}":{"get":{"operationId":"getWorkspace","description":"Retrieve a workspace by ID.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspace","description":"Update a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"}}}}}},"responses":{"200":{"description":"Workspace updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteWorkspace","description":"Delete a workspace. The workspace must have no projects.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Workspace deleted successfully."},"400":{"description":"Workspace still has projects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members":{"get":{"operationId":"listWorkspaceMembers","description":"List all members of a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"listMembers","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"List of workspace members.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceMember"}}},"required":["items"]}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"addWorkspaceMember","description":"Add a member to a workspace by email. The user must already have an account.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"addMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email of the user to add"},"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"Role to assign"}]}},"required":["email","role"]}}}},"responses":{"201":{"description":"Member added successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"404":{"description":"Workspace or user not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"User is already a member.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members/{userId}":{"patch":{"operationId":"updateWorkspaceMember","description":"Update a workspace member's role.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"New role to assign"}]}},"required":["role"]}}}},"responses":{"200":{"description":"Member role updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"400":{"description":"Cannot remove last admin.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"removeWorkspaceMember","description":"Remove a member from a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"removeMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Member removed successfully."},"400":{"description":"Cannot remove last admin or self.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/dismiss-onboarding":{"post":{"operationId":"dismissWorkspaceOnboarding","description":"Mark the Getting Started walkthrough as dismissed for a workspace. The dashboard stops auto-promoting onboarding once this is set; users can still re-enter the walkthrough via the help menu.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"dismissOnboarding","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace with onboardingDismissedAt populated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects":{"get":{"operationId":"listProjects","description":"Retrieve all projects.","x-speakeasy-group":"projects","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search projects by name"},"required":false,"description":"Search projects by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deploymentCount","latestRelease"]},"description":"Optional fields to include: deploymentCount, latestRelease"},"required":false,"description":"Optional fields to include: deploymentCount, latestRelease","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved projects.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProjectListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createProject","description":"Create a new project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name"]}}}},"responses":{"201":{"description":"Project created successfully.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"}}}]}}}},"400":{"description":"Invalid request or GitHub repository connection failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}":{"get":{"operationId":"getProject","description":"Retrieve a project by ID or name.","x-speakeasy-group":"projects","x-speakeasy-name-override":"get","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateProject","description":"Update a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"update","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProject"}}}},"responses":{"200":{"description":"Project updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteProject","description":"Delete a project. The project must have no deployments.","x-speakeasy-group":"projects","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Project deleted successfully."},"400":{"description":"Project still has deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/gcp-oauth-provider":{"get":{"operationId":"getProjectGcpOAuthProvider","description":"Retrieve redacted project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateProjectGcpOAuthProvider","description":"Update project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"updateGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectGcpOAuthProvider"}}}},"responses":{"200":{"description":"Google Cloud OAuth provider settings updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"400":{"description":"Invalid provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/deployment-portal-domain":{"get":{"operationId":"getProjectDeploymentPortalDomain","description":"Get the deployment portal domain binding for a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentPortalDomain","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved deployment portal domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentPortalDomainResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/import-template":{"post":{"operationId":"createProjectFromTemplate","description":"Create a project by forking alienplatform/alien into your namespace, then configuring GitHub Actions.","x-speakeasy-group":"projects","x-speakeasy-name-override":"createFromTemplate","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$","description":"GitHub owner namespace (user or organization) that will receive the fork"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name","targetNamespace","templatePath"]}}}},"responses":{"201":{"description":"Project created successfully from template.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"},"template":{"type":"object","properties":{"sourceRepository":{"type":"string","enum":["alienplatform/alien"]},"forkRepository":{"type":"string","description":"Fork repository in / format"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"resolvedRootDirectory":{"type":"string"}},"required":["sourceRepository","forkRepository","templatePath","resolvedRootDirectory"]}},"required":["template"]}]}}}},"400":{"description":"Bad request or GitHub integration not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Fork exists but is not ready yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/template-urls":{"get":{"operationId":"getProjectTemplateUrls","description":"Get template URLs for deploying setup stacks in this project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getTemplateUrls","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Template URLs retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"aws":{"type":"object","nullable":true,"properties":{"templateUrl":{"type":"string","format":"uri","description":"URL to download the CloudFormation template"},"launchStackUrl":{"type":"string","format":"uri","description":"URL to launch the template in the AWS CloudFormation console"}},"required":["templateUrl","launchStackUrl"],"description":"Template URLs for deploying an AWS setup stack"}}}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/active-release":{"get":{"operationId":"getProjectActiveRelease","description":"Get the active release for this project. Returns the latest release, or the pinned release if deploymentId is provided and that deployment has a pinned release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getActiveRelease","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Optional deployment ID to check for pinned release"},"required":false,"description":"Optional deployment ID to check for pinned release","name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Active release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or active release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups":{"post":{"operationId":"createDeploymentGroup","tags":["deployment-groups"],"summary":"Create a new deployment group","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group with this name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listDeploymentGroups","tags":["deployment-groups"],"summary":"List deployment groups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of deployment groups","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}":{"get":{"operationId":"getDeploymentGroup","tags":["deployment-groups"],"summary":"Get deployment group details","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Deployment group details","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"},"deploymentCount":{"type":"integer","description":"Current number of deployments in this deployment group"}},"required":["deploymentCount"]}]}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateDeploymentGroup","tags":["deployment-groups"],"summary":"Update deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDeploymentGroup","tags":["deployment-groups"],"summary":"Delete deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Deployment group deleted successfully"},"400":{"description":"Cannot delete deployment group that has deployments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/tokens":{"post":{"operationId":"createDeploymentGroupToken","tags":["deployment-groups"],"summary":"Create deployment group token","description":"Creates a deployment-group scoped API key and returns both the token and formatted deployment link","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenRequest"}}}},"responses":{"200":{"description":"Deployment group token created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/first-party-session":{"post":{"operationId":"createFirstPartyDeploymentSession","tags":["deployment-groups"],"summary":"Create first-party deployment session","description":"Mints a short-lived deployment-group token with the recommended self-deploy policy for the authenticated developer.","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"First-party deployment session created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFirstPartyDeploymentSessionResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages":{"get":{"operationId":"listPackages","description":"List packages with optional filters. Returns packages ordered by creation date (newest first).","x-speakeasy-group":"packages","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Filter by package type"},"required":false,"description":"Filter by package type","name":"type","in":"query"},{"schema":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Filter by package status"},"required":false,"description":"Filter by package status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search packages by type or version"},"required":false,"description":"Search packages by type or version","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of packages.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}":{"get":{"operationId":"getPackage","description":"Get details of a specific package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/rebuild":{"post":{"operationId":"rebuildPackages","description":"Rebuild packages for a project. This will cancel any pending packages and create new ones with auto-incremented versions.","x-speakeasy-group":"packages","x-speakeasy-name-override":"rebuild","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to rebuild packages for"}},"required":["project"]}}}},"responses":{"200":{"description":"Packages rebuilt successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"packagesCreated":{"type":"integer","description":"Number of packages created"}},"required":["packagesCreated"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}/cancel":{"post":{"operationId":"cancelPackage","description":"Cancel a pending or building package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"cancel","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package canceled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"400":{"description":"Package cannot be canceled (not in pending or building status).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases":{"get":{"operationId":"listReleases","description":"Retrieve all releases.","x-speakeasy-group":"releases","x-speakeasy-name-override":"list","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search releases by commit message, branch, SHA, or release ID"},"required":false,"description":"Search releases by commit message, branch, SHA, or release ID","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by git branch (commitRef)"},"required":false,"description":"Filter by git branch (commitRef)","name":"branch","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by commit author login or name"},"required":false,"description":"Filter by commit author login or name","name":"author","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created after this date (ISO 8601)"},"required":false,"description":"Filter releases created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created before this date (ISO 8601)"},"required":false,"description":"Filter releases created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved releases.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createRelease","description":"Create a new release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReleaseRequest"}}}},"responses":{"201":{"description":"Release created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Release"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/branches":{"get":{"operationId":"listReleaseBranches","description":"List distinct git branches across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listBranches","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search branches by name (case-insensitive contains)"},"required":false,"description":"Search branches by name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of branches to return"},"required":false,"description":"Maximum number of branches to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct branches.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/authors":{"get":{"operationId":"listReleaseAuthors","description":"List distinct commit authors across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listAuthors","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search authors by login or name (case-insensitive contains)"},"required":false,"description":"Search authors by login or name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of authors to return"},"required":false,"description":"Maximum number of authors to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct authors.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseAuthorFilterItem"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/{id}":{"get":{"operationId":"getRelease","description":"Retrieve a release by ID.","x-speakeasy-group":"releases","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"required":true,"description":"Unique identifier for the release.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseListItemResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments":{"get":{"operationId":"listDeployments","description":"Retrieve all deployments.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"list","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Filter by exact deployment name. Must be used with deploymentGroup."},"required":false,"description":"Filter by exact deployment name. Must be used with deploymentGroup.","name":"name","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name, public subdomain, or deployment group name"},"required":false,"description":"Search deployments by name, public subdomain, or deployment group name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved deployments.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"400":{"description":"Invalid deployment list filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDeployment","description":"Create a new deployment. Deployment group tokens automatically use their group. Workspace/project tokens must provide deploymentGroupId.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewDeploymentRequest"}}}},"responses":{"201":{"description":"Deployment created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"400":{"description":"Bad request - deployment group has reached max deployments limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Forbidden - insufficient permissions to create deployments in this context.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or deployment group not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/stats":{"get":{"operationId":"getDeploymentStats","description":"Get aggregated deployment statistics. Returns total count and breakdown by status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getStats","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name or deployment group name"},"required":false,"description":"Search deployments by name or deployment group name","name":"search","in":"query"}],"responses":{"200":{"description":"Deployment statistics retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentStats"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-environments":{"get":{"operationId":"listDeploymentFilterEnvironments","description":"List distinct effective environments used by deployments. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterEnvironments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-deployment-groups":{"get":{"operationId":"listDeploymentFilterDeploymentGroups","description":"List deployment groups with deployment counts. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterDeploymentGroups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return"},"required":false,"description":"Maximum number of items to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Deployment groups for filter retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"},"deploymentCount":{"type":"number"},"runningCount":{"type":"number","description":"Number of deployments in 'running' status"},"failedCount":{"type":"number","description":"Number of deployments in a failed status"},"inProgressCount":{"type":"number","description":"Number of deployments in an in-progress status (provisioning, updating, etc.)"}},"required":["id","name","deploymentCount","runningCount","failedCount","inProgressCount"]}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}":{"get":{"operationId":"getDeployment","description":"Retrieve a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentDetailResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/info":{"get":{"operationId":"getDeploymentConnectionInfo","description":"Get deployment connection information including command endpoint and resource URLs.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment connection information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentConnectionInfo"}}}},"400":{"description":"Deployment not ready (no manager assigned).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/rejoin":{"post":{"operationId":"rejoinDeployment","description":"Re-acquire a deployment-scoped sync token for an existing deployment by name. Used by the agent when its persistent state was wiped (e.g. emptyDir on pod restart) and `/v1/initialize` would hit a DEPLOYMENT_NAME_ALREADY_EXISTS 409. Deployment-group tokens only.","tags":["deployments"],"x-speakeasy-group":"deployments","x-speakeasy-name-override":"rejoin","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejoinDeploymentRequest"}}}},"responses":{"200":{"description":"Existing deployment found; new deployment-scoped token issued.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejoinDeploymentResponse"}}}},"403":{"description":"Caller is not a deployment-group token, or is from a different deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"No deployment with that name exists in the caller's deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/import":{"post":{"operationId":"importDeployment","description":"Import a deployment from resolved setup infrastructure such as CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"import","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportDeploymentRequest"}}}},"responses":{"200":{"description":"Deployment import was idempotent and returned an existing deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"201":{"description":"Deployment imported and created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/first-party-inputs":{"put":{"operationId":"setFirstPartyDeploymentInputs","description":"Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setFirstPartyDeploymentInputs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Input values stored on the session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsResponse"}}}},"400":{"description":"A deployment-group token scope is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The token is not a first-party deployment session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to store input values.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations":{"post":{"operationId":"createSetupRegistrationOperation","description":"Start a durable setup registration operation for CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createSetupRegistrationOperation","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupRegistrationOperationRequest"}}}},"responses":{"202":{"description":"Setup registration operation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"400":{"description":"Invalid setup registration operation request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed before callback acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations/{id}":{"get":{"operationId":"getSetupRegistrationOperation","description":"Get setup registration operation status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getSetupRegistrationOperation","parameters":[{"schema":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"required":true,"description":"Unique identifier for the setup registration operation.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Setup registration operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"404":{"description":"Setup registration operation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/delete":{"post":{"operationId":"deleteDeployment","description":"Delete, detach, or forget a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentRequest"}}}},"responses":{"202":{"description":"Deployment deletion request accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentResponse"}}}},"400":{"description":"Cannot delete the deployment in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/redeploy":{"post":{"operationId":"redeployDeployment","description":"Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"redeploy","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment redeployment triggered successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot redeploy - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/pin-release":{"post":{"operationId":"pinDeploymentRelease","description":"Pin or unpin deployment to a specific release. Only works for running deployments. Controller will automatically trigger update to target release.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"pinRelease","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinReleaseRequest"}}}},"responses":{"202":{"description":"Release pin updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot pin release - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/target-agent-version":{"put":{"operationId":"setDeploymentTargetAgentVersion","description":"Set (or clear) the agent version this deployment should run. The manager compares this against the agent's reported version on each /v1/sync; when they differ, it emits an agent_target in the response so the agent triggers the upgrade itself. Pass null/omit to clear.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setTargetAgentVersion","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetTargetAgentVersionRequest"}}}},"responses":{"202":{"description":"Target agent version updated.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/retry":{"post":{"operationId":"retryDeployment","description":"Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"retry","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment retry enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Deployment is not in a failed state that can be retried.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/environment-variables":{"patch":{"operationId":"updateDeploymentEnvironmentVariables","description":"Update a deployment's environment variables. If the deployment is running and not locked, the status will be changed to update-pending to trigger a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateEnvironmentVariables","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentEnvironmentVariablesRequest"}}}},"responses":{"202":{"description":"Environment variables updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/token":{"post":{"operationId":"createDeploymentToken","description":"Create a deployment token (deployment-scoped API key). The deployment must exist before creating a token.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createToken","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenRequest"}}}},"responses":{"201":{"description":"Deployment token created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers":{"post":{"operationId":"createManager","description":"Create a new manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewManagerRequest"}}}},"responses":{"201":{"description":"Manager created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Invalid private manager setup method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"A manager for this target already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listManagers","description":"Retrieve all managers.","x-speakeasy-group":"managers","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search managers by name"},"required":false,"description":"Search managers by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of managers to return"},"required":false,"description":"Maximum number of managers to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved managers.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Manager"}}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/setup-token":{"post":{"operationId":"retryManagerSetup","description":"Revoke previous private-manager setup tokens and issue a fresh setup token/config.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retrySetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"201":{"description":"Fresh manager setup token generated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Manager setup cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or setup config not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/retry":{"post":{"operationId":"retryManager","description":"Retry private-manager setup. Returns a fresh setup action before the internal deployment exists, or requests retry for the internal deployment after it exists.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retry","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager retry handled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerRetryResponse"}}}},"400":{"description":"Manager cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or internal deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/cancel-setup":{"post":{"operationId":"cancelManagerSetup","description":"Cancel pending private-manager setup, revoke setup/runtime tokens, and remove the undeployed manager record.","x-speakeasy-group":"managers","x-speakeasy-name-override":"cancelSetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager setup canceled successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Manager setup cannot be canceled in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}":{"get":{"operationId":"getManager","description":"Retrieve a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"get","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manager"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteManager","description":"Delete a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"delete","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager deletion enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot delete the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Internal deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/domain-binding":{"get":{"operationId":"getManagerDomainBinding","description":"Get the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager domain binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateManagerDomainBinding","description":"Create, update, or remove the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"updateDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerDomainBinding"}}}},"responses":{"200":{"description":"Manager domain binding updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"400":{"description":"Invalid domain binding request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or domain not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/management-config":{"get":{"operationId":"getManagerManagementConfig","description":"Get the management configuration for a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getManagementConfig","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"required":true,"description":"Represents the target cloud platform.","name":"platform","in":"query"}],"responses":{"200":{"description":"Management config retrieved successfully.","content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/provision":{"post":{"operationId":"provisionManager","description":"Enqueue provisioning for a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"provision","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager provisioning enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot provision the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/update":{"post":{"operationId":"updateManager","description":"Update a manager to a specific release ID or active release.","x-speakeasy-group":"managers","x-speakeasy-name-override":"update","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerRequest"}}}},"responses":{"202":{"description":"Manager update enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot update the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/events":{"get":{"operationId":"listManagerEvents","description":"Retrieve all events of a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"listEvents","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}},"required":["items"]}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/token":{"post":{"operationId":"generateManagerToken","description":"Generate a short-lived JWT for direct browser → manager communication. Used for fetching command payloads and querying logs without routing sensitive data through the platform API.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerToken","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenRequest"}}}},"responses":{"200":{"description":"Manager access token and connection info.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/gcp-oauth-provider/resolve":{"post":{"operationId":"resolveManagerGcpOAuthProvider","description":"Resolve decrypted project-level Google Cloud OAuth provider settings for a manager-side deployment bootstrap.","x-speakeasy-group":"managers","x-speakeasy-name-override":"resolveGcpOAuthProvider","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderRequest"}}}},"responses":{"200":{"description":"Resolved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderResponse"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Manager cannot resolve this deployment group's project settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/heartbeat":{"post":{"operationId":"reportManagerHeartbeat","description":"Report Manager health status and metrics.","x-speakeasy-group":"managers","x-speakeasy-name-override":"reportHeartbeat","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatRequest"}}}},"responses":{"200":{"description":"Heartbeat acknowledged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/deployment":{"get":{"operationId":"getManagerDeployment","description":"Get deployment details for a private manager (internal deployment platform, status, resources).","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDeployment","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager deployment details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDeployment"}}}},"404":{"description":"Manager not found or has no internal deployment (alien-hosted managers don't have deployment info).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys":{"get":{"operationId":"listAPIKeys","description":"Retrieve all API keys for the current workspace.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved API keys.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/APIKey"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAPIKey","description":"Create a new API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyRequest"}}}},"responses":{"201":{"description":"API key created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyResponse"}}}},"403":{"description":"Insufficient permissions to create API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/{id}":{"get":{"operationId":"getAPIKey","description":"Retrieve a specific API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateAPIKey","description":"Update an API key (enable/disable, change description).","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAPIKeyRequest"}}}},"responses":{"200":{"description":"API key updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"revokeAPIKey","description":"Revoke (soft delete) an API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"revoke","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"API key revoked successfully."},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/batch-delete":{"post":{"operationId":"deleteAPIKeys","description":"Permanently delete multiple API keys.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"deleteMultiple","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAPIKeysRequest"}}}},"responses":{"200":{"description":"API keys deleted successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"deletedCount":{"type":"number"}},"required":["deletedCount"]}}}},"403":{"description":"Insufficient permissions to delete API keys.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains":{"get":{"operationId":"listDomains","description":"List system domains and workspace domains.","x-speakeasy-group":"domains","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domains.","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/DomainWithUsage"}}},"required":["domains"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDomain","description":"Create a workspace domain and optional initial endpoints.","x-speakeasy-group":"domains","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":253},"setup":{"type":"object","properties":{"deploymentPortal":{"type":"boolean"},"packages":{"type":"boolean"},"deploymentUrlProjectId":{"type":"string","nullable":true,"pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"managerIds":{"type":"array","items":{"type":"string"}}}}},"required":["domain"]}}}},"responses":{"200":{"description":"Returned an existing workspace domain claim.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"201":{"description":"Created domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Domain is reserved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/endpoints":{"post":{"operationId":"createDomainEndpoint","description":"Create an endpoint under a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"createEndpoint","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"owner":{"type":"object","properties":{"type":{"type":"string","enum":["workspace","project","manager"]},"id":{"type":"string"}},"required":["type","id"]}},"required":["kind"]}}}},"responses":{"201":{"description":"Created endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Endpoint cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}":{"get":{"operationId":"getDomain","description":"Get domain by ID.","x-speakeasy-group":"domains","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDomain","description":"Delete a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain deletion requested.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain is in use.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/refresh":{"post":{"operationId":"refreshDomain","description":"Refresh workspace domain verification.","x-speakeasy-group":"domains","x-speakeasy-name-override":"refresh","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain verification refresh requested.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events":{"get":{"operationId":"listEvents","description":"Retrieve all events.","x-speakeasy-group":"events","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter events to a single deployment."},"required":false,"description":"Filter events to a single deployment.","name":"deploymentId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events/{id}":{"get":{"operationId":"getEvent","description":"Retrieve an event by ID.","x-speakeasy-group":"events","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"required":true,"description":"Unique identifier for the event.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved event.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands":{"get":{"operationId":"listCommands","description":"Retrieve commands. Use for dashboard analytics and command history.","x-speakeasy-group":"commands","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Filter by command state"},"required":false,"description":"Filter by command state","name":"state","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Filter by command name"},"required":false,"description":"Filter by command name","name":"name","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search commands by name"},"required":false,"description":"Search commands by name","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created after this date (ISO 8601)"},"required":false,"description":"Filter commands created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created before this date (ISO 8601)"},"required":false,"description":"Filter commands created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deployment","project"]},"description":"Optional fields to include: deployment, project"},"required":false,"description":"Optional fields to include: deployment, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved commands.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommandListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createCommand","description":"Create command metadata. Called by manager when processing commands. Returns project info for routing decisions.","x-speakeasy-group":"commands","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandRequest"}}}},"responses":{"201":{"description":"Command created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/names":{"get":{"operationId":"listCommandNames","description":"List distinct command names. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listNames","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search command names (prefix match)"},"required":false,"description":"Search command names (prefix match)","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct command names.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandNamesResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/deployments":{"get":{"operationId":"listCommandDeployments","description":"List distinct deployments that have commands, including deployment group info. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search deployment or deployment group names"},"required":false,"description":"Search deployment or deployment group names","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct deployments that have commands.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandDeploymentsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/{id}":{"patch":{"operationId":"updateCommand","description":"Update command state. Called by manager when command is dispatched or completes.","x-speakeasy-group":"commands","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCommandRequest"}}}},"responses":{"200":{"description":"Command updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Command not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getCommand","description":"Retrieve a command by ID.","x-speakeasy-group":"commands","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved command.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions":{"get":{"operationId":"listDebugSessions","description":"Retrieve debug sessions for dashboard audit. Filters: project, deployment, state, mode.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Filter by session state"}]},"required":false,"description":"Filter by session state","name":"state","in":"query"},{"schema":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model (push/pull). Joins against the parent deployment."},"required":false,"description":"Filter by deployment model (push/pull). Joins against the parent deployment.","name":"mode","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Filter by cloud provider. Joins against the parent deployment."},"required":false,"description":"Filter by cloud provider. Joins against the parent deployment.","name":"provider","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Paginated debug sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSessionListResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDebugSession","description":"Create a debug-session audit row. Called by the manager when a pull or push debug tunnel is opened. Workspace + project derived from deployment.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDebugSessionRequest"}}}},"responses":{"201":{"description":"Debug session created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions/{id}":{"patch":{"operationId":"updateDebugSession","description":"Update debug-session state. Called by manager on tunnel attach, close, or deadline expiry.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDebugSessionRequest"}}}},"responses":{"200":{"description":"Debug session updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Debug session not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getDebugSession","description":"Retrieve a debug session by ID.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved debug session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info":{"get":{"operationId":"getDeploymentInfo","description":"Get deployment information for the deployment portal. Accepts both deployment-scoped and deployment-group-scoped API keys. Returns project information, package status/outputs, and either deployment or deployment group details depending on the token type. Poll this endpoint to check if packages are ready.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment information retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInfo"}}}},"401":{"description":"Unauthorized — requires a deployment-scoped or deployment-group-scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/compute-plan":{"post":{"operationId":"planDeploymentCompute","description":"Plan deployment compute for the active release before stack preparation. The response contains recommended machine and scale choices for cloud compute pools.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"planCompute","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Compute plan returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentComputePlan"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/prepare-stack":{"post":{"operationId":"prepareDeploymentStack","description":"Prepare the active release stack for a deployment portal setup session. The response contains the generated stack shape plus setup compatibility metadata.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"prepareStack","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Prepared stack returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreparedDeploymentStack"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/list":{"post":{"operationId":"syncList","description":"List full deployment records for manager operational loops. This endpoint is intentionally separate from the public deployments list, which returns lightweight UI rows.","x-speakeasy-group":"sync","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListRequest"}}}},"responses":{"200":{"description":"Full deployment records returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/acquire":{"post":{"operationId":"syncAcquire","description":"Acquire a batch of deployments for processing. Used by Manager to atomically lock deployments matching filters. Each deployment in the batch must be released after processing.","x-speakeasy-group":"sync","x-speakeasy-name-override":"acquire","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireRequest"}}}},"responses":{"200":{"description":"Deployments acquired successfully (empty arrays if none available). Failures indicate deployments that were locked but failed during context building - their locks have been released.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/reconcile":{"post":{"operationId":"syncReconcile","description":"Reconcile deployment state. Push model requests that include a session verify lock ownership. Pull model state reports are accepted as authz-gated agent progress even when they carry an agent-sync session. Accepts full DeploymentState after step() execution.","x-speakeasy-group":"sync","x-speakeasy-name-override":"reconcile","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileRequest"}}}},"responses":{"200":{"description":"State reconciled successfully. If target is present, continue deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment locked (pull) or session mismatch (push).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/release":{"post":{"operationId":"syncRelease","description":"Release a deployment lock. Must be called after processing an acquired deployment, even if processing failed. This is critical to avoid deadlocks.","x-speakeasy-group":"sync","x-speakeasy-name-override":"release","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReleaseRequest"}}}},"responses":{"200":{"description":"Lock released successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}":{"get":{"operationId":"listResourceOverview","x-speakeasy-group":"resources","x-speakeasy-name-override":"listOverview","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Compute resource overview rows from latest heartbeats.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"deploymentCount":{"type":"integer"},"attentionCount":{"type":"integer"},"lastObservedAt":{"type":"string","format":"date-time"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt"]}}},"required":["resources"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/{resourceId}/deployments":{"get":{"operationId":"listResourceDeployments","x-speakeasy-group":"resources","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Deployments where the resource is installed.","content":{"application/json":{"schema":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]}}},"required":["resourceType","resourceId","deployments"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/deployments/{deploymentId}/{resourceId}":{"get":{"operationId":"getResourceDeploymentDetail","x-speakeasy-group":"resources","x-speakeasy-name-override":"getDeploymentDetail","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Latest heartbeat detail for one compute resource deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"deployment":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]},"heartbeat":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","enum":["available"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"staleAt":{"type":"string","format":"date-time"},"platformStale":{"type":"boolean"},"heartbeat":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"raw":{"type":"array","items":{"nullable":true}}},"required":["status","deploymentId","resourceId","resourceType","backend","controllerPlatform","observedAt","staleAt","platformStale","heartbeat","raw"]},{"type":"object","properties":{"status":{"type":"string","enum":["missing"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"}},"required":["status","deploymentId","resourceId","resourceType"]}]}},"required":["deployment","heartbeat"]}}}},"404":{"description":"Deployment or resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resolve":{"get":{"operationId":"resolve","tags":["resolve"],"summary":"Resolve manager for a project and platform","description":"Returns the manager URL for a given project and platform. The project can be provided as a query parameter, or derived from the token's scope (project-scoped, deployment-group-scoped, or deployment-scoped tokens carry an implicit project). This is the single entry point for all CLI tools to discover which manager to talk to.","x-speakeasy-group":"resolve","x-speakeasy-name-override":"resolve","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform to resolve the manager for"},"required":true,"description":"Target platform to resolve the manager for","name":"platform","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope)."},"required":false,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope).","name":"project","in":"query"}],"responses":{"200":{"description":"Manager resolved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveResponse"}}}},"400":{"description":"Missing required project parameter for this token type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found or no manager available for platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Manager not ready yet (no URL reported). Retry after a delay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/cloud-regions":{"get":{"operationId":"getCloudRegions","description":"Get cloud regions supported by this Alien environment.","x-speakeasy-group":"cloudRegions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Supported cloud regions retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudRegionsResponse"}}}}}}},"/v1/billing/audit-log":{"get":{"operationId":"listBillingAuditLog","description":"List billing activity entries for the current workspace.","x-speakeasy-group":"billing","x-speakeasy-name-override":"listAuditLog","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor: id from the previous page."},"required":false,"description":"Cursor: id from the previous page.","name":"before","in":"query"}],"responses":{"200":{"description":"Audit-log rows newest-first.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/BillingAuditLogRow"}},"nextCursor":{"type":"string","nullable":true}},"required":["items","nextCursor"]}}}}}}},"/v1/billing/entitlements":{"get":{"operationId":"getWorkspaceBillingEntitlements","description":"Get the workspace billing entitlements used for product feature gates. Autumn is the source of truth; the response is served through the workspace billing read model with stale-cache fallback.","x-speakeasy-group":"billing","x-speakeasy-name-override":"getEntitlements","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace billing entitlements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceBillingEntitlements"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}}}} \ No newline at end of file diff --git a/client-sdks/platform/rust/openapi-3.0.json b/client-sdks/platform/rust/openapi-3.0.json index 6d31a10cd..f7cb8a7a4 100644 --- a/client-sdks/platform/rust/openapi-3.0.json +++ b/client-sdks/platform/rust/openapi-3.0.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"title":"Alien API","version":"1.0.0","contact":{"name":"Alien Team","url":"https://alien.dev"}},"servers":[{"url":"https://api.alien.dev","description":"Alien API - Production"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key for authentication, must be provided as a Bearer token. Generate an API key at https://alien.dev/api-keys"}},"schemas":{"Membership":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"role":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","logoUrl","role","createdAt"],"additionalProperties":false},"APIError":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."}},"required":["code","message","internal"]},"UserProfile":{"type":"object","properties":{"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","description":"User's email address"},"name":{"type":"string","description":"User's display name"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"},"githubUsername":{"type":"string","nullable":true,"description":"Linked GitHub username"},"cliConnected":{"type":"boolean","description":"Whether this user has ever authenticated a request from the Alien CLI. Latched on first CLI request, never cleared."},"company":{"type":"string","nullable":true,"description":"Company name collected during profile setup."},"acquisitionSource":{"type":"string","nullable":true,"enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other",null],"description":"How the user heard about Alien."},"acquisitionSourceDetail":{"type":"string","nullable":true,"description":"Additional acquisition source detail when the source is other."},"useCases":{"type":"string","nullable":true,"description":"What the user is hoping to use Alien for."},"profileSetupCompletedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the user completed the required profile setup dialog."},"profileSetupVersion":{"type":"integer","nullable":true,"description":"Version of the required profile setup dialog the user completed."}},"required":["id","email","name","image","githubUsername","cliConnected","company","acquisitionSource","acquisitionSourceDetail","useCases","profileSetupCompletedAt","profileSetupVersion"],"additionalProperties":false},"UserProfileSetupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"},"company":{"type":"string","minLength":1,"maxLength":120,"description":"Company name"},"acquisitionSource":{"type":"string","enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other"],"description":"How the user heard about Alien"},"acquisitionSourceDetail":{"type":"string","minLength":1,"maxLength":200,"description":"Required when acquisitionSource is other"},"useCases":{"type":"string","maxLength":2000,"description":"What the user is hoping to use Alien for"}},"required":["name","company","acquisitionSource"],"additionalProperties":false},"GitNamespace":{"type":"object","properties":{"id":{"type":"number","nullable":true},"name":{"type":"string"},"slug":{"type":"string"},"installationId":{"type":"number","nullable":true},"type":{"type":"string","enum":["team","user"]},"provider":{"type":"string","enum":["github"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","slug","installationId","type","provider","createdAt"],"additionalProperties":false},"GitRepository":{"type":"object","properties":{"name":{"type":"string"},"private":{"type":"boolean"},"defaultBranch":{"type":"string"},"pushedAt":{"type":"string","format":"date-time"}},"required":["name","private","defaultBranch"],"additionalProperties":false},"Subject":{"oneOf":[{"$ref":"#/components/schemas/UserSubject"},{"$ref":"#/components/schemas/ServiceAccountSubject"}],"discriminator":{"propertyName":"kind","mapping":{"user":"#/components/schemas/UserSubject","serviceAccount":"#/components/schemas/ServiceAccountSubject"}},"description":"Authenticated principal that can be either a user (with workspace-scoped permissions) or a service account (with configurable scope and role)"},"UserSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["user"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","format":"email","description":"User's email address"},"workspaceId":{"type":"string","description":"ID of the workspace the user is authenticated within"},"workspaceName":{"type":"string","description":"Name of the workspace the user is authenticated within"},"role":{"$ref":"#/components/schemas/UserRole"}},"required":["kind","id","email","workspaceId","role"],"description":"Authenticated user subject with workspace-scoped permissions"},"UserRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"User's role within the workspace","example":"workspace.member"},"ServiceAccountSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["serviceAccount"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique service account identifier (API key ID)"},"workspaceId":{"type":"string","description":"ID of the workspace the service account belongs to"},"workspaceName":{"type":"string","description":"Name of the workspace the service account belongs to"},"scope":{"$ref":"#/components/schemas/SubjectScope"},"role":{"$ref":"#/components/schemas/Role"}},"required":["kind","id","workspaceId","scope","role"],"description":"Authenticated service account subject with scoped permissions (workspace, project, or deployment level)"},"SubjectScope":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["workspace"],"description":"Workspace-scoped access"}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["project"],"description":"Project-scoped access"},"projectId":{"type":"string","description":"ID of the specific project this scope applies to"}},"required":["type","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment"],"description":"Deployment-scoped access"},"deploymentId":{"type":"string","description":"ID of the specific deployment this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"}},"required":["type","deploymentId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"],"description":"Deployment group-scoped access"},"deploymentGroupId":{"type":"string","description":"ID of the specific deployment group this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"}},"required":["type","deploymentGroupId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["manager"],"description":"Manager-scoped access"},"managerId":{"type":"string","description":"ID of the specific manager this scope applies to"}},"required":["type","managerId"]}],"description":"Authorization scope defining what resources this service account can access"},"Role":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"$ref":"#/components/schemas/ProjectRole"},{"$ref":"#/components/schemas/DeploymentRole"},{"$ref":"#/components/schemas/DeploymentGroupRole"},{"$ref":"#/components/schemas/ManagerRole"}],"description":"Role defining what actions this service account can perform within its scope","example":"workspace.member"},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"ProjectRole":{"type":"string","enum":["project.viewer","project.developer"],"description":"Role for project-scoped service accounts","example":"project.developer"},"DeploymentRole":{"type":"string","enum":["deployment.viewer","deployment.manager","deployment.telemetry-writer"],"description":"Role for deployment-scoped service accounts","example":"deployment.manager"},"DeploymentGroupRole":{"type":"string","enum":["deployment-group.deployer"],"description":"Role for deployment group-scoped service accounts","example":"deployment-group.deployer"},"ManagerRole":{"type":"string","enum":["manager.runtime"],"description":"Role for manager-scoped service accounts","example":"manager.runtime"},"Workspace":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name.","example":"my-workspace"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"onboardingDismissedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the Getting Started walkthrough was dismissed or completed for this workspace. Null means it has never been dismissed; the dashboard auto-promotes the walkthrough until this is set."},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","onboardingDismissedAt","createdAt"],"additionalProperties":false},"WorkspaceMember":{"type":"object","properties":{"userId":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"image":{"type":"string","nullable":true},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"joinedAt":{"type":"string","format":"date-time"}},"required":["userId","email","name","image","role","joinedAt"],"additionalProperties":false},"ProjectListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"deploymentCount":{"type":"number"},"latestRelease":{"$ref":"#/components/schemas/ProjectReleaseInfo"}}}]},"DeploymentPortalAppearancePreset":{"type":"string","enum":["clean","technical","enterprise","playful","minimal"],"default":"clean","description":"Curated visual style for the deployment portal."},"DeploymentPortalAccentColor":{"type":"string","enum":["blue","purple","green","orange","pink","slate"],"default":"blue","description":"Accent color used for highlights and primary actions."},"DeploymentPortalDensity":{"type":"string","enum":["comfortable","compact"],"default":"comfortable","description":"Layout density for portal content."},"ProjectReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","gitMetadata","createdAt"]},"GitMetadata":{"type":"object","nullable":true,"properties":{"commitSha":{"type":"string","nullable":true,"maxLength":40,"description":"The hash of the commit","example":"dc36199b2234c6586ebe05ec94078a895c707e29"},"commitMessage":{"type":"string","nullable":true,"maxLength":1024,"description":"The commit message","example":"add method to measure Interaction to Next Paint (INP) (#36490)"},"commitRef":{"type":"string","nullable":true,"maxLength":256,"description":"The branch or tag on which the commit was made","example":"main"},"commitDate":{"type":"string","nullable":true,"format":"date-time","description":"The date and time when the commit was created","example":"2026-03-16T12:00:00Z"},"dirty":{"type":"boolean","nullable":true,"description":"Whether or not there have been modifications to the working tree since the latest commit","example":true},"remoteUrl":{"type":"string","nullable":true,"maxLength":2048,"description":"The git repository's remote origin url","example":"https://github.com/alienplatform/alien"},"commitAuthorName":{"type":"string","nullable":true,"maxLength":256,"description":"The name of the author of the commit (from git config)","example":"John Doe"},"commitAuthorEmail":{"type":"string","nullable":true,"maxLength":256,"format":"email","description":"The email of the author of the commit (from git config)","example":"john@example.com"},"commitAuthorLogin":{"type":"string","nullable":true,"maxLength":256,"description":"The provider username of the commit author (e.g., GitHub login), resolved server-side from the commit email","example":"johndoe"},"commitAuthorAvatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"The avatar URL of the commit author, resolved server-side from the provider login","example":"https://github.com/johndoe.png"},"provider":{"$ref":"#/components/schemas/GitProvider"}}},"GitProvider":{"oneOf":[{"$ref":"#/components/schemas/GitHubProvider"},{"$ref":"#/components/schemas/GitLabProvider"},{"nullable":true}],"description":"Provider-specific repository information, resolved server-side from remoteUrl"},"GitHubProvider":{"type":"object","properties":{"type":{"type":"string","enum":["github"]},"org":{"type":"string","maxLength":256,"description":"Repository owner (user or organization)"},"repo":{"type":"string","maxLength":256,"description":"Repository name"}},"required":["type","org","repo"]},"GitLabProvider":{"type":"object","properties":{"type":{"type":"string","enum":["gitlab"]},"namespace":{"type":"string","maxLength":256,"description":"Group/project namespace"},"project":{"type":"string","maxLength":256,"description":"Project name"}},"required":["type","namespace","project"]},"Project":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","name","createdAt","workspaceId"]},"ProjectIDOrNamePathParam":{"type":"string","maxLength":100,"description":"Project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"ProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","redirectUris"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"hasClientSecret":{"type":"boolean","enum":[true]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","clientId","hasClientSecret","redirectUris"]}]},"GcpOAuthClientId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[a-zA-Z0-9_-]+-[a-zA-Z0-9_-]+\\.apps\\.googleusercontent\\.com$","description":"Google OAuth web client ID.","example":"1234567890-abc123.apps.googleusercontent.com"},"UpdateProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId"]}]},"GcpOAuthClientSecret":{"type":"string","minLength":1,"maxLength":512,"description":"Google OAuth web client secret. Write-only; never returned by the API.","example":"GOCSPX-example"},"UpdateProject":{"type":"object","properties":{"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."}}},"DeploymentPortalDomainResponse":{"type":"object","properties":{"deploymentPortalEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"},"packageEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["deploymentPortalEndpoint","packageEndpoint"]},"DomainEndpoint":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"dend_[0-9a-z]{28}$","description":"Unique identifier for the domain endpoint.","example":"dend_1bb6gdvm1bs74acqkjstcgv"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domainId":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"kind":{"$ref":"#/components/schemas/DomainEndpointKind"},"owner":{"$ref":"#/components/schemas/DomainEndpointOwner"},"hostname":{"type":"string","minLength":1,"maxLength":253},"status":{"$ref":"#/components/schemas/DomainEndpointStatus"},"provider":{"type":"string","nullable":true},"providerState":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"managedDnsRecords":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPortalManagedDnsRecord"}},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"retryAttempts":{"type":"integer","minimum":0},"nextStepAfter":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","workspaceId","domainId","kind","owner","hostname","status","managedDnsRecords","retryAttempts","createdAt","updatedAt"]},"DomainEndpointKind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"DomainEndpointOwner":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/DomainEndpointOwnerType"},"id":{"type":"string"}},"required":["type","id"]},"DomainEndpointOwnerType":{"type":"string","enum":["workspace","project","manager"]},"DomainEndpointStatus":{"type":"string","enum":["waiting_for_domain","provisioning","waiting_for_dns","waiting_for_health","active","failed","deleting"]},"DeploymentPortalManagedDnsRecord":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"value":{"type":"string"},"ttl":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true}},"required":["name","type","value"]},"DeploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments allowed in this deployment group"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","projectId","workspaceId","createdAt"]},"CreateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"project":{"type":"string","maxLength":100,"description":"Project ID or name this deployment group belongs to"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments in this deployment group"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"maxDeployments":{"type":"integer","minimum":1,"description":"Maximum number of deployments in this deployment group"}}},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateDeploymentGroupTokenRequest":{"type":"object","properties":{"description":{"type":"string","description":"Description for the API key"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"},"deploymentSetupConfig":{"$ref":"#/components/schemas/DeploymentSetupConfig"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"DeploymentSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"}},"required":["metadata","policy","environmentVariables"]},"DeploymentSetupMetadata":{"type":"object","additionalProperties":{"nullable":true}},"DeploymentSetupPolicy":{"type":"object","properties":{"allowedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"allowedDeploymentModels":{"type":"array","items":{"type":"string","enum":["push","pull","airgapped"]}},"allowedNetworkModes":{"type":"array","items":{"type":"string","enum":["none","create","default","byo"]}},"allowedUpdatesModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required"]}},"allowedTelemetryModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required","off"]}},"allowedHeartbeatsModes":{"type":"array","items":{"type":"string","enum":["on","off"]}},"allowExternalBindings":{"type":"boolean"},"allowCustomRegistry":{"type":"boolean"}}},"EnvironmentVariableConfig":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"value":{"type":"string","maxLength":10000,"description":"Variable value (encrypted in database)"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","value","type","targetResources"]},"EnvironmentVariableType":{"type":"string","enum":["plain","secret"],"description":"Variable type (plain or secret)"},"EncryptedStackInputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EncryptedStackInputValue"},"default":{}},"EncryptedStackInputValue":{"type":"object","properties":{"value":{"type":"string","description":"Encrypted JSON-encoded input value."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"]},"secret":{"type":"boolean","description":"Whether the original input is secret."}},"required":["value","kind","secret"]},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"Package":{"type":"object","properties":{"id":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"type":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Types of packages that can be built"},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string","description":"Package version (e.g., '1.0.0', 'rel_abc123')"},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"setupFingerprints":{"$ref":"#/components/schemas/SetupFingerprintMap"},"packageBuildInputHash":{"type":"string","description":"Hash of Platform-known package build request inputs: package type, source release, setup fingerprints, package config, and setup contract version"},"config":{"oneOf":[{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"}},"required":["displayName","name"],"description":"Branding configuration for the deploy CLI binary."},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for CloudFormation packages"},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"}},"required":["chartName","description"],"description":"Configuration for the Helm chart package"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"}},"required":["displayName","name"],"description":"Branding configuration for the Operator image."},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for Terraform package generation."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]}],"description":"Type-specific configuration"},"outputs":{"oneOf":[{"allOf":[{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"digest":{"type":"string","description":"Image digest (e.g., \"sha256:abc123...\")"},"image":{"type":"string","description":"Full image reference (e.g., \"public.ecr.aws/acme/operators/project-id:1.2.3\")"}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]},{"nullable":true}],"description":"Package outputs (only when status is 'ready')"},"error":{"nullable":true,"description":"Error information if status is 'failed'"},"sourceBinarySha256":{"type":"string","nullable":true,"description":"Builder-recorded source binary SHA256 (for cli/terraform packages)"},"retries":{"type":"integer","minimum":0,"description":"Number of build retries"},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","projectId","workspaceId","type","status","version","sourceReleaseId","setupFingerprints","packageBuildInputHash","config","retries","createdAt","updatedAt"]},"SetupFingerprintMap":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SetupFingerprintInfo"},"description":"Per-target setup compatibility fingerprints copied from the source release"},"SetupFingerprintInfo":{"type":"object","properties":{"target":{"$ref":"#/components/schemas/SetupTarget"},"fingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"version":{"$ref":"#/components/schemas/SetupFingerprintVersion"}},"required":["target","fingerprint","version"]},"SetupTarget":{"type":"string","minLength":1,"description":"Stable target key for the setup contract, e.g. aws/us-east-1"},"SetupFingerprint":{"type":"string","minLength":1,"description":"Deterministic setup contract fingerprint for one setup target"},"SetupFingerprintVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup fingerprint algorithm version"},"ReleaseListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Release"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"StackByPlatform":{"type":"object","properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"Release":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"projectId":{"type":"string","maxLength":128},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"workspaceId":{"type":"string","maxLength":128}},"required":["id","projectId","createdAt","stack","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256}},"required":["project"]},"ReleaseAuthorFilterItem":{"type":"object","properties":{"login":{"type":"string","nullable":true,"description":"Provider username (e.g., GitHub login)"},"name":{"type":"string","nullable":true,"description":"Git commit author name"},"avatarUrl":{"type":"string","nullable":true,"format":"uri","description":"Author avatar URL"}},"required":["login","name","avatarUrl"]},"DeploymentListItemResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint version"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if in a failed state"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"$ref":"#/components/schemas/ManagerID"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"ManagerID":{"type":"string","pattern":"mgr_[0-9a-z]{28}$","description":"ID of the manager","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"DeploymentReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","createdAt"]},"DeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"}},"required":["id","name"]},"DeploymentProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"}},"required":["id","name"]},"DeploymentStats":{"type":"object","properties":{"total":{"type":"number","description":"Total number of deployments matching filters"},"byStatus":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by status (only includes statuses with non-zero counts)"},"byPlatform":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by platform (only includes platforms with non-zero counts)"},"byCurrentRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by currentReleaseId. The empty string key represents deployments with no current release (initial provisioning)."},"byPinnedRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by pinnedReleaseId among deployments that are pinned. Excludes unpinned deployments."}},"required":["total","byStatus","byPlatform","byCurrentRelease","byPinnedRelease"]},"DeploymentDetailResponse":{"allOf":[{"$ref":"#/components/schemas/Deployment"},{"type":"object","properties":{"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}}}]},"Deployment":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"targetEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of target environment variables for the deployment"},"currentEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of current environment variables for the deployment"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentConnectionInfo":{"type":"object","properties":{"arc":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Manager URL for commands"},"deploymentId":{"type":"string","description":"Deployment ID to use in command requests"}},"required":["url","deploymentId"]},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"publicEndpoints":{"type":"object","additionalProperties":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"host":{"type":"string"},"wildcardHost":{"type":"string"}},"required":["url"]},"description":"Public endpoints keyed by endpoint name."}},"required":["type"]},"description":"Deployed resources and their public endpoints"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment"]},"NewDeploymentRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentGroupId":{"type":"string","description":"Required for workspace/project tokens. Deployment group tokens use their own group automatically."},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Optional manager to assign. If omitted, the project default or system manager is selected."}]},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"Stack settings for deployment customization"},"resourcePrefix":{"$ref":"#/components/schemas/ResourcePrefix"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method that created the deployment. Defaults to cli."}]},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup method metadata used to guide privileged teardown."}]},"inputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{},"description":"Stack input values provided by the deployment creator."}},"required":["name","platform","project"],"additionalProperties":false,"description":"Request schema for creating a new deployment"},"ResourcePrefix":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?=[a-z0-9])){1,38}[a-z0-9]$","description":"Optional physical-name prefix for generated cloud resources. Omit to let the manager generate one."},"ImportDeploymentRequest":{"oneOf":[{"$ref":"#/components/schemas/ForwardImportRequest"},{"$ref":"#/components/schemas/PersistImportedDeploymentRequest"}],"description":"Request schema for importing a deployment from resolved setup infrastructure"},"ForwardImportRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["forward"],"default":"forward"},"project":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user-session callers."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Required for user-session callers. Deployment-group tokens use their own group automatically.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager ID. If omitted, the first suitable manager for the source platform is used."}]},"source":{"$ref":"#/components/schemas/ImportSource"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["source"]},"ImportSource":{"type":"object","properties":{"deploymentName":{"type":"string","minLength":1,"description":"User-chosen deployment name. Must be unique within the deployment group; the manager returns 409 on collision."},"resourcePrefix":{"allOf":[{"$ref":"#/components/schemas/ResourcePrefix"},{"description":"Stable physical-name prefix used by the setup artifact."}]},"sourceKind":{"$ref":"#/components/schemas/ImportSourceKind"},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup source metadata needed to guide privileged teardown."}]},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release that produced the setup artifact. Defaults to latest.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Cloud platform of the imported stack"},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"region":{"type":"string","description":"Region or location reported by the setup artifact"},"setupTarget":{"allOf":[{"$ref":"#/components/schemas/SetupTarget"},{"description":"Setup target this package was generated for"}]},"setupImportFormatVersion":{"$ref":"#/components/schemas/SetupImportFormatVersion"},"setupFingerprint":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprint"},{"description":"Setup compatibility fingerprint embedded in the package"}]},"setupFingerprintVersion":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintVersion"},{"description":"Setup fingerprint algorithm version embedded in the package"}]},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ImportedResource"},"minItems":1}},"required":["deploymentName","resourcePrefix","platform","region","setupTarget","setupImportFormatVersion","setupFingerprint","setupFingerprintVersion","stackSettings","resources"],"description":"Resolved setup import payload"},"ImportSourceKind":{"type":"string","enum":["cloudformation","terraform","helm"],"description":"Source label for observability only — does not affect import behavior."},"KubernetesBasePlatform":{"type":"string","enum":["aws","gcp","azure"],"description":"Base cloud platform for cloud-backed Kubernetes imports."},"SetupImportFormatVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup import payload format version embedded in the package"},"ImportedResource":{"type":"object","properties":{"id":{"type":"string","description":"Resource id from the active stack"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"importData":{"type":"object","additionalProperties":{"nullable":true},"description":"Resolved typed import payload"}},"required":["id","type","importData"]},"PersistImportedDeploymentRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["persist"]},"name":{"type":"string","minLength":1,"description":"Deployment name. Must be unique within the deployment group."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"stackState":{"nullable":true},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"runtimeMetadata":{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"default":"provisioning","description":"Deployment status in the deployment lifecycle"},"currentReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"setupMetadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"setupTarget":{"$ref":"#/components/schemas/SetupTarget"},"setupFingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"setupFingerprintVersion":{"$ref":"#/components/schemas/SetupFingerprintVersion"},"deploymentToken":{"type":"string"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["mode","name","deploymentGroupId","managerId","platform","stackSettings","runtimeMetadata","deploymentProtocolVersion","setupTarget","setupFingerprint","setupFingerprintVersion"]},"SetFirstPartyDeploymentInputsResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"SetFirstPartyDeploymentInputsRequest":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["platform"]},"SetupRegistrationOperationResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"status":{"$ref":"#/components/schemas/SetupRegistrationOperationStatus"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"physicalResourceId":{"type":"string","nullable":true},"result":{"$ref":"#/components/schemas/SetupRegistrationOperationResult"},"error":{"type":"object","nullable":true,"properties":{"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["message","retryable"]}},"required":["id","action","sourceKind","status","deploymentId","physicalResourceId","result","error"]},"SetupRegistrationAction":{"type":"string","enum":["create","update","delete"]},"SetupRegistrationOperationStatus":{"type":"string","enum":["pending","processing","waiting-for-handoff","succeeded","failed","responding","responded"]},"SetupRegistrationOperationResult":{"type":"object","nullable":true,"properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentToken":{"type":"string","nullable":true},"helmValues":{"type":"string","nullable":true}},"required":["deploymentId","deploymentToken","helmValues"]},"CreateSetupRegistrationOperationRequest":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"source":{"allOf":[{"$ref":"#/components/schemas/ImportSource"}],"nullable":true},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":512},"cloudFormation":{"$ref":"#/components/schemas/SetupRegistrationCloudFormationTarget"}},"required":["action","sourceKind"],"additionalProperties":false},"SetupRegistrationCloudFormationTarget":{"type":"object","nullable":true,"properties":{"stackId":{"type":"string","minLength":1},"requestId":{"type":"string","minLength":1},"logicalResourceId":{"type":"string","minLength":1},"responseUrl":{"type":"string","format":"uri"},"physicalResourceId":{"type":"string","nullable":true,"minLength":1},"serviceTimeoutSeconds":{"type":"integer","minimum":60,"maximum":7200,"default":3300}},"required":["stackId","requestId","logicalResourceId","responseUrl"],"additionalProperties":false},"DeleteDeploymentResponse":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]},"message":{"type":"string"}},"required":["action","message"]},"DeleteDeploymentRequest":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]}},"required":["action"]},"PinReleaseRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release ID to pin the deployment to. Set to null to unpin and use active release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for pinning/unpinning deployment release"},"UpdateDeploymentEnvironmentVariablesRequest":{"type":"object","properties":{"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"value":{"type":"string","description":"Variable value"},"type":{"type":"string","enum":["plain","secret"],"description":"Variable type"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources)"}},"required":["name","value","type"]},"description":"Environment variables for the deployment"}},"required":["variables"],"additionalProperties":false,"description":"Request schema for updating deployment environment variables"},"CreateDeploymentTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The generated deployment token (only shown once)"},"deploymentId":{"type":"string","description":"The deployment ID that this token is scoped to"}},"required":["token","deploymentId"]},"CreateDeploymentTokenRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128,"description":"Optional description for the deployment token"},"expiresAt":{"type":"string","format":"date-time","description":"Optional expiration date for the deployment token"}},"required":["description"]},"CreateManagerResponse":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["pending"]},"setupToken":{"type":"string"},"setupTokenId":{"type":"string"},"deploymentLink":{"type":"string"},"setupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["plain","secret"]},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"}}},"required":["name","type","targetResources"]}}},"required":["metadata","policy","environmentVariables"]},"setup":{"oneOf":[{"type":"object","properties":{"method":{"type":"string","enum":["cloudformation"]},"deploymentPortalUrl":{"type":"string"},"launchUrl":{"type":"string"},"templateUrl":{"type":"string"},"stackName":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","launchUrl","templateUrl","stackName","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["google-oauth"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"oauthStartUrl":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","oauthStartUrl","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["terraform"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"providerSource":{"type":"string"},"moduleSource":{"type":"string"},"moduleVersion":{"type":"string"},"moduleInputs":{"type":"object","additionalProperties":{"type":"string"}},"mainTf":{"type":"string"},"tfvars":{"type":"string"},"commands":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","providerSource","moduleSource","moduleInputs","mainTf","tfvars","commands","stackSettings"]}]}},"required":["managerId","setupStatus","setupToken","setupTokenId","deploymentLink","setupConfig","setup"]},"NewManagerRequest":{"type":"object","properties":{"name":{"type":"string"},"cloud":{"$ref":"#/components/schemas/PrivateManagerCloud"},"region":{"type":"string","minLength":1,"maxLength":64,"description":"Cloud region for the manager."},"setupMethod":{"$ref":"#/components/schemas/PrivateManagerSetupMethod"},"network":{"type":"string","enum":["create","default"],"description":"Optional network mode for the private-manager setup. Defaults to create for production isolation; default uses the provider default network for faster dev/test setup."},"otlpConfig":{"type":"object","properties":{"logsEndpoint":{"type":"string","format":"uri","description":"External OTLP logs endpoint (e.g. https://api.axiom.co/v1/logs)"},"logsAuthHeader":{"type":"string","description":"Auth header in 'key=value,...' format (e.g. 'authorization=Bearer ,x-axiom-dataset=')"}},"required":["logsEndpoint","logsAuthHeader"],"description":"Optional external OTLP config for forwarding logs to Axiom, Datadog, etc. Falls back to built-in DeepStore when not set."}},"required":["name","cloud","region"]},"PrivateManagerCloud":{"type":"string","enum":["aws","gcp","azure"],"description":"Cloud where the private manager will be deployed."},"PrivateManagerSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform"],"description":"Optional setup method. Defaults to cloudformation for AWS, google-oauth for GCP, and terraform for Azure."},"ManagerRetryResponse":{"oneOf":[{"allOf":[{"$ref":"#/components/schemas/CreateManagerResponse"},{"type":"object","properties":{"mode":{"type":"string","enum":["setup"]}},"required":["mode"]}]},{"$ref":"#/components/schemas/ManagerRetryDeploymentResponse"}]},"ManagerRetryDeploymentResponse":{"type":"object","properties":{"mode":{"type":"string","enum":["deployment"]},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["provisioning"]},"deploymentId":{"type":"string"},"message":{"type":"string"}},"required":["mode","managerId","setupStatus","deploymentId","message"]},"Manager":{"type":"object","properties":{"id":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for the manager"}]},"name":{"type":"string","description":"Display name of the manager"},"targets":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where this private manager is deployed"},"region":{"type":"string","nullable":true,"description":"Cloud region selected for this private manager"},"setupStatus":{"type":"string","nullable":true,"enum":["pending","provisioning","active","failed","deleting","deleted",null],"description":"Private manager setup lifecycle status"},"url":{"type":"string","nullable":true,"format":"uri","description":"Manager URL (self-reported via heartbeat). DeepStore endpoints are exposed through this URL (e.g., {url}/v1/logs)"},"managementConfigs":{"$ref":"#/components/schemas/ManagerManagementConfigs"},"isSystem":{"type":"boolean","description":"Whether this is a system manager (Alien-hosted)"},"workspaceId":{"type":"string","description":"The workspace ID (for system managers, this is ALIEN_WORKSPACE_ID)"},"status":{"$ref":"#/components/schemas/ManagerStatus"},"version":{"type":"string","nullable":true,"description":"Manager version (self-reported via heartbeat)"},"metrics":{"type":"object","nullable":true,"properties":{"activeDeployments":{"type":"number","description":"Number of active deployments"},"pendingDeployments":{"type":"number","description":"Number of pending deployments"},"memoryUsageMb":{"type":"number","description":"Memory usage in megabytes"},"cpuUsagePercent":{"type":"number","description":"CPU usage percentage"}},"description":"Runtime metrics (self-reported via heartbeat)"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the manager"},"logsDatabaseId":{"type":"string","nullable":true,"description":"ID of the logs database associated with this manager"},"managedDeploymentCount":{"type":"integer","minimum":0,"description":"Number of deployments currently being managed by this manager"},"defaultProjectCount":{"type":"integer","minimum":0,"description":"Number of projects that select this manager as a default manager"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the manager was created"}},"required":["id","name","targets","managementConfigs","isSystem","workspaceId","status","managedDeploymentCount","defaultProjectCount","createdAt"],"description":"Manager schema"},"ManagerManagementConfigs":{"type":"object","properties":{"aws":{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"},"platform":{"type":"string","enum":["aws"]}},"required":["managingRoleArn","platform"]},"gcp":{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"},"platform":{"type":"string","enum":["gcp"]}},"required":["serviceAccountEmail","platform"]},"azure":{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."},"platform":{"type":"string","enum":["azure"]}},"required":["managingTenantId","oidcIssuer","oidcSubject","platform"]},"kubernetes":{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}},"description":"Per-platform management configurations for cross-account access (self-reported via heartbeat)"},"ManagerStatus":{"type":"string","enum":["healthy","degraded","unhealthy","unknown"],"description":"Current health status"},"ManagerDomainBindingResponse":{"type":"object","properties":{"managerDomainBinding":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["managerDomainBinding"]},"UpdateManagerDomainBinding":{"type":"object","properties":{"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"}},"additionalProperties":false},"UpdateManagerRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Optional release ID to update to. If not provided, the active release will be chosen","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for updating a manager to a new release"},"Event":{"type":"object","properties":{"id":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"debugSessionId":{"type":"string","nullable":true,"pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"data":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["LoadingConfiguration"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["Finished"]}},"required":["type"]},{"type":"object","properties":{"stack":{"type":"string","description":"Name of the stack being built"},"type":{"type":"string","enum":["BuildingStack"]}},"required":["stack","type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform being targeted"},"stack":{"type":"string","description":"Name of the stack being checked"},"type":{"type":"string","enum":["RunningPreflights"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"targetTriple":{"type":"string","description":"Target triple for the runtime"},"type":{"type":"string","enum":["DownloadingAlienRuntime"]},"url":{"type":"string","description":"URL being downloaded from"}},"required":["targetTriple","type","url"]},{"type":"object","properties":{"relatedResources":{"type":"array","items":{"type":"string"},"description":"All resource names sharing this build (for deduped container groups)"},"resourceName":{"type":"string","description":"Name of the resource being built"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["BuildingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being built"},"type":{"type":"string","enum":["BuildingImage"]}},"required":["image","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being pushed"},"progress":{"oneOf":[{"type":"object","properties":{"bytesUploaded":{"type":"integer","minimum":0,"description":"Bytes uploaded so far"},"layersUploaded":{"type":"integer","minimum":0,"description":"Number of layers uploaded so far"},"operation":{"type":"string","description":"Current operation being performed"},"totalBytes":{"type":"integer","minimum":0,"description":"Total bytes to upload"},"totalLayers":{"type":"integer","minimum":0,"description":"Total number of layers to upload"}},"required":["bytesUploaded","layersUploaded","operation","totalBytes","totalLayers"],"description":"Progress information for image push operations"},{"nullable":true}]},"type":{"type":"string","enum":["PushingImage"]}},"required":["image","type"]},{"type":"object","properties":{"destination":{"type":"string","nullable":true,"description":"Human-readable destination for pushed images"},"platform":{"type":"string","description":"Target platform"},"stack":{"type":"string","description":"Name of the stack being pushed"},"type":{"type":"string","enum":["PushingStack"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"resourceName":{"type":"string","description":"Name of the resource being pushed"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["PushingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"project":{"type":"string","description":"Project name"},"type":{"type":"string","enum":["CreatingRelease"]}},"required":["project","type"]},{"type":"object","properties":{"language":{"type":"string","description":"Language being compiled (rust, typescript, etc.)"},"progress":{"type":"string","nullable":true,"description":"Current progress/status line from the build output"},"type":{"type":"string","enum":["CompilingCode"]}},"required":["language","type"]},{"type":"object","properties":{"nextState":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},"suggestedDelayMs":{"type":"integer","nullable":true,"minimum":0,"description":"An suggested duration to wait before executing the next step."},"type":{"type":"string","enum":["StackStep"]}},"required":["nextState","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["GeneratingCloudFormationTemplate"]}},"required":["type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform for which the template is being generated"},"type":{"type":"string","enum":["GeneratingTemplate"]}},"required":["platform","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being provisioned"},"releaseId":{"type":"string","description":"ID of the release being deployed to the agent"},"type":{"type":"string","enum":["ProvisioningAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being updated"},"releaseId":{"type":"string","description":"ID of the new release being deployed to the agent"},"type":{"type":"string","enum":["UpdatingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being deleted"},"releaseId":{"type":"string","description":"ID of the release that was running on the agent"},"type":{"type":"string","enum":["DeletingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being debugged"},"debugSessionId":{"type":"string","description":"ID of the debug session"},"type":{"type":"string","enum":["DebuggingAgent"]}},"required":["agentId","debugSessionId","type"]},{"type":"object","properties":{"strategyName":{"type":"string","description":"Name of the deployment strategy being used"},"type":{"type":"string","enum":["PreparingEnvironment"]}},"required":["strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being deployed"},"type":{"type":"string","enum":["DeployingStack"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being tested"},"type":{"type":"string","enum":["RunningTestWorker"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpStack"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpEnvironment"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"platformName":{"type":"string","description":"Name of the platform (e.g., \"AWS\", \"GCP\")"},"type":{"type":"string","enum":["SettingUpPlatformContext"]}},"required":["platformName","type"]},{"type":"object","properties":{"repositoryName":{"type":"string","description":"Name of the docker repository"},"type":{"type":"string","enum":["EnsuringDockerRepository"]}},"required":["repositoryName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeployingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"roleArn":{"type":"string","description":"ARN of the role to assume"},"type":{"type":"string","enum":["AssumingRole"]}},"required":["roleArn","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"type":{"type":"string","enum":["ImportingStackStateFromCloudFormation"]}},"required":["cfnStackName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeletingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"bucketNames":{"type":"array","items":{"type":"string"},"description":"Names of the S3 buckets being emptied"},"type":{"type":"string","enum":["EmptyingBuckets"]}},"required":["bucketNames","type"]},{"type":"object","properties":{"deploymentGroupId":{"type":"string","description":"ID of the deployment group this slot belongs to"},"deploymentId":{"type":"string","description":"ID of the deployment that was created"},"releaseId":{"type":"string","nullable":true,"description":"Initial release the slot was created with, if any"},"type":{"type":"string","enum":["DeploymentCreated"]}},"required":["deploymentGroupId","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously live, if any"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentReleased"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release the platform was trying to deploy, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"phase":{"type":"string","enum":["preflights","provisioning","updating","deleting"],"description":"Phase of a deployment at which a failure occurred.\n\nDerived from the source deployment status: `preflights-failed` →\n`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` →\n`Updating`, `delete-failed` → `Deleting`.\n`refresh-failed` is modelled separately via `DeploymentDegraded`."},"type":{"type":"string","enum":["DeploymentFailed"]}},"required":["deploymentId","error","phase","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"type":{"type":"string","enum":["DeploymentDegraded"]}},"required":["deploymentId","error","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentRecovered"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment that was deleted"},"type":{"type":"string","enum":["DeploymentDeleted"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release that the failed attempt was targeting, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousError":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"type":{"type":"string","enum":["DeploymentRetryRequested"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release being redeployed"},"type":{"type":"string","enum":["DeploymentRedeployRequested"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"pinnedReleaseId":{"type":"string","description":"ID of the release that is now pinned"},"previousPinnedReleaseId":{"type":"string","nullable":true,"description":"ID of the previously pinned release, if any"},"type":{"type":"string","enum":["DeploymentReleasePinned"]}},"required":["deploymentId","pinnedReleaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousPinnedReleaseId":{"type":"string","description":"ID of the release that was previously pinned"},"type":{"type":"string","enum":["DeploymentReleaseUnpinned"]}},"required":["deploymentId","previousPinnedReleaseId","type"]},{"type":"object","properties":{"changedKeys":{"type":"array","items":{"type":"string"},"description":"Names of the environment variables that changed (added, removed, or modified)"},"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentEnvironmentUpdated"]}},"required":["changedKeys","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentDeletionRequested"]}},"required":["deploymentId","type"]}]},"state":{"oneOf":[{"type":"object","properties":{"failed":{"type":"object","properties":{"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]}},"description":"Event failed with an error"}},"required":["failed"]},{"type":"string","enum":["none"]},{"type":"string","enum":["started"]},{"type":"string","enum":["success"]}],"description":"Represents the state of an event"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","data","state","projectId","createdAt","workspaceId"]},"GenerateManagerTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string","description":"Platform JWT for authenticating with the manager"},"expiresIn":{"type":"number","nullable":true,"description":"Token lifetime in seconds"},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string","description":"Manager URL for direct access"},"databaseId":{"type":"string","nullable":true,"description":"Log database ID (null if logs not configured)"},"controlPlaneUrl":{"type":"string","nullable":true,"description":"Log control plane URL (null if logs not configured)"}},"required":["accessToken","expiresIn","tokenType","managerUrl","databaseId","controlPlaneUrl"]},"GenerateManagerTokenRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to scope token access to. When omitted, the token is scoped to all projects accessible by the current user."}}},"ResolveManagerGcpOAuthProviderResponse":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId","clientSecret"]}]},"ResolveManagerGcpOAuthProviderRequest":{"type":"object","properties":{"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group bearer token whose project-level OAuth provider should be resolved."},"returnOrigin":{"type":"string","format":"uri","description":"Browser origin that will receive the Google OAuth callback result. Must be a first-party dashboard origin or the active portal origin for the deployment group's project."}},"required":["deploymentGroupToken"]},"ManagerHeartbeatResponse":{"type":"object","properties":{"acknowledged":{"type":"boolean"},"timestamp":{"type":"string"}},"required":["acknowledged","timestamp"]},"ManagerHeartbeatRequest":{"type":"object","properties":{"status":{"type":"string","enum":["healthy","degraded","unhealthy"],"description":"Current health status"},"version":{"type":"string","description":"Manager version"},"url":{"type":"string","format":"uri","description":"Manager public URL (for accessing DeepStore endpoints)"},"managementConfigs":{"allOf":[{"$ref":"#/components/schemas/ManagerManagementConfigs"},{"description":"Per-platform management configurations for cross-account access"}]},"metrics":{"type":"object","properties":{"activeDeployments":{"type":"number"},"pendingDeployments":{"type":"number"},"memoryUsageMb":{"type":"number"},"cpuUsagePercent":{"type":"number"}},"description":"Optional runtime metrics"}},"required":["status","url","managementConfigs"]},"ManagerDeployment":{"type":"object","properties":{"platform":{"type":"string","description":"Platform of the internal deployment"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status of the internal deployment"},"deploymentId":{"type":"string","description":"Internal deployment ID"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Currently deployed private manager release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Target private manager release for an in-progress update","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"error":{"nullable":true,"description":"Latest provision / upgrade / delete error"},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type"},"status":{"type":"string","description":"Resource status"},"outputs":{"type":"object","additionalProperties":{"nullable":true},"description":"Resource outputs"}},"required":["type","status"]},"description":"Simplified stack state resources"},"environmentInfo":{"nullable":true,"description":"Manager environment info"}},"required":["platform","status","deploymentId","resources"]},"APIKey":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"},"createdByUser":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"email":{"type":"string"},"image":{"type":"string","nullable":true}},"required":["id","email","image"],"description":"User information associated with the API key"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig","createdByUser"],"description":"API key information"},"APIKeyDeploymentSetupConfig":{"type":"object","nullable":true,"properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/APIKeyDeploymentSetupEnvironmentVariable"}}},"required":["metadata","policy","environmentVariables"]},"APIKeyDeploymentSetupEnvironmentVariable":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]},"CreateAPIKeyResponse":{"type":"object","properties":{"apiKey":{"type":"string","description":"The generated API key value (only shown once)"},"keyInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig"]}},"required":["apiKey","keyInfo"],"description":"Response containing the new API key and its metadata"},"CreateAPIKeyRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"scope":{"$ref":"#/components/schemas/Scope"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"required":["description","scope","expiresAt"],"description":"Request schema for creating a new API key"},"Scope":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceScope"},{"$ref":"#/components/schemas/ProjectScope"},{"$ref":"#/components/schemas/DeploymentScope"},{"$ref":"#/components/schemas/DeploymentGroupScope"},{"$ref":"#/components/schemas/ManagerScope"}],"discriminator":{"propertyName":"type","mapping":{"workspace":"#/components/schemas/WorkspaceScope","project":"#/components/schemas/ProjectScope","deployment":"#/components/schemas/DeploymentScope","deployment-group":"#/components/schemas/DeploymentGroupScope","manager":"#/components/schemas/ManagerScope"}},"description":"Scope and role configuration for service accounts"},"WorkspaceScope":{"type":"object","properties":{"type":{"type":"string","enum":["workspace"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["type","role"],"description":"Workspace-scoped configuration"},"ProjectScope":{"type":"object","properties":{"type":{"type":"string","enum":["project"]},"projectId":{"type":"string","description":"ID of the project this is scoped to"},"role":{"$ref":"#/components/schemas/ProjectRole"}},"required":["type","projectId","role"],"description":"Project-scoped configuration"},"DeploymentScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment"]},"deploymentId":{"type":"string","description":"ID of the deployment this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"},"role":{"$ref":"#/components/schemas/DeploymentRole"}},"required":["type","deploymentId","projectId","role"],"description":"Deployment-scoped configuration"},"DeploymentGroupScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"]},"deploymentGroupId":{"type":"string","description":"ID of the deployment group this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"},"role":{"$ref":"#/components/schemas/DeploymentGroupRole"}},"required":["type","deploymentGroupId","projectId","role"],"description":"Deployment group-scoped configuration"},"ManagerScope":{"type":"object","properties":{"type":{"type":"string","enum":["manager"]},"managerId":{"type":"string","description":"ID of the manager this is scoped to"},"role":{"$ref":"#/components/schemas/ManagerRole"}},"required":["type","managerId","role"],"description":"Manager-scoped configuration"},"UpdateAPIKeyRequest":{"type":"object","properties":{"enabled":{"type":"boolean"},"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"deploymentSetupConfig":{"$ref":"#/components/schemas/UpdateDeploymentSetupPolicy"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"description":"Request schema for updating an API key"},"UpdateDeploymentSetupPolicy":{"type":"object","properties":{"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"}},"required":["policy"],"description":"Editable part of a deployment link's setup config. Locked env vars and input values are preserved."},"DeleteAPIKeysRequest":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"minItems":1}},"required":["ids"]},"DomainWithUsage":{"allOf":[{"$ref":"#/components/schemas/Domain"},{"type":"object","properties":{"endpoints":{"type":"array","items":{"$ref":"#/components/schemas/DomainEndpoint"}},"usage":{"type":"object","properties":{"deploymentUrlProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"portalBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true},"hostname":{"type":"string"}},"required":["id","projectId","projectName","hostname"]}},"packageDomains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"type":"string"}},"required":["id","hostname"]}},"managerBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"managerId":{"type":"string"},"managerName":{"type":"string"},"hostname":{"type":"string"}},"required":["id","managerId","managerName","hostname"]}}},"required":["deploymentUrlProjects","portalBindings","packageDomains","managerBindings"]}},"required":["endpoints","usage"]}]},"Domain":{"type":"object","properties":{"id":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domain":{"type":"string"},"isSystem":{"type":"boolean"},"claimToken":{"type":"string"},"hostedZoneId":{"type":"string","nullable":true},"nameServers":{"type":"array","nullable":true,"items":{"type":"string"}},"status":{"type":"string","enum":["pending-zone-creation","pending-verification","verified","lost-verification","failed","deleting"]},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","workspaceId","domain","isSystem","claimToken","status","createdAt","updatedAt"]},"CommandListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Command"},{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/CommandDeploymentInfo"},"project":{"$ref":"#/components/schemas/CommandProjectInfo"}}}]},"CommandDeploymentInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"$ref":"#/components/schemas/CommandDeploymentGroupInfo"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"managerId":{"type":"string","description":"Manager ID for obtaining access tokens"},"managerUrl":{"type":"string","nullable":true,"format":"uri","description":"URL of the manager for direct payload access"},"managerName":{"type":"string","nullable":true,"description":"Human-readable name of the manager"},"managerIsSystem":{"type":"boolean","nullable":true,"description":"Whether the manager is Alien-hosted (system)"}},"required":["id","name","managerId"]},"CommandDeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"CommandProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string"}},"required":["id","name"]},"Command":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","description":"Command name (e.g., 'analyze-repository', 'sync-data')"},"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Command states in the Commands protocol lifecycle"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model captured from deployment at creation time"},"attempt":{"type":"number","nullable":true,"description":"Current attempt number"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","nullable":true,"description":"Size of command params in bytes"},"responseSizeBytes":{"type":"number","nullable":true,"description":"Size of command response in bytes"},"createdAt":{"type":"string","format":"date-time","description":"When the command was created"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command was dispatched to the deployment"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command completed"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if command failed"},"result":{"nullable":true,"description":"Decoded command result when available"}},"required":["id","deploymentId","projectId","workspaceId","name","state","deploymentModel","attempt","deadline","requestSizeBytes","responseSizeBytes","createdAt","dispatchedAt","completedAt","error"]},"ListCommandNamesResponse":{"type":"object","properties":{"names":{"type":"array","items":{"type":"string"}}},"required":["names"]},"ListCommandDeploymentsResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"required":["id","name"]}}},"required":["deployments"]},"CreateCommandResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"projectId":{"type":"string","description":"Project ID (for manager to use in routing)"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"How to dispatch the command"}},"required":["id","projectId","deploymentModel"]},"CreateCommandRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Target deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Command name (e.g., 'analyze-repository')"},"params":{"nullable":true,"description":"Command parameters for public invocation"},"initialState":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Initial state (PENDING_UPLOAD if params require upload, PENDING if inline)"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Size of command params in bytes"}},"required":["deploymentId","name"]},"UpdateCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"New command state"},"attempt":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Current attempt number"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command was dispatched"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command completed"},"responseSizeBytes":{"type":"number","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Size of response in bytes"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if failed"}}},"DebugSessionListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DebugSession"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"},"DebugSession":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"owner":{"type":"string","nullable":true,"maxLength":128},"state":{"$ref":"#/components/schemas/DebugSessionState"},"mode":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"provider":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Represents the target cloud platform."},"presignedUrls":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DebugPackagePresignedURLs"}},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","state","mode","presignedUrls","createdAt","expiresAt","deploymentId","projectId","workspaceId"]},"DebugSessionState":{"type":"string","enum":["pending","running","stopping","stopped","expired","failed"]},"DebugPackagePresignedURLs":{"type":"object","properties":{"readUrl":{"type":"string","maxLength":2048,"format":"uri"},"writeUrl":{"type":"string","maxLength":2048,"format":"uri"}},"required":["readUrl","writeUrl"]},"CreateDebugSessionRequest":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Override the generated id. Manager passes the registry session id so logs correlate.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"owner":{"type":"string","nullable":true,"maxLength":128},"expiresAt":{"type":"string","format":"date-time"},"state":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Initial state. Defaults to 'pending'."}]}},"required":["deploymentId","expiresAt"]},"UpdateDebugSessionRequest":{"type":"object","properties":{"state":{"$ref":"#/components/schemas/DebugSessionState"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"expiresAt":{"type":"string","format":"date-time"}}},"DeploymentInfo":{"type":"object","properties":{"tokenType":{"type":"string","enum":["deployment","deployment-group"],"description":"Type of token used to authenticate this request"},"deployment":{"type":"object","properties":{"name":{"type":"string"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"required":["name","platform"],"description":"Deployment details (present when using a deployment-scoped token)"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"}},"required":["id","name"],"description":"Deployment group details (present when using a deployment-group token)"},"workspace":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name"]},"project":{"type":"object","properties":{"name":{"type":"string"},"portal":{"type":"object","properties":{"appearance":{"$ref":"#/components/schemas/DeploymentPortalAppearance"}},"required":["appearance"]},"stackSummary":{"type":"object","nullable":true,"properties":{"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"publicHttpsEndpoints":{"type":"integer","minimum":0,"description":"Resources that declare managed public HTTPS endpoint setup"},"externalInfra":{"type":"integer","minimum":0,"description":"Storage, queue, KV, vault, database, or cache resources that Kubernetes needs Terraform to provision"},"total":{"type":"integer","minimum":0}},"required":["workers","containers","publicHttpsEndpoints","externalInfra","total"]},"publicEndpoints":{"type":"array","items":{"type":"object","properties":{"resourceId":{"type":"string"},"endpointName":{"type":"string"},"hostLabel":{"type":"string"},"wildcardSubdomains":{"type":"boolean"}},"required":["resourceId","endpointName","hostLabel","wildcardSubdomains"]},"description":"Public endpoints declared by the active release stack"}},"required":["platforms","resourceCounts","publicEndpoints"]}},"required":["name","portal"]},"packages":{"type":"object","properties":{"ready":{"type":"boolean","description":"True if all enabled packages are ready for deployment"},"cli":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"commandName":{"type":"string","description":"CLI command name to use in install instructions"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},"error":{"nullable":true},"installScripts":{"type":"object","properties":{"windows":{"type":"string","format":"uri"},"mac":{"type":"string","format":"uri"},"linux":{"type":"string","format":"uri"}},"required":["windows","mac","linux"],"description":"Install script URLs for each OS"}},"required":["status","commandName","installScripts"]},"cloudformation":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},"error":{"nullable":true},"mode":{"type":"string","enum":["auto","outputs"]},"launchUrl":{"type":"string","format":"uri","description":"CloudFormation launch URL"},"outputsSchema":{"nullable":true}},"required":["status","mode","launchUrl"]},"terraform":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},"error":{"nullable":true},"providerSource":{"type":"string","description":"Terraform provider source (without https://)"},"moduleSources":{"type":"object","additionalProperties":{"type":"string"},"description":"Terraform module sources by target"},"moduleVersion":{"type":"string"},"managerUrls":{"type":"object","additionalProperties":{"type":"string"},"description":"Manager URLs by Terraform target"}},"required":["status","providerSource","moduleSources","managerUrls"]},"helm":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},"error":{"nullable":true},"chartRef":{"type":"string","description":"OCI chart reference"},"managerFetchExample":{"type":"string"},"localImportExample":{"type":"string"}},"required":["status","chartRef"]}},"required":["ready"]},"installContext":{"type":"object","properties":{"targets":{"type":"object","additionalProperties":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managerUrl":{"type":"string","format":"uri"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"awsManagingAccountId":{"type":"string"}},"required":["platform","managerUrl"]},"description":"Deployment-session install context by Terraform/installer target"}},"required":["targets"]},"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"},"setupConfig":{"$ref":"#/components/schemas/DeploymentInfoSetupConfig"}},"required":["tokenType","workspace","project","packages","installContext","supportedRegions"]},"DeploymentPortalAppearance":{"type":"object","properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}}},"SupportedCloudRegions":{"type":"object","properties":{"aws":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by this Alien environment."},"gcp":{"type":"array","items":{"type":"string"},"description":"GCP regions supported by this Alien environment."},"azure":{"type":"array","items":{"type":"string"},"description":"Azure locations supported by this Alien environment."}},"required":["aws","gcp","azure"]},"DeploymentInfoSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]}},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."}},"inputValues":{"type":"array","items":{"$ref":"#/components/schemas/ResolvedStackInputSummary"}}},"required":["metadata","policy","environmentVariables"]},"ResolvedStackInputSummary":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"]}},"required":{"type":"boolean"},"secret":{"type":"boolean"},"provided":{"type":"boolean"}},"required":["id","label","providedBy","required","secret","provided"]},"DeploymentComputePlan":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string"},"workloads":{"type":"array","items":{"type":"string"}},"requirements":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"scale":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["fixed"]},"machines":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","machines"]},{"type":"object","properties":{"type":{"type":"string","enum":["autoscale"]},"min":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]},"max":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","min","max"]}]},"selected":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"recommended":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"machines":{"type":"array","items":{"type":"object","properties":{"machine":{"type":"string"},"profile":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"recommended":{"type":"boolean"}},"required":["machine","profile","recommended"]}},"errors":{"type":"array","items":{"type":"string"}}},"required":["poolId","workloads","requirements","scale","selected","recommended","machines"]}}},"required":["pools"]},"PreparedDeploymentStack":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"setup":{"$ref":"#/components/schemas/SetupFingerprintInfo"}},"required":["platform","stack","setup"]},"SyncListResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"userEnvironmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"deploymentToken":{"type":"string","nullable":true},"lockedBy":{"type":"string","nullable":true},"lockedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId","userEnvironmentVariables"]}}},"required":["deployments"],"description":"Full deployment records for manager operation"},"SyncListRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. Manager-scoped tokens are always constrained to their own manager ID."}]},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to include"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by deployment platform"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Filter by deployment group ID","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Maximum records to return"}},"additionalProperties":false,"description":"Request to list full operational deployments"},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the acquired deployment","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Deployment group ID the deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method recorded on the deployment when it has a setup-owned path."}]},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state (includes releases)"},"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration"}},"required":["deploymentId","projectId","deploymentGroupId","current","config"]},"description":"List of acquired deployments with deployment context"},"failures":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the deployment that failed","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"error":{"allOf":[{"$ref":"#/components/schemas/APIError"},{"description":"Error that occurred during context building"}]}},"required":["deploymentId","projectId","error"]},"description":"List of deployments that failed during context building (locks already released)"}},"required":["deployments","failures"],"description":"Acquired deployments and failures"},"SyncAcquireRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. If omitted, resolved from each deployment's managerId column."}]},"session":{"type":"string","description":"Unique session identifier for lock tracking"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to lock (for Pull model sync)"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by platforms (default: all platforms the Manager supports)"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Filter by setup method for setup-owned acquisition paths"}]},"acquireMode":{"type":"string","enum":["runtime","setup-run","setup-teardown"],"description":"Phase ownership mode for deployment acquisition"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model from stackSettings.deploymentModel (Manager should use 'push')"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session"],"additionalProperties":false,"description":"Request to acquire deployments for processing"},"SyncReconcileResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the state was reconciled"},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state after reconciliation"},"target":{"type":"object","properties":{"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration\n\nConfiguration for how to perform the deployment.\nNote: Credentials (ClientConfig) are passed separately to step() function."},"releaseInfo":{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."}},"required":["config","releaseInfo"],"description":"Target deployment if update is needed"}},"required":["success","current"],"description":"State reconciliation result with optional target"},"SyncReconcileRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to reconcile state for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Lock session (push model only) - verifies lock ownership"},"state":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Complete deployment state after step() execution"},"updateHeartbeat":{"type":"boolean","description":"Update heartbeat timestamp (for successful health checks)"},"suggestedDelayMs":{"type":"integer","minimum":0,"description":"Delay before this deployment should be acquired again."},"heartbeats":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"description":"Latest typed resource heartbeats collected during this step."}},"required":["deploymentId","state"],"additionalProperties":false,"description":"Request to reconcile deployment state"},"SyncReleaseRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to release","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Session identifier to release"}},"required":["deploymentId","session"],"additionalProperties":false,"description":"Request to release deployment lock"},"ResolveResponse":{"type":"object","properties":{"managerId":{"type":"string","description":"Manager ID"},"managerName":{"type":"string","description":"Manager display name"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL"},"managerIsSystem":{"type":"boolean","description":"Whether the manager is Alien-hosted"},"managerCloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where the private manager is hosted. Null for Alien-hosted managers."},"projectId":{"type":"string","description":"Resolved project ID"},"installContext":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}},"required":["platform","managementConfig"],"description":"Target install context derived from platform-managed manager metadata. Present for cloud push platforms."}},"required":["managerId","managerName","managerUrl","managerIsSystem","projectId"]},"CloudRegionsResponse":{"type":"object","properties":{"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"}},"required":["supportedRegions"]},"BillingAuditLogRow":{"type":"object","properties":{"id":{"type":"string"},"workspaceId":{"type":"string","nullable":true},"action":{"type":"string"},"payload":{"nullable":true},"createdAt":{"type":"string"}},"required":["id","workspaceId","action","createdAt"]},"WorkspaceBillingEntitlements":{"type":"object","properties":{"planId":{"$ref":"#/components/schemas/PlanId"},"planStatus":{"$ref":"#/components/schemas/BillingPlanStatus"},"features":{"$ref":"#/components/schemas/BillingFeatureFlags"},"limits":{"$ref":"#/components/schemas/BillingLimits"},"syncedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"}},"required":["planId","planStatus","features","limits","syncedAt","stale"]},"PlanId":{"type":"string","enum":["starter","pro","pro_annual","enterprise"]},"BillingPlanStatus":{"type":"string","enum":["active","trialing","past_due","canceled","none"]},"BillingFeatureFlags":{"type":"object","properties":{"custom_domains":{"type":"boolean"},"private_managers":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","sso_saml","audit_logs","airgapped"]},"BillingLimits":{"type":"object","properties":{"maxDeployments":{"type":"number","nullable":true},"maxProjects":{"type":"number","nullable":true},"maxSeats":{"type":"number","nullable":true},"maxCustomDomains":{"type":"number","nullable":true},"creditUsd":{"type":"number","nullable":true},"seatsIncluded":{"type":"number","nullable":true}},"required":["maxDeployments","maxProjects","maxSeats","maxCustomDomains","creditUsd","seatsIncluded"]}},"parameters":{}},"paths":{"/v1/user/memberships":{"get":{"operationId":"listMemberships","description":"List all workspaces the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listMemberships","responses":{"200":{"description":"List of user's workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Membership"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile":{"get":{"operationId":"getUserProfile","description":"Get the current user's profile and user-scoped onboarding state.","x-speakeasy-group":"user","x-speakeasy-name-override":"getProfile","responses":{"200":{"description":"User profile.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateUserProfile","description":"Update the current user's profile (display name).","x-speakeasy-group":"user","x-speakeasy-name-override":"updateProfile","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"}}}}}},"responses":{"200":{"description":"Profile updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile/setup":{"post":{"operationId":"completeUserProfileSetup","description":"Complete the required beta intake and profile setup dialog.","x-speakeasy-group":"user","x-speakeasy-name-override":"completeProfileSetup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileSetupRequest"}}}},"responses":{"200":{"description":"Profile setup completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/workspaces":{"post":{"operationId":"createWorkspace","description":"Create a new workspace. The current user will be automatically added as an admin.","x-speakeasy-group":"user","x-speakeasy-name-override":"createWorkspace","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name"},"logoUrl":{"type":"string","format":"uri","description":"Optional workspace logo URL"}},"required":["name"]}}}},"responses":{"201":{"description":"Created workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Membership"}}}},"400":{"description":"Bad request - invalid workspace name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Workspace name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces":{"get":{"operationId":"listGitNamespaces","description":"List all git namespaces (GitHub installations) the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaces","parameters":[{"schema":{"type":"string","enum":["github"],"default":"github"},"required":false,"name":"provider","in":"query"}],"responses":{"200":{"description":"List of user's git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/sync":{"post":{"operationId":"syncGitNamespaces","description":"Sync git namespaces from the provider. For GitHub, this fetches all app installations accessible to the user.","x-speakeasy-group":"user","x-speakeasy-name-override":"syncGitNamespaces","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","enum":["github"],"description":"Git provider to sync"}},"required":["provider"]}}}},"responses":{"200":{"description":"Synced git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/{id}/repositories":{"get":{"operationId":"listGitNamespaceRepositories","description":"List repositories accessible through a git namespace (GitHub installation).","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaceRepositories","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Search query to filter repositories by name"},"required":false,"description":"Search query to filter repositories by name","name":"search","in":"query"}],"responses":{"200":{"description":"List of repositories.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitRepository"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Git namespace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/whoami":{"get":{"operationId":"whoami","description":"Get the current authenticated principal (user or service account). Works with both session cookies and API keys.","x-speakeasy-group":"auth","x-speakeasy-name-override":"whoami","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","example":"my-workspace"},"required":false,"description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Current authenticated principal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Subject"}}}},"400":{"description":"Missing required workspace for user credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces":{"get":{"operationId":"listWorkspaces","description":"Retrieve all workspaces.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search workspaces by name"},"required":false,"description":"Search workspaces by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Workspace"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}":{"get":{"operationId":"getWorkspace","description":"Retrieve a workspace by ID.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspace","description":"Update a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"}}}}}},"responses":{"200":{"description":"Workspace updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteWorkspace","description":"Delete a workspace. The workspace must have no projects.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Workspace deleted successfully."},"400":{"description":"Workspace still has projects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members":{"get":{"operationId":"listWorkspaceMembers","description":"List all members of a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"listMembers","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"List of workspace members.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceMember"}}},"required":["items"]}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"addWorkspaceMember","description":"Add a member to a workspace by email. The user must already have an account.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"addMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email of the user to add"},"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"Role to assign"}]}},"required":["email","role"]}}}},"responses":{"201":{"description":"Member added successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"404":{"description":"Workspace or user not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"User is already a member.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members/{userId}":{"patch":{"operationId":"updateWorkspaceMember","description":"Update a workspace member's role.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"New role to assign"}]}},"required":["role"]}}}},"responses":{"200":{"description":"Member role updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"400":{"description":"Cannot remove last admin.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"removeWorkspaceMember","description":"Remove a member from a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"removeMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Member removed successfully."},"400":{"description":"Cannot remove last admin or self.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/dismiss-onboarding":{"post":{"operationId":"dismissWorkspaceOnboarding","description":"Mark the Getting Started walkthrough as dismissed for a workspace. The dashboard stops auto-promoting onboarding once this is set; users can still re-enter the walkthrough via the help menu.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"dismissOnboarding","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace with onboardingDismissedAt populated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects":{"get":{"operationId":"listProjects","description":"Retrieve all projects.","x-speakeasy-group":"projects","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search projects by name"},"required":false,"description":"Search projects by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deploymentCount","latestRelease"]},"description":"Optional fields to include: deploymentCount, latestRelease"},"required":false,"description":"Optional fields to include: deploymentCount, latestRelease","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved projects.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProjectListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createProject","description":"Create a new project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name"]}}}},"responses":{"201":{"description":"Project created successfully.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"}}}]}}}},"400":{"description":"Invalid request or GitHub repository connection failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}":{"get":{"operationId":"getProject","description":"Retrieve a project by ID or name.","x-speakeasy-group":"projects","x-speakeasy-name-override":"get","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateProject","description":"Update a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"update","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProject"}}}},"responses":{"200":{"description":"Project updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteProject","description":"Delete a project. The project must have no deployments.","x-speakeasy-group":"projects","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Project deleted successfully."},"400":{"description":"Project still has deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/gcp-oauth-provider":{"get":{"operationId":"getProjectGcpOAuthProvider","description":"Retrieve redacted project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateProjectGcpOAuthProvider","description":"Update project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"updateGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectGcpOAuthProvider"}}}},"responses":{"200":{"description":"Google Cloud OAuth provider settings updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"400":{"description":"Invalid provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/deployment-portal-domain":{"get":{"operationId":"getProjectDeploymentPortalDomain","description":"Get the deployment portal domain binding for a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentPortalDomain","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved deployment portal domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentPortalDomainResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/import-template":{"post":{"operationId":"createProjectFromTemplate","description":"Create a project by forking alienplatform/alien into your namespace, then configuring GitHub Actions.","x-speakeasy-group":"projects","x-speakeasy-name-override":"createFromTemplate","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$","description":"GitHub owner namespace (user or organization) that will receive the fork"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name","targetNamespace","templatePath"]}}}},"responses":{"201":{"description":"Project created successfully from template.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"},"template":{"type":"object","properties":{"sourceRepository":{"type":"string","enum":["alienplatform/alien"]},"forkRepository":{"type":"string","description":"Fork repository in / format"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"resolvedRootDirectory":{"type":"string"}},"required":["sourceRepository","forkRepository","templatePath","resolvedRootDirectory"]}},"required":["template"]}]}}}},"400":{"description":"Bad request or GitHub integration not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Fork exists but is not ready yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/template-urls":{"get":{"operationId":"getProjectTemplateUrls","description":"Get template URLs for deploying setup stacks in this project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getTemplateUrls","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Template URLs retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"aws":{"type":"object","nullable":true,"properties":{"templateUrl":{"type":"string","format":"uri","description":"URL to download the CloudFormation template"},"launchStackUrl":{"type":"string","format":"uri","description":"URL to launch the template in the AWS CloudFormation console"}},"required":["templateUrl","launchStackUrl"],"description":"Template URLs for deploying an AWS setup stack"}}}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/active-release":{"get":{"operationId":"getProjectActiveRelease","description":"Get the active release for this project. Returns the latest release, or the pinned release if deploymentId is provided and that deployment has a pinned release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getActiveRelease","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Optional deployment ID to check for pinned release"},"required":false,"description":"Optional deployment ID to check for pinned release","name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Active release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or active release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups":{"post":{"operationId":"createDeploymentGroup","tags":["deployment-groups"],"summary":"Create a new deployment group","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group with this name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listDeploymentGroups","tags":["deployment-groups"],"summary":"List deployment groups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of deployment groups","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}":{"get":{"operationId":"getDeploymentGroup","tags":["deployment-groups"],"summary":"Get deployment group details","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Deployment group details","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"},"deploymentCount":{"type":"integer","description":"Current number of deployments in this deployment group"}},"required":["deploymentCount"]}]}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateDeploymentGroup","tags":["deployment-groups"],"summary":"Update deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDeploymentGroup","tags":["deployment-groups"],"summary":"Delete deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Deployment group deleted successfully"},"400":{"description":"Cannot delete deployment group that has deployments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/tokens":{"post":{"operationId":"createDeploymentGroupToken","tags":["deployment-groups"],"summary":"Create deployment group token","description":"Creates a deployment-group scoped API key and returns both the token and formatted deployment link","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenRequest"}}}},"responses":{"200":{"description":"Deployment group token created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/first-party-session":{"post":{"operationId":"createFirstPartyDeploymentSession","tags":["deployment-groups"],"summary":"Create first-party deployment session","description":"Mints a short-lived deployment-group token with the recommended self-deploy policy for the authenticated developer.","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"First-party deployment session created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFirstPartyDeploymentSessionResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages":{"get":{"operationId":"listPackages","description":"List packages with optional filters. Returns packages ordered by creation date (newest first).","x-speakeasy-group":"packages","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Filter by package type"},"required":false,"description":"Filter by package type","name":"type","in":"query"},{"schema":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Filter by package status"},"required":false,"description":"Filter by package status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search packages by type or version"},"required":false,"description":"Search packages by type or version","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of packages.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}":{"get":{"operationId":"getPackage","description":"Get details of a specific package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/rebuild":{"post":{"operationId":"rebuildPackages","description":"Rebuild packages for a project. This will cancel any pending packages and create new ones with auto-incremented versions.","x-speakeasy-group":"packages","x-speakeasy-name-override":"rebuild","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to rebuild packages for"}},"required":["project"]}}}},"responses":{"200":{"description":"Packages rebuilt successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"packagesCreated":{"type":"integer","description":"Number of packages created"}},"required":["packagesCreated"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}/cancel":{"post":{"operationId":"cancelPackage","description":"Cancel a pending or building package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"cancel","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package canceled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"400":{"description":"Package cannot be canceled (not in pending or building status).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases":{"get":{"operationId":"listReleases","description":"Retrieve all releases.","x-speakeasy-group":"releases","x-speakeasy-name-override":"list","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search releases by commit message, branch, SHA, or release ID"},"required":false,"description":"Search releases by commit message, branch, SHA, or release ID","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by git branch (commitRef)"},"required":false,"description":"Filter by git branch (commitRef)","name":"branch","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by commit author login or name"},"required":false,"description":"Filter by commit author login or name","name":"author","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created after this date (ISO 8601)"},"required":false,"description":"Filter releases created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created before this date (ISO 8601)"},"required":false,"description":"Filter releases created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved releases.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createRelease","description":"Create a new release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReleaseRequest"}}}},"responses":{"201":{"description":"Release created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Release"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/branches":{"get":{"operationId":"listReleaseBranches","description":"List distinct git branches across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listBranches","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search branches by name (case-insensitive contains)"},"required":false,"description":"Search branches by name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of branches to return"},"required":false,"description":"Maximum number of branches to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct branches.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/authors":{"get":{"operationId":"listReleaseAuthors","description":"List distinct commit authors across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listAuthors","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search authors by login or name (case-insensitive contains)"},"required":false,"description":"Search authors by login or name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of authors to return"},"required":false,"description":"Maximum number of authors to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct authors.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseAuthorFilterItem"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/{id}":{"get":{"operationId":"getRelease","description":"Retrieve a release by ID.","x-speakeasy-group":"releases","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"required":true,"description":"Unique identifier for the release.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseListItemResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments":{"get":{"operationId":"listDeployments","description":"Retrieve all deployments.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"list","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Filter by exact deployment name. Must be used with deploymentGroup."},"required":false,"description":"Filter by exact deployment name. Must be used with deploymentGroup.","name":"name","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name, public subdomain, or deployment group name"},"required":false,"description":"Search deployments by name, public subdomain, or deployment group name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved deployments.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"400":{"description":"Invalid deployment list filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDeployment","description":"Create a new deployment. Deployment group tokens automatically use their group. Workspace/project tokens must provide deploymentGroupId.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewDeploymentRequest"}}}},"responses":{"201":{"description":"Deployment created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"400":{"description":"Bad request - deployment group has reached max deployments limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Forbidden - insufficient permissions to create deployments in this context.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or deployment group not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/stats":{"get":{"operationId":"getDeploymentStats","description":"Get aggregated deployment statistics. Returns total count and breakdown by status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getStats","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name or deployment group name"},"required":false,"description":"Search deployments by name or deployment group name","name":"search","in":"query"}],"responses":{"200":{"description":"Deployment statistics retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentStats"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-environments":{"get":{"operationId":"listDeploymentFilterEnvironments","description":"List distinct effective environments used by deployments. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterEnvironments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-deployment-groups":{"get":{"operationId":"listDeploymentFilterDeploymentGroups","description":"List deployment groups with deployment counts. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterDeploymentGroups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return"},"required":false,"description":"Maximum number of items to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Deployment groups for filter retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"},"deploymentCount":{"type":"number"},"runningCount":{"type":"number","description":"Number of deployments in 'running' status"},"failedCount":{"type":"number","description":"Number of deployments in a failed status"},"inProgressCount":{"type":"number","description":"Number of deployments in an in-progress status (provisioning, updating, etc.)"}},"required":["id","name","deploymentCount","runningCount","failedCount","inProgressCount"]}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}":{"get":{"operationId":"getDeployment","description":"Retrieve a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentDetailResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/info":{"get":{"operationId":"getDeploymentConnectionInfo","description":"Get deployment connection information including command endpoint and resource URLs.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment connection information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentConnectionInfo"}}}},"400":{"description":"Deployment not ready (no manager assigned).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/import":{"post":{"operationId":"importDeployment","description":"Import a deployment from resolved setup infrastructure such as CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"import","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportDeploymentRequest"}}}},"responses":{"200":{"description":"Deployment import was idempotent and returned an existing deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"201":{"description":"Deployment imported and created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/first-party-inputs":{"put":{"operationId":"setFirstPartyDeploymentInputs","description":"Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setFirstPartyDeploymentInputs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Input values stored on the session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsResponse"}}}},"400":{"description":"A deployment-group token scope is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The token is not a first-party deployment session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to store input values.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations":{"post":{"operationId":"createSetupRegistrationOperation","description":"Start a durable setup registration operation for CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createSetupRegistrationOperation","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupRegistrationOperationRequest"}}}},"responses":{"202":{"description":"Setup registration operation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"400":{"description":"Invalid setup registration operation request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed before callback acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations/{id}":{"get":{"operationId":"getSetupRegistrationOperation","description":"Get setup registration operation status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getSetupRegistrationOperation","parameters":[{"schema":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"required":true,"description":"Unique identifier for the setup registration operation.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Setup registration operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"404":{"description":"Setup registration operation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/delete":{"post":{"operationId":"deleteDeployment","description":"Delete, detach, or forget a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentRequest"}}}},"responses":{"202":{"description":"Deployment deletion request accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentResponse"}}}},"400":{"description":"Cannot delete the deployment in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/redeploy":{"post":{"operationId":"redeployDeployment","description":"Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"redeploy","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment redeployment triggered successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot redeploy - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/pin-release":{"post":{"operationId":"pinDeploymentRelease","description":"Pin or unpin deployment to a specific release. Only works for running deployments. Controller will automatically trigger update to target release.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"pinRelease","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinReleaseRequest"}}}},"responses":{"202":{"description":"Release pin updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot pin release - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/retry":{"post":{"operationId":"retryDeployment","description":"Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"retry","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment retry enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Deployment is not in a failed state that can be retried.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/environment-variables":{"patch":{"operationId":"updateDeploymentEnvironmentVariables","description":"Update a deployment's environment variables. If the deployment is running and not locked, the status will be changed to update-pending to trigger a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateEnvironmentVariables","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentEnvironmentVariablesRequest"}}}},"responses":{"202":{"description":"Environment variables updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/token":{"post":{"operationId":"createDeploymentToken","description":"Create a deployment token (deployment-scoped API key). The deployment must exist before creating a token.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createToken","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenRequest"}}}},"responses":{"201":{"description":"Deployment token created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers":{"post":{"operationId":"createManager","description":"Create a new manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewManagerRequest"}}}},"responses":{"201":{"description":"Manager created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Invalid private manager setup method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"A manager for this target already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listManagers","description":"Retrieve all managers.","x-speakeasy-group":"managers","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search managers by name"},"required":false,"description":"Search managers by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of managers to return"},"required":false,"description":"Maximum number of managers to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved managers.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Manager"}}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/setup-token":{"post":{"operationId":"retryManagerSetup","description":"Revoke previous private-manager setup tokens and issue a fresh setup token/config.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retrySetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"201":{"description":"Fresh manager setup token generated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Manager setup cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or setup config not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/retry":{"post":{"operationId":"retryManager","description":"Retry private-manager setup. Returns a fresh setup action before the internal deployment exists, or requests retry for the internal deployment after it exists.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retry","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager retry handled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerRetryResponse"}}}},"400":{"description":"Manager cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or internal deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/cancel-setup":{"post":{"operationId":"cancelManagerSetup","description":"Cancel pending private-manager setup, revoke setup/runtime tokens, and remove the undeployed manager record.","x-speakeasy-group":"managers","x-speakeasy-name-override":"cancelSetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager setup canceled successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Manager setup cannot be canceled in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}":{"get":{"operationId":"getManager","description":"Retrieve a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"get","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manager"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteManager","description":"Delete a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"delete","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager deletion enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot delete the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Internal deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/domain-binding":{"get":{"operationId":"getManagerDomainBinding","description":"Get the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager domain binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateManagerDomainBinding","description":"Create, update, or remove the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"updateDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerDomainBinding"}}}},"responses":{"200":{"description":"Manager domain binding updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"400":{"description":"Invalid domain binding request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or domain not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/management-config":{"get":{"operationId":"getManagerManagementConfig","description":"Get the management configuration for a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getManagementConfig","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"required":true,"description":"Represents the target cloud platform.","name":"platform","in":"query"}],"responses":{"200":{"description":"Management config retrieved successfully.","content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/provision":{"post":{"operationId":"provisionManager","description":"Enqueue provisioning for a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"provision","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager provisioning enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot provision the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/update":{"post":{"operationId":"updateManager","description":"Update a manager to a specific release ID or active release.","x-speakeasy-group":"managers","x-speakeasy-name-override":"update","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerRequest"}}}},"responses":{"202":{"description":"Manager update enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot update the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/events":{"get":{"operationId":"listManagerEvents","description":"Retrieve all events of a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"listEvents","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}},"required":["items"]}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/token":{"post":{"operationId":"generateManagerToken","description":"Generate a short-lived JWT for direct browser → manager communication. Used for fetching command payloads and querying logs without routing sensitive data through the platform API.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerToken","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenRequest"}}}},"responses":{"200":{"description":"Manager access token and connection info.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/gcp-oauth-provider/resolve":{"post":{"operationId":"resolveManagerGcpOAuthProvider","description":"Resolve decrypted project-level Google Cloud OAuth provider settings for a manager-side deployment bootstrap.","x-speakeasy-group":"managers","x-speakeasy-name-override":"resolveGcpOAuthProvider","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderRequest"}}}},"responses":{"200":{"description":"Resolved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderResponse"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Manager cannot resolve this deployment group's project settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/heartbeat":{"post":{"operationId":"reportManagerHeartbeat","description":"Report Manager health status and metrics.","x-speakeasy-group":"managers","x-speakeasy-name-override":"reportHeartbeat","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatRequest"}}}},"responses":{"200":{"description":"Heartbeat acknowledged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/deployment":{"get":{"operationId":"getManagerDeployment","description":"Get deployment details for a private manager (internal deployment platform, status, resources).","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDeployment","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager deployment details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDeployment"}}}},"404":{"description":"Manager not found or has no internal deployment (alien-hosted managers don't have deployment info).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys":{"get":{"operationId":"listAPIKeys","description":"Retrieve all API keys for the current workspace.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved API keys.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/APIKey"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAPIKey","description":"Create a new API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyRequest"}}}},"responses":{"201":{"description":"API key created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyResponse"}}}},"403":{"description":"Insufficient permissions to create API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/{id}":{"get":{"operationId":"getAPIKey","description":"Retrieve a specific API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateAPIKey","description":"Update an API key (enable/disable, change description).","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAPIKeyRequest"}}}},"responses":{"200":{"description":"API key updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"revokeAPIKey","description":"Revoke (soft delete) an API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"revoke","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"API key revoked successfully."},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/batch-delete":{"post":{"operationId":"deleteAPIKeys","description":"Permanently delete multiple API keys.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"deleteMultiple","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAPIKeysRequest"}}}},"responses":{"200":{"description":"API keys deleted successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"deletedCount":{"type":"number"}},"required":["deletedCount"]}}}},"403":{"description":"Insufficient permissions to delete API keys.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains":{"get":{"operationId":"listDomains","description":"List system domains and workspace domains.","x-speakeasy-group":"domains","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domains.","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/DomainWithUsage"}}},"required":["domains"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDomain","description":"Create a workspace domain and optional initial endpoints.","x-speakeasy-group":"domains","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":253},"setup":{"type":"object","properties":{"deploymentPortal":{"type":"boolean"},"packages":{"type":"boolean"},"deploymentUrlProjectId":{"type":"string","nullable":true,"pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"managerIds":{"type":"array","items":{"type":"string"}}}}},"required":["domain"]}}}},"responses":{"200":{"description":"Returned an existing workspace domain claim.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"201":{"description":"Created domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Domain is reserved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/endpoints":{"post":{"operationId":"createDomainEndpoint","description":"Create an endpoint under a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"createEndpoint","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"owner":{"type":"object","properties":{"type":{"type":"string","enum":["workspace","project","manager"]},"id":{"type":"string"}},"required":["type","id"]}},"required":["kind"]}}}},"responses":{"201":{"description":"Created endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Endpoint cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}":{"get":{"operationId":"getDomain","description":"Get domain by ID.","x-speakeasy-group":"domains","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDomain","description":"Delete a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain deletion requested.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain is in use.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/refresh":{"post":{"operationId":"refreshDomain","description":"Refresh workspace domain verification.","x-speakeasy-group":"domains","x-speakeasy-name-override":"refresh","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain verification refresh requested.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events":{"get":{"operationId":"listEvents","description":"Retrieve all events.","x-speakeasy-group":"events","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter events to a single deployment."},"required":false,"description":"Filter events to a single deployment.","name":"deploymentId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events/{id}":{"get":{"operationId":"getEvent","description":"Retrieve an event by ID.","x-speakeasy-group":"events","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"required":true,"description":"Unique identifier for the event.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved event.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands":{"get":{"operationId":"listCommands","description":"Retrieve commands. Use for dashboard analytics and command history.","x-speakeasy-group":"commands","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Filter by command state"},"required":false,"description":"Filter by command state","name":"state","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Filter by command name"},"required":false,"description":"Filter by command name","name":"name","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search commands by name"},"required":false,"description":"Search commands by name","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created after this date (ISO 8601)"},"required":false,"description":"Filter commands created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created before this date (ISO 8601)"},"required":false,"description":"Filter commands created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deployment","project"]},"description":"Optional fields to include: deployment, project"},"required":false,"description":"Optional fields to include: deployment, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved commands.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommandListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createCommand","description":"Create command metadata. Called by manager when processing commands. Returns project info for routing decisions.","x-speakeasy-group":"commands","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandRequest"}}}},"responses":{"201":{"description":"Command created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/names":{"get":{"operationId":"listCommandNames","description":"List distinct command names. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listNames","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search command names (prefix match)"},"required":false,"description":"Search command names (prefix match)","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct command names.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandNamesResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/deployments":{"get":{"operationId":"listCommandDeployments","description":"List distinct deployments that have commands, including deployment group info. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search deployment or deployment group names"},"required":false,"description":"Search deployment or deployment group names","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct deployments that have commands.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandDeploymentsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/{id}":{"patch":{"operationId":"updateCommand","description":"Update command state. Called by manager when command is dispatched or completes.","x-speakeasy-group":"commands","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCommandRequest"}}}},"responses":{"200":{"description":"Command updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Command not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getCommand","description":"Retrieve a command by ID.","x-speakeasy-group":"commands","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved command.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions":{"get":{"operationId":"listDebugSessions","description":"Retrieve debug sessions for dashboard audit. Filters: project, deployment, state, mode.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Filter by session state"}]},"required":false,"description":"Filter by session state","name":"state","in":"query"},{"schema":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model (push/pull). Joins against the parent deployment."},"required":false,"description":"Filter by deployment model (push/pull). Joins against the parent deployment.","name":"mode","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Filter by cloud provider. Joins against the parent deployment."},"required":false,"description":"Filter by cloud provider. Joins against the parent deployment.","name":"provider","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Paginated debug sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSessionListResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDebugSession","description":"Create a debug-session audit row. Called by the manager when a pull or push debug tunnel is opened. Workspace + project derived from deployment.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDebugSessionRequest"}}}},"responses":{"201":{"description":"Debug session created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions/{id}":{"patch":{"operationId":"updateDebugSession","description":"Update debug-session state. Called by manager on tunnel attach, close, or deadline expiry.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDebugSessionRequest"}}}},"responses":{"200":{"description":"Debug session updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Debug session not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getDebugSession","description":"Retrieve a debug session by ID.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved debug session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info":{"get":{"operationId":"getDeploymentInfo","description":"Get deployment information for the deployment portal. Accepts both deployment-scoped and deployment-group-scoped API keys. Returns project information, package status/outputs, and either deployment or deployment group details depending on the token type. Poll this endpoint to check if packages are ready.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment information retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInfo"}}}},"401":{"description":"Unauthorized — requires a deployment-scoped or deployment-group-scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/compute-plan":{"post":{"operationId":"planDeploymentCompute","description":"Plan deployment compute for the active release before stack preparation. The response contains recommended machine and scale choices for cloud compute pools.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"planCompute","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Compute plan returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentComputePlan"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/prepare-stack":{"post":{"operationId":"prepareDeploymentStack","description":"Prepare the active release stack for a deployment portal setup session. The response contains the generated stack shape plus setup compatibility metadata.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"prepareStack","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Prepared stack returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreparedDeploymentStack"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/list":{"post":{"operationId":"syncList","description":"List full deployment records for manager operational loops. This endpoint is intentionally separate from the public deployments list, which returns lightweight UI rows.","x-speakeasy-group":"sync","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListRequest"}}}},"responses":{"200":{"description":"Full deployment records returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/acquire":{"post":{"operationId":"syncAcquire","description":"Acquire a batch of deployments for processing. Used by Manager to atomically lock deployments matching filters. Each deployment in the batch must be released after processing.","x-speakeasy-group":"sync","x-speakeasy-name-override":"acquire","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireRequest"}}}},"responses":{"200":{"description":"Deployments acquired successfully (empty arrays if none available). Failures indicate deployments that were locked but failed during context building - their locks have been released.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/reconcile":{"post":{"operationId":"syncReconcile","description":"Reconcile deployment state. Push model requests that include a session verify lock ownership. Pull model state reports are accepted as authz-gated agent progress even when they carry an agent-sync session. Accepts full DeploymentState after step() execution.","x-speakeasy-group":"sync","x-speakeasy-name-override":"reconcile","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileRequest"}}}},"responses":{"200":{"description":"State reconciled successfully. If target is present, continue deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment locked (pull) or session mismatch (push).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/release":{"post":{"operationId":"syncRelease","description":"Release a deployment lock. Must be called after processing an acquired deployment, even if processing failed. This is critical to avoid deadlocks.","x-speakeasy-group":"sync","x-speakeasy-name-override":"release","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReleaseRequest"}}}},"responses":{"200":{"description":"Lock released successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}":{"get":{"operationId":"listResourceOverview","x-speakeasy-group":"resources","x-speakeasy-name-override":"listOverview","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Compute resource overview rows from latest heartbeats.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"deploymentCount":{"type":"integer"},"attentionCount":{"type":"integer"},"lastObservedAt":{"type":"string","format":"date-time"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt"]}}},"required":["resources"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/{resourceId}/deployments":{"get":{"operationId":"listResourceDeployments","x-speakeasy-group":"resources","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Deployments where the resource is installed.","content":{"application/json":{"schema":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]}}},"required":["resourceType","resourceId","deployments"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/deployments/{deploymentId}/{resourceId}":{"get":{"operationId":"getResourceDeploymentDetail","x-speakeasy-group":"resources","x-speakeasy-name-override":"getDeploymentDetail","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Latest heartbeat detail for one compute resource deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"deployment":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]},"heartbeat":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","enum":["available"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"staleAt":{"type":"string","format":"date-time"},"platformStale":{"type":"boolean"},"heartbeat":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"raw":{"type":"array","items":{"nullable":true}}},"required":["status","deploymentId","resourceId","resourceType","backend","controllerPlatform","observedAt","staleAt","platformStale","heartbeat","raw"]},{"type":"object","properties":{"status":{"type":"string","enum":["missing"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"}},"required":["status","deploymentId","resourceId","resourceType"]}]}},"required":["deployment","heartbeat"]}}}},"404":{"description":"Deployment or resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resolve":{"get":{"operationId":"resolve","tags":["resolve"],"summary":"Resolve manager for a project and platform","description":"Returns the manager URL for a given project and platform. The project can be provided as a query parameter, or derived from the token's scope (project-scoped, deployment-group-scoped, or deployment-scoped tokens carry an implicit project). This is the single entry point for all CLI tools to discover which manager to talk to.","x-speakeasy-group":"resolve","x-speakeasy-name-override":"resolve","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform to resolve the manager for"},"required":true,"description":"Target platform to resolve the manager for","name":"platform","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope)."},"required":false,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope).","name":"project","in":"query"}],"responses":{"200":{"description":"Manager resolved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveResponse"}}}},"400":{"description":"Missing required project parameter for this token type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found or no manager available for platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Manager not ready yet (no URL reported). Retry after a delay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/cloud-regions":{"get":{"operationId":"getCloudRegions","description":"Get cloud regions supported by this Alien environment.","x-speakeasy-group":"cloudRegions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Supported cloud regions retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudRegionsResponse"}}}}}}},"/v1/billing/audit-log":{"get":{"operationId":"listBillingAuditLog","description":"List billing activity entries for the current workspace.","x-speakeasy-group":"billing","x-speakeasy-name-override":"listAuditLog","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor: id from the previous page."},"required":false,"description":"Cursor: id from the previous page.","name":"before","in":"query"}],"responses":{"200":{"description":"Audit-log rows newest-first.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/BillingAuditLogRow"}},"nextCursor":{"type":"string","nullable":true}},"required":["items","nextCursor"]}}}}}}},"/v1/billing/entitlements":{"get":{"operationId":"getWorkspaceBillingEntitlements","description":"Get the workspace billing entitlements used for product feature gates. Autumn is the source of truth; the response is served through the workspace billing read model with stale-cache fallback.","x-speakeasy-group":"billing","x-speakeasy-name-override":"getEntitlements","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace billing entitlements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceBillingEntitlements"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}}}} \ No newline at end of file +{"openapi":"3.0.0","info":{"title":"Alien API","version":"1.0.0","contact":{"name":"Alien Team","url":"https://alien.dev"}},"servers":[{"url":"https://api.alien.dev","description":"Alien API - Production"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key for authentication, must be provided as a Bearer token. Generate an API key at https://alien.dev/api-keys"}},"schemas":{"Membership":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"role":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","logoUrl","role","createdAt"],"additionalProperties":false},"APIError":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."}},"required":["code","message","internal"]},"UserProfile":{"type":"object","properties":{"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","description":"User's email address"},"name":{"type":"string","description":"User's display name"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"},"githubUsername":{"type":"string","nullable":true,"description":"Linked GitHub username"},"cliConnected":{"type":"boolean","description":"Whether this user has ever authenticated a request from the Alien CLI. Latched on first CLI request, never cleared."},"company":{"type":"string","nullable":true,"description":"Company name collected during profile setup."},"acquisitionSource":{"type":"string","nullable":true,"enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other",null],"description":"How the user heard about Alien."},"acquisitionSourceDetail":{"type":"string","nullable":true,"description":"Additional acquisition source detail when the source is other."},"useCases":{"type":"string","nullable":true,"description":"What the user is hoping to use Alien for."},"profileSetupCompletedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the user completed the required profile setup dialog."},"profileSetupVersion":{"type":"integer","nullable":true,"description":"Version of the required profile setup dialog the user completed."}},"required":["id","email","name","image","githubUsername","cliConnected","company","acquisitionSource","acquisitionSourceDetail","useCases","profileSetupCompletedAt","profileSetupVersion"],"additionalProperties":false},"UserProfileSetupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"},"company":{"type":"string","minLength":1,"maxLength":120,"description":"Company name"},"acquisitionSource":{"type":"string","enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other"],"description":"How the user heard about Alien"},"acquisitionSourceDetail":{"type":"string","minLength":1,"maxLength":200,"description":"Required when acquisitionSource is other"},"useCases":{"type":"string","maxLength":2000,"description":"What the user is hoping to use Alien for"}},"required":["name","company","acquisitionSource"],"additionalProperties":false},"GitNamespace":{"type":"object","properties":{"id":{"type":"number","nullable":true},"name":{"type":"string"},"slug":{"type":"string"},"installationId":{"type":"number","nullable":true},"type":{"type":"string","enum":["team","user"]},"provider":{"type":"string","enum":["github"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","slug","installationId","type","provider","createdAt"],"additionalProperties":false},"GitRepository":{"type":"object","properties":{"name":{"type":"string"},"private":{"type":"boolean"},"defaultBranch":{"type":"string"},"pushedAt":{"type":"string","format":"date-time"}},"required":["name","private","defaultBranch"],"additionalProperties":false},"Subject":{"oneOf":[{"$ref":"#/components/schemas/UserSubject"},{"$ref":"#/components/schemas/ServiceAccountSubject"}],"discriminator":{"propertyName":"kind","mapping":{"user":"#/components/schemas/UserSubject","serviceAccount":"#/components/schemas/ServiceAccountSubject"}},"description":"Authenticated principal that can be either a user (with workspace-scoped permissions) or a service account (with configurable scope and role)"},"UserSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["user"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","format":"email","description":"User's email address"},"workspaceId":{"type":"string","description":"ID of the workspace the user is authenticated within"},"workspaceName":{"type":"string","description":"Name of the workspace the user is authenticated within"},"role":{"$ref":"#/components/schemas/UserRole"}},"required":["kind","id","email","workspaceId","role"],"description":"Authenticated user subject with workspace-scoped permissions"},"UserRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"User's role within the workspace","example":"workspace.member"},"ServiceAccountSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["serviceAccount"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique service account identifier (API key ID)"},"workspaceId":{"type":"string","description":"ID of the workspace the service account belongs to"},"workspaceName":{"type":"string","description":"Name of the workspace the service account belongs to"},"scope":{"$ref":"#/components/schemas/SubjectScope"},"role":{"$ref":"#/components/schemas/Role"}},"required":["kind","id","workspaceId","scope","role"],"description":"Authenticated service account subject with scoped permissions (workspace, project, or deployment level)"},"SubjectScope":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["workspace"],"description":"Workspace-scoped access"}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["project"],"description":"Project-scoped access"},"projectId":{"type":"string","description":"ID of the specific project this scope applies to"}},"required":["type","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment"],"description":"Deployment-scoped access"},"deploymentId":{"type":"string","description":"ID of the specific deployment this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"}},"required":["type","deploymentId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"],"description":"Deployment group-scoped access"},"deploymentGroupId":{"type":"string","description":"ID of the specific deployment group this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"}},"required":["type","deploymentGroupId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["manager"],"description":"Manager-scoped access"},"managerId":{"type":"string","description":"ID of the specific manager this scope applies to"}},"required":["type","managerId"]}],"description":"Authorization scope defining what resources this service account can access"},"Role":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"$ref":"#/components/schemas/ProjectRole"},{"$ref":"#/components/schemas/DeploymentRole"},{"$ref":"#/components/schemas/DeploymentGroupRole"},{"$ref":"#/components/schemas/ManagerRole"}],"description":"Role defining what actions this service account can perform within its scope","example":"workspace.member"},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"ProjectRole":{"type":"string","enum":["project.viewer","project.developer"],"description":"Role for project-scoped service accounts","example":"project.developer"},"DeploymentRole":{"type":"string","enum":["deployment.viewer","deployment.manager","deployment.telemetry-writer"],"description":"Role for deployment-scoped service accounts","example":"deployment.manager"},"DeploymentGroupRole":{"type":"string","enum":["deployment-group.deployer"],"description":"Role for deployment group-scoped service accounts","example":"deployment-group.deployer"},"ManagerRole":{"type":"string","enum":["manager.runtime"],"description":"Role for manager-scoped service accounts","example":"manager.runtime"},"Workspace":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name.","example":"my-workspace"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"onboardingDismissedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the Getting Started walkthrough was dismissed or completed for this workspace. Null means it has never been dismissed; the dashboard auto-promotes the walkthrough until this is set."},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","onboardingDismissedAt","createdAt"],"additionalProperties":false},"WorkspaceMember":{"type":"object","properties":{"userId":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"image":{"type":"string","nullable":true},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"joinedAt":{"type":"string","format":"date-time"}},"required":["userId","email","name","image","role","joinedAt"],"additionalProperties":false},"ProjectListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"deploymentCount":{"type":"number"},"latestRelease":{"$ref":"#/components/schemas/ProjectReleaseInfo"}}}]},"DeploymentPortalAppearancePreset":{"type":"string","enum":["clean","technical","enterprise","playful","minimal"],"default":"clean","description":"Curated visual style for the deployment portal."},"DeploymentPortalAccentColor":{"type":"string","enum":["blue","purple","green","orange","pink","slate"],"default":"blue","description":"Accent color used for highlights and primary actions."},"DeploymentPortalDensity":{"type":"string","enum":["comfortable","compact"],"default":"comfortable","description":"Layout density for portal content."},"ProjectReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","gitMetadata","createdAt"]},"GitMetadata":{"type":"object","nullable":true,"properties":{"commitSha":{"type":"string","nullable":true,"maxLength":40,"description":"The hash of the commit","example":"dc36199b2234c6586ebe05ec94078a895c707e29"},"commitMessage":{"type":"string","nullable":true,"maxLength":1024,"description":"The commit message","example":"add method to measure Interaction to Next Paint (INP) (#36490)"},"commitRef":{"type":"string","nullable":true,"maxLength":256,"description":"The branch or tag on which the commit was made","example":"main"},"commitDate":{"type":"string","nullable":true,"format":"date-time","description":"The date and time when the commit was created","example":"2026-03-16T12:00:00Z"},"dirty":{"type":"boolean","nullable":true,"description":"Whether or not there have been modifications to the working tree since the latest commit","example":true},"remoteUrl":{"type":"string","nullable":true,"maxLength":2048,"description":"The git repository's remote origin url","example":"https://github.com/alienplatform/alien"},"commitAuthorName":{"type":"string","nullable":true,"maxLength":256,"description":"The name of the author of the commit (from git config)","example":"John Doe"},"commitAuthorEmail":{"type":"string","nullable":true,"maxLength":256,"format":"email","description":"The email of the author of the commit (from git config)","example":"john@example.com"},"commitAuthorLogin":{"type":"string","nullable":true,"maxLength":256,"description":"The provider username of the commit author (e.g., GitHub login), resolved server-side from the commit email","example":"johndoe"},"commitAuthorAvatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"The avatar URL of the commit author, resolved server-side from the provider login","example":"https://github.com/johndoe.png"},"provider":{"$ref":"#/components/schemas/GitProvider"}}},"GitProvider":{"oneOf":[{"$ref":"#/components/schemas/GitHubProvider"},{"$ref":"#/components/schemas/GitLabProvider"},{"nullable":true}],"description":"Provider-specific repository information, resolved server-side from remoteUrl"},"GitHubProvider":{"type":"object","properties":{"type":{"type":"string","enum":["github"]},"org":{"type":"string","maxLength":256,"description":"Repository owner (user or organization)"},"repo":{"type":"string","maxLength":256,"description":"Repository name"}},"required":["type","org","repo"]},"GitLabProvider":{"type":"object","properties":{"type":{"type":"string","enum":["gitlab"]},"namespace":{"type":"string","maxLength":256,"description":"Group/project namespace"},"project":{"type":"string","maxLength":256,"description":"Project name"}},"required":["type","namespace","project"]},"Project":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","name","createdAt","workspaceId"]},"ProjectIDOrNamePathParam":{"type":"string","maxLength":100,"description":"Project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"ProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","redirectUris"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"hasClientSecret":{"type":"boolean","enum":[true]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","clientId","hasClientSecret","redirectUris"]}]},"GcpOAuthClientId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[a-zA-Z0-9_-]+-[a-zA-Z0-9_-]+\\.apps\\.googleusercontent\\.com$","description":"Google OAuth web client ID.","example":"1234567890-abc123.apps.googleusercontent.com"},"UpdateProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId"]}]},"GcpOAuthClientSecret":{"type":"string","minLength":1,"maxLength":512,"description":"Google OAuth web client secret. Write-only; never returned by the API.","example":"GOCSPX-example"},"UpdateProject":{"type":"object","properties":{"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."}}},"DeploymentPortalDomainResponse":{"type":"object","properties":{"deploymentPortalEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"},"packageEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["deploymentPortalEndpoint","packageEndpoint"]},"DomainEndpoint":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"dend_[0-9a-z]{28}$","description":"Unique identifier for the domain endpoint.","example":"dend_1bb6gdvm1bs74acqkjstcgv"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domainId":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"kind":{"$ref":"#/components/schemas/DomainEndpointKind"},"owner":{"$ref":"#/components/schemas/DomainEndpointOwner"},"hostname":{"type":"string","minLength":1,"maxLength":253},"status":{"$ref":"#/components/schemas/DomainEndpointStatus"},"provider":{"type":"string","nullable":true},"providerState":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"managedDnsRecords":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPortalManagedDnsRecord"}},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"retryAttempts":{"type":"integer","minimum":0},"nextStepAfter":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","workspaceId","domainId","kind","owner","hostname","status","managedDnsRecords","retryAttempts","createdAt","updatedAt"]},"DomainEndpointKind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"DomainEndpointOwner":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/DomainEndpointOwnerType"},"id":{"type":"string"}},"required":["type","id"]},"DomainEndpointOwnerType":{"type":"string","enum":["workspace","project","manager"]},"DomainEndpointStatus":{"type":"string","enum":["waiting_for_domain","provisioning","waiting_for_dns","waiting_for_health","active","failed","deleting"]},"DeploymentPortalManagedDnsRecord":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"value":{"type":"string"},"ttl":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true}},"required":["name","type","value"]},"DeploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments allowed in this deployment group"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","projectId","workspaceId","createdAt"]},"CreateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"project":{"type":"string","maxLength":100,"description":"Project ID or name this deployment group belongs to"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments in this deployment group"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"maxDeployments":{"type":"integer","minimum":1,"description":"Maximum number of deployments in this deployment group"}}},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateDeploymentGroupTokenRequest":{"type":"object","properties":{"description":{"type":"string","description":"Description for the API key"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"},"deploymentSetupConfig":{"$ref":"#/components/schemas/DeploymentSetupConfig"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"DeploymentSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"}},"required":["metadata","policy","environmentVariables"]},"DeploymentSetupMetadata":{"type":"object","additionalProperties":{"nullable":true}},"DeploymentSetupPolicy":{"type":"object","properties":{"allowedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"allowedDeploymentModels":{"type":"array","items":{"type":"string","enum":["push","pull","airgapped"]}},"allowedNetworkModes":{"type":"array","items":{"type":"string","enum":["none","create","default","byo"]}},"allowedUpdatesModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required"]}},"allowedTelemetryModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required","off"]}},"allowedHeartbeatsModes":{"type":"array","items":{"type":"string","enum":["on","off"]}},"allowExternalBindings":{"type":"boolean"},"allowCustomRegistry":{"type":"boolean"}}},"EnvironmentVariableConfig":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"value":{"type":"string","maxLength":10000,"description":"Variable value (encrypted in database)"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","value","type","targetResources"]},"EnvironmentVariableType":{"type":"string","enum":["plain","secret"],"description":"Variable type (plain or secret)"},"EncryptedStackInputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EncryptedStackInputValue"},"default":{}},"EncryptedStackInputValue":{"type":"object","properties":{"value":{"type":"string","description":"Encrypted JSON-encoded input value."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"]},"secret":{"type":"boolean","description":"Whether the original input is secret."}},"required":["value","kind","secret"]},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"Package":{"type":"object","properties":{"id":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"type":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Types of packages that can be built"},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string","description":"Package version (e.g., '1.0.0', 'rel_abc123')"},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"setupFingerprints":{"$ref":"#/components/schemas/SetupFingerprintMap"},"packageBuildInputHash":{"type":"string","description":"Hash of Platform-known package build request inputs: package type, source release, setup fingerprints, package config, and setup contract version"},"config":{"oneOf":[{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"}},"required":["displayName","name"],"description":"Branding configuration for the deploy CLI binary."},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for CloudFormation packages"},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"}},"required":["chartName","description"],"description":"Configuration for the Helm chart package"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"}},"required":["displayName","name"],"description":"Branding configuration for the Operator image."},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for Terraform package generation."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]}],"description":"Type-specific configuration"},"outputs":{"oneOf":[{"allOf":[{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"digest":{"type":"string","description":"Image digest (e.g., \"sha256:abc123...\")"},"image":{"type":"string","description":"Full image reference (e.g., \"public.ecr.aws/acme/operators/project-id:1.2.3\")"}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]},{"nullable":true}],"description":"Package outputs (only when status is 'ready')"},"error":{"nullable":true,"description":"Error information if status is 'failed'"},"sourceBinarySha256":{"type":"string","nullable":true,"description":"Builder-recorded source binary SHA256 (for cli/terraform packages)"},"retries":{"type":"integer","minimum":0,"description":"Number of build retries"},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","projectId","workspaceId","type","status","version","sourceReleaseId","setupFingerprints","packageBuildInputHash","config","retries","createdAt","updatedAt"]},"SetupFingerprintMap":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SetupFingerprintInfo"},"description":"Per-target setup compatibility fingerprints copied from the source release"},"SetupFingerprintInfo":{"type":"object","properties":{"target":{"$ref":"#/components/schemas/SetupTarget"},"fingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"version":{"$ref":"#/components/schemas/SetupFingerprintVersion"}},"required":["target","fingerprint","version"]},"SetupTarget":{"type":"string","minLength":1,"description":"Stable target key for the setup contract, e.g. aws/us-east-1"},"SetupFingerprint":{"type":"string","minLength":1,"description":"Deterministic setup contract fingerprint for one setup target"},"SetupFingerprintVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup fingerprint algorithm version"},"ReleaseListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Release"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"StackByPlatform":{"type":"object","properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"Release":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"projectId":{"type":"string","maxLength":128},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"workspaceId":{"type":"string","maxLength":128}},"required":["id","projectId","createdAt","stack","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256}},"required":["project"]},"ReleaseAuthorFilterItem":{"type":"object","properties":{"login":{"type":"string","nullable":true,"description":"Provider username (e.g., GitHub login)"},"name":{"type":"string","nullable":true,"description":"Git commit author name"},"avatarUrl":{"type":"string","nullable":true,"format":"uri","description":"Author avatar URL"}},"required":["login","name","avatarUrl"]},"DeploymentListItemResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint version"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if in a failed state"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"$ref":"#/components/schemas/ManagerID"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version reported on the last sync"},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS"},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture"},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime: os-service or kubernetes"},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag)"},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver) for upgrade-driven sync"},"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"ManagerID":{"type":"string","pattern":"mgr_[0-9a-z]{28}$","description":"ID of the manager","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"DeploymentReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","createdAt"]},"DeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"}},"required":["id","name"]},"DeploymentProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"}},"required":["id","name"]},"DeploymentStats":{"type":"object","properties":{"total":{"type":"number","description":"Total number of deployments matching filters"},"byStatus":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by status (only includes statuses with non-zero counts)"},"byPlatform":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by platform (only includes platforms with non-zero counts)"},"byCurrentRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by currentReleaseId. The empty string key represents deployments with no current release (initial provisioning)."},"byPinnedRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by pinnedReleaseId among deployments that are pinned. Excludes unpinned deployments."}},"required":["total","byStatus","byPlatform","byCurrentRelease","byPinnedRelease"]},"DeploymentDetailResponse":{"allOf":[{"$ref":"#/components/schemas/Deployment"},{"type":"object","properties":{"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}}}]},"Deployment":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"targetEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of target environment variables for the deployment"},"currentEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of current environment variables for the deployment"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version reported on the last sync (e.g. \"1.3.5\")"},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS reported on the last sync"},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture reported on the last sync"},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends."},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from."},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target."}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentConnectionInfo":{"type":"object","properties":{"arc":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Manager URL for commands"},"deploymentId":{"type":"string","description":"Deployment ID to use in command requests"}},"required":["url","deploymentId"]},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"publicEndpoints":{"type":"object","additionalProperties":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"host":{"type":"string"},"wildcardHost":{"type":"string"}},"required":["url"]},"description":"Public endpoints keyed by endpoint name."}},"required":["type"]},"description":"Deployed resources and their public endpoints"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment"]},"NewDeploymentRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentGroupId":{"type":"string","description":"Required for workspace/project tokens. Deployment group tokens use their own group automatically."},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Optional manager to assign. If omitted, the project default or system manager is selected."}]},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"Stack settings for deployment customization"},"resourcePrefix":{"$ref":"#/components/schemas/ResourcePrefix"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method that created the deployment. Defaults to cli."}]},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup method metadata used to guide privileged teardown."}]},"inputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{},"description":"Stack input values provided by the deployment creator."}},"required":["name","platform","project"],"additionalProperties":false,"description":"Request schema for creating a new deployment"},"ResourcePrefix":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?=[a-z0-9])){1,38}[a-z0-9]$","description":"Optional physical-name prefix for generated cloud resources. Omit to let the manager generate one."},"RejoinDeploymentResponse":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"token":{"type":"string","description":"Fresh deployment-scoped sync token. The previously-issued token is NOT revoked — callers that want strict single-token semantics should rotate explicitly via the api-keys endpoints."}},"required":["deploymentId","token"]},"RejoinDeploymentRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Deployment name to rejoin. Must already exist in the caller's deployment group."}},"required":["name"],"additionalProperties":false,"description":"Request schema for re-acquiring a deployment-scoped sync token after local state loss."},"ImportDeploymentRequest":{"oneOf":[{"$ref":"#/components/schemas/ForwardImportRequest"},{"$ref":"#/components/schemas/PersistImportedDeploymentRequest"}],"description":"Request schema for importing a deployment from resolved setup infrastructure"},"ForwardImportRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["forward"],"default":"forward"},"project":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user-session callers."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Required for user-session callers. Deployment-group tokens use their own group automatically.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager ID. If omitted, the first suitable manager for the source platform is used."}]},"source":{"$ref":"#/components/schemas/ImportSource"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["source"]},"ImportSource":{"type":"object","properties":{"deploymentName":{"type":"string","minLength":1,"description":"User-chosen deployment name. Must be unique within the deployment group; the manager returns 409 on collision."},"resourcePrefix":{"allOf":[{"$ref":"#/components/schemas/ResourcePrefix"},{"description":"Stable physical-name prefix used by the setup artifact."}]},"sourceKind":{"$ref":"#/components/schemas/ImportSourceKind"},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup source metadata needed to guide privileged teardown."}]},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release that produced the setup artifact. Defaults to latest.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Cloud platform of the imported stack"},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"region":{"type":"string","description":"Region or location reported by the setup artifact"},"setupTarget":{"allOf":[{"$ref":"#/components/schemas/SetupTarget"},{"description":"Setup target this package was generated for"}]},"setupImportFormatVersion":{"$ref":"#/components/schemas/SetupImportFormatVersion"},"setupFingerprint":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprint"},{"description":"Setup compatibility fingerprint embedded in the package"}]},"setupFingerprintVersion":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintVersion"},{"description":"Setup fingerprint algorithm version embedded in the package"}]},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ImportedResource"},"minItems":1}},"required":["deploymentName","resourcePrefix","platform","region","setupTarget","setupImportFormatVersion","setupFingerprint","setupFingerprintVersion","stackSettings","resources"],"description":"Resolved setup import payload"},"ImportSourceKind":{"type":"string","enum":["cloudformation","terraform","helm"],"description":"Source label for observability only — does not affect import behavior."},"KubernetesBasePlatform":{"type":"string","enum":["aws","gcp","azure"],"description":"Base cloud platform for cloud-backed Kubernetes imports."},"SetupImportFormatVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup import payload format version embedded in the package"},"ImportedResource":{"type":"object","properties":{"id":{"type":"string","description":"Resource id from the active stack"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"importData":{"type":"object","additionalProperties":{"nullable":true},"description":"Resolved typed import payload"}},"required":["id","type","importData"]},"PersistImportedDeploymentRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["persist"]},"name":{"type":"string","minLength":1,"description":"Deployment name. Must be unique within the deployment group."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"stackState":{"nullable":true},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"runtimeMetadata":{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"default":"provisioning","description":"Deployment status in the deployment lifecycle"},"currentReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"setupMetadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"setupTarget":{"$ref":"#/components/schemas/SetupTarget"},"setupFingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"setupFingerprintVersion":{"$ref":"#/components/schemas/SetupFingerprintVersion"},"deploymentToken":{"type":"string"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["mode","name","deploymentGroupId","managerId","platform","stackSettings","runtimeMetadata","deploymentProtocolVersion","setupTarget","setupFingerprint","setupFingerprintVersion"]},"SetFirstPartyDeploymentInputsResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"SetFirstPartyDeploymentInputsRequest":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["platform"]},"SetupRegistrationOperationResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"status":{"$ref":"#/components/schemas/SetupRegistrationOperationStatus"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"physicalResourceId":{"type":"string","nullable":true},"result":{"$ref":"#/components/schemas/SetupRegistrationOperationResult"},"error":{"type":"object","nullable":true,"properties":{"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["message","retryable"]}},"required":["id","action","sourceKind","status","deploymentId","physicalResourceId","result","error"]},"SetupRegistrationAction":{"type":"string","enum":["create","update","delete"]},"SetupRegistrationOperationStatus":{"type":"string","enum":["pending","processing","waiting-for-handoff","succeeded","failed","responding","responded"]},"SetupRegistrationOperationResult":{"type":"object","nullable":true,"properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentToken":{"type":"string","nullable":true},"helmValues":{"type":"string","nullable":true}},"required":["deploymentId","deploymentToken","helmValues"]},"CreateSetupRegistrationOperationRequest":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"source":{"allOf":[{"$ref":"#/components/schemas/ImportSource"}],"nullable":true},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":512},"cloudFormation":{"$ref":"#/components/schemas/SetupRegistrationCloudFormationTarget"}},"required":["action","sourceKind"],"additionalProperties":false},"SetupRegistrationCloudFormationTarget":{"type":"object","nullable":true,"properties":{"stackId":{"type":"string","minLength":1},"requestId":{"type":"string","minLength":1},"logicalResourceId":{"type":"string","minLength":1},"responseUrl":{"type":"string","format":"uri"},"physicalResourceId":{"type":"string","nullable":true,"minLength":1},"serviceTimeoutSeconds":{"type":"integer","minimum":60,"maximum":7200,"default":3300}},"required":["stackId","requestId","logicalResourceId","responseUrl"],"additionalProperties":false},"DeleteDeploymentResponse":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]},"message":{"type":"string"}},"required":["action","message"]},"DeleteDeploymentRequest":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]}},"required":["action"]},"PinReleaseRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release ID to pin the deployment to. Set to null to unpin and use active release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for pinning/unpinning deployment release"},"SetTargetAgentVersionRequest":{"type":"object","properties":{"targetAgentVersion":{"type":"string","nullable":true,"pattern":"^\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]+)?$","description":"Target agent version (semver). null or omitted clears the target."}},"additionalProperties":false,"description":"Set or clear the target agent version"},"UpdateDeploymentEnvironmentVariablesRequest":{"type":"object","properties":{"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"value":{"type":"string","description":"Variable value"},"type":{"type":"string","enum":["plain","secret"],"description":"Variable type"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources)"}},"required":["name","value","type"]},"description":"Environment variables for the deployment"}},"required":["variables"],"additionalProperties":false,"description":"Request schema for updating deployment environment variables"},"CreateDeploymentTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The generated deployment token (only shown once)"},"deploymentId":{"type":"string","description":"The deployment ID that this token is scoped to"}},"required":["token","deploymentId"]},"CreateDeploymentTokenRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128,"description":"Optional description for the deployment token"},"expiresAt":{"type":"string","format":"date-time","description":"Optional expiration date for the deployment token"}},"required":["description"]},"CreateManagerResponse":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["pending"]},"setupToken":{"type":"string"},"setupTokenId":{"type":"string"},"deploymentLink":{"type":"string"},"setupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["plain","secret"]},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"}}},"required":["name","type","targetResources"]}}},"required":["metadata","policy","environmentVariables"]},"setup":{"oneOf":[{"type":"object","properties":{"method":{"type":"string","enum":["cloudformation"]},"deploymentPortalUrl":{"type":"string"},"launchUrl":{"type":"string"},"templateUrl":{"type":"string"},"stackName":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","launchUrl","templateUrl","stackName","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["google-oauth"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"oauthStartUrl":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","oauthStartUrl","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["terraform"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"providerSource":{"type":"string"},"moduleSource":{"type":"string"},"moduleVersion":{"type":"string"},"moduleInputs":{"type":"object","additionalProperties":{"type":"string"}},"mainTf":{"type":"string"},"tfvars":{"type":"string"},"commands":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","providerSource","moduleSource","moduleInputs","mainTf","tfvars","commands","stackSettings"]}]}},"required":["managerId","setupStatus","setupToken","setupTokenId","deploymentLink","setupConfig","setup"]},"NewManagerRequest":{"type":"object","properties":{"name":{"type":"string"},"cloud":{"$ref":"#/components/schemas/PrivateManagerCloud"},"region":{"type":"string","minLength":1,"maxLength":64,"description":"Cloud region for the manager."},"setupMethod":{"$ref":"#/components/schemas/PrivateManagerSetupMethod"},"network":{"type":"string","enum":["create","default"],"description":"Optional network mode for the private-manager setup. Defaults to create for production isolation; default uses the provider default network for faster dev/test setup."},"otlpConfig":{"type":"object","properties":{"logsEndpoint":{"type":"string","format":"uri","description":"External OTLP logs endpoint (e.g. https://api.axiom.co/v1/logs)"},"logsAuthHeader":{"type":"string","description":"Auth header in 'key=value,...' format (e.g. 'authorization=Bearer ,x-axiom-dataset=')"}},"required":["logsEndpoint","logsAuthHeader"],"description":"Optional external OTLP config for forwarding logs to Axiom, Datadog, etc. Falls back to built-in DeepStore when not set."}},"required":["name","cloud","region"]},"PrivateManagerCloud":{"type":"string","enum":["aws","gcp","azure"],"description":"Cloud where the private manager will be deployed."},"PrivateManagerSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform"],"description":"Optional setup method. Defaults to cloudformation for AWS, google-oauth for GCP, and terraform for Azure."},"ManagerRetryResponse":{"oneOf":[{"allOf":[{"$ref":"#/components/schemas/CreateManagerResponse"},{"type":"object","properties":{"mode":{"type":"string","enum":["setup"]}},"required":["mode"]}]},{"$ref":"#/components/schemas/ManagerRetryDeploymentResponse"}]},"ManagerRetryDeploymentResponse":{"type":"object","properties":{"mode":{"type":"string","enum":["deployment"]},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["provisioning"]},"deploymentId":{"type":"string"},"message":{"type":"string"}},"required":["mode","managerId","setupStatus","deploymentId","message"]},"Manager":{"type":"object","properties":{"id":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for the manager"}]},"name":{"type":"string","description":"Display name of the manager"},"targets":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where this private manager is deployed"},"region":{"type":"string","nullable":true,"description":"Cloud region selected for this private manager"},"setupStatus":{"type":"string","nullable":true,"enum":["pending","provisioning","active","failed","deleting","deleted",null],"description":"Private manager setup lifecycle status"},"url":{"type":"string","nullable":true,"format":"uri","description":"Manager URL (self-reported via heartbeat). DeepStore endpoints are exposed through this URL (e.g., {url}/v1/logs)"},"managementConfigs":{"$ref":"#/components/schemas/ManagerManagementConfigs"},"isSystem":{"type":"boolean","description":"Whether this is a system manager (Alien-hosted)"},"workspaceId":{"type":"string","description":"The workspace ID (for system managers, this is ALIEN_WORKSPACE_ID)"},"status":{"$ref":"#/components/schemas/ManagerStatus"},"version":{"type":"string","nullable":true,"description":"Manager version (self-reported via heartbeat)"},"metrics":{"type":"object","nullable":true,"properties":{"activeDeployments":{"type":"number","description":"Number of active deployments"},"pendingDeployments":{"type":"number","description":"Number of pending deployments"},"memoryUsageMb":{"type":"number","description":"Memory usage in megabytes"},"cpuUsagePercent":{"type":"number","description":"CPU usage percentage"}},"description":"Runtime metrics (self-reported via heartbeat)"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the manager"},"logsDatabaseId":{"type":"string","nullable":true,"description":"ID of the logs database associated with this manager"},"managedDeploymentCount":{"type":"integer","minimum":0,"description":"Number of deployments currently being managed by this manager"},"defaultProjectCount":{"type":"integer","minimum":0,"description":"Number of projects that select this manager as a default manager"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the manager was created"}},"required":["id","name","targets","managementConfigs","isSystem","workspaceId","status","managedDeploymentCount","defaultProjectCount","createdAt"],"description":"Manager schema"},"ManagerManagementConfigs":{"type":"object","properties":{"aws":{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"},"platform":{"type":"string","enum":["aws"]}},"required":["managingRoleArn","platform"]},"gcp":{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"},"platform":{"type":"string","enum":["gcp"]}},"required":["serviceAccountEmail","platform"]},"azure":{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."},"platform":{"type":"string","enum":["azure"]}},"required":["managingTenantId","oidcIssuer","oidcSubject","platform"]},"kubernetes":{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}},"description":"Per-platform management configurations for cross-account access (self-reported via heartbeat)"},"ManagerStatus":{"type":"string","enum":["healthy","degraded","unhealthy","unknown"],"description":"Current health status"},"ManagerDomainBindingResponse":{"type":"object","properties":{"managerDomainBinding":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["managerDomainBinding"]},"UpdateManagerDomainBinding":{"type":"object","properties":{"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"}},"additionalProperties":false},"UpdateManagerRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Optional release ID to update to. If not provided, the active release will be chosen","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for updating a manager to a new release"},"Event":{"type":"object","properties":{"id":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"debugSessionId":{"type":"string","nullable":true,"pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"data":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["LoadingConfiguration"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["Finished"]}},"required":["type"]},{"type":"object","properties":{"stack":{"type":"string","description":"Name of the stack being built"},"type":{"type":"string","enum":["BuildingStack"]}},"required":["stack","type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform being targeted"},"stack":{"type":"string","description":"Name of the stack being checked"},"type":{"type":"string","enum":["RunningPreflights"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"targetTriple":{"type":"string","description":"Target triple for the runtime"},"type":{"type":"string","enum":["DownloadingAlienRuntime"]},"url":{"type":"string","description":"URL being downloaded from"}},"required":["targetTriple","type","url"]},{"type":"object","properties":{"relatedResources":{"type":"array","items":{"type":"string"},"description":"All resource names sharing this build (for deduped container groups)"},"resourceName":{"type":"string","description":"Name of the resource being built"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["BuildingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being built"},"type":{"type":"string","enum":["BuildingImage"]}},"required":["image","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being pushed"},"progress":{"oneOf":[{"type":"object","properties":{"bytesUploaded":{"type":"integer","minimum":0,"description":"Bytes uploaded so far"},"layersUploaded":{"type":"integer","minimum":0,"description":"Number of layers uploaded so far"},"operation":{"type":"string","description":"Current operation being performed"},"totalBytes":{"type":"integer","minimum":0,"description":"Total bytes to upload"},"totalLayers":{"type":"integer","minimum":0,"description":"Total number of layers to upload"}},"required":["bytesUploaded","layersUploaded","operation","totalBytes","totalLayers"],"description":"Progress information for image push operations"},{"nullable":true}]},"type":{"type":"string","enum":["PushingImage"]}},"required":["image","type"]},{"type":"object","properties":{"destination":{"type":"string","nullable":true,"description":"Human-readable destination for pushed images"},"platform":{"type":"string","description":"Target platform"},"stack":{"type":"string","description":"Name of the stack being pushed"},"type":{"type":"string","enum":["PushingStack"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"resourceName":{"type":"string","description":"Name of the resource being pushed"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["PushingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"project":{"type":"string","description":"Project name"},"type":{"type":"string","enum":["CreatingRelease"]}},"required":["project","type"]},{"type":"object","properties":{"language":{"type":"string","description":"Language being compiled (rust, typescript, etc.)"},"progress":{"type":"string","nullable":true,"description":"Current progress/status line from the build output"},"type":{"type":"string","enum":["CompilingCode"]}},"required":["language","type"]},{"type":"object","properties":{"nextState":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},"suggestedDelayMs":{"type":"integer","nullable":true,"minimum":0,"description":"An suggested duration to wait before executing the next step."},"type":{"type":"string","enum":["StackStep"]}},"required":["nextState","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["GeneratingCloudFormationTemplate"]}},"required":["type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform for which the template is being generated"},"type":{"type":"string","enum":["GeneratingTemplate"]}},"required":["platform","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being provisioned"},"releaseId":{"type":"string","description":"ID of the release being deployed to the agent"},"type":{"type":"string","enum":["ProvisioningAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being updated"},"releaseId":{"type":"string","description":"ID of the new release being deployed to the agent"},"type":{"type":"string","enum":["UpdatingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being deleted"},"releaseId":{"type":"string","description":"ID of the release that was running on the agent"},"type":{"type":"string","enum":["DeletingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being debugged"},"debugSessionId":{"type":"string","description":"ID of the debug session"},"type":{"type":"string","enum":["DebuggingAgent"]}},"required":["agentId","debugSessionId","type"]},{"type":"object","properties":{"strategyName":{"type":"string","description":"Name of the deployment strategy being used"},"type":{"type":"string","enum":["PreparingEnvironment"]}},"required":["strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being deployed"},"type":{"type":"string","enum":["DeployingStack"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being tested"},"type":{"type":"string","enum":["RunningTestWorker"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpStack"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpEnvironment"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"platformName":{"type":"string","description":"Name of the platform (e.g., \"AWS\", \"GCP\")"},"type":{"type":"string","enum":["SettingUpPlatformContext"]}},"required":["platformName","type"]},{"type":"object","properties":{"repositoryName":{"type":"string","description":"Name of the docker repository"},"type":{"type":"string","enum":["EnsuringDockerRepository"]}},"required":["repositoryName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeployingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"roleArn":{"type":"string","description":"ARN of the role to assume"},"type":{"type":"string","enum":["AssumingRole"]}},"required":["roleArn","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"type":{"type":"string","enum":["ImportingStackStateFromCloudFormation"]}},"required":["cfnStackName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeletingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"bucketNames":{"type":"array","items":{"type":"string"},"description":"Names of the S3 buckets being emptied"},"type":{"type":"string","enum":["EmptyingBuckets"]}},"required":["bucketNames","type"]},{"type":"object","properties":{"deploymentGroupId":{"type":"string","description":"ID of the deployment group this slot belongs to"},"deploymentId":{"type":"string","description":"ID of the deployment that was created"},"releaseId":{"type":"string","nullable":true,"description":"Initial release the slot was created with, if any"},"type":{"type":"string","enum":["DeploymentCreated"]}},"required":["deploymentGroupId","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously live, if any"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentReleased"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release the platform was trying to deploy, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"phase":{"type":"string","enum":["preflights","provisioning","updating","deleting"],"description":"Phase of a deployment at which a failure occurred.\n\nDerived from the source deployment status: `preflights-failed` →\n`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` →\n`Updating`, `delete-failed` → `Deleting`.\n`refresh-failed` is modelled separately via `DeploymentDegraded`."},"type":{"type":"string","enum":["DeploymentFailed"]}},"required":["deploymentId","error","phase","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"type":{"type":"string","enum":["DeploymentDegraded"]}},"required":["deploymentId","error","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentRecovered"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment that was deleted"},"type":{"type":"string","enum":["DeploymentDeleted"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"deploymentGroupId":{"type":"string","description":"ID of the deployment group that authorized the rejoin"},"deploymentId":{"type":"string","description":"ID of the deployment whose agent rejoined"},"type":{"type":"string","enum":["DeploymentRejoined"]}},"required":["deploymentGroupId","deploymentId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release that the failed attempt was targeting, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousError":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"type":{"type":"string","enum":["DeploymentRetryRequested"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release being redeployed"},"type":{"type":"string","enum":["DeploymentRedeployRequested"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"pinnedReleaseId":{"type":"string","description":"ID of the release that is now pinned"},"previousPinnedReleaseId":{"type":"string","nullable":true,"description":"ID of the previously pinned release, if any"},"type":{"type":"string","enum":["DeploymentReleasePinned"]}},"required":["deploymentId","pinnedReleaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousPinnedReleaseId":{"type":"string","description":"ID of the release that was previously pinned"},"type":{"type":"string","enum":["DeploymentReleaseUnpinned"]}},"required":["deploymentId","previousPinnedReleaseId","type"]},{"type":"object","properties":{"changedKeys":{"type":"array","items":{"type":"string"},"description":"Names of the environment variables that changed (added, removed, or modified)"},"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentEnvironmentUpdated"]}},"required":["changedKeys","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentDeletionRequested"]}},"required":["deploymentId","type"]}]},"state":{"oneOf":[{"type":"object","properties":{"failed":{"type":"object","properties":{"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]}},"description":"Event failed with an error"}},"required":["failed"]},{"type":"string","enum":["none"]},{"type":"string","enum":["started"]},{"type":"string","enum":["success"]}],"description":"Represents the state of an event"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","data","state","projectId","createdAt","workspaceId"]},"GenerateManagerTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string","description":"Platform JWT for authenticating with the manager"},"expiresIn":{"type":"number","nullable":true,"description":"Token lifetime in seconds"},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string","description":"Manager URL for direct access"},"databaseId":{"type":"string","nullable":true,"description":"Log database ID (null if logs not configured)"},"controlPlaneUrl":{"type":"string","nullable":true,"description":"Log control plane URL (null if logs not configured)"}},"required":["accessToken","expiresIn","tokenType","managerUrl","databaseId","controlPlaneUrl"]},"GenerateManagerTokenRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to scope token access to. When omitted, the token is scoped to all projects accessible by the current user."}}},"ResolveManagerGcpOAuthProviderResponse":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId","clientSecret"]}]},"ResolveManagerGcpOAuthProviderRequest":{"type":"object","properties":{"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group bearer token whose project-level OAuth provider should be resolved."},"returnOrigin":{"type":"string","format":"uri","description":"Browser origin that will receive the Google OAuth callback result. Must be a first-party dashboard origin or the active portal origin for the deployment group's project."}},"required":["deploymentGroupToken"]},"ManagerHeartbeatResponse":{"type":"object","properties":{"acknowledged":{"type":"boolean"},"timestamp":{"type":"string"}},"required":["acknowledged","timestamp"]},"ManagerHeartbeatRequest":{"type":"object","properties":{"status":{"type":"string","enum":["healthy","degraded","unhealthy"],"description":"Current health status"},"version":{"type":"string","description":"Manager version"},"url":{"type":"string","format":"uri","description":"Manager public URL (for accessing DeepStore endpoints)"},"managementConfigs":{"allOf":[{"$ref":"#/components/schemas/ManagerManagementConfigs"},{"description":"Per-platform management configurations for cross-account access"}]},"metrics":{"type":"object","properties":{"activeDeployments":{"type":"number"},"pendingDeployments":{"type":"number"},"memoryUsageMb":{"type":"number"},"cpuUsagePercent":{"type":"number"}},"description":"Optional runtime metrics"}},"required":["status","url","managementConfigs"]},"ManagerDeployment":{"type":"object","properties":{"platform":{"type":"string","description":"Platform of the internal deployment"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status of the internal deployment"},"deploymentId":{"type":"string","description":"Internal deployment ID"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Currently deployed private manager release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Target private manager release for an in-progress update","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"error":{"nullable":true,"description":"Latest provision / upgrade / delete error"},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type"},"status":{"type":"string","description":"Resource status"},"outputs":{"type":"object","additionalProperties":{"nullable":true},"description":"Resource outputs"}},"required":["type","status"]},"description":"Simplified stack state resources"},"environmentInfo":{"nullable":true,"description":"Manager environment info"}},"required":["platform","status","deploymentId","resources"]},"APIKey":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"},"createdByUser":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"email":{"type":"string"},"image":{"type":"string","nullable":true}},"required":["id","email","image"],"description":"User information associated with the API key"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig","createdByUser"],"description":"API key information"},"APIKeyDeploymentSetupConfig":{"type":"object","nullable":true,"properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/APIKeyDeploymentSetupEnvironmentVariable"}}},"required":["metadata","policy","environmentVariables"]},"APIKeyDeploymentSetupEnvironmentVariable":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]},"CreateAPIKeyResponse":{"type":"object","properties":{"apiKey":{"type":"string","description":"The generated API key value (only shown once)"},"keyInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig"]}},"required":["apiKey","keyInfo"],"description":"Response containing the new API key and its metadata"},"CreateAPIKeyRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"scope":{"$ref":"#/components/schemas/Scope"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"required":["description","scope","expiresAt"],"description":"Request schema for creating a new API key"},"Scope":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceScope"},{"$ref":"#/components/schemas/ProjectScope"},{"$ref":"#/components/schemas/DeploymentScope"},{"$ref":"#/components/schemas/DeploymentGroupScope"},{"$ref":"#/components/schemas/ManagerScope"}],"discriminator":{"propertyName":"type","mapping":{"workspace":"#/components/schemas/WorkspaceScope","project":"#/components/schemas/ProjectScope","deployment":"#/components/schemas/DeploymentScope","deployment-group":"#/components/schemas/DeploymentGroupScope","manager":"#/components/schemas/ManagerScope"}},"description":"Scope and role configuration for service accounts"},"WorkspaceScope":{"type":"object","properties":{"type":{"type":"string","enum":["workspace"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["type","role"],"description":"Workspace-scoped configuration"},"ProjectScope":{"type":"object","properties":{"type":{"type":"string","enum":["project"]},"projectId":{"type":"string","description":"ID of the project this is scoped to"},"role":{"$ref":"#/components/schemas/ProjectRole"}},"required":["type","projectId","role"],"description":"Project-scoped configuration"},"DeploymentScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment"]},"deploymentId":{"type":"string","description":"ID of the deployment this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"},"role":{"$ref":"#/components/schemas/DeploymentRole"}},"required":["type","deploymentId","projectId","role"],"description":"Deployment-scoped configuration"},"DeploymentGroupScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"]},"deploymentGroupId":{"type":"string","description":"ID of the deployment group this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"},"role":{"$ref":"#/components/schemas/DeploymentGroupRole"}},"required":["type","deploymentGroupId","projectId","role"],"description":"Deployment group-scoped configuration"},"ManagerScope":{"type":"object","properties":{"type":{"type":"string","enum":["manager"]},"managerId":{"type":"string","description":"ID of the manager this is scoped to"},"role":{"$ref":"#/components/schemas/ManagerRole"}},"required":["type","managerId","role"],"description":"Manager-scoped configuration"},"UpdateAPIKeyRequest":{"type":"object","properties":{"enabled":{"type":"boolean"},"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"deploymentSetupConfig":{"$ref":"#/components/schemas/UpdateDeploymentSetupPolicy"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"description":"Request schema for updating an API key"},"UpdateDeploymentSetupPolicy":{"type":"object","properties":{"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"}},"required":["policy"],"description":"Editable part of a deployment link's setup config. Locked env vars and input values are preserved."},"DeleteAPIKeysRequest":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"minItems":1}},"required":["ids"]},"DomainWithUsage":{"allOf":[{"$ref":"#/components/schemas/Domain"},{"type":"object","properties":{"endpoints":{"type":"array","items":{"$ref":"#/components/schemas/DomainEndpoint"}},"usage":{"type":"object","properties":{"deploymentUrlProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"portalBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true},"hostname":{"type":"string"}},"required":["id","projectId","projectName","hostname"]}},"packageDomains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"type":"string"}},"required":["id","hostname"]}},"managerBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"managerId":{"type":"string"},"managerName":{"type":"string"},"hostname":{"type":"string"}},"required":["id","managerId","managerName","hostname"]}}},"required":["deploymentUrlProjects","portalBindings","packageDomains","managerBindings"]}},"required":["endpoints","usage"]}]},"Domain":{"type":"object","properties":{"id":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domain":{"type":"string"},"isSystem":{"type":"boolean"},"claimToken":{"type":"string"},"hostedZoneId":{"type":"string","nullable":true},"nameServers":{"type":"array","nullable":true,"items":{"type":"string"}},"status":{"type":"string","enum":["pending-zone-creation","pending-verification","verified","lost-verification","failed","deleting"]},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","workspaceId","domain","isSystem","claimToken","status","createdAt","updatedAt"]},"CommandListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Command"},{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/CommandDeploymentInfo"},"project":{"$ref":"#/components/schemas/CommandProjectInfo"}}}]},"CommandDeploymentInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"$ref":"#/components/schemas/CommandDeploymentGroupInfo"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"managerId":{"type":"string","description":"Manager ID for obtaining access tokens"},"managerUrl":{"type":"string","nullable":true,"format":"uri","description":"URL of the manager for direct payload access"},"managerName":{"type":"string","nullable":true,"description":"Human-readable name of the manager"},"managerIsSystem":{"type":"boolean","nullable":true,"description":"Whether the manager is Alien-hosted (system)"}},"required":["id","name","managerId"]},"CommandDeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"CommandProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string"}},"required":["id","name"]},"Command":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","description":"Command name (e.g., 'analyze-repository', 'sync-data')"},"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Command states in the Commands protocol lifecycle"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model captured from deployment at creation time"},"attempt":{"type":"number","nullable":true,"description":"Current attempt number"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","nullable":true,"description":"Size of command params in bytes"},"responseSizeBytes":{"type":"number","nullable":true,"description":"Size of command response in bytes"},"createdAt":{"type":"string","format":"date-time","description":"When the command was created"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command was dispatched to the deployment"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command completed"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if command failed"},"result":{"nullable":true,"description":"Decoded command result when available"}},"required":["id","deploymentId","projectId","workspaceId","name","state","deploymentModel","attempt","deadline","requestSizeBytes","responseSizeBytes","createdAt","dispatchedAt","completedAt","error"]},"ListCommandNamesResponse":{"type":"object","properties":{"names":{"type":"array","items":{"type":"string"}}},"required":["names"]},"ListCommandDeploymentsResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"required":["id","name"]}}},"required":["deployments"]},"CreateCommandResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"projectId":{"type":"string","description":"Project ID (for manager to use in routing)"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"How to dispatch the command"}},"required":["id","projectId","deploymentModel"]},"CreateCommandRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Target deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Command name (e.g., 'analyze-repository')"},"params":{"nullable":true,"description":"Command parameters for public invocation"},"initialState":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Initial state (PENDING_UPLOAD if params require upload, PENDING if inline)"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Size of command params in bytes"}},"required":["deploymentId","name"]},"UpdateCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"New command state"},"attempt":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Current attempt number"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command was dispatched"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command completed"},"responseSizeBytes":{"type":"number","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Size of response in bytes"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if failed"}}},"DebugSessionListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DebugSession"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"},"DebugSession":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"owner":{"type":"string","nullable":true,"maxLength":128},"state":{"$ref":"#/components/schemas/DebugSessionState"},"mode":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"provider":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Represents the target cloud platform."},"presignedUrls":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DebugPackagePresignedURLs"}},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","state","mode","presignedUrls","createdAt","expiresAt","deploymentId","projectId","workspaceId"]},"DebugSessionState":{"type":"string","enum":["pending","running","stopping","stopped","expired","failed"]},"DebugPackagePresignedURLs":{"type":"object","properties":{"readUrl":{"type":"string","maxLength":2048,"format":"uri"},"writeUrl":{"type":"string","maxLength":2048,"format":"uri"}},"required":["readUrl","writeUrl"]},"CreateDebugSessionRequest":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Override the generated id. Manager passes the registry session id so logs correlate.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"owner":{"type":"string","nullable":true,"maxLength":128},"expiresAt":{"type":"string","format":"date-time"},"state":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Initial state. Defaults to 'pending'."}]}},"required":["deploymentId","expiresAt"]},"UpdateDebugSessionRequest":{"type":"object","properties":{"state":{"$ref":"#/components/schemas/DebugSessionState"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"expiresAt":{"type":"string","format":"date-time"}}},"DeploymentInfo":{"type":"object","properties":{"tokenType":{"type":"string","enum":["deployment","deployment-group"],"description":"Type of token used to authenticate this request"},"deployment":{"type":"object","properties":{"name":{"type":"string"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"required":["name","platform"],"description":"Deployment details (present when using a deployment-scoped token)"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"}},"required":["id","name"],"description":"Deployment group details (present when using a deployment-group token)"},"workspace":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name"]},"project":{"type":"object","properties":{"name":{"type":"string"},"portal":{"type":"object","properties":{"appearance":{"$ref":"#/components/schemas/DeploymentPortalAppearance"}},"required":["appearance"]},"stackSummary":{"type":"object","nullable":true,"properties":{"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"publicHttpsEndpoints":{"type":"integer","minimum":0,"description":"Resources that declare managed public HTTPS endpoint setup"},"externalInfra":{"type":"integer","minimum":0,"description":"Storage, queue, KV, vault, database, or cache resources that Kubernetes needs Terraform to provision"},"total":{"type":"integer","minimum":0}},"required":["workers","containers","publicHttpsEndpoints","externalInfra","total"]},"publicEndpoints":{"type":"array","items":{"type":"object","properties":{"resourceId":{"type":"string"},"endpointName":{"type":"string"},"hostLabel":{"type":"string"},"wildcardSubdomains":{"type":"boolean"}},"required":["resourceId","endpointName","hostLabel","wildcardSubdomains"]},"description":"Public endpoints declared by the active release stack"}},"required":["platforms","resourceCounts","publicEndpoints"]}},"required":["name","portal"]},"packages":{"type":"object","properties":{"ready":{"type":"boolean","description":"True if all enabled packages are ready for deployment"},"cli":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"commandName":{"type":"string","description":"CLI command name to use in install instructions"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},"error":{"nullable":true},"installScripts":{"type":"object","properties":{"windows":{"type":"string","format":"uri"},"mac":{"type":"string","format":"uri"},"linux":{"type":"string","format":"uri"}},"required":["windows","mac","linux"],"description":"Install script URLs for each OS"}},"required":["status","commandName","installScripts"]},"cloudformation":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},"error":{"nullable":true},"mode":{"type":"string","enum":["auto","outputs"]},"launchUrl":{"type":"string","format":"uri","description":"CloudFormation launch URL"},"outputsSchema":{"nullable":true}},"required":["status","mode","launchUrl"]},"terraform":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},"error":{"nullable":true},"providerSource":{"type":"string","description":"Terraform provider source (without https://)"},"moduleSources":{"type":"object","additionalProperties":{"type":"string"},"description":"Terraform module sources by target"},"moduleVersion":{"type":"string"},"managerUrls":{"type":"object","additionalProperties":{"type":"string"},"description":"Manager URLs by Terraform target"}},"required":["status","providerSource","moduleSources","managerUrls"]},"helm":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},"error":{"nullable":true},"chartRef":{"type":"string","description":"OCI chart reference"},"managerFetchExample":{"type":"string"},"localImportExample":{"type":"string"}},"required":["status","chartRef"]}},"required":["ready"]},"installContext":{"type":"object","properties":{"targets":{"type":"object","additionalProperties":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managerUrl":{"type":"string","format":"uri"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"awsManagingAccountId":{"type":"string"}},"required":["platform","managerUrl"]},"description":"Deployment-session install context by Terraform/installer target"}},"required":["targets"]},"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"},"setupConfig":{"$ref":"#/components/schemas/DeploymentInfoSetupConfig"}},"required":["tokenType","workspace","project","packages","installContext","supportedRegions"]},"DeploymentPortalAppearance":{"type":"object","properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}}},"SupportedCloudRegions":{"type":"object","properties":{"aws":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by this Alien environment."},"gcp":{"type":"array","items":{"type":"string"},"description":"GCP regions supported by this Alien environment."},"azure":{"type":"array","items":{"type":"string"},"description":"Azure locations supported by this Alien environment."}},"required":["aws","gcp","azure"]},"DeploymentInfoSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]}},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."}},"inputValues":{"type":"array","items":{"$ref":"#/components/schemas/ResolvedStackInputSummary"}}},"required":["metadata","policy","environmentVariables"]},"ResolvedStackInputSummary":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"]}},"required":{"type":"boolean"},"secret":{"type":"boolean"},"provided":{"type":"boolean"}},"required":["id","label","providedBy","required","secret","provided"]},"DeploymentComputePlan":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string"},"workloads":{"type":"array","items":{"type":"string"}},"requirements":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"scale":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["fixed"]},"machines":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","machines"]},{"type":"object","properties":{"type":{"type":"string","enum":["autoscale"]},"min":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]},"max":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","min","max"]}]},"selected":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"recommended":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"machines":{"type":"array","items":{"type":"object","properties":{"machine":{"type":"string"},"profile":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"recommended":{"type":"boolean"}},"required":["machine","profile","recommended"]}},"errors":{"type":"array","items":{"type":"string"}}},"required":["poolId","workloads","requirements","scale","selected","recommended","machines"]}}},"required":["pools"]},"PreparedDeploymentStack":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"setup":{"$ref":"#/components/schemas/SetupFingerprintInfo"}},"required":["platform","stack","setup"]},"SyncListResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version reported on the last sync (e.g. \"1.3.5\")"},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS reported on the last sync"},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture reported on the last sync"},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends."},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from."},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target."},"userEnvironmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"deploymentToken":{"type":"string","nullable":true},"lockedBy":{"type":"string","nullable":true},"lockedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId","userEnvironmentVariables"]}}},"required":["deployments"],"description":"Full deployment records for manager operation"},"SyncListRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. Manager-scoped tokens are always constrained to their own manager ID."}]},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to include"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by deployment platform"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Filter by deployment group ID","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Maximum records to return"}},"additionalProperties":false,"description":"Request to list full operational deployments"},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the acquired deployment","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Deployment group ID the deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method recorded on the deployment when it has a setup-owned path."}]},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state (includes releases)"},"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration"},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver) for upgrade-driven sync"}},"required":["deploymentId","projectId","deploymentGroupId","current","config"]},"description":"List of acquired deployments with deployment context"},"failures":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the deployment that failed","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"error":{"allOf":[{"$ref":"#/components/schemas/APIError"},{"description":"Error that occurred during context building"}]}},"required":["deploymentId","projectId","error"]},"description":"List of deployments that failed during context building (locks already released)"}},"required":["deployments","failures"],"description":"Acquired deployments and failures"},"SyncAcquireRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. If omitted, resolved from each deployment's managerId column."}]},"session":{"type":"string","description":"Unique session identifier for lock tracking"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to lock (for Pull model sync)"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by platforms (default: all platforms the Manager supports)"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Filter by setup method for setup-owned acquisition paths"}]},"acquireMode":{"type":"string","enum":["runtime","setup-run","setup-teardown"],"description":"Phase ownership mode for deployment acquisition"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model from stackSettings.deploymentModel (Manager should use 'push')"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session"],"additionalProperties":false,"description":"Request to acquire deployments for processing"},"SyncReconcileResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the state was reconciled"},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state after reconciliation"},"target":{"type":"object","properties":{"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration\n\nConfiguration for how to perform the deployment.\nNote: Credentials (ClientConfig) are passed separately to step() function."},"releaseInfo":{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."}},"required":["config","releaseInfo"],"description":"Target deployment if update is needed"}},"required":["success","current"],"description":"State reconciliation result with optional target"},"SyncReconcileRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to reconcile state for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Lock session (push model only) - verifies lock ownership"},"state":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Complete deployment state after step() execution"},"updateHeartbeat":{"type":"boolean","description":"Update heartbeat timestamp (for successful health checks)"},"suggestedDelayMs":{"type":"integer","minimum":0,"description":"Delay before this deployment should be acquired again."},"heartbeats":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"description":"Latest typed resource heartbeats collected during this step."},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version from the last /v1/sync."},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS."},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture."},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime: os-service or kubernetes."},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry."}},"required":["deploymentId","state"],"additionalProperties":false,"description":"Request to reconcile deployment state"},"SyncReleaseRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to release","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Session identifier to release"}},"required":["deploymentId","session"],"additionalProperties":false,"description":"Request to release deployment lock"},"ResolveResponse":{"type":"object","properties":{"managerId":{"type":"string","description":"Manager ID"},"managerName":{"type":"string","description":"Manager display name"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL"},"managerIsSystem":{"type":"boolean","description":"Whether the manager is Alien-hosted"},"managerCloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where the private manager is hosted. Null for Alien-hosted managers."},"projectId":{"type":"string","description":"Resolved project ID"},"installContext":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}},"required":["platform","managementConfig"],"description":"Target install context derived from platform-managed manager metadata. Present for cloud push platforms."}},"required":["managerId","managerName","managerUrl","managerIsSystem","projectId"]},"CloudRegionsResponse":{"type":"object","properties":{"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"}},"required":["supportedRegions"]},"BillingAuditLogRow":{"type":"object","properties":{"id":{"type":"string"},"workspaceId":{"type":"string","nullable":true},"action":{"type":"string"},"payload":{"nullable":true},"createdAt":{"type":"string"}},"required":["id","workspaceId","action","createdAt"]},"WorkspaceBillingEntitlements":{"type":"object","properties":{"planId":{"$ref":"#/components/schemas/PlanId"},"planStatus":{"$ref":"#/components/schemas/BillingPlanStatus"},"features":{"$ref":"#/components/schemas/BillingFeatureFlags"},"limits":{"$ref":"#/components/schemas/BillingLimits"},"syncedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"}},"required":["planId","planStatus","features","limits","syncedAt","stale"]},"PlanId":{"type":"string","enum":["starter","pro","pro_annual","enterprise"]},"BillingPlanStatus":{"type":"string","enum":["active","trialing","past_due","canceled","none"]},"BillingFeatureFlags":{"type":"object","properties":{"custom_domains":{"type":"boolean"},"private_managers":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","sso_saml","audit_logs","airgapped"]},"BillingLimits":{"type":"object","properties":{"maxDeployments":{"type":"number","nullable":true},"maxProjects":{"type":"number","nullable":true},"maxSeats":{"type":"number","nullable":true},"maxCustomDomains":{"type":"number","nullable":true},"creditUsd":{"type":"number","nullable":true},"seatsIncluded":{"type":"number","nullable":true}},"required":["maxDeployments","maxProjects","maxSeats","maxCustomDomains","creditUsd","seatsIncluded"]}},"parameters":{}},"paths":{"/v1/user/memberships":{"get":{"operationId":"listMemberships","description":"List all workspaces the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listMemberships","responses":{"200":{"description":"List of user's workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Membership"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile":{"get":{"operationId":"getUserProfile","description":"Get the current user's profile and user-scoped onboarding state.","x-speakeasy-group":"user","x-speakeasy-name-override":"getProfile","responses":{"200":{"description":"User profile.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateUserProfile","description":"Update the current user's profile (display name).","x-speakeasy-group":"user","x-speakeasy-name-override":"updateProfile","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"}}}}}},"responses":{"200":{"description":"Profile updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile/setup":{"post":{"operationId":"completeUserProfileSetup","description":"Complete the required beta intake and profile setup dialog.","x-speakeasy-group":"user","x-speakeasy-name-override":"completeProfileSetup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileSetupRequest"}}}},"responses":{"200":{"description":"Profile setup completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/workspaces":{"post":{"operationId":"createWorkspace","description":"Create a new workspace. The current user will be automatically added as an admin.","x-speakeasy-group":"user","x-speakeasy-name-override":"createWorkspace","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name"},"logoUrl":{"type":"string","format":"uri","description":"Optional workspace logo URL"}},"required":["name"]}}}},"responses":{"201":{"description":"Created workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Membership"}}}},"400":{"description":"Bad request - invalid workspace name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Workspace name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces":{"get":{"operationId":"listGitNamespaces","description":"List all git namespaces (GitHub installations) the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaces","parameters":[{"schema":{"type":"string","enum":["github"],"default":"github"},"required":false,"name":"provider","in":"query"}],"responses":{"200":{"description":"List of user's git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/sync":{"post":{"operationId":"syncGitNamespaces","description":"Sync git namespaces from the provider. For GitHub, this fetches all app installations accessible to the user.","x-speakeasy-group":"user","x-speakeasy-name-override":"syncGitNamespaces","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","enum":["github"],"description":"Git provider to sync"}},"required":["provider"]}}}},"responses":{"200":{"description":"Synced git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/{id}/repositories":{"get":{"operationId":"listGitNamespaceRepositories","description":"List repositories accessible through a git namespace (GitHub installation).","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaceRepositories","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Search query to filter repositories by name"},"required":false,"description":"Search query to filter repositories by name","name":"search","in":"query"}],"responses":{"200":{"description":"List of repositories.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitRepository"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Git namespace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/whoami":{"get":{"operationId":"whoami","description":"Get the current authenticated principal (user or service account). Works with both session cookies and API keys.","x-speakeasy-group":"auth","x-speakeasy-name-override":"whoami","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","example":"my-workspace"},"required":false,"description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Current authenticated principal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Subject"}}}},"400":{"description":"Missing required workspace for user credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces":{"get":{"operationId":"listWorkspaces","description":"Retrieve all workspaces.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search workspaces by name"},"required":false,"description":"Search workspaces by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Workspace"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}":{"get":{"operationId":"getWorkspace","description":"Retrieve a workspace by ID.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspace","description":"Update a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"}}}}}},"responses":{"200":{"description":"Workspace updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteWorkspace","description":"Delete a workspace. The workspace must have no projects.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Workspace deleted successfully."},"400":{"description":"Workspace still has projects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members":{"get":{"operationId":"listWorkspaceMembers","description":"List all members of a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"listMembers","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"List of workspace members.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceMember"}}},"required":["items"]}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"addWorkspaceMember","description":"Add a member to a workspace by email. The user must already have an account.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"addMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email of the user to add"},"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"Role to assign"}]}},"required":["email","role"]}}}},"responses":{"201":{"description":"Member added successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"404":{"description":"Workspace or user not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"User is already a member.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members/{userId}":{"patch":{"operationId":"updateWorkspaceMember","description":"Update a workspace member's role.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"New role to assign"}]}},"required":["role"]}}}},"responses":{"200":{"description":"Member role updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"400":{"description":"Cannot remove last admin.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"removeWorkspaceMember","description":"Remove a member from a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"removeMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Member removed successfully."},"400":{"description":"Cannot remove last admin or self.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/dismiss-onboarding":{"post":{"operationId":"dismissWorkspaceOnboarding","description":"Mark the Getting Started walkthrough as dismissed for a workspace. The dashboard stops auto-promoting onboarding once this is set; users can still re-enter the walkthrough via the help menu.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"dismissOnboarding","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace with onboardingDismissedAt populated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects":{"get":{"operationId":"listProjects","description":"Retrieve all projects.","x-speakeasy-group":"projects","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search projects by name"},"required":false,"description":"Search projects by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deploymentCount","latestRelease"]},"description":"Optional fields to include: deploymentCount, latestRelease"},"required":false,"description":"Optional fields to include: deploymentCount, latestRelease","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved projects.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProjectListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createProject","description":"Create a new project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name"]}}}},"responses":{"201":{"description":"Project created successfully.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"}}}]}}}},"400":{"description":"Invalid request or GitHub repository connection failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}":{"get":{"operationId":"getProject","description":"Retrieve a project by ID or name.","x-speakeasy-group":"projects","x-speakeasy-name-override":"get","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateProject","description":"Update a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"update","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProject"}}}},"responses":{"200":{"description":"Project updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteProject","description":"Delete a project. The project must have no deployments.","x-speakeasy-group":"projects","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Project deleted successfully."},"400":{"description":"Project still has deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/gcp-oauth-provider":{"get":{"operationId":"getProjectGcpOAuthProvider","description":"Retrieve redacted project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateProjectGcpOAuthProvider","description":"Update project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"updateGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectGcpOAuthProvider"}}}},"responses":{"200":{"description":"Google Cloud OAuth provider settings updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"400":{"description":"Invalid provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/deployment-portal-domain":{"get":{"operationId":"getProjectDeploymentPortalDomain","description":"Get the deployment portal domain binding for a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentPortalDomain","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved deployment portal domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentPortalDomainResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/import-template":{"post":{"operationId":"createProjectFromTemplate","description":"Create a project by forking alienplatform/alien into your namespace, then configuring GitHub Actions.","x-speakeasy-group":"projects","x-speakeasy-name-override":"createFromTemplate","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$","description":"GitHub owner namespace (user or organization) that will receive the fork"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name","targetNamespace","templatePath"]}}}},"responses":{"201":{"description":"Project created successfully from template.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"},"template":{"type":"object","properties":{"sourceRepository":{"type":"string","enum":["alienplatform/alien"]},"forkRepository":{"type":"string","description":"Fork repository in / format"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"resolvedRootDirectory":{"type":"string"}},"required":["sourceRepository","forkRepository","templatePath","resolvedRootDirectory"]}},"required":["template"]}]}}}},"400":{"description":"Bad request or GitHub integration not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Fork exists but is not ready yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/template-urls":{"get":{"operationId":"getProjectTemplateUrls","description":"Get template URLs for deploying setup stacks in this project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getTemplateUrls","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Template URLs retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"aws":{"type":"object","nullable":true,"properties":{"templateUrl":{"type":"string","format":"uri","description":"URL to download the CloudFormation template"},"launchStackUrl":{"type":"string","format":"uri","description":"URL to launch the template in the AWS CloudFormation console"}},"required":["templateUrl","launchStackUrl"],"description":"Template URLs for deploying an AWS setup stack"}}}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/active-release":{"get":{"operationId":"getProjectActiveRelease","description":"Get the active release for this project. Returns the latest release, or the pinned release if deploymentId is provided and that deployment has a pinned release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getActiveRelease","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Optional deployment ID to check for pinned release"},"required":false,"description":"Optional deployment ID to check for pinned release","name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Active release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or active release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups":{"post":{"operationId":"createDeploymentGroup","tags":["deployment-groups"],"summary":"Create a new deployment group","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group with this name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listDeploymentGroups","tags":["deployment-groups"],"summary":"List deployment groups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of deployment groups","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}":{"get":{"operationId":"getDeploymentGroup","tags":["deployment-groups"],"summary":"Get deployment group details","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Deployment group details","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"},"deploymentCount":{"type":"integer","description":"Current number of deployments in this deployment group"}},"required":["deploymentCount"]}]}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateDeploymentGroup","tags":["deployment-groups"],"summary":"Update deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDeploymentGroup","tags":["deployment-groups"],"summary":"Delete deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Deployment group deleted successfully"},"400":{"description":"Cannot delete deployment group that has deployments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/tokens":{"post":{"operationId":"createDeploymentGroupToken","tags":["deployment-groups"],"summary":"Create deployment group token","description":"Creates a deployment-group scoped API key and returns both the token and formatted deployment link","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenRequest"}}}},"responses":{"200":{"description":"Deployment group token created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/first-party-session":{"post":{"operationId":"createFirstPartyDeploymentSession","tags":["deployment-groups"],"summary":"Create first-party deployment session","description":"Mints a short-lived deployment-group token with the recommended self-deploy policy for the authenticated developer.","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"First-party deployment session created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFirstPartyDeploymentSessionResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages":{"get":{"operationId":"listPackages","description":"List packages with optional filters. Returns packages ordered by creation date (newest first).","x-speakeasy-group":"packages","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Filter by package type"},"required":false,"description":"Filter by package type","name":"type","in":"query"},{"schema":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Filter by package status"},"required":false,"description":"Filter by package status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search packages by type or version"},"required":false,"description":"Search packages by type or version","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of packages.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}":{"get":{"operationId":"getPackage","description":"Get details of a specific package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/rebuild":{"post":{"operationId":"rebuildPackages","description":"Rebuild packages for a project. This will cancel any pending packages and create new ones with auto-incremented versions.","x-speakeasy-group":"packages","x-speakeasy-name-override":"rebuild","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to rebuild packages for"}},"required":["project"]}}}},"responses":{"200":{"description":"Packages rebuilt successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"packagesCreated":{"type":"integer","description":"Number of packages created"}},"required":["packagesCreated"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}/cancel":{"post":{"operationId":"cancelPackage","description":"Cancel a pending or building package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"cancel","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package canceled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"400":{"description":"Package cannot be canceled (not in pending or building status).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases":{"get":{"operationId":"listReleases","description":"Retrieve all releases.","x-speakeasy-group":"releases","x-speakeasy-name-override":"list","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search releases by commit message, branch, SHA, or release ID"},"required":false,"description":"Search releases by commit message, branch, SHA, or release ID","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by git branch (commitRef)"},"required":false,"description":"Filter by git branch (commitRef)","name":"branch","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by commit author login or name"},"required":false,"description":"Filter by commit author login or name","name":"author","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created after this date (ISO 8601)"},"required":false,"description":"Filter releases created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created before this date (ISO 8601)"},"required":false,"description":"Filter releases created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved releases.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createRelease","description":"Create a new release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReleaseRequest"}}}},"responses":{"201":{"description":"Release created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Release"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/branches":{"get":{"operationId":"listReleaseBranches","description":"List distinct git branches across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listBranches","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search branches by name (case-insensitive contains)"},"required":false,"description":"Search branches by name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of branches to return"},"required":false,"description":"Maximum number of branches to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct branches.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/authors":{"get":{"operationId":"listReleaseAuthors","description":"List distinct commit authors across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listAuthors","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search authors by login or name (case-insensitive contains)"},"required":false,"description":"Search authors by login or name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of authors to return"},"required":false,"description":"Maximum number of authors to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct authors.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseAuthorFilterItem"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/{id}":{"get":{"operationId":"getRelease","description":"Retrieve a release by ID.","x-speakeasy-group":"releases","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"required":true,"description":"Unique identifier for the release.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseListItemResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments":{"get":{"operationId":"listDeployments","description":"Retrieve all deployments.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"list","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Filter by exact deployment name. Must be used with deploymentGroup."},"required":false,"description":"Filter by exact deployment name. Must be used with deploymentGroup.","name":"name","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name, public subdomain, or deployment group name"},"required":false,"description":"Search deployments by name, public subdomain, or deployment group name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved deployments.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"400":{"description":"Invalid deployment list filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDeployment","description":"Create a new deployment. Deployment group tokens automatically use their group. Workspace/project tokens must provide deploymentGroupId.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewDeploymentRequest"}}}},"responses":{"201":{"description":"Deployment created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"400":{"description":"Bad request - deployment group has reached max deployments limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Forbidden - insufficient permissions to create deployments in this context.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or deployment group not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/stats":{"get":{"operationId":"getDeploymentStats","description":"Get aggregated deployment statistics. Returns total count and breakdown by status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getStats","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name or deployment group name"},"required":false,"description":"Search deployments by name or deployment group name","name":"search","in":"query"}],"responses":{"200":{"description":"Deployment statistics retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentStats"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-environments":{"get":{"operationId":"listDeploymentFilterEnvironments","description":"List distinct effective environments used by deployments. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterEnvironments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-deployment-groups":{"get":{"operationId":"listDeploymentFilterDeploymentGroups","description":"List deployment groups with deployment counts. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterDeploymentGroups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return"},"required":false,"description":"Maximum number of items to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Deployment groups for filter retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"},"deploymentCount":{"type":"number"},"runningCount":{"type":"number","description":"Number of deployments in 'running' status"},"failedCount":{"type":"number","description":"Number of deployments in a failed status"},"inProgressCount":{"type":"number","description":"Number of deployments in an in-progress status (provisioning, updating, etc.)"}},"required":["id","name","deploymentCount","runningCount","failedCount","inProgressCount"]}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}":{"get":{"operationId":"getDeployment","description":"Retrieve a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentDetailResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/info":{"get":{"operationId":"getDeploymentConnectionInfo","description":"Get deployment connection information including command endpoint and resource URLs.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment connection information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentConnectionInfo"}}}},"400":{"description":"Deployment not ready (no manager assigned).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/rejoin":{"post":{"operationId":"rejoinDeployment","description":"Re-acquire a deployment-scoped sync token for an existing deployment by name. Used by the agent when its persistent state was wiped (e.g. emptyDir on pod restart) and `/v1/initialize` would hit a DEPLOYMENT_NAME_ALREADY_EXISTS 409. Deployment-group tokens only.","tags":["deployments"],"x-speakeasy-group":"deployments","x-speakeasy-name-override":"rejoin","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejoinDeploymentRequest"}}}},"responses":{"200":{"description":"Existing deployment found; new deployment-scoped token issued.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejoinDeploymentResponse"}}}},"403":{"description":"Caller is not a deployment-group token, or is from a different deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"No deployment with that name exists in the caller's deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/import":{"post":{"operationId":"importDeployment","description":"Import a deployment from resolved setup infrastructure such as CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"import","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportDeploymentRequest"}}}},"responses":{"200":{"description":"Deployment import was idempotent and returned an existing deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"201":{"description":"Deployment imported and created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/first-party-inputs":{"put":{"operationId":"setFirstPartyDeploymentInputs","description":"Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setFirstPartyDeploymentInputs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Input values stored on the session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsResponse"}}}},"400":{"description":"A deployment-group token scope is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The token is not a first-party deployment session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to store input values.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations":{"post":{"operationId":"createSetupRegistrationOperation","description":"Start a durable setup registration operation for CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createSetupRegistrationOperation","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupRegistrationOperationRequest"}}}},"responses":{"202":{"description":"Setup registration operation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"400":{"description":"Invalid setup registration operation request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed before callback acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations/{id}":{"get":{"operationId":"getSetupRegistrationOperation","description":"Get setup registration operation status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getSetupRegistrationOperation","parameters":[{"schema":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"required":true,"description":"Unique identifier for the setup registration operation.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Setup registration operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"404":{"description":"Setup registration operation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/delete":{"post":{"operationId":"deleteDeployment","description":"Delete, detach, or forget a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentRequest"}}}},"responses":{"202":{"description":"Deployment deletion request accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentResponse"}}}},"400":{"description":"Cannot delete the deployment in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/redeploy":{"post":{"operationId":"redeployDeployment","description":"Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"redeploy","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment redeployment triggered successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot redeploy - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/pin-release":{"post":{"operationId":"pinDeploymentRelease","description":"Pin or unpin deployment to a specific release. Only works for running deployments. Controller will automatically trigger update to target release.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"pinRelease","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinReleaseRequest"}}}},"responses":{"202":{"description":"Release pin updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot pin release - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/target-agent-version":{"put":{"operationId":"setDeploymentTargetAgentVersion","description":"Set (or clear) the agent version this deployment should run. The manager compares this against the agent's reported version on each /v1/sync; when they differ, it emits an agent_target in the response so the agent triggers the upgrade itself. Pass null/omit to clear.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setTargetAgentVersion","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetTargetAgentVersionRequest"}}}},"responses":{"202":{"description":"Target agent version updated.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/retry":{"post":{"operationId":"retryDeployment","description":"Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"retry","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment retry enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Deployment is not in a failed state that can be retried.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/environment-variables":{"patch":{"operationId":"updateDeploymentEnvironmentVariables","description":"Update a deployment's environment variables. If the deployment is running and not locked, the status will be changed to update-pending to trigger a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateEnvironmentVariables","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentEnvironmentVariablesRequest"}}}},"responses":{"202":{"description":"Environment variables updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/token":{"post":{"operationId":"createDeploymentToken","description":"Create a deployment token (deployment-scoped API key). The deployment must exist before creating a token.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createToken","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenRequest"}}}},"responses":{"201":{"description":"Deployment token created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers":{"post":{"operationId":"createManager","description":"Create a new manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewManagerRequest"}}}},"responses":{"201":{"description":"Manager created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Invalid private manager setup method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"A manager for this target already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listManagers","description":"Retrieve all managers.","x-speakeasy-group":"managers","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search managers by name"},"required":false,"description":"Search managers by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of managers to return"},"required":false,"description":"Maximum number of managers to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved managers.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Manager"}}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/setup-token":{"post":{"operationId":"retryManagerSetup","description":"Revoke previous private-manager setup tokens and issue a fresh setup token/config.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retrySetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"201":{"description":"Fresh manager setup token generated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Manager setup cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or setup config not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/retry":{"post":{"operationId":"retryManager","description":"Retry private-manager setup. Returns a fresh setup action before the internal deployment exists, or requests retry for the internal deployment after it exists.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retry","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager retry handled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerRetryResponse"}}}},"400":{"description":"Manager cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or internal deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/cancel-setup":{"post":{"operationId":"cancelManagerSetup","description":"Cancel pending private-manager setup, revoke setup/runtime tokens, and remove the undeployed manager record.","x-speakeasy-group":"managers","x-speakeasy-name-override":"cancelSetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager setup canceled successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Manager setup cannot be canceled in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}":{"get":{"operationId":"getManager","description":"Retrieve a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"get","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manager"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteManager","description":"Delete a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"delete","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager deletion enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot delete the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Internal deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/domain-binding":{"get":{"operationId":"getManagerDomainBinding","description":"Get the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager domain binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateManagerDomainBinding","description":"Create, update, or remove the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"updateDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerDomainBinding"}}}},"responses":{"200":{"description":"Manager domain binding updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"400":{"description":"Invalid domain binding request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or domain not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/management-config":{"get":{"operationId":"getManagerManagementConfig","description":"Get the management configuration for a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getManagementConfig","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"required":true,"description":"Represents the target cloud platform.","name":"platform","in":"query"}],"responses":{"200":{"description":"Management config retrieved successfully.","content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/provision":{"post":{"operationId":"provisionManager","description":"Enqueue provisioning for a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"provision","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager provisioning enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot provision the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/update":{"post":{"operationId":"updateManager","description":"Update a manager to a specific release ID or active release.","x-speakeasy-group":"managers","x-speakeasy-name-override":"update","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerRequest"}}}},"responses":{"202":{"description":"Manager update enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot update the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/events":{"get":{"operationId":"listManagerEvents","description":"Retrieve all events of a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"listEvents","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}},"required":["items"]}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/token":{"post":{"operationId":"generateManagerToken","description":"Generate a short-lived JWT for direct browser → manager communication. Used for fetching command payloads and querying logs without routing sensitive data through the platform API.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerToken","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenRequest"}}}},"responses":{"200":{"description":"Manager access token and connection info.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/gcp-oauth-provider/resolve":{"post":{"operationId":"resolveManagerGcpOAuthProvider","description":"Resolve decrypted project-level Google Cloud OAuth provider settings for a manager-side deployment bootstrap.","x-speakeasy-group":"managers","x-speakeasy-name-override":"resolveGcpOAuthProvider","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderRequest"}}}},"responses":{"200":{"description":"Resolved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderResponse"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Manager cannot resolve this deployment group's project settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/heartbeat":{"post":{"operationId":"reportManagerHeartbeat","description":"Report Manager health status and metrics.","x-speakeasy-group":"managers","x-speakeasy-name-override":"reportHeartbeat","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatRequest"}}}},"responses":{"200":{"description":"Heartbeat acknowledged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/deployment":{"get":{"operationId":"getManagerDeployment","description":"Get deployment details for a private manager (internal deployment platform, status, resources).","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDeployment","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager deployment details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDeployment"}}}},"404":{"description":"Manager not found or has no internal deployment (alien-hosted managers don't have deployment info).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys":{"get":{"operationId":"listAPIKeys","description":"Retrieve all API keys for the current workspace.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved API keys.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/APIKey"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAPIKey","description":"Create a new API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyRequest"}}}},"responses":{"201":{"description":"API key created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyResponse"}}}},"403":{"description":"Insufficient permissions to create API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/{id}":{"get":{"operationId":"getAPIKey","description":"Retrieve a specific API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateAPIKey","description":"Update an API key (enable/disable, change description).","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAPIKeyRequest"}}}},"responses":{"200":{"description":"API key updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"revokeAPIKey","description":"Revoke (soft delete) an API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"revoke","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"API key revoked successfully."},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/batch-delete":{"post":{"operationId":"deleteAPIKeys","description":"Permanently delete multiple API keys.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"deleteMultiple","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAPIKeysRequest"}}}},"responses":{"200":{"description":"API keys deleted successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"deletedCount":{"type":"number"}},"required":["deletedCount"]}}}},"403":{"description":"Insufficient permissions to delete API keys.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains":{"get":{"operationId":"listDomains","description":"List system domains and workspace domains.","x-speakeasy-group":"domains","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domains.","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/DomainWithUsage"}}},"required":["domains"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDomain","description":"Create a workspace domain and optional initial endpoints.","x-speakeasy-group":"domains","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":253},"setup":{"type":"object","properties":{"deploymentPortal":{"type":"boolean"},"packages":{"type":"boolean"},"deploymentUrlProjectId":{"type":"string","nullable":true,"pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"managerIds":{"type":"array","items":{"type":"string"}}}}},"required":["domain"]}}}},"responses":{"200":{"description":"Returned an existing workspace domain claim.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"201":{"description":"Created domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Domain is reserved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/endpoints":{"post":{"operationId":"createDomainEndpoint","description":"Create an endpoint under a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"createEndpoint","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"owner":{"type":"object","properties":{"type":{"type":"string","enum":["workspace","project","manager"]},"id":{"type":"string"}},"required":["type","id"]}},"required":["kind"]}}}},"responses":{"201":{"description":"Created endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Endpoint cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}":{"get":{"operationId":"getDomain","description":"Get domain by ID.","x-speakeasy-group":"domains","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDomain","description":"Delete a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain deletion requested.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain is in use.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/refresh":{"post":{"operationId":"refreshDomain","description":"Refresh workspace domain verification.","x-speakeasy-group":"domains","x-speakeasy-name-override":"refresh","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain verification refresh requested.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events":{"get":{"operationId":"listEvents","description":"Retrieve all events.","x-speakeasy-group":"events","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter events to a single deployment."},"required":false,"description":"Filter events to a single deployment.","name":"deploymentId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events/{id}":{"get":{"operationId":"getEvent","description":"Retrieve an event by ID.","x-speakeasy-group":"events","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"required":true,"description":"Unique identifier for the event.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved event.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands":{"get":{"operationId":"listCommands","description":"Retrieve commands. Use for dashboard analytics and command history.","x-speakeasy-group":"commands","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Filter by command state"},"required":false,"description":"Filter by command state","name":"state","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Filter by command name"},"required":false,"description":"Filter by command name","name":"name","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search commands by name"},"required":false,"description":"Search commands by name","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created after this date (ISO 8601)"},"required":false,"description":"Filter commands created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created before this date (ISO 8601)"},"required":false,"description":"Filter commands created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deployment","project"]},"description":"Optional fields to include: deployment, project"},"required":false,"description":"Optional fields to include: deployment, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved commands.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommandListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createCommand","description":"Create command metadata. Called by manager when processing commands. Returns project info for routing decisions.","x-speakeasy-group":"commands","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandRequest"}}}},"responses":{"201":{"description":"Command created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/names":{"get":{"operationId":"listCommandNames","description":"List distinct command names. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listNames","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search command names (prefix match)"},"required":false,"description":"Search command names (prefix match)","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct command names.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandNamesResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/deployments":{"get":{"operationId":"listCommandDeployments","description":"List distinct deployments that have commands, including deployment group info. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search deployment or deployment group names"},"required":false,"description":"Search deployment or deployment group names","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct deployments that have commands.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandDeploymentsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/{id}":{"patch":{"operationId":"updateCommand","description":"Update command state. Called by manager when command is dispatched or completes.","x-speakeasy-group":"commands","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCommandRequest"}}}},"responses":{"200":{"description":"Command updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Command not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getCommand","description":"Retrieve a command by ID.","x-speakeasy-group":"commands","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved command.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions":{"get":{"operationId":"listDebugSessions","description":"Retrieve debug sessions for dashboard audit. Filters: project, deployment, state, mode.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Filter by session state"}]},"required":false,"description":"Filter by session state","name":"state","in":"query"},{"schema":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model (push/pull). Joins against the parent deployment."},"required":false,"description":"Filter by deployment model (push/pull). Joins against the parent deployment.","name":"mode","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Filter by cloud provider. Joins against the parent deployment."},"required":false,"description":"Filter by cloud provider. Joins against the parent deployment.","name":"provider","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Paginated debug sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSessionListResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDebugSession","description":"Create a debug-session audit row. Called by the manager when a pull or push debug tunnel is opened. Workspace + project derived from deployment.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDebugSessionRequest"}}}},"responses":{"201":{"description":"Debug session created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions/{id}":{"patch":{"operationId":"updateDebugSession","description":"Update debug-session state. Called by manager on tunnel attach, close, or deadline expiry.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDebugSessionRequest"}}}},"responses":{"200":{"description":"Debug session updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Debug session not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getDebugSession","description":"Retrieve a debug session by ID.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved debug session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info":{"get":{"operationId":"getDeploymentInfo","description":"Get deployment information for the deployment portal. Accepts both deployment-scoped and deployment-group-scoped API keys. Returns project information, package status/outputs, and either deployment or deployment group details depending on the token type. Poll this endpoint to check if packages are ready.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment information retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInfo"}}}},"401":{"description":"Unauthorized — requires a deployment-scoped or deployment-group-scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/compute-plan":{"post":{"operationId":"planDeploymentCompute","description":"Plan deployment compute for the active release before stack preparation. The response contains recommended machine and scale choices for cloud compute pools.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"planCompute","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Compute plan returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentComputePlan"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/prepare-stack":{"post":{"operationId":"prepareDeploymentStack","description":"Prepare the active release stack for a deployment portal setup session. The response contains the generated stack shape plus setup compatibility metadata.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"prepareStack","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Prepared stack returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreparedDeploymentStack"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/list":{"post":{"operationId":"syncList","description":"List full deployment records for manager operational loops. This endpoint is intentionally separate from the public deployments list, which returns lightweight UI rows.","x-speakeasy-group":"sync","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListRequest"}}}},"responses":{"200":{"description":"Full deployment records returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/acquire":{"post":{"operationId":"syncAcquire","description":"Acquire a batch of deployments for processing. Used by Manager to atomically lock deployments matching filters. Each deployment in the batch must be released after processing.","x-speakeasy-group":"sync","x-speakeasy-name-override":"acquire","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireRequest"}}}},"responses":{"200":{"description":"Deployments acquired successfully (empty arrays if none available). Failures indicate deployments that were locked but failed during context building - their locks have been released.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/reconcile":{"post":{"operationId":"syncReconcile","description":"Reconcile deployment state. Push model requests that include a session verify lock ownership. Pull model state reports are accepted as authz-gated agent progress even when they carry an agent-sync session. Accepts full DeploymentState after step() execution.","x-speakeasy-group":"sync","x-speakeasy-name-override":"reconcile","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileRequest"}}}},"responses":{"200":{"description":"State reconciled successfully. If target is present, continue deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment locked (pull) or session mismatch (push).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/release":{"post":{"operationId":"syncRelease","description":"Release a deployment lock. Must be called after processing an acquired deployment, even if processing failed. This is critical to avoid deadlocks.","x-speakeasy-group":"sync","x-speakeasy-name-override":"release","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReleaseRequest"}}}},"responses":{"200":{"description":"Lock released successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}":{"get":{"operationId":"listResourceOverview","x-speakeasy-group":"resources","x-speakeasy-name-override":"listOverview","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Compute resource overview rows from latest heartbeats.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"deploymentCount":{"type":"integer"},"attentionCount":{"type":"integer"},"lastObservedAt":{"type":"string","format":"date-time"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt"]}}},"required":["resources"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/{resourceId}/deployments":{"get":{"operationId":"listResourceDeployments","x-speakeasy-group":"resources","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Deployments where the resource is installed.","content":{"application/json":{"schema":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]}}},"required":["resourceType","resourceId","deployments"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/deployments/{deploymentId}/{resourceId}":{"get":{"operationId":"getResourceDeploymentDetail","x-speakeasy-group":"resources","x-speakeasy-name-override":"getDeploymentDetail","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Latest heartbeat detail for one compute resource deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"deployment":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]},"heartbeat":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","enum":["available"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"staleAt":{"type":"string","format":"date-time"},"platformStale":{"type":"boolean"},"heartbeat":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"raw":{"type":"array","items":{"nullable":true}}},"required":["status","deploymentId","resourceId","resourceType","backend","controllerPlatform","observedAt","staleAt","platformStale","heartbeat","raw"]},{"type":"object","properties":{"status":{"type":"string","enum":["missing"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"}},"required":["status","deploymentId","resourceId","resourceType"]}]}},"required":["deployment","heartbeat"]}}}},"404":{"description":"Deployment or resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resolve":{"get":{"operationId":"resolve","tags":["resolve"],"summary":"Resolve manager for a project and platform","description":"Returns the manager URL for a given project and platform. The project can be provided as a query parameter, or derived from the token's scope (project-scoped, deployment-group-scoped, or deployment-scoped tokens carry an implicit project). This is the single entry point for all CLI tools to discover which manager to talk to.","x-speakeasy-group":"resolve","x-speakeasy-name-override":"resolve","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform to resolve the manager for"},"required":true,"description":"Target platform to resolve the manager for","name":"platform","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope)."},"required":false,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope).","name":"project","in":"query"}],"responses":{"200":{"description":"Manager resolved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveResponse"}}}},"400":{"description":"Missing required project parameter for this token type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found or no manager available for platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Manager not ready yet (no URL reported). Retry after a delay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/cloud-regions":{"get":{"operationId":"getCloudRegions","description":"Get cloud regions supported by this Alien environment.","x-speakeasy-group":"cloudRegions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Supported cloud regions retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudRegionsResponse"}}}}}}},"/v1/billing/audit-log":{"get":{"operationId":"listBillingAuditLog","description":"List billing activity entries for the current workspace.","x-speakeasy-group":"billing","x-speakeasy-name-override":"listAuditLog","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor: id from the previous page."},"required":false,"description":"Cursor: id from the previous page.","name":"before","in":"query"}],"responses":{"200":{"description":"Audit-log rows newest-first.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/BillingAuditLogRow"}},"nextCursor":{"type":"string","nullable":true}},"required":["items","nextCursor"]}}}}}}},"/v1/billing/entitlements":{"get":{"operationId":"getWorkspaceBillingEntitlements","description":"Get the workspace billing entitlements used for product feature gates. Autumn is the source of truth; the response is served through the workspace billing read model with stale-cache fallback.","x-speakeasy-group":"billing","x-speakeasy-name-override":"getEntitlements","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace billing entitlements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceBillingEntitlements"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}}}} \ No newline at end of file diff --git a/client-sdks/platform/rust/openapi.json b/client-sdks/platform/rust/openapi.json index 6d31a10cd..f7cb8a7a4 100644 --- a/client-sdks/platform/rust/openapi.json +++ b/client-sdks/platform/rust/openapi.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"title":"Alien API","version":"1.0.0","contact":{"name":"Alien Team","url":"https://alien.dev"}},"servers":[{"url":"https://api.alien.dev","description":"Alien API - Production"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key for authentication, must be provided as a Bearer token. Generate an API key at https://alien.dev/api-keys"}},"schemas":{"Membership":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"role":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","logoUrl","role","createdAt"],"additionalProperties":false},"APIError":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."}},"required":["code","message","internal"]},"UserProfile":{"type":"object","properties":{"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","description":"User's email address"},"name":{"type":"string","description":"User's display name"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"},"githubUsername":{"type":"string","nullable":true,"description":"Linked GitHub username"},"cliConnected":{"type":"boolean","description":"Whether this user has ever authenticated a request from the Alien CLI. Latched on first CLI request, never cleared."},"company":{"type":"string","nullable":true,"description":"Company name collected during profile setup."},"acquisitionSource":{"type":"string","nullable":true,"enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other",null],"description":"How the user heard about Alien."},"acquisitionSourceDetail":{"type":"string","nullable":true,"description":"Additional acquisition source detail when the source is other."},"useCases":{"type":"string","nullable":true,"description":"What the user is hoping to use Alien for."},"profileSetupCompletedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the user completed the required profile setup dialog."},"profileSetupVersion":{"type":"integer","nullable":true,"description":"Version of the required profile setup dialog the user completed."}},"required":["id","email","name","image","githubUsername","cliConnected","company","acquisitionSource","acquisitionSourceDetail","useCases","profileSetupCompletedAt","profileSetupVersion"],"additionalProperties":false},"UserProfileSetupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"},"company":{"type":"string","minLength":1,"maxLength":120,"description":"Company name"},"acquisitionSource":{"type":"string","enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other"],"description":"How the user heard about Alien"},"acquisitionSourceDetail":{"type":"string","minLength":1,"maxLength":200,"description":"Required when acquisitionSource is other"},"useCases":{"type":"string","maxLength":2000,"description":"What the user is hoping to use Alien for"}},"required":["name","company","acquisitionSource"],"additionalProperties":false},"GitNamespace":{"type":"object","properties":{"id":{"type":"number","nullable":true},"name":{"type":"string"},"slug":{"type":"string"},"installationId":{"type":"number","nullable":true},"type":{"type":"string","enum":["team","user"]},"provider":{"type":"string","enum":["github"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","slug","installationId","type","provider","createdAt"],"additionalProperties":false},"GitRepository":{"type":"object","properties":{"name":{"type":"string"},"private":{"type":"boolean"},"defaultBranch":{"type":"string"},"pushedAt":{"type":"string","format":"date-time"}},"required":["name","private","defaultBranch"],"additionalProperties":false},"Subject":{"oneOf":[{"$ref":"#/components/schemas/UserSubject"},{"$ref":"#/components/schemas/ServiceAccountSubject"}],"discriminator":{"propertyName":"kind","mapping":{"user":"#/components/schemas/UserSubject","serviceAccount":"#/components/schemas/ServiceAccountSubject"}},"description":"Authenticated principal that can be either a user (with workspace-scoped permissions) or a service account (with configurable scope and role)"},"UserSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["user"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","format":"email","description":"User's email address"},"workspaceId":{"type":"string","description":"ID of the workspace the user is authenticated within"},"workspaceName":{"type":"string","description":"Name of the workspace the user is authenticated within"},"role":{"$ref":"#/components/schemas/UserRole"}},"required":["kind","id","email","workspaceId","role"],"description":"Authenticated user subject with workspace-scoped permissions"},"UserRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"User's role within the workspace","example":"workspace.member"},"ServiceAccountSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["serviceAccount"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique service account identifier (API key ID)"},"workspaceId":{"type":"string","description":"ID of the workspace the service account belongs to"},"workspaceName":{"type":"string","description":"Name of the workspace the service account belongs to"},"scope":{"$ref":"#/components/schemas/SubjectScope"},"role":{"$ref":"#/components/schemas/Role"}},"required":["kind","id","workspaceId","scope","role"],"description":"Authenticated service account subject with scoped permissions (workspace, project, or deployment level)"},"SubjectScope":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["workspace"],"description":"Workspace-scoped access"}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["project"],"description":"Project-scoped access"},"projectId":{"type":"string","description":"ID of the specific project this scope applies to"}},"required":["type","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment"],"description":"Deployment-scoped access"},"deploymentId":{"type":"string","description":"ID of the specific deployment this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"}},"required":["type","deploymentId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"],"description":"Deployment group-scoped access"},"deploymentGroupId":{"type":"string","description":"ID of the specific deployment group this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"}},"required":["type","deploymentGroupId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["manager"],"description":"Manager-scoped access"},"managerId":{"type":"string","description":"ID of the specific manager this scope applies to"}},"required":["type","managerId"]}],"description":"Authorization scope defining what resources this service account can access"},"Role":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"$ref":"#/components/schemas/ProjectRole"},{"$ref":"#/components/schemas/DeploymentRole"},{"$ref":"#/components/schemas/DeploymentGroupRole"},{"$ref":"#/components/schemas/ManagerRole"}],"description":"Role defining what actions this service account can perform within its scope","example":"workspace.member"},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"ProjectRole":{"type":"string","enum":["project.viewer","project.developer"],"description":"Role for project-scoped service accounts","example":"project.developer"},"DeploymentRole":{"type":"string","enum":["deployment.viewer","deployment.manager","deployment.telemetry-writer"],"description":"Role for deployment-scoped service accounts","example":"deployment.manager"},"DeploymentGroupRole":{"type":"string","enum":["deployment-group.deployer"],"description":"Role for deployment group-scoped service accounts","example":"deployment-group.deployer"},"ManagerRole":{"type":"string","enum":["manager.runtime"],"description":"Role for manager-scoped service accounts","example":"manager.runtime"},"Workspace":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name.","example":"my-workspace"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"onboardingDismissedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the Getting Started walkthrough was dismissed or completed for this workspace. Null means it has never been dismissed; the dashboard auto-promotes the walkthrough until this is set."},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","onboardingDismissedAt","createdAt"],"additionalProperties":false},"WorkspaceMember":{"type":"object","properties":{"userId":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"image":{"type":"string","nullable":true},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"joinedAt":{"type":"string","format":"date-time"}},"required":["userId","email","name","image","role","joinedAt"],"additionalProperties":false},"ProjectListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"deploymentCount":{"type":"number"},"latestRelease":{"$ref":"#/components/schemas/ProjectReleaseInfo"}}}]},"DeploymentPortalAppearancePreset":{"type":"string","enum":["clean","technical","enterprise","playful","minimal"],"default":"clean","description":"Curated visual style for the deployment portal."},"DeploymentPortalAccentColor":{"type":"string","enum":["blue","purple","green","orange","pink","slate"],"default":"blue","description":"Accent color used for highlights and primary actions."},"DeploymentPortalDensity":{"type":"string","enum":["comfortable","compact"],"default":"comfortable","description":"Layout density for portal content."},"ProjectReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","gitMetadata","createdAt"]},"GitMetadata":{"type":"object","nullable":true,"properties":{"commitSha":{"type":"string","nullable":true,"maxLength":40,"description":"The hash of the commit","example":"dc36199b2234c6586ebe05ec94078a895c707e29"},"commitMessage":{"type":"string","nullable":true,"maxLength":1024,"description":"The commit message","example":"add method to measure Interaction to Next Paint (INP) (#36490)"},"commitRef":{"type":"string","nullable":true,"maxLength":256,"description":"The branch or tag on which the commit was made","example":"main"},"commitDate":{"type":"string","nullable":true,"format":"date-time","description":"The date and time when the commit was created","example":"2026-03-16T12:00:00Z"},"dirty":{"type":"boolean","nullable":true,"description":"Whether or not there have been modifications to the working tree since the latest commit","example":true},"remoteUrl":{"type":"string","nullable":true,"maxLength":2048,"description":"The git repository's remote origin url","example":"https://github.com/alienplatform/alien"},"commitAuthorName":{"type":"string","nullable":true,"maxLength":256,"description":"The name of the author of the commit (from git config)","example":"John Doe"},"commitAuthorEmail":{"type":"string","nullable":true,"maxLength":256,"format":"email","description":"The email of the author of the commit (from git config)","example":"john@example.com"},"commitAuthorLogin":{"type":"string","nullable":true,"maxLength":256,"description":"The provider username of the commit author (e.g., GitHub login), resolved server-side from the commit email","example":"johndoe"},"commitAuthorAvatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"The avatar URL of the commit author, resolved server-side from the provider login","example":"https://github.com/johndoe.png"},"provider":{"$ref":"#/components/schemas/GitProvider"}}},"GitProvider":{"oneOf":[{"$ref":"#/components/schemas/GitHubProvider"},{"$ref":"#/components/schemas/GitLabProvider"},{"nullable":true}],"description":"Provider-specific repository information, resolved server-side from remoteUrl"},"GitHubProvider":{"type":"object","properties":{"type":{"type":"string","enum":["github"]},"org":{"type":"string","maxLength":256,"description":"Repository owner (user or organization)"},"repo":{"type":"string","maxLength":256,"description":"Repository name"}},"required":["type","org","repo"]},"GitLabProvider":{"type":"object","properties":{"type":{"type":"string","enum":["gitlab"]},"namespace":{"type":"string","maxLength":256,"description":"Group/project namespace"},"project":{"type":"string","maxLength":256,"description":"Project name"}},"required":["type","namespace","project"]},"Project":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","name","createdAt","workspaceId"]},"ProjectIDOrNamePathParam":{"type":"string","maxLength":100,"description":"Project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"ProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","redirectUris"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"hasClientSecret":{"type":"boolean","enum":[true]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","clientId","hasClientSecret","redirectUris"]}]},"GcpOAuthClientId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[a-zA-Z0-9_-]+-[a-zA-Z0-9_-]+\\.apps\\.googleusercontent\\.com$","description":"Google OAuth web client ID.","example":"1234567890-abc123.apps.googleusercontent.com"},"UpdateProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId"]}]},"GcpOAuthClientSecret":{"type":"string","minLength":1,"maxLength":512,"description":"Google OAuth web client secret. Write-only; never returned by the API.","example":"GOCSPX-example"},"UpdateProject":{"type":"object","properties":{"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."}}},"DeploymentPortalDomainResponse":{"type":"object","properties":{"deploymentPortalEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"},"packageEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["deploymentPortalEndpoint","packageEndpoint"]},"DomainEndpoint":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"dend_[0-9a-z]{28}$","description":"Unique identifier for the domain endpoint.","example":"dend_1bb6gdvm1bs74acqkjstcgv"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domainId":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"kind":{"$ref":"#/components/schemas/DomainEndpointKind"},"owner":{"$ref":"#/components/schemas/DomainEndpointOwner"},"hostname":{"type":"string","minLength":1,"maxLength":253},"status":{"$ref":"#/components/schemas/DomainEndpointStatus"},"provider":{"type":"string","nullable":true},"providerState":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"managedDnsRecords":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPortalManagedDnsRecord"}},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"retryAttempts":{"type":"integer","minimum":0},"nextStepAfter":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","workspaceId","domainId","kind","owner","hostname","status","managedDnsRecords","retryAttempts","createdAt","updatedAt"]},"DomainEndpointKind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"DomainEndpointOwner":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/DomainEndpointOwnerType"},"id":{"type":"string"}},"required":["type","id"]},"DomainEndpointOwnerType":{"type":"string","enum":["workspace","project","manager"]},"DomainEndpointStatus":{"type":"string","enum":["waiting_for_domain","provisioning","waiting_for_dns","waiting_for_health","active","failed","deleting"]},"DeploymentPortalManagedDnsRecord":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"value":{"type":"string"},"ttl":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true}},"required":["name","type","value"]},"DeploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments allowed in this deployment group"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","projectId","workspaceId","createdAt"]},"CreateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"project":{"type":"string","maxLength":100,"description":"Project ID or name this deployment group belongs to"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments in this deployment group"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"maxDeployments":{"type":"integer","minimum":1,"description":"Maximum number of deployments in this deployment group"}}},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateDeploymentGroupTokenRequest":{"type":"object","properties":{"description":{"type":"string","description":"Description for the API key"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"},"deploymentSetupConfig":{"$ref":"#/components/schemas/DeploymentSetupConfig"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"DeploymentSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"}},"required":["metadata","policy","environmentVariables"]},"DeploymentSetupMetadata":{"type":"object","additionalProperties":{"nullable":true}},"DeploymentSetupPolicy":{"type":"object","properties":{"allowedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"allowedDeploymentModels":{"type":"array","items":{"type":"string","enum":["push","pull","airgapped"]}},"allowedNetworkModes":{"type":"array","items":{"type":"string","enum":["none","create","default","byo"]}},"allowedUpdatesModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required"]}},"allowedTelemetryModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required","off"]}},"allowedHeartbeatsModes":{"type":"array","items":{"type":"string","enum":["on","off"]}},"allowExternalBindings":{"type":"boolean"},"allowCustomRegistry":{"type":"boolean"}}},"EnvironmentVariableConfig":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"value":{"type":"string","maxLength":10000,"description":"Variable value (encrypted in database)"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","value","type","targetResources"]},"EnvironmentVariableType":{"type":"string","enum":["plain","secret"],"description":"Variable type (plain or secret)"},"EncryptedStackInputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EncryptedStackInputValue"},"default":{}},"EncryptedStackInputValue":{"type":"object","properties":{"value":{"type":"string","description":"Encrypted JSON-encoded input value."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"]},"secret":{"type":"boolean","description":"Whether the original input is secret."}},"required":["value","kind","secret"]},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"Package":{"type":"object","properties":{"id":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"type":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Types of packages that can be built"},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string","description":"Package version (e.g., '1.0.0', 'rel_abc123')"},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"setupFingerprints":{"$ref":"#/components/schemas/SetupFingerprintMap"},"packageBuildInputHash":{"type":"string","description":"Hash of Platform-known package build request inputs: package type, source release, setup fingerprints, package config, and setup contract version"},"config":{"oneOf":[{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"}},"required":["displayName","name"],"description":"Branding configuration for the deploy CLI binary."},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for CloudFormation packages"},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"}},"required":["chartName","description"],"description":"Configuration for the Helm chart package"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"}},"required":["displayName","name"],"description":"Branding configuration for the Operator image."},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for Terraform package generation."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]}],"description":"Type-specific configuration"},"outputs":{"oneOf":[{"allOf":[{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"digest":{"type":"string","description":"Image digest (e.g., \"sha256:abc123...\")"},"image":{"type":"string","description":"Full image reference (e.g., \"public.ecr.aws/acme/operators/project-id:1.2.3\")"}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]},{"nullable":true}],"description":"Package outputs (only when status is 'ready')"},"error":{"nullable":true,"description":"Error information if status is 'failed'"},"sourceBinarySha256":{"type":"string","nullable":true,"description":"Builder-recorded source binary SHA256 (for cli/terraform packages)"},"retries":{"type":"integer","minimum":0,"description":"Number of build retries"},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","projectId","workspaceId","type","status","version","sourceReleaseId","setupFingerprints","packageBuildInputHash","config","retries","createdAt","updatedAt"]},"SetupFingerprintMap":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SetupFingerprintInfo"},"description":"Per-target setup compatibility fingerprints copied from the source release"},"SetupFingerprintInfo":{"type":"object","properties":{"target":{"$ref":"#/components/schemas/SetupTarget"},"fingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"version":{"$ref":"#/components/schemas/SetupFingerprintVersion"}},"required":["target","fingerprint","version"]},"SetupTarget":{"type":"string","minLength":1,"description":"Stable target key for the setup contract, e.g. aws/us-east-1"},"SetupFingerprint":{"type":"string","minLength":1,"description":"Deterministic setup contract fingerprint for one setup target"},"SetupFingerprintVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup fingerprint algorithm version"},"ReleaseListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Release"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"StackByPlatform":{"type":"object","properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"Release":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"projectId":{"type":"string","maxLength":128},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"workspaceId":{"type":"string","maxLength":128}},"required":["id","projectId","createdAt","stack","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256}},"required":["project"]},"ReleaseAuthorFilterItem":{"type":"object","properties":{"login":{"type":"string","nullable":true,"description":"Provider username (e.g., GitHub login)"},"name":{"type":"string","nullable":true,"description":"Git commit author name"},"avatarUrl":{"type":"string","nullable":true,"format":"uri","description":"Author avatar URL"}},"required":["login","name","avatarUrl"]},"DeploymentListItemResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint version"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if in a failed state"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"$ref":"#/components/schemas/ManagerID"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"ManagerID":{"type":"string","pattern":"mgr_[0-9a-z]{28}$","description":"ID of the manager","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"DeploymentReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","createdAt"]},"DeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"}},"required":["id","name"]},"DeploymentProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"}},"required":["id","name"]},"DeploymentStats":{"type":"object","properties":{"total":{"type":"number","description":"Total number of deployments matching filters"},"byStatus":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by status (only includes statuses with non-zero counts)"},"byPlatform":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by platform (only includes platforms with non-zero counts)"},"byCurrentRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by currentReleaseId. The empty string key represents deployments with no current release (initial provisioning)."},"byPinnedRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by pinnedReleaseId among deployments that are pinned. Excludes unpinned deployments."}},"required":["total","byStatus","byPlatform","byCurrentRelease","byPinnedRelease"]},"DeploymentDetailResponse":{"allOf":[{"$ref":"#/components/schemas/Deployment"},{"type":"object","properties":{"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}}}]},"Deployment":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"targetEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of target environment variables for the deployment"},"currentEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of current environment variables for the deployment"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentConnectionInfo":{"type":"object","properties":{"arc":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Manager URL for commands"},"deploymentId":{"type":"string","description":"Deployment ID to use in command requests"}},"required":["url","deploymentId"]},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"publicEndpoints":{"type":"object","additionalProperties":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"host":{"type":"string"},"wildcardHost":{"type":"string"}},"required":["url"]},"description":"Public endpoints keyed by endpoint name."}},"required":["type"]},"description":"Deployed resources and their public endpoints"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment"]},"NewDeploymentRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentGroupId":{"type":"string","description":"Required for workspace/project tokens. Deployment group tokens use their own group automatically."},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Optional manager to assign. If omitted, the project default or system manager is selected."}]},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"Stack settings for deployment customization"},"resourcePrefix":{"$ref":"#/components/schemas/ResourcePrefix"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method that created the deployment. Defaults to cli."}]},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup method metadata used to guide privileged teardown."}]},"inputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{},"description":"Stack input values provided by the deployment creator."}},"required":["name","platform","project"],"additionalProperties":false,"description":"Request schema for creating a new deployment"},"ResourcePrefix":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?=[a-z0-9])){1,38}[a-z0-9]$","description":"Optional physical-name prefix for generated cloud resources. Omit to let the manager generate one."},"ImportDeploymentRequest":{"oneOf":[{"$ref":"#/components/schemas/ForwardImportRequest"},{"$ref":"#/components/schemas/PersistImportedDeploymentRequest"}],"description":"Request schema for importing a deployment from resolved setup infrastructure"},"ForwardImportRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["forward"],"default":"forward"},"project":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user-session callers."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Required for user-session callers. Deployment-group tokens use their own group automatically.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager ID. If omitted, the first suitable manager for the source platform is used."}]},"source":{"$ref":"#/components/schemas/ImportSource"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["source"]},"ImportSource":{"type":"object","properties":{"deploymentName":{"type":"string","minLength":1,"description":"User-chosen deployment name. Must be unique within the deployment group; the manager returns 409 on collision."},"resourcePrefix":{"allOf":[{"$ref":"#/components/schemas/ResourcePrefix"},{"description":"Stable physical-name prefix used by the setup artifact."}]},"sourceKind":{"$ref":"#/components/schemas/ImportSourceKind"},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup source metadata needed to guide privileged teardown."}]},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release that produced the setup artifact. Defaults to latest.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Cloud platform of the imported stack"},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"region":{"type":"string","description":"Region or location reported by the setup artifact"},"setupTarget":{"allOf":[{"$ref":"#/components/schemas/SetupTarget"},{"description":"Setup target this package was generated for"}]},"setupImportFormatVersion":{"$ref":"#/components/schemas/SetupImportFormatVersion"},"setupFingerprint":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprint"},{"description":"Setup compatibility fingerprint embedded in the package"}]},"setupFingerprintVersion":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintVersion"},{"description":"Setup fingerprint algorithm version embedded in the package"}]},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ImportedResource"},"minItems":1}},"required":["deploymentName","resourcePrefix","platform","region","setupTarget","setupImportFormatVersion","setupFingerprint","setupFingerprintVersion","stackSettings","resources"],"description":"Resolved setup import payload"},"ImportSourceKind":{"type":"string","enum":["cloudformation","terraform","helm"],"description":"Source label for observability only — does not affect import behavior."},"KubernetesBasePlatform":{"type":"string","enum":["aws","gcp","azure"],"description":"Base cloud platform for cloud-backed Kubernetes imports."},"SetupImportFormatVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup import payload format version embedded in the package"},"ImportedResource":{"type":"object","properties":{"id":{"type":"string","description":"Resource id from the active stack"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"importData":{"type":"object","additionalProperties":{"nullable":true},"description":"Resolved typed import payload"}},"required":["id","type","importData"]},"PersistImportedDeploymentRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["persist"]},"name":{"type":"string","minLength":1,"description":"Deployment name. Must be unique within the deployment group."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"stackState":{"nullable":true},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"runtimeMetadata":{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"default":"provisioning","description":"Deployment status in the deployment lifecycle"},"currentReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"setupMetadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"setupTarget":{"$ref":"#/components/schemas/SetupTarget"},"setupFingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"setupFingerprintVersion":{"$ref":"#/components/schemas/SetupFingerprintVersion"},"deploymentToken":{"type":"string"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["mode","name","deploymentGroupId","managerId","platform","stackSettings","runtimeMetadata","deploymentProtocolVersion","setupTarget","setupFingerprint","setupFingerprintVersion"]},"SetFirstPartyDeploymentInputsResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"SetFirstPartyDeploymentInputsRequest":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["platform"]},"SetupRegistrationOperationResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"status":{"$ref":"#/components/schemas/SetupRegistrationOperationStatus"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"physicalResourceId":{"type":"string","nullable":true},"result":{"$ref":"#/components/schemas/SetupRegistrationOperationResult"},"error":{"type":"object","nullable":true,"properties":{"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["message","retryable"]}},"required":["id","action","sourceKind","status","deploymentId","physicalResourceId","result","error"]},"SetupRegistrationAction":{"type":"string","enum":["create","update","delete"]},"SetupRegistrationOperationStatus":{"type":"string","enum":["pending","processing","waiting-for-handoff","succeeded","failed","responding","responded"]},"SetupRegistrationOperationResult":{"type":"object","nullable":true,"properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentToken":{"type":"string","nullable":true},"helmValues":{"type":"string","nullable":true}},"required":["deploymentId","deploymentToken","helmValues"]},"CreateSetupRegistrationOperationRequest":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"source":{"allOf":[{"$ref":"#/components/schemas/ImportSource"}],"nullable":true},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":512},"cloudFormation":{"$ref":"#/components/schemas/SetupRegistrationCloudFormationTarget"}},"required":["action","sourceKind"],"additionalProperties":false},"SetupRegistrationCloudFormationTarget":{"type":"object","nullable":true,"properties":{"stackId":{"type":"string","minLength":1},"requestId":{"type":"string","minLength":1},"logicalResourceId":{"type":"string","minLength":1},"responseUrl":{"type":"string","format":"uri"},"physicalResourceId":{"type":"string","nullable":true,"minLength":1},"serviceTimeoutSeconds":{"type":"integer","minimum":60,"maximum":7200,"default":3300}},"required":["stackId","requestId","logicalResourceId","responseUrl"],"additionalProperties":false},"DeleteDeploymentResponse":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]},"message":{"type":"string"}},"required":["action","message"]},"DeleteDeploymentRequest":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]}},"required":["action"]},"PinReleaseRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release ID to pin the deployment to. Set to null to unpin and use active release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for pinning/unpinning deployment release"},"UpdateDeploymentEnvironmentVariablesRequest":{"type":"object","properties":{"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"value":{"type":"string","description":"Variable value"},"type":{"type":"string","enum":["plain","secret"],"description":"Variable type"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources)"}},"required":["name","value","type"]},"description":"Environment variables for the deployment"}},"required":["variables"],"additionalProperties":false,"description":"Request schema for updating deployment environment variables"},"CreateDeploymentTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The generated deployment token (only shown once)"},"deploymentId":{"type":"string","description":"The deployment ID that this token is scoped to"}},"required":["token","deploymentId"]},"CreateDeploymentTokenRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128,"description":"Optional description for the deployment token"},"expiresAt":{"type":"string","format":"date-time","description":"Optional expiration date for the deployment token"}},"required":["description"]},"CreateManagerResponse":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["pending"]},"setupToken":{"type":"string"},"setupTokenId":{"type":"string"},"deploymentLink":{"type":"string"},"setupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["plain","secret"]},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"}}},"required":["name","type","targetResources"]}}},"required":["metadata","policy","environmentVariables"]},"setup":{"oneOf":[{"type":"object","properties":{"method":{"type":"string","enum":["cloudformation"]},"deploymentPortalUrl":{"type":"string"},"launchUrl":{"type":"string"},"templateUrl":{"type":"string"},"stackName":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","launchUrl","templateUrl","stackName","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["google-oauth"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"oauthStartUrl":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","oauthStartUrl","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["terraform"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"providerSource":{"type":"string"},"moduleSource":{"type":"string"},"moduleVersion":{"type":"string"},"moduleInputs":{"type":"object","additionalProperties":{"type":"string"}},"mainTf":{"type":"string"},"tfvars":{"type":"string"},"commands":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","providerSource","moduleSource","moduleInputs","mainTf","tfvars","commands","stackSettings"]}]}},"required":["managerId","setupStatus","setupToken","setupTokenId","deploymentLink","setupConfig","setup"]},"NewManagerRequest":{"type":"object","properties":{"name":{"type":"string"},"cloud":{"$ref":"#/components/schemas/PrivateManagerCloud"},"region":{"type":"string","minLength":1,"maxLength":64,"description":"Cloud region for the manager."},"setupMethod":{"$ref":"#/components/schemas/PrivateManagerSetupMethod"},"network":{"type":"string","enum":["create","default"],"description":"Optional network mode for the private-manager setup. Defaults to create for production isolation; default uses the provider default network for faster dev/test setup."},"otlpConfig":{"type":"object","properties":{"logsEndpoint":{"type":"string","format":"uri","description":"External OTLP logs endpoint (e.g. https://api.axiom.co/v1/logs)"},"logsAuthHeader":{"type":"string","description":"Auth header in 'key=value,...' format (e.g. 'authorization=Bearer ,x-axiom-dataset=')"}},"required":["logsEndpoint","logsAuthHeader"],"description":"Optional external OTLP config for forwarding logs to Axiom, Datadog, etc. Falls back to built-in DeepStore when not set."}},"required":["name","cloud","region"]},"PrivateManagerCloud":{"type":"string","enum":["aws","gcp","azure"],"description":"Cloud where the private manager will be deployed."},"PrivateManagerSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform"],"description":"Optional setup method. Defaults to cloudformation for AWS, google-oauth for GCP, and terraform for Azure."},"ManagerRetryResponse":{"oneOf":[{"allOf":[{"$ref":"#/components/schemas/CreateManagerResponse"},{"type":"object","properties":{"mode":{"type":"string","enum":["setup"]}},"required":["mode"]}]},{"$ref":"#/components/schemas/ManagerRetryDeploymentResponse"}]},"ManagerRetryDeploymentResponse":{"type":"object","properties":{"mode":{"type":"string","enum":["deployment"]},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["provisioning"]},"deploymentId":{"type":"string"},"message":{"type":"string"}},"required":["mode","managerId","setupStatus","deploymentId","message"]},"Manager":{"type":"object","properties":{"id":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for the manager"}]},"name":{"type":"string","description":"Display name of the manager"},"targets":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where this private manager is deployed"},"region":{"type":"string","nullable":true,"description":"Cloud region selected for this private manager"},"setupStatus":{"type":"string","nullable":true,"enum":["pending","provisioning","active","failed","deleting","deleted",null],"description":"Private manager setup lifecycle status"},"url":{"type":"string","nullable":true,"format":"uri","description":"Manager URL (self-reported via heartbeat). DeepStore endpoints are exposed through this URL (e.g., {url}/v1/logs)"},"managementConfigs":{"$ref":"#/components/schemas/ManagerManagementConfigs"},"isSystem":{"type":"boolean","description":"Whether this is a system manager (Alien-hosted)"},"workspaceId":{"type":"string","description":"The workspace ID (for system managers, this is ALIEN_WORKSPACE_ID)"},"status":{"$ref":"#/components/schemas/ManagerStatus"},"version":{"type":"string","nullable":true,"description":"Manager version (self-reported via heartbeat)"},"metrics":{"type":"object","nullable":true,"properties":{"activeDeployments":{"type":"number","description":"Number of active deployments"},"pendingDeployments":{"type":"number","description":"Number of pending deployments"},"memoryUsageMb":{"type":"number","description":"Memory usage in megabytes"},"cpuUsagePercent":{"type":"number","description":"CPU usage percentage"}},"description":"Runtime metrics (self-reported via heartbeat)"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the manager"},"logsDatabaseId":{"type":"string","nullable":true,"description":"ID of the logs database associated with this manager"},"managedDeploymentCount":{"type":"integer","minimum":0,"description":"Number of deployments currently being managed by this manager"},"defaultProjectCount":{"type":"integer","minimum":0,"description":"Number of projects that select this manager as a default manager"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the manager was created"}},"required":["id","name","targets","managementConfigs","isSystem","workspaceId","status","managedDeploymentCount","defaultProjectCount","createdAt"],"description":"Manager schema"},"ManagerManagementConfigs":{"type":"object","properties":{"aws":{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"},"platform":{"type":"string","enum":["aws"]}},"required":["managingRoleArn","platform"]},"gcp":{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"},"platform":{"type":"string","enum":["gcp"]}},"required":["serviceAccountEmail","platform"]},"azure":{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."},"platform":{"type":"string","enum":["azure"]}},"required":["managingTenantId","oidcIssuer","oidcSubject","platform"]},"kubernetes":{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}},"description":"Per-platform management configurations for cross-account access (self-reported via heartbeat)"},"ManagerStatus":{"type":"string","enum":["healthy","degraded","unhealthy","unknown"],"description":"Current health status"},"ManagerDomainBindingResponse":{"type":"object","properties":{"managerDomainBinding":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["managerDomainBinding"]},"UpdateManagerDomainBinding":{"type":"object","properties":{"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"}},"additionalProperties":false},"UpdateManagerRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Optional release ID to update to. If not provided, the active release will be chosen","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for updating a manager to a new release"},"Event":{"type":"object","properties":{"id":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"debugSessionId":{"type":"string","nullable":true,"pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"data":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["LoadingConfiguration"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["Finished"]}},"required":["type"]},{"type":"object","properties":{"stack":{"type":"string","description":"Name of the stack being built"},"type":{"type":"string","enum":["BuildingStack"]}},"required":["stack","type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform being targeted"},"stack":{"type":"string","description":"Name of the stack being checked"},"type":{"type":"string","enum":["RunningPreflights"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"targetTriple":{"type":"string","description":"Target triple for the runtime"},"type":{"type":"string","enum":["DownloadingAlienRuntime"]},"url":{"type":"string","description":"URL being downloaded from"}},"required":["targetTriple","type","url"]},{"type":"object","properties":{"relatedResources":{"type":"array","items":{"type":"string"},"description":"All resource names sharing this build (for deduped container groups)"},"resourceName":{"type":"string","description":"Name of the resource being built"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["BuildingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being built"},"type":{"type":"string","enum":["BuildingImage"]}},"required":["image","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being pushed"},"progress":{"oneOf":[{"type":"object","properties":{"bytesUploaded":{"type":"integer","minimum":0,"description":"Bytes uploaded so far"},"layersUploaded":{"type":"integer","minimum":0,"description":"Number of layers uploaded so far"},"operation":{"type":"string","description":"Current operation being performed"},"totalBytes":{"type":"integer","minimum":0,"description":"Total bytes to upload"},"totalLayers":{"type":"integer","minimum":0,"description":"Total number of layers to upload"}},"required":["bytesUploaded","layersUploaded","operation","totalBytes","totalLayers"],"description":"Progress information for image push operations"},{"nullable":true}]},"type":{"type":"string","enum":["PushingImage"]}},"required":["image","type"]},{"type":"object","properties":{"destination":{"type":"string","nullable":true,"description":"Human-readable destination for pushed images"},"platform":{"type":"string","description":"Target platform"},"stack":{"type":"string","description":"Name of the stack being pushed"},"type":{"type":"string","enum":["PushingStack"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"resourceName":{"type":"string","description":"Name of the resource being pushed"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["PushingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"project":{"type":"string","description":"Project name"},"type":{"type":"string","enum":["CreatingRelease"]}},"required":["project","type"]},{"type":"object","properties":{"language":{"type":"string","description":"Language being compiled (rust, typescript, etc.)"},"progress":{"type":"string","nullable":true,"description":"Current progress/status line from the build output"},"type":{"type":"string","enum":["CompilingCode"]}},"required":["language","type"]},{"type":"object","properties":{"nextState":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},"suggestedDelayMs":{"type":"integer","nullable":true,"minimum":0,"description":"An suggested duration to wait before executing the next step."},"type":{"type":"string","enum":["StackStep"]}},"required":["nextState","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["GeneratingCloudFormationTemplate"]}},"required":["type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform for which the template is being generated"},"type":{"type":"string","enum":["GeneratingTemplate"]}},"required":["platform","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being provisioned"},"releaseId":{"type":"string","description":"ID of the release being deployed to the agent"},"type":{"type":"string","enum":["ProvisioningAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being updated"},"releaseId":{"type":"string","description":"ID of the new release being deployed to the agent"},"type":{"type":"string","enum":["UpdatingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being deleted"},"releaseId":{"type":"string","description":"ID of the release that was running on the agent"},"type":{"type":"string","enum":["DeletingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being debugged"},"debugSessionId":{"type":"string","description":"ID of the debug session"},"type":{"type":"string","enum":["DebuggingAgent"]}},"required":["agentId","debugSessionId","type"]},{"type":"object","properties":{"strategyName":{"type":"string","description":"Name of the deployment strategy being used"},"type":{"type":"string","enum":["PreparingEnvironment"]}},"required":["strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being deployed"},"type":{"type":"string","enum":["DeployingStack"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being tested"},"type":{"type":"string","enum":["RunningTestWorker"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpStack"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpEnvironment"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"platformName":{"type":"string","description":"Name of the platform (e.g., \"AWS\", \"GCP\")"},"type":{"type":"string","enum":["SettingUpPlatformContext"]}},"required":["platformName","type"]},{"type":"object","properties":{"repositoryName":{"type":"string","description":"Name of the docker repository"},"type":{"type":"string","enum":["EnsuringDockerRepository"]}},"required":["repositoryName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeployingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"roleArn":{"type":"string","description":"ARN of the role to assume"},"type":{"type":"string","enum":["AssumingRole"]}},"required":["roleArn","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"type":{"type":"string","enum":["ImportingStackStateFromCloudFormation"]}},"required":["cfnStackName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeletingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"bucketNames":{"type":"array","items":{"type":"string"},"description":"Names of the S3 buckets being emptied"},"type":{"type":"string","enum":["EmptyingBuckets"]}},"required":["bucketNames","type"]},{"type":"object","properties":{"deploymentGroupId":{"type":"string","description":"ID of the deployment group this slot belongs to"},"deploymentId":{"type":"string","description":"ID of the deployment that was created"},"releaseId":{"type":"string","nullable":true,"description":"Initial release the slot was created with, if any"},"type":{"type":"string","enum":["DeploymentCreated"]}},"required":["deploymentGroupId","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously live, if any"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentReleased"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release the platform was trying to deploy, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"phase":{"type":"string","enum":["preflights","provisioning","updating","deleting"],"description":"Phase of a deployment at which a failure occurred.\n\nDerived from the source deployment status: `preflights-failed` →\n`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` →\n`Updating`, `delete-failed` → `Deleting`.\n`refresh-failed` is modelled separately via `DeploymentDegraded`."},"type":{"type":"string","enum":["DeploymentFailed"]}},"required":["deploymentId","error","phase","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"type":{"type":"string","enum":["DeploymentDegraded"]}},"required":["deploymentId","error","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentRecovered"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment that was deleted"},"type":{"type":"string","enum":["DeploymentDeleted"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release that the failed attempt was targeting, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousError":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"type":{"type":"string","enum":["DeploymentRetryRequested"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release being redeployed"},"type":{"type":"string","enum":["DeploymentRedeployRequested"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"pinnedReleaseId":{"type":"string","description":"ID of the release that is now pinned"},"previousPinnedReleaseId":{"type":"string","nullable":true,"description":"ID of the previously pinned release, if any"},"type":{"type":"string","enum":["DeploymentReleasePinned"]}},"required":["deploymentId","pinnedReleaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousPinnedReleaseId":{"type":"string","description":"ID of the release that was previously pinned"},"type":{"type":"string","enum":["DeploymentReleaseUnpinned"]}},"required":["deploymentId","previousPinnedReleaseId","type"]},{"type":"object","properties":{"changedKeys":{"type":"array","items":{"type":"string"},"description":"Names of the environment variables that changed (added, removed, or modified)"},"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentEnvironmentUpdated"]}},"required":["changedKeys","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentDeletionRequested"]}},"required":["deploymentId","type"]}]},"state":{"oneOf":[{"type":"object","properties":{"failed":{"type":"object","properties":{"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]}},"description":"Event failed with an error"}},"required":["failed"]},{"type":"string","enum":["none"]},{"type":"string","enum":["started"]},{"type":"string","enum":["success"]}],"description":"Represents the state of an event"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","data","state","projectId","createdAt","workspaceId"]},"GenerateManagerTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string","description":"Platform JWT for authenticating with the manager"},"expiresIn":{"type":"number","nullable":true,"description":"Token lifetime in seconds"},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string","description":"Manager URL for direct access"},"databaseId":{"type":"string","nullable":true,"description":"Log database ID (null if logs not configured)"},"controlPlaneUrl":{"type":"string","nullable":true,"description":"Log control plane URL (null if logs not configured)"}},"required":["accessToken","expiresIn","tokenType","managerUrl","databaseId","controlPlaneUrl"]},"GenerateManagerTokenRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to scope token access to. When omitted, the token is scoped to all projects accessible by the current user."}}},"ResolveManagerGcpOAuthProviderResponse":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId","clientSecret"]}]},"ResolveManagerGcpOAuthProviderRequest":{"type":"object","properties":{"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group bearer token whose project-level OAuth provider should be resolved."},"returnOrigin":{"type":"string","format":"uri","description":"Browser origin that will receive the Google OAuth callback result. Must be a first-party dashboard origin or the active portal origin for the deployment group's project."}},"required":["deploymentGroupToken"]},"ManagerHeartbeatResponse":{"type":"object","properties":{"acknowledged":{"type":"boolean"},"timestamp":{"type":"string"}},"required":["acknowledged","timestamp"]},"ManagerHeartbeatRequest":{"type":"object","properties":{"status":{"type":"string","enum":["healthy","degraded","unhealthy"],"description":"Current health status"},"version":{"type":"string","description":"Manager version"},"url":{"type":"string","format":"uri","description":"Manager public URL (for accessing DeepStore endpoints)"},"managementConfigs":{"allOf":[{"$ref":"#/components/schemas/ManagerManagementConfigs"},{"description":"Per-platform management configurations for cross-account access"}]},"metrics":{"type":"object","properties":{"activeDeployments":{"type":"number"},"pendingDeployments":{"type":"number"},"memoryUsageMb":{"type":"number"},"cpuUsagePercent":{"type":"number"}},"description":"Optional runtime metrics"}},"required":["status","url","managementConfigs"]},"ManagerDeployment":{"type":"object","properties":{"platform":{"type":"string","description":"Platform of the internal deployment"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status of the internal deployment"},"deploymentId":{"type":"string","description":"Internal deployment ID"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Currently deployed private manager release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Target private manager release for an in-progress update","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"error":{"nullable":true,"description":"Latest provision / upgrade / delete error"},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type"},"status":{"type":"string","description":"Resource status"},"outputs":{"type":"object","additionalProperties":{"nullable":true},"description":"Resource outputs"}},"required":["type","status"]},"description":"Simplified stack state resources"},"environmentInfo":{"nullable":true,"description":"Manager environment info"}},"required":["platform","status","deploymentId","resources"]},"APIKey":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"},"createdByUser":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"email":{"type":"string"},"image":{"type":"string","nullable":true}},"required":["id","email","image"],"description":"User information associated with the API key"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig","createdByUser"],"description":"API key information"},"APIKeyDeploymentSetupConfig":{"type":"object","nullable":true,"properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/APIKeyDeploymentSetupEnvironmentVariable"}}},"required":["metadata","policy","environmentVariables"]},"APIKeyDeploymentSetupEnvironmentVariable":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]},"CreateAPIKeyResponse":{"type":"object","properties":{"apiKey":{"type":"string","description":"The generated API key value (only shown once)"},"keyInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig"]}},"required":["apiKey","keyInfo"],"description":"Response containing the new API key and its metadata"},"CreateAPIKeyRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"scope":{"$ref":"#/components/schemas/Scope"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"required":["description","scope","expiresAt"],"description":"Request schema for creating a new API key"},"Scope":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceScope"},{"$ref":"#/components/schemas/ProjectScope"},{"$ref":"#/components/schemas/DeploymentScope"},{"$ref":"#/components/schemas/DeploymentGroupScope"},{"$ref":"#/components/schemas/ManagerScope"}],"discriminator":{"propertyName":"type","mapping":{"workspace":"#/components/schemas/WorkspaceScope","project":"#/components/schemas/ProjectScope","deployment":"#/components/schemas/DeploymentScope","deployment-group":"#/components/schemas/DeploymentGroupScope","manager":"#/components/schemas/ManagerScope"}},"description":"Scope and role configuration for service accounts"},"WorkspaceScope":{"type":"object","properties":{"type":{"type":"string","enum":["workspace"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["type","role"],"description":"Workspace-scoped configuration"},"ProjectScope":{"type":"object","properties":{"type":{"type":"string","enum":["project"]},"projectId":{"type":"string","description":"ID of the project this is scoped to"},"role":{"$ref":"#/components/schemas/ProjectRole"}},"required":["type","projectId","role"],"description":"Project-scoped configuration"},"DeploymentScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment"]},"deploymentId":{"type":"string","description":"ID of the deployment this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"},"role":{"$ref":"#/components/schemas/DeploymentRole"}},"required":["type","deploymentId","projectId","role"],"description":"Deployment-scoped configuration"},"DeploymentGroupScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"]},"deploymentGroupId":{"type":"string","description":"ID of the deployment group this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"},"role":{"$ref":"#/components/schemas/DeploymentGroupRole"}},"required":["type","deploymentGroupId","projectId","role"],"description":"Deployment group-scoped configuration"},"ManagerScope":{"type":"object","properties":{"type":{"type":"string","enum":["manager"]},"managerId":{"type":"string","description":"ID of the manager this is scoped to"},"role":{"$ref":"#/components/schemas/ManagerRole"}},"required":["type","managerId","role"],"description":"Manager-scoped configuration"},"UpdateAPIKeyRequest":{"type":"object","properties":{"enabled":{"type":"boolean"},"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"deploymentSetupConfig":{"$ref":"#/components/schemas/UpdateDeploymentSetupPolicy"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"description":"Request schema for updating an API key"},"UpdateDeploymentSetupPolicy":{"type":"object","properties":{"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"}},"required":["policy"],"description":"Editable part of a deployment link's setup config. Locked env vars and input values are preserved."},"DeleteAPIKeysRequest":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"minItems":1}},"required":["ids"]},"DomainWithUsage":{"allOf":[{"$ref":"#/components/schemas/Domain"},{"type":"object","properties":{"endpoints":{"type":"array","items":{"$ref":"#/components/schemas/DomainEndpoint"}},"usage":{"type":"object","properties":{"deploymentUrlProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"portalBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true},"hostname":{"type":"string"}},"required":["id","projectId","projectName","hostname"]}},"packageDomains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"type":"string"}},"required":["id","hostname"]}},"managerBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"managerId":{"type":"string"},"managerName":{"type":"string"},"hostname":{"type":"string"}},"required":["id","managerId","managerName","hostname"]}}},"required":["deploymentUrlProjects","portalBindings","packageDomains","managerBindings"]}},"required":["endpoints","usage"]}]},"Domain":{"type":"object","properties":{"id":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domain":{"type":"string"},"isSystem":{"type":"boolean"},"claimToken":{"type":"string"},"hostedZoneId":{"type":"string","nullable":true},"nameServers":{"type":"array","nullable":true,"items":{"type":"string"}},"status":{"type":"string","enum":["pending-zone-creation","pending-verification","verified","lost-verification","failed","deleting"]},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","workspaceId","domain","isSystem","claimToken","status","createdAt","updatedAt"]},"CommandListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Command"},{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/CommandDeploymentInfo"},"project":{"$ref":"#/components/schemas/CommandProjectInfo"}}}]},"CommandDeploymentInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"$ref":"#/components/schemas/CommandDeploymentGroupInfo"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"managerId":{"type":"string","description":"Manager ID for obtaining access tokens"},"managerUrl":{"type":"string","nullable":true,"format":"uri","description":"URL of the manager for direct payload access"},"managerName":{"type":"string","nullable":true,"description":"Human-readable name of the manager"},"managerIsSystem":{"type":"boolean","nullable":true,"description":"Whether the manager is Alien-hosted (system)"}},"required":["id","name","managerId"]},"CommandDeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"CommandProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string"}},"required":["id","name"]},"Command":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","description":"Command name (e.g., 'analyze-repository', 'sync-data')"},"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Command states in the Commands protocol lifecycle"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model captured from deployment at creation time"},"attempt":{"type":"number","nullable":true,"description":"Current attempt number"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","nullable":true,"description":"Size of command params in bytes"},"responseSizeBytes":{"type":"number","nullable":true,"description":"Size of command response in bytes"},"createdAt":{"type":"string","format":"date-time","description":"When the command was created"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command was dispatched to the deployment"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command completed"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if command failed"},"result":{"nullable":true,"description":"Decoded command result when available"}},"required":["id","deploymentId","projectId","workspaceId","name","state","deploymentModel","attempt","deadline","requestSizeBytes","responseSizeBytes","createdAt","dispatchedAt","completedAt","error"]},"ListCommandNamesResponse":{"type":"object","properties":{"names":{"type":"array","items":{"type":"string"}}},"required":["names"]},"ListCommandDeploymentsResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"required":["id","name"]}}},"required":["deployments"]},"CreateCommandResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"projectId":{"type":"string","description":"Project ID (for manager to use in routing)"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"How to dispatch the command"}},"required":["id","projectId","deploymentModel"]},"CreateCommandRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Target deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Command name (e.g., 'analyze-repository')"},"params":{"nullable":true,"description":"Command parameters for public invocation"},"initialState":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Initial state (PENDING_UPLOAD if params require upload, PENDING if inline)"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Size of command params in bytes"}},"required":["deploymentId","name"]},"UpdateCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"New command state"},"attempt":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Current attempt number"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command was dispatched"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command completed"},"responseSizeBytes":{"type":"number","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Size of response in bytes"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if failed"}}},"DebugSessionListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DebugSession"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"},"DebugSession":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"owner":{"type":"string","nullable":true,"maxLength":128},"state":{"$ref":"#/components/schemas/DebugSessionState"},"mode":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"provider":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Represents the target cloud platform."},"presignedUrls":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DebugPackagePresignedURLs"}},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","state","mode","presignedUrls","createdAt","expiresAt","deploymentId","projectId","workspaceId"]},"DebugSessionState":{"type":"string","enum":["pending","running","stopping","stopped","expired","failed"]},"DebugPackagePresignedURLs":{"type":"object","properties":{"readUrl":{"type":"string","maxLength":2048,"format":"uri"},"writeUrl":{"type":"string","maxLength":2048,"format":"uri"}},"required":["readUrl","writeUrl"]},"CreateDebugSessionRequest":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Override the generated id. Manager passes the registry session id so logs correlate.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"owner":{"type":"string","nullable":true,"maxLength":128},"expiresAt":{"type":"string","format":"date-time"},"state":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Initial state. Defaults to 'pending'."}]}},"required":["deploymentId","expiresAt"]},"UpdateDebugSessionRequest":{"type":"object","properties":{"state":{"$ref":"#/components/schemas/DebugSessionState"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"expiresAt":{"type":"string","format":"date-time"}}},"DeploymentInfo":{"type":"object","properties":{"tokenType":{"type":"string","enum":["deployment","deployment-group"],"description":"Type of token used to authenticate this request"},"deployment":{"type":"object","properties":{"name":{"type":"string"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"required":["name","platform"],"description":"Deployment details (present when using a deployment-scoped token)"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"}},"required":["id","name"],"description":"Deployment group details (present when using a deployment-group token)"},"workspace":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name"]},"project":{"type":"object","properties":{"name":{"type":"string"},"portal":{"type":"object","properties":{"appearance":{"$ref":"#/components/schemas/DeploymentPortalAppearance"}},"required":["appearance"]},"stackSummary":{"type":"object","nullable":true,"properties":{"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"publicHttpsEndpoints":{"type":"integer","minimum":0,"description":"Resources that declare managed public HTTPS endpoint setup"},"externalInfra":{"type":"integer","minimum":0,"description":"Storage, queue, KV, vault, database, or cache resources that Kubernetes needs Terraform to provision"},"total":{"type":"integer","minimum":0}},"required":["workers","containers","publicHttpsEndpoints","externalInfra","total"]},"publicEndpoints":{"type":"array","items":{"type":"object","properties":{"resourceId":{"type":"string"},"endpointName":{"type":"string"},"hostLabel":{"type":"string"},"wildcardSubdomains":{"type":"boolean"}},"required":["resourceId","endpointName","hostLabel","wildcardSubdomains"]},"description":"Public endpoints declared by the active release stack"}},"required":["platforms","resourceCounts","publicEndpoints"]}},"required":["name","portal"]},"packages":{"type":"object","properties":{"ready":{"type":"boolean","description":"True if all enabled packages are ready for deployment"},"cli":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"commandName":{"type":"string","description":"CLI command name to use in install instructions"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},"error":{"nullable":true},"installScripts":{"type":"object","properties":{"windows":{"type":"string","format":"uri"},"mac":{"type":"string","format":"uri"},"linux":{"type":"string","format":"uri"}},"required":["windows","mac","linux"],"description":"Install script URLs for each OS"}},"required":["status","commandName","installScripts"]},"cloudformation":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},"error":{"nullable":true},"mode":{"type":"string","enum":["auto","outputs"]},"launchUrl":{"type":"string","format":"uri","description":"CloudFormation launch URL"},"outputsSchema":{"nullable":true}},"required":["status","mode","launchUrl"]},"terraform":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},"error":{"nullable":true},"providerSource":{"type":"string","description":"Terraform provider source (without https://)"},"moduleSources":{"type":"object","additionalProperties":{"type":"string"},"description":"Terraform module sources by target"},"moduleVersion":{"type":"string"},"managerUrls":{"type":"object","additionalProperties":{"type":"string"},"description":"Manager URLs by Terraform target"}},"required":["status","providerSource","moduleSources","managerUrls"]},"helm":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},"error":{"nullable":true},"chartRef":{"type":"string","description":"OCI chart reference"},"managerFetchExample":{"type":"string"},"localImportExample":{"type":"string"}},"required":["status","chartRef"]}},"required":["ready"]},"installContext":{"type":"object","properties":{"targets":{"type":"object","additionalProperties":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managerUrl":{"type":"string","format":"uri"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"awsManagingAccountId":{"type":"string"}},"required":["platform","managerUrl"]},"description":"Deployment-session install context by Terraform/installer target"}},"required":["targets"]},"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"},"setupConfig":{"$ref":"#/components/schemas/DeploymentInfoSetupConfig"}},"required":["tokenType","workspace","project","packages","installContext","supportedRegions"]},"DeploymentPortalAppearance":{"type":"object","properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}}},"SupportedCloudRegions":{"type":"object","properties":{"aws":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by this Alien environment."},"gcp":{"type":"array","items":{"type":"string"},"description":"GCP regions supported by this Alien environment."},"azure":{"type":"array","items":{"type":"string"},"description":"Azure locations supported by this Alien environment."}},"required":["aws","gcp","azure"]},"DeploymentInfoSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]}},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."}},"inputValues":{"type":"array","items":{"$ref":"#/components/schemas/ResolvedStackInputSummary"}}},"required":["metadata","policy","environmentVariables"]},"ResolvedStackInputSummary":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"]}},"required":{"type":"boolean"},"secret":{"type":"boolean"},"provided":{"type":"boolean"}},"required":["id","label","providedBy","required","secret","provided"]},"DeploymentComputePlan":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string"},"workloads":{"type":"array","items":{"type":"string"}},"requirements":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"scale":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["fixed"]},"machines":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","machines"]},{"type":"object","properties":{"type":{"type":"string","enum":["autoscale"]},"min":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]},"max":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","min","max"]}]},"selected":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"recommended":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"machines":{"type":"array","items":{"type":"object","properties":{"machine":{"type":"string"},"profile":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"recommended":{"type":"boolean"}},"required":["machine","profile","recommended"]}},"errors":{"type":"array","items":{"type":"string"}}},"required":["poolId","workloads","requirements","scale","selected","recommended","machines"]}}},"required":["pools"]},"PreparedDeploymentStack":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"setup":{"$ref":"#/components/schemas/SetupFingerprintInfo"}},"required":["platform","stack","setup"]},"SyncListResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"userEnvironmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"deploymentToken":{"type":"string","nullable":true},"lockedBy":{"type":"string","nullable":true},"lockedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId","userEnvironmentVariables"]}}},"required":["deployments"],"description":"Full deployment records for manager operation"},"SyncListRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. Manager-scoped tokens are always constrained to their own manager ID."}]},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to include"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by deployment platform"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Filter by deployment group ID","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Maximum records to return"}},"additionalProperties":false,"description":"Request to list full operational deployments"},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the acquired deployment","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Deployment group ID the deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method recorded on the deployment when it has a setup-owned path."}]},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state (includes releases)"},"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration"}},"required":["deploymentId","projectId","deploymentGroupId","current","config"]},"description":"List of acquired deployments with deployment context"},"failures":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the deployment that failed","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"error":{"allOf":[{"$ref":"#/components/schemas/APIError"},{"description":"Error that occurred during context building"}]}},"required":["deploymentId","projectId","error"]},"description":"List of deployments that failed during context building (locks already released)"}},"required":["deployments","failures"],"description":"Acquired deployments and failures"},"SyncAcquireRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. If omitted, resolved from each deployment's managerId column."}]},"session":{"type":"string","description":"Unique session identifier for lock tracking"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to lock (for Pull model sync)"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by platforms (default: all platforms the Manager supports)"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Filter by setup method for setup-owned acquisition paths"}]},"acquireMode":{"type":"string","enum":["runtime","setup-run","setup-teardown"],"description":"Phase ownership mode for deployment acquisition"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model from stackSettings.deploymentModel (Manager should use 'push')"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session"],"additionalProperties":false,"description":"Request to acquire deployments for processing"},"SyncReconcileResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the state was reconciled"},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state after reconciliation"},"target":{"type":"object","properties":{"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration\n\nConfiguration for how to perform the deployment.\nNote: Credentials (ClientConfig) are passed separately to step() function."},"releaseInfo":{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."}},"required":["config","releaseInfo"],"description":"Target deployment if update is needed"}},"required":["success","current"],"description":"State reconciliation result with optional target"},"SyncReconcileRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to reconcile state for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Lock session (push model only) - verifies lock ownership"},"state":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Complete deployment state after step() execution"},"updateHeartbeat":{"type":"boolean","description":"Update heartbeat timestamp (for successful health checks)"},"suggestedDelayMs":{"type":"integer","minimum":0,"description":"Delay before this deployment should be acquired again."},"heartbeats":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"description":"Latest typed resource heartbeats collected during this step."}},"required":["deploymentId","state"],"additionalProperties":false,"description":"Request to reconcile deployment state"},"SyncReleaseRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to release","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Session identifier to release"}},"required":["deploymentId","session"],"additionalProperties":false,"description":"Request to release deployment lock"},"ResolveResponse":{"type":"object","properties":{"managerId":{"type":"string","description":"Manager ID"},"managerName":{"type":"string","description":"Manager display name"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL"},"managerIsSystem":{"type":"boolean","description":"Whether the manager is Alien-hosted"},"managerCloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where the private manager is hosted. Null for Alien-hosted managers."},"projectId":{"type":"string","description":"Resolved project ID"},"installContext":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}},"required":["platform","managementConfig"],"description":"Target install context derived from platform-managed manager metadata. Present for cloud push platforms."}},"required":["managerId","managerName","managerUrl","managerIsSystem","projectId"]},"CloudRegionsResponse":{"type":"object","properties":{"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"}},"required":["supportedRegions"]},"BillingAuditLogRow":{"type":"object","properties":{"id":{"type":"string"},"workspaceId":{"type":"string","nullable":true},"action":{"type":"string"},"payload":{"nullable":true},"createdAt":{"type":"string"}},"required":["id","workspaceId","action","createdAt"]},"WorkspaceBillingEntitlements":{"type":"object","properties":{"planId":{"$ref":"#/components/schemas/PlanId"},"planStatus":{"$ref":"#/components/schemas/BillingPlanStatus"},"features":{"$ref":"#/components/schemas/BillingFeatureFlags"},"limits":{"$ref":"#/components/schemas/BillingLimits"},"syncedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"}},"required":["planId","planStatus","features","limits","syncedAt","stale"]},"PlanId":{"type":"string","enum":["starter","pro","pro_annual","enterprise"]},"BillingPlanStatus":{"type":"string","enum":["active","trialing","past_due","canceled","none"]},"BillingFeatureFlags":{"type":"object","properties":{"custom_domains":{"type":"boolean"},"private_managers":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","sso_saml","audit_logs","airgapped"]},"BillingLimits":{"type":"object","properties":{"maxDeployments":{"type":"number","nullable":true},"maxProjects":{"type":"number","nullable":true},"maxSeats":{"type":"number","nullable":true},"maxCustomDomains":{"type":"number","nullable":true},"creditUsd":{"type":"number","nullable":true},"seatsIncluded":{"type":"number","nullable":true}},"required":["maxDeployments","maxProjects","maxSeats","maxCustomDomains","creditUsd","seatsIncluded"]}},"parameters":{}},"paths":{"/v1/user/memberships":{"get":{"operationId":"listMemberships","description":"List all workspaces the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listMemberships","responses":{"200":{"description":"List of user's workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Membership"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile":{"get":{"operationId":"getUserProfile","description":"Get the current user's profile and user-scoped onboarding state.","x-speakeasy-group":"user","x-speakeasy-name-override":"getProfile","responses":{"200":{"description":"User profile.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateUserProfile","description":"Update the current user's profile (display name).","x-speakeasy-group":"user","x-speakeasy-name-override":"updateProfile","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"}}}}}},"responses":{"200":{"description":"Profile updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile/setup":{"post":{"operationId":"completeUserProfileSetup","description":"Complete the required beta intake and profile setup dialog.","x-speakeasy-group":"user","x-speakeasy-name-override":"completeProfileSetup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileSetupRequest"}}}},"responses":{"200":{"description":"Profile setup completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/workspaces":{"post":{"operationId":"createWorkspace","description":"Create a new workspace. The current user will be automatically added as an admin.","x-speakeasy-group":"user","x-speakeasy-name-override":"createWorkspace","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name"},"logoUrl":{"type":"string","format":"uri","description":"Optional workspace logo URL"}},"required":["name"]}}}},"responses":{"201":{"description":"Created workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Membership"}}}},"400":{"description":"Bad request - invalid workspace name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Workspace name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces":{"get":{"operationId":"listGitNamespaces","description":"List all git namespaces (GitHub installations) the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaces","parameters":[{"schema":{"type":"string","enum":["github"],"default":"github"},"required":false,"name":"provider","in":"query"}],"responses":{"200":{"description":"List of user's git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/sync":{"post":{"operationId":"syncGitNamespaces","description":"Sync git namespaces from the provider. For GitHub, this fetches all app installations accessible to the user.","x-speakeasy-group":"user","x-speakeasy-name-override":"syncGitNamespaces","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","enum":["github"],"description":"Git provider to sync"}},"required":["provider"]}}}},"responses":{"200":{"description":"Synced git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/{id}/repositories":{"get":{"operationId":"listGitNamespaceRepositories","description":"List repositories accessible through a git namespace (GitHub installation).","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaceRepositories","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Search query to filter repositories by name"},"required":false,"description":"Search query to filter repositories by name","name":"search","in":"query"}],"responses":{"200":{"description":"List of repositories.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitRepository"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Git namespace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/whoami":{"get":{"operationId":"whoami","description":"Get the current authenticated principal (user or service account). Works with both session cookies and API keys.","x-speakeasy-group":"auth","x-speakeasy-name-override":"whoami","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","example":"my-workspace"},"required":false,"description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Current authenticated principal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Subject"}}}},"400":{"description":"Missing required workspace for user credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces":{"get":{"operationId":"listWorkspaces","description":"Retrieve all workspaces.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search workspaces by name"},"required":false,"description":"Search workspaces by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Workspace"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}":{"get":{"operationId":"getWorkspace","description":"Retrieve a workspace by ID.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspace","description":"Update a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"}}}}}},"responses":{"200":{"description":"Workspace updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteWorkspace","description":"Delete a workspace. The workspace must have no projects.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Workspace deleted successfully."},"400":{"description":"Workspace still has projects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members":{"get":{"operationId":"listWorkspaceMembers","description":"List all members of a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"listMembers","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"List of workspace members.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceMember"}}},"required":["items"]}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"addWorkspaceMember","description":"Add a member to a workspace by email. The user must already have an account.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"addMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email of the user to add"},"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"Role to assign"}]}},"required":["email","role"]}}}},"responses":{"201":{"description":"Member added successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"404":{"description":"Workspace or user not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"User is already a member.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members/{userId}":{"patch":{"operationId":"updateWorkspaceMember","description":"Update a workspace member's role.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"New role to assign"}]}},"required":["role"]}}}},"responses":{"200":{"description":"Member role updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"400":{"description":"Cannot remove last admin.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"removeWorkspaceMember","description":"Remove a member from a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"removeMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Member removed successfully."},"400":{"description":"Cannot remove last admin or self.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/dismiss-onboarding":{"post":{"operationId":"dismissWorkspaceOnboarding","description":"Mark the Getting Started walkthrough as dismissed for a workspace. The dashboard stops auto-promoting onboarding once this is set; users can still re-enter the walkthrough via the help menu.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"dismissOnboarding","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace with onboardingDismissedAt populated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects":{"get":{"operationId":"listProjects","description":"Retrieve all projects.","x-speakeasy-group":"projects","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search projects by name"},"required":false,"description":"Search projects by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deploymentCount","latestRelease"]},"description":"Optional fields to include: deploymentCount, latestRelease"},"required":false,"description":"Optional fields to include: deploymentCount, latestRelease","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved projects.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProjectListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createProject","description":"Create a new project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name"]}}}},"responses":{"201":{"description":"Project created successfully.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"}}}]}}}},"400":{"description":"Invalid request or GitHub repository connection failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}":{"get":{"operationId":"getProject","description":"Retrieve a project by ID or name.","x-speakeasy-group":"projects","x-speakeasy-name-override":"get","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateProject","description":"Update a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"update","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProject"}}}},"responses":{"200":{"description":"Project updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteProject","description":"Delete a project. The project must have no deployments.","x-speakeasy-group":"projects","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Project deleted successfully."},"400":{"description":"Project still has deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/gcp-oauth-provider":{"get":{"operationId":"getProjectGcpOAuthProvider","description":"Retrieve redacted project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateProjectGcpOAuthProvider","description":"Update project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"updateGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectGcpOAuthProvider"}}}},"responses":{"200":{"description":"Google Cloud OAuth provider settings updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"400":{"description":"Invalid provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/deployment-portal-domain":{"get":{"operationId":"getProjectDeploymentPortalDomain","description":"Get the deployment portal domain binding for a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentPortalDomain","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved deployment portal domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentPortalDomainResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/import-template":{"post":{"operationId":"createProjectFromTemplate","description":"Create a project by forking alienplatform/alien into your namespace, then configuring GitHub Actions.","x-speakeasy-group":"projects","x-speakeasy-name-override":"createFromTemplate","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$","description":"GitHub owner namespace (user or organization) that will receive the fork"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name","targetNamespace","templatePath"]}}}},"responses":{"201":{"description":"Project created successfully from template.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"},"template":{"type":"object","properties":{"sourceRepository":{"type":"string","enum":["alienplatform/alien"]},"forkRepository":{"type":"string","description":"Fork repository in / format"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"resolvedRootDirectory":{"type":"string"}},"required":["sourceRepository","forkRepository","templatePath","resolvedRootDirectory"]}},"required":["template"]}]}}}},"400":{"description":"Bad request or GitHub integration not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Fork exists but is not ready yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/template-urls":{"get":{"operationId":"getProjectTemplateUrls","description":"Get template URLs for deploying setup stacks in this project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getTemplateUrls","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Template URLs retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"aws":{"type":"object","nullable":true,"properties":{"templateUrl":{"type":"string","format":"uri","description":"URL to download the CloudFormation template"},"launchStackUrl":{"type":"string","format":"uri","description":"URL to launch the template in the AWS CloudFormation console"}},"required":["templateUrl","launchStackUrl"],"description":"Template URLs for deploying an AWS setup stack"}}}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/active-release":{"get":{"operationId":"getProjectActiveRelease","description":"Get the active release for this project. Returns the latest release, or the pinned release if deploymentId is provided and that deployment has a pinned release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getActiveRelease","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Optional deployment ID to check for pinned release"},"required":false,"description":"Optional deployment ID to check for pinned release","name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Active release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or active release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups":{"post":{"operationId":"createDeploymentGroup","tags":["deployment-groups"],"summary":"Create a new deployment group","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group with this name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listDeploymentGroups","tags":["deployment-groups"],"summary":"List deployment groups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of deployment groups","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}":{"get":{"operationId":"getDeploymentGroup","tags":["deployment-groups"],"summary":"Get deployment group details","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Deployment group details","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"},"deploymentCount":{"type":"integer","description":"Current number of deployments in this deployment group"}},"required":["deploymentCount"]}]}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateDeploymentGroup","tags":["deployment-groups"],"summary":"Update deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDeploymentGroup","tags":["deployment-groups"],"summary":"Delete deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Deployment group deleted successfully"},"400":{"description":"Cannot delete deployment group that has deployments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/tokens":{"post":{"operationId":"createDeploymentGroupToken","tags":["deployment-groups"],"summary":"Create deployment group token","description":"Creates a deployment-group scoped API key and returns both the token and formatted deployment link","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenRequest"}}}},"responses":{"200":{"description":"Deployment group token created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/first-party-session":{"post":{"operationId":"createFirstPartyDeploymentSession","tags":["deployment-groups"],"summary":"Create first-party deployment session","description":"Mints a short-lived deployment-group token with the recommended self-deploy policy for the authenticated developer.","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"First-party deployment session created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFirstPartyDeploymentSessionResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages":{"get":{"operationId":"listPackages","description":"List packages with optional filters. Returns packages ordered by creation date (newest first).","x-speakeasy-group":"packages","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Filter by package type"},"required":false,"description":"Filter by package type","name":"type","in":"query"},{"schema":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Filter by package status"},"required":false,"description":"Filter by package status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search packages by type or version"},"required":false,"description":"Search packages by type or version","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of packages.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}":{"get":{"operationId":"getPackage","description":"Get details of a specific package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/rebuild":{"post":{"operationId":"rebuildPackages","description":"Rebuild packages for a project. This will cancel any pending packages and create new ones with auto-incremented versions.","x-speakeasy-group":"packages","x-speakeasy-name-override":"rebuild","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to rebuild packages for"}},"required":["project"]}}}},"responses":{"200":{"description":"Packages rebuilt successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"packagesCreated":{"type":"integer","description":"Number of packages created"}},"required":["packagesCreated"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}/cancel":{"post":{"operationId":"cancelPackage","description":"Cancel a pending or building package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"cancel","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package canceled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"400":{"description":"Package cannot be canceled (not in pending or building status).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases":{"get":{"operationId":"listReleases","description":"Retrieve all releases.","x-speakeasy-group":"releases","x-speakeasy-name-override":"list","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search releases by commit message, branch, SHA, or release ID"},"required":false,"description":"Search releases by commit message, branch, SHA, or release ID","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by git branch (commitRef)"},"required":false,"description":"Filter by git branch (commitRef)","name":"branch","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by commit author login or name"},"required":false,"description":"Filter by commit author login or name","name":"author","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created after this date (ISO 8601)"},"required":false,"description":"Filter releases created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created before this date (ISO 8601)"},"required":false,"description":"Filter releases created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved releases.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createRelease","description":"Create a new release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReleaseRequest"}}}},"responses":{"201":{"description":"Release created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Release"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/branches":{"get":{"operationId":"listReleaseBranches","description":"List distinct git branches across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listBranches","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search branches by name (case-insensitive contains)"},"required":false,"description":"Search branches by name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of branches to return"},"required":false,"description":"Maximum number of branches to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct branches.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/authors":{"get":{"operationId":"listReleaseAuthors","description":"List distinct commit authors across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listAuthors","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search authors by login or name (case-insensitive contains)"},"required":false,"description":"Search authors by login or name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of authors to return"},"required":false,"description":"Maximum number of authors to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct authors.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseAuthorFilterItem"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/{id}":{"get":{"operationId":"getRelease","description":"Retrieve a release by ID.","x-speakeasy-group":"releases","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"required":true,"description":"Unique identifier for the release.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseListItemResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments":{"get":{"operationId":"listDeployments","description":"Retrieve all deployments.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"list","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Filter by exact deployment name. Must be used with deploymentGroup."},"required":false,"description":"Filter by exact deployment name. Must be used with deploymentGroup.","name":"name","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name, public subdomain, or deployment group name"},"required":false,"description":"Search deployments by name, public subdomain, or deployment group name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved deployments.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"400":{"description":"Invalid deployment list filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDeployment","description":"Create a new deployment. Deployment group tokens automatically use their group. Workspace/project tokens must provide deploymentGroupId.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewDeploymentRequest"}}}},"responses":{"201":{"description":"Deployment created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"400":{"description":"Bad request - deployment group has reached max deployments limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Forbidden - insufficient permissions to create deployments in this context.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or deployment group not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/stats":{"get":{"operationId":"getDeploymentStats","description":"Get aggregated deployment statistics. Returns total count and breakdown by status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getStats","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name or deployment group name"},"required":false,"description":"Search deployments by name or deployment group name","name":"search","in":"query"}],"responses":{"200":{"description":"Deployment statistics retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentStats"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-environments":{"get":{"operationId":"listDeploymentFilterEnvironments","description":"List distinct effective environments used by deployments. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterEnvironments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-deployment-groups":{"get":{"operationId":"listDeploymentFilterDeploymentGroups","description":"List deployment groups with deployment counts. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterDeploymentGroups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return"},"required":false,"description":"Maximum number of items to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Deployment groups for filter retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"},"deploymentCount":{"type":"number"},"runningCount":{"type":"number","description":"Number of deployments in 'running' status"},"failedCount":{"type":"number","description":"Number of deployments in a failed status"},"inProgressCount":{"type":"number","description":"Number of deployments in an in-progress status (provisioning, updating, etc.)"}},"required":["id","name","deploymentCount","runningCount","failedCount","inProgressCount"]}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}":{"get":{"operationId":"getDeployment","description":"Retrieve a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentDetailResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/info":{"get":{"operationId":"getDeploymentConnectionInfo","description":"Get deployment connection information including command endpoint and resource URLs.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment connection information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentConnectionInfo"}}}},"400":{"description":"Deployment not ready (no manager assigned).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/import":{"post":{"operationId":"importDeployment","description":"Import a deployment from resolved setup infrastructure such as CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"import","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportDeploymentRequest"}}}},"responses":{"200":{"description":"Deployment import was idempotent and returned an existing deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"201":{"description":"Deployment imported and created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/first-party-inputs":{"put":{"operationId":"setFirstPartyDeploymentInputs","description":"Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setFirstPartyDeploymentInputs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Input values stored on the session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsResponse"}}}},"400":{"description":"A deployment-group token scope is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The token is not a first-party deployment session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to store input values.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations":{"post":{"operationId":"createSetupRegistrationOperation","description":"Start a durable setup registration operation for CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createSetupRegistrationOperation","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupRegistrationOperationRequest"}}}},"responses":{"202":{"description":"Setup registration operation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"400":{"description":"Invalid setup registration operation request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed before callback acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations/{id}":{"get":{"operationId":"getSetupRegistrationOperation","description":"Get setup registration operation status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getSetupRegistrationOperation","parameters":[{"schema":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"required":true,"description":"Unique identifier for the setup registration operation.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Setup registration operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"404":{"description":"Setup registration operation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/delete":{"post":{"operationId":"deleteDeployment","description":"Delete, detach, or forget a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentRequest"}}}},"responses":{"202":{"description":"Deployment deletion request accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentResponse"}}}},"400":{"description":"Cannot delete the deployment in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/redeploy":{"post":{"operationId":"redeployDeployment","description":"Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"redeploy","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment redeployment triggered successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot redeploy - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/pin-release":{"post":{"operationId":"pinDeploymentRelease","description":"Pin or unpin deployment to a specific release. Only works for running deployments. Controller will automatically trigger update to target release.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"pinRelease","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinReleaseRequest"}}}},"responses":{"202":{"description":"Release pin updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot pin release - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/retry":{"post":{"operationId":"retryDeployment","description":"Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"retry","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment retry enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Deployment is not in a failed state that can be retried.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/environment-variables":{"patch":{"operationId":"updateDeploymentEnvironmentVariables","description":"Update a deployment's environment variables. If the deployment is running and not locked, the status will be changed to update-pending to trigger a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateEnvironmentVariables","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentEnvironmentVariablesRequest"}}}},"responses":{"202":{"description":"Environment variables updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/token":{"post":{"operationId":"createDeploymentToken","description":"Create a deployment token (deployment-scoped API key). The deployment must exist before creating a token.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createToken","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenRequest"}}}},"responses":{"201":{"description":"Deployment token created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers":{"post":{"operationId":"createManager","description":"Create a new manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewManagerRequest"}}}},"responses":{"201":{"description":"Manager created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Invalid private manager setup method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"A manager for this target already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listManagers","description":"Retrieve all managers.","x-speakeasy-group":"managers","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search managers by name"},"required":false,"description":"Search managers by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of managers to return"},"required":false,"description":"Maximum number of managers to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved managers.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Manager"}}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/setup-token":{"post":{"operationId":"retryManagerSetup","description":"Revoke previous private-manager setup tokens and issue a fresh setup token/config.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retrySetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"201":{"description":"Fresh manager setup token generated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Manager setup cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or setup config not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/retry":{"post":{"operationId":"retryManager","description":"Retry private-manager setup. Returns a fresh setup action before the internal deployment exists, or requests retry for the internal deployment after it exists.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retry","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager retry handled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerRetryResponse"}}}},"400":{"description":"Manager cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or internal deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/cancel-setup":{"post":{"operationId":"cancelManagerSetup","description":"Cancel pending private-manager setup, revoke setup/runtime tokens, and remove the undeployed manager record.","x-speakeasy-group":"managers","x-speakeasy-name-override":"cancelSetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager setup canceled successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Manager setup cannot be canceled in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}":{"get":{"operationId":"getManager","description":"Retrieve a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"get","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manager"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteManager","description":"Delete a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"delete","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager deletion enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot delete the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Internal deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/domain-binding":{"get":{"operationId":"getManagerDomainBinding","description":"Get the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager domain binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateManagerDomainBinding","description":"Create, update, or remove the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"updateDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerDomainBinding"}}}},"responses":{"200":{"description":"Manager domain binding updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"400":{"description":"Invalid domain binding request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or domain not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/management-config":{"get":{"operationId":"getManagerManagementConfig","description":"Get the management configuration for a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getManagementConfig","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"required":true,"description":"Represents the target cloud platform.","name":"platform","in":"query"}],"responses":{"200":{"description":"Management config retrieved successfully.","content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/provision":{"post":{"operationId":"provisionManager","description":"Enqueue provisioning for a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"provision","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager provisioning enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot provision the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/update":{"post":{"operationId":"updateManager","description":"Update a manager to a specific release ID or active release.","x-speakeasy-group":"managers","x-speakeasy-name-override":"update","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerRequest"}}}},"responses":{"202":{"description":"Manager update enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot update the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/events":{"get":{"operationId":"listManagerEvents","description":"Retrieve all events of a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"listEvents","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}},"required":["items"]}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/token":{"post":{"operationId":"generateManagerToken","description":"Generate a short-lived JWT for direct browser → manager communication. Used for fetching command payloads and querying logs without routing sensitive data through the platform API.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerToken","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenRequest"}}}},"responses":{"200":{"description":"Manager access token and connection info.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/gcp-oauth-provider/resolve":{"post":{"operationId":"resolveManagerGcpOAuthProvider","description":"Resolve decrypted project-level Google Cloud OAuth provider settings for a manager-side deployment bootstrap.","x-speakeasy-group":"managers","x-speakeasy-name-override":"resolveGcpOAuthProvider","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderRequest"}}}},"responses":{"200":{"description":"Resolved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderResponse"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Manager cannot resolve this deployment group's project settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/heartbeat":{"post":{"operationId":"reportManagerHeartbeat","description":"Report Manager health status and metrics.","x-speakeasy-group":"managers","x-speakeasy-name-override":"reportHeartbeat","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatRequest"}}}},"responses":{"200":{"description":"Heartbeat acknowledged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/deployment":{"get":{"operationId":"getManagerDeployment","description":"Get deployment details for a private manager (internal deployment platform, status, resources).","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDeployment","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager deployment details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDeployment"}}}},"404":{"description":"Manager not found or has no internal deployment (alien-hosted managers don't have deployment info).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys":{"get":{"operationId":"listAPIKeys","description":"Retrieve all API keys for the current workspace.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved API keys.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/APIKey"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAPIKey","description":"Create a new API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyRequest"}}}},"responses":{"201":{"description":"API key created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyResponse"}}}},"403":{"description":"Insufficient permissions to create API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/{id}":{"get":{"operationId":"getAPIKey","description":"Retrieve a specific API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateAPIKey","description":"Update an API key (enable/disable, change description).","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAPIKeyRequest"}}}},"responses":{"200":{"description":"API key updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"revokeAPIKey","description":"Revoke (soft delete) an API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"revoke","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"API key revoked successfully."},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/batch-delete":{"post":{"operationId":"deleteAPIKeys","description":"Permanently delete multiple API keys.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"deleteMultiple","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAPIKeysRequest"}}}},"responses":{"200":{"description":"API keys deleted successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"deletedCount":{"type":"number"}},"required":["deletedCount"]}}}},"403":{"description":"Insufficient permissions to delete API keys.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains":{"get":{"operationId":"listDomains","description":"List system domains and workspace domains.","x-speakeasy-group":"domains","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domains.","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/DomainWithUsage"}}},"required":["domains"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDomain","description":"Create a workspace domain and optional initial endpoints.","x-speakeasy-group":"domains","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":253},"setup":{"type":"object","properties":{"deploymentPortal":{"type":"boolean"},"packages":{"type":"boolean"},"deploymentUrlProjectId":{"type":"string","nullable":true,"pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"managerIds":{"type":"array","items":{"type":"string"}}}}},"required":["domain"]}}}},"responses":{"200":{"description":"Returned an existing workspace domain claim.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"201":{"description":"Created domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Domain is reserved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/endpoints":{"post":{"operationId":"createDomainEndpoint","description":"Create an endpoint under a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"createEndpoint","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"owner":{"type":"object","properties":{"type":{"type":"string","enum":["workspace","project","manager"]},"id":{"type":"string"}},"required":["type","id"]}},"required":["kind"]}}}},"responses":{"201":{"description":"Created endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Endpoint cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}":{"get":{"operationId":"getDomain","description":"Get domain by ID.","x-speakeasy-group":"domains","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDomain","description":"Delete a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain deletion requested.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain is in use.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/refresh":{"post":{"operationId":"refreshDomain","description":"Refresh workspace domain verification.","x-speakeasy-group":"domains","x-speakeasy-name-override":"refresh","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain verification refresh requested.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events":{"get":{"operationId":"listEvents","description":"Retrieve all events.","x-speakeasy-group":"events","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter events to a single deployment."},"required":false,"description":"Filter events to a single deployment.","name":"deploymentId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events/{id}":{"get":{"operationId":"getEvent","description":"Retrieve an event by ID.","x-speakeasy-group":"events","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"required":true,"description":"Unique identifier for the event.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved event.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands":{"get":{"operationId":"listCommands","description":"Retrieve commands. Use for dashboard analytics and command history.","x-speakeasy-group":"commands","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Filter by command state"},"required":false,"description":"Filter by command state","name":"state","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Filter by command name"},"required":false,"description":"Filter by command name","name":"name","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search commands by name"},"required":false,"description":"Search commands by name","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created after this date (ISO 8601)"},"required":false,"description":"Filter commands created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created before this date (ISO 8601)"},"required":false,"description":"Filter commands created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deployment","project"]},"description":"Optional fields to include: deployment, project"},"required":false,"description":"Optional fields to include: deployment, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved commands.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommandListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createCommand","description":"Create command metadata. Called by manager when processing commands. Returns project info for routing decisions.","x-speakeasy-group":"commands","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandRequest"}}}},"responses":{"201":{"description":"Command created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/names":{"get":{"operationId":"listCommandNames","description":"List distinct command names. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listNames","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search command names (prefix match)"},"required":false,"description":"Search command names (prefix match)","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct command names.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandNamesResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/deployments":{"get":{"operationId":"listCommandDeployments","description":"List distinct deployments that have commands, including deployment group info. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search deployment or deployment group names"},"required":false,"description":"Search deployment or deployment group names","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct deployments that have commands.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandDeploymentsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/{id}":{"patch":{"operationId":"updateCommand","description":"Update command state. Called by manager when command is dispatched or completes.","x-speakeasy-group":"commands","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCommandRequest"}}}},"responses":{"200":{"description":"Command updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Command not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getCommand","description":"Retrieve a command by ID.","x-speakeasy-group":"commands","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved command.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions":{"get":{"operationId":"listDebugSessions","description":"Retrieve debug sessions for dashboard audit. Filters: project, deployment, state, mode.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Filter by session state"}]},"required":false,"description":"Filter by session state","name":"state","in":"query"},{"schema":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model (push/pull). Joins against the parent deployment."},"required":false,"description":"Filter by deployment model (push/pull). Joins against the parent deployment.","name":"mode","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Filter by cloud provider. Joins against the parent deployment."},"required":false,"description":"Filter by cloud provider. Joins against the parent deployment.","name":"provider","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Paginated debug sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSessionListResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDebugSession","description":"Create a debug-session audit row. Called by the manager when a pull or push debug tunnel is opened. Workspace + project derived from deployment.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDebugSessionRequest"}}}},"responses":{"201":{"description":"Debug session created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions/{id}":{"patch":{"operationId":"updateDebugSession","description":"Update debug-session state. Called by manager on tunnel attach, close, or deadline expiry.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDebugSessionRequest"}}}},"responses":{"200":{"description":"Debug session updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Debug session not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getDebugSession","description":"Retrieve a debug session by ID.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved debug session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info":{"get":{"operationId":"getDeploymentInfo","description":"Get deployment information for the deployment portal. Accepts both deployment-scoped and deployment-group-scoped API keys. Returns project information, package status/outputs, and either deployment or deployment group details depending on the token type. Poll this endpoint to check if packages are ready.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment information retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInfo"}}}},"401":{"description":"Unauthorized — requires a deployment-scoped or deployment-group-scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/compute-plan":{"post":{"operationId":"planDeploymentCompute","description":"Plan deployment compute for the active release before stack preparation. The response contains recommended machine and scale choices for cloud compute pools.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"planCompute","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Compute plan returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentComputePlan"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/prepare-stack":{"post":{"operationId":"prepareDeploymentStack","description":"Prepare the active release stack for a deployment portal setup session. The response contains the generated stack shape plus setup compatibility metadata.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"prepareStack","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Prepared stack returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreparedDeploymentStack"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/list":{"post":{"operationId":"syncList","description":"List full deployment records for manager operational loops. This endpoint is intentionally separate from the public deployments list, which returns lightweight UI rows.","x-speakeasy-group":"sync","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListRequest"}}}},"responses":{"200":{"description":"Full deployment records returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/acquire":{"post":{"operationId":"syncAcquire","description":"Acquire a batch of deployments for processing. Used by Manager to atomically lock deployments matching filters. Each deployment in the batch must be released after processing.","x-speakeasy-group":"sync","x-speakeasy-name-override":"acquire","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireRequest"}}}},"responses":{"200":{"description":"Deployments acquired successfully (empty arrays if none available). Failures indicate deployments that were locked but failed during context building - their locks have been released.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/reconcile":{"post":{"operationId":"syncReconcile","description":"Reconcile deployment state. Push model requests that include a session verify lock ownership. Pull model state reports are accepted as authz-gated agent progress even when they carry an agent-sync session. Accepts full DeploymentState after step() execution.","x-speakeasy-group":"sync","x-speakeasy-name-override":"reconcile","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileRequest"}}}},"responses":{"200":{"description":"State reconciled successfully. If target is present, continue deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment locked (pull) or session mismatch (push).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/release":{"post":{"operationId":"syncRelease","description":"Release a deployment lock. Must be called after processing an acquired deployment, even if processing failed. This is critical to avoid deadlocks.","x-speakeasy-group":"sync","x-speakeasy-name-override":"release","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReleaseRequest"}}}},"responses":{"200":{"description":"Lock released successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}":{"get":{"operationId":"listResourceOverview","x-speakeasy-group":"resources","x-speakeasy-name-override":"listOverview","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Compute resource overview rows from latest heartbeats.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"deploymentCount":{"type":"integer"},"attentionCount":{"type":"integer"},"lastObservedAt":{"type":"string","format":"date-time"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt"]}}},"required":["resources"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/{resourceId}/deployments":{"get":{"operationId":"listResourceDeployments","x-speakeasy-group":"resources","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Deployments where the resource is installed.","content":{"application/json":{"schema":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]}}},"required":["resourceType","resourceId","deployments"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/deployments/{deploymentId}/{resourceId}":{"get":{"operationId":"getResourceDeploymentDetail","x-speakeasy-group":"resources","x-speakeasy-name-override":"getDeploymentDetail","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Latest heartbeat detail for one compute resource deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"deployment":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]},"heartbeat":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","enum":["available"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"staleAt":{"type":"string","format":"date-time"},"platformStale":{"type":"boolean"},"heartbeat":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"raw":{"type":"array","items":{"nullable":true}}},"required":["status","deploymentId","resourceId","resourceType","backend","controllerPlatform","observedAt","staleAt","platformStale","heartbeat","raw"]},{"type":"object","properties":{"status":{"type":"string","enum":["missing"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"}},"required":["status","deploymentId","resourceId","resourceType"]}]}},"required":["deployment","heartbeat"]}}}},"404":{"description":"Deployment or resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resolve":{"get":{"operationId":"resolve","tags":["resolve"],"summary":"Resolve manager for a project and platform","description":"Returns the manager URL for a given project and platform. The project can be provided as a query parameter, or derived from the token's scope (project-scoped, deployment-group-scoped, or deployment-scoped tokens carry an implicit project). This is the single entry point for all CLI tools to discover which manager to talk to.","x-speakeasy-group":"resolve","x-speakeasy-name-override":"resolve","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform to resolve the manager for"},"required":true,"description":"Target platform to resolve the manager for","name":"platform","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope)."},"required":false,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope).","name":"project","in":"query"}],"responses":{"200":{"description":"Manager resolved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveResponse"}}}},"400":{"description":"Missing required project parameter for this token type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found or no manager available for platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Manager not ready yet (no URL reported). Retry after a delay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/cloud-regions":{"get":{"operationId":"getCloudRegions","description":"Get cloud regions supported by this Alien environment.","x-speakeasy-group":"cloudRegions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Supported cloud regions retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudRegionsResponse"}}}}}}},"/v1/billing/audit-log":{"get":{"operationId":"listBillingAuditLog","description":"List billing activity entries for the current workspace.","x-speakeasy-group":"billing","x-speakeasy-name-override":"listAuditLog","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor: id from the previous page."},"required":false,"description":"Cursor: id from the previous page.","name":"before","in":"query"}],"responses":{"200":{"description":"Audit-log rows newest-first.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/BillingAuditLogRow"}},"nextCursor":{"type":"string","nullable":true}},"required":["items","nextCursor"]}}}}}}},"/v1/billing/entitlements":{"get":{"operationId":"getWorkspaceBillingEntitlements","description":"Get the workspace billing entitlements used for product feature gates. Autumn is the source of truth; the response is served through the workspace billing read model with stale-cache fallback.","x-speakeasy-group":"billing","x-speakeasy-name-override":"getEntitlements","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace billing entitlements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceBillingEntitlements"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}}}} \ No newline at end of file +{"openapi":"3.0.0","info":{"title":"Alien API","version":"1.0.0","contact":{"name":"Alien Team","url":"https://alien.dev"}},"servers":[{"url":"https://api.alien.dev","description":"Alien API - Production"}],"security":[{"apiKey":[]}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key for authentication, must be provided as a Bearer token. Generate an API key at https://alien.dev/api-keys"}},"schemas":{"Membership":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"role":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","logoUrl","role","createdAt"],"additionalProperties":false},"APIError":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."}},"required":["code","message","internal"]},"UserProfile":{"type":"object","properties":{"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","description":"User's email address"},"name":{"type":"string","description":"User's display name"},"image":{"type":"string","nullable":true,"description":"User's avatar image URL"},"githubUsername":{"type":"string","nullable":true,"description":"Linked GitHub username"},"cliConnected":{"type":"boolean","description":"Whether this user has ever authenticated a request from the Alien CLI. Latched on first CLI request, never cleared."},"company":{"type":"string","nullable":true,"description":"Company name collected during profile setup."},"acquisitionSource":{"type":"string","nullable":true,"enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other",null],"description":"How the user heard about Alien."},"acquisitionSourceDetail":{"type":"string","nullable":true,"description":"Additional acquisition source detail when the source is other."},"useCases":{"type":"string","nullable":true,"description":"What the user is hoping to use Alien for."},"profileSetupCompletedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the user completed the required profile setup dialog."},"profileSetupVersion":{"type":"integer","nullable":true,"description":"Version of the required profile setup dialog the user completed."}},"required":["id","email","name","image","githubUsername","cliConnected","company","acquisitionSource","acquisitionSourceDetail","useCases","profileSetupCompletedAt","profileSetupVersion"],"additionalProperties":false},"UserProfileSetupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"},"company":{"type":"string","minLength":1,"maxLength":120,"description":"Company name"},"acquisitionSource":{"type":"string","enum":["github","x-twitter","linkedin","hacker-news","reddit","search","friend-or-colleague","founder","event-or-community","other"],"description":"How the user heard about Alien"},"acquisitionSourceDetail":{"type":"string","minLength":1,"maxLength":200,"description":"Required when acquisitionSource is other"},"useCases":{"type":"string","maxLength":2000,"description":"What the user is hoping to use Alien for"}},"required":["name","company","acquisitionSource"],"additionalProperties":false},"GitNamespace":{"type":"object","properties":{"id":{"type":"number","nullable":true},"name":{"type":"string"},"slug":{"type":"string"},"installationId":{"type":"number","nullable":true},"type":{"type":"string","enum":["team","user"]},"provider":{"type":"string","enum":["github"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","slug","installationId","type","provider","createdAt"],"additionalProperties":false},"GitRepository":{"type":"object","properties":{"name":{"type":"string"},"private":{"type":"boolean"},"defaultBranch":{"type":"string"},"pushedAt":{"type":"string","format":"date-time"}},"required":["name","private","defaultBranch"],"additionalProperties":false},"Subject":{"oneOf":[{"$ref":"#/components/schemas/UserSubject"},{"$ref":"#/components/schemas/ServiceAccountSubject"}],"discriminator":{"propertyName":"kind","mapping":{"user":"#/components/schemas/UserSubject","serviceAccount":"#/components/schemas/ServiceAccountSubject"}},"description":"Authenticated principal that can be either a user (with workspace-scoped permissions) or a service account (with configurable scope and role)"},"UserSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["user"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique user identifier"},"email":{"type":"string","format":"email","description":"User's email address"},"workspaceId":{"type":"string","description":"ID of the workspace the user is authenticated within"},"workspaceName":{"type":"string","description":"Name of the workspace the user is authenticated within"},"role":{"$ref":"#/components/schemas/UserRole"}},"required":["kind","id","email","workspaceId","role"],"description":"Authenticated user subject with workspace-scoped permissions"},"UserRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"User's role within the workspace","example":"workspace.member"},"ServiceAccountSubject":{"type":"object","properties":{"kind":{"type":"string","enum":["serviceAccount"],"description":"Subject type identifier"},"id":{"type":"string","description":"Unique service account identifier (API key ID)"},"workspaceId":{"type":"string","description":"ID of the workspace the service account belongs to"},"workspaceName":{"type":"string","description":"Name of the workspace the service account belongs to"},"scope":{"$ref":"#/components/schemas/SubjectScope"},"role":{"$ref":"#/components/schemas/Role"}},"required":["kind","id","workspaceId","scope","role"],"description":"Authenticated service account subject with scoped permissions (workspace, project, or deployment level)"},"SubjectScope":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["workspace"],"description":"Workspace-scoped access"}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["project"],"description":"Project-scoped access"},"projectId":{"type":"string","description":"ID of the specific project this scope applies to"}},"required":["type","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment"],"description":"Deployment-scoped access"},"deploymentId":{"type":"string","description":"ID of the specific deployment this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"}},"required":["type","deploymentId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"],"description":"Deployment group-scoped access"},"deploymentGroupId":{"type":"string","description":"ID of the specific deployment group this scope applies to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"}},"required":["type","deploymentGroupId","projectId"]},{"type":"object","properties":{"type":{"type":"string","enum":["manager"],"description":"Manager-scoped access"},"managerId":{"type":"string","description":"ID of the specific manager this scope applies to"}},"required":["type","managerId"]}],"description":"Authorization scope defining what resources this service account can access"},"Role":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"$ref":"#/components/schemas/ProjectRole"},{"$ref":"#/components/schemas/DeploymentRole"},{"$ref":"#/components/schemas/DeploymentGroupRole"},{"$ref":"#/components/schemas/ManagerRole"}],"description":"Role defining what actions this service account can perform within its scope","example":"workspace.member"},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"ProjectRole":{"type":"string","enum":["project.viewer","project.developer"],"description":"Role for project-scoped service accounts","example":"project.developer"},"DeploymentRole":{"type":"string","enum":["deployment.viewer","deployment.manager","deployment.telemetry-writer"],"description":"Role for deployment-scoped service accounts","example":"deployment.manager"},"DeploymentGroupRole":{"type":"string","enum":["deployment-group.deployer"],"description":"Role for deployment group-scoped service accounts","example":"deployment-group.deployer"},"ManagerRole":{"type":"string","enum":["manager.runtime"],"description":"Role for manager-scoped service accounts","example":"manager.runtime"},"Workspace":{"type":"object","properties":{"id":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name.","example":"my-workspace"},"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"},"onboardingDismissedAt":{"type":"string","format":"date-time","nullable":true,"description":"When the Getting Started walkthrough was dismissed or completed for this workspace. Null means it has never been dismissed; the dashboard auto-promotes the walkthrough until this is set."},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","onboardingDismissedAt","createdAt"],"additionalProperties":false},"WorkspaceMember":{"type":"object","properties":{"userId":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"image":{"type":"string","nullable":true},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"joinedAt":{"type":"string","format":"date-time"}},"required":["userId","email","name","image","role","joinedAt"],"additionalProperties":false},"ProjectListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"deploymentCount":{"type":"number"},"latestRelease":{"$ref":"#/components/schemas/ProjectReleaseInfo"}}}]},"DeploymentPortalAppearancePreset":{"type":"string","enum":["clean","technical","enterprise","playful","minimal"],"default":"clean","description":"Curated visual style for the deployment portal."},"DeploymentPortalAccentColor":{"type":"string","enum":["blue","purple","green","orange","pink","slate"],"default":"blue","description":"Accent color used for highlights and primary actions."},"DeploymentPortalDensity":{"type":"string","enum":["comfortable","compact"],"default":"comfortable","description":"Layout density for portal content."},"ProjectReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","gitMetadata","createdAt"]},"GitMetadata":{"type":"object","nullable":true,"properties":{"commitSha":{"type":"string","nullable":true,"maxLength":40,"description":"The hash of the commit","example":"dc36199b2234c6586ebe05ec94078a895c707e29"},"commitMessage":{"type":"string","nullable":true,"maxLength":1024,"description":"The commit message","example":"add method to measure Interaction to Next Paint (INP) (#36490)"},"commitRef":{"type":"string","nullable":true,"maxLength":256,"description":"The branch or tag on which the commit was made","example":"main"},"commitDate":{"type":"string","nullable":true,"format":"date-time","description":"The date and time when the commit was created","example":"2026-03-16T12:00:00Z"},"dirty":{"type":"boolean","nullable":true,"description":"Whether or not there have been modifications to the working tree since the latest commit","example":true},"remoteUrl":{"type":"string","nullable":true,"maxLength":2048,"description":"The git repository's remote origin url","example":"https://github.com/alienplatform/alien"},"commitAuthorName":{"type":"string","nullable":true,"maxLength":256,"description":"The name of the author of the commit (from git config)","example":"John Doe"},"commitAuthorEmail":{"type":"string","nullable":true,"maxLength":256,"format":"email","description":"The email of the author of the commit (from git config)","example":"john@example.com"},"commitAuthorLogin":{"type":"string","nullable":true,"maxLength":256,"description":"The provider username of the commit author (e.g., GitHub login), resolved server-side from the commit email","example":"johndoe"},"commitAuthorAvatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"The avatar URL of the commit author, resolved server-side from the provider login","example":"https://github.com/johndoe.png"},"provider":{"$ref":"#/components/schemas/GitProvider"}}},"GitProvider":{"oneOf":[{"$ref":"#/components/schemas/GitHubProvider"},{"$ref":"#/components/schemas/GitLabProvider"},{"nullable":true}],"description":"Provider-specific repository information, resolved server-side from remoteUrl"},"GitHubProvider":{"type":"object","properties":{"type":{"type":"string","enum":["github"]},"org":{"type":"string","maxLength":256,"description":"Repository owner (user or organization)"},"repo":{"type":"string","maxLength":256,"description":"Repository name"}},"required":["type","org","repo"]},"GitLabProvider":{"type":"object","properties":{"type":{"type":"string","enum":["gitlab"]},"namespace":{"type":"string","maxLength":256,"description":"Group/project namespace"},"project":{"type":"string","maxLength":256,"description":"Project name"}},"required":["type","namespace","project"]},"Project":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","name","createdAt","workspaceId"]},"ProjectIDOrNamePathParam":{"type":"string","maxLength":100,"description":"Project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"ProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","redirectUris"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"hasClientSecret":{"type":"boolean","enum":[true]},"redirectUris":{"type":"array","items":{"type":"string","format":"uri"},"description":"Authorized redirect URIs that must be configured on the Google OAuth client."}},"required":["mode","clientId","hasClientSecret","redirectUris"]}]},"GcpOAuthClientId":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[a-zA-Z0-9_-]+-[a-zA-Z0-9_-]+\\.apps\\.googleusercontent\\.com$","description":"Google OAuth web client ID.","example":"1234567890-abc123.apps.googleusercontent.com"},"UpdateProjectGcpOAuthProvider":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId"]}]},"GcpOAuthClientSecret":{"type":"string","minLength":1,"maxLength":512,"description":"Google OAuth web client secret. Write-only; never returned by the API.","example":"GOCSPX-example"},"UpdateProject":{"type":"object","properties":{"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"deploymentPortalAppearance":{"type":"object","nullable":true,"properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}},"description":"Customer-facing deployment portal appearance settings."},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"},"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Selected domain for this project (null = default system domain)","example":"dom_469m0agk8luj4s16sakmmpdd"},"defaultManagers":{"type":"object","nullable":true,"properties":{"aws":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"gcp":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"azure":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"kubernetes":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"local":{"type":"string","nullable":true,"pattern":"mgr_[0-9a-z]{28}$","description":"Unique identifier for a default private manager.","example":"mgr_enxscjrqiiu2lrc672hwwuc5"}},"description":"Project default private managers for new push deployments."}}},"DeploymentPortalDomainResponse":{"type":"object","properties":{"deploymentPortalEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"},"packageEndpoint":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["deploymentPortalEndpoint","packageEndpoint"]},"DomainEndpoint":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"dend_[0-9a-z]{28}$","description":"Unique identifier for the domain endpoint.","example":"dend_1bb6gdvm1bs74acqkjstcgv"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domainId":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"kind":{"$ref":"#/components/schemas/DomainEndpointKind"},"owner":{"$ref":"#/components/schemas/DomainEndpointOwner"},"hostname":{"type":"string","minLength":1,"maxLength":253},"status":{"$ref":"#/components/schemas/DomainEndpointStatus"},"provider":{"type":"string","nullable":true},"providerState":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"managedDnsRecords":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentPortalManagedDnsRecord"}},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"retryAttempts":{"type":"integer","minimum":0},"nextStepAfter":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","workspaceId","domainId","kind","owner","hostname","status","managedDnsRecords","retryAttempts","createdAt","updatedAt"]},"DomainEndpointKind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"DomainEndpointOwner":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/DomainEndpointOwnerType"},"id":{"type":"string"}},"required":["type","id"]},"DomainEndpointOwnerType":{"type":"string","enum":["workspace","project","manager"]},"DomainEndpointStatus":{"type":"string","enum":["waiting_for_domain","provisioning","waiting_for_dns","waiting_for_health","active","failed","deleting"]},"DeploymentPortalManagedDnsRecord":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"value":{"type":"string"},"ttl":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true}},"required":["name","type","value"]},"DeploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments allowed in this deployment group"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","projectId","workspaceId","createdAt"]},"CreateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"project":{"type":"string","maxLength":100,"description":"Project ID or name this deployment group belongs to"},"maxDeployments":{"type":"integer","minimum":1,"default":100,"description":"Maximum number of deployments in this deployment group"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name.","examples":["my-project","prj_mcytp6z3j91f7tn5ryqsfwtr"]},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the deployment group"},"maxDeployments":{"type":"integer","minimum":1,"description":"Maximum number of deployments in this deployment group"}}},"CreateDeploymentGroupTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The API key token"},"deploymentLink":{"type":"string","description":"Formatted deployment link"}},"required":["token","deploymentLink"]},"CreateDeploymentGroupTokenRequest":{"type":"object","properties":{"description":{"type":"string","description":"Description for the API key"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"},"deploymentSetupConfig":{"$ref":"#/components/schemas/DeploymentSetupConfig"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["deploymentSetupConfig"]},"DeploymentSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"}},"required":["metadata","policy","environmentVariables"]},"DeploymentSetupMetadata":{"type":"object","additionalProperties":{"nullable":true}},"DeploymentSetupPolicy":{"type":"object","properties":{"allowedPlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"allowedDeploymentModels":{"type":"array","items":{"type":"string","enum":["push","pull","airgapped"]}},"allowedNetworkModes":{"type":"array","items":{"type":"string","enum":["none","create","default","byo"]}},"allowedUpdatesModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required"]}},"allowedTelemetryModes":{"type":"array","items":{"type":"string","enum":["auto","approval-required","off"]}},"allowedHeartbeatsModes":{"type":"array","items":{"type":"string","enum":["on","off"]}},"allowExternalBindings":{"type":"boolean"},"allowCustomRegistry":{"type":"boolean"}}},"EnvironmentVariableConfig":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"value":{"type":"string","maxLength":10000,"description":"Variable value (encrypted in database)"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","value","type","targetResources"]},"EnvironmentVariableType":{"type":"string","enum":["plain","secret"],"description":"Variable type (plain or secret)"},"EncryptedStackInputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/EncryptedStackInputValue"},"default":{}},"EncryptedStackInputValue":{"type":"object","properties":{"value":{"type":"string","description":"Encrypted JSON-encoded input value."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"]},"secret":{"type":"boolean","description":"Whether the original input is secret."}},"required":["value","kind","secret"]},"StackInputValuesRequest":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{}},"StackInputValueRequest":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"CreateFirstPartyDeploymentSessionResponse":{"type":"object","properties":{"token":{"type":"string","description":"The deployment-group session token"}},"required":["token"]},"Package":{"type":"object","properties":{"id":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"type":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Types of packages that can be built"},"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string","description":"Package version (e.g., '1.0.0', 'rel_abc123')"},"sourceReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"setupFingerprints":{"$ref":"#/components/schemas/SetupFingerprintMap"},"packageBuildInputHash":{"type":"string","description":"Hash of Platform-known package build request inputs: package type, source release, setup fingerprints, package config, and setup contract version"},"config":{"oneOf":[{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"}},"required":["displayName","name"],"description":"Branding configuration for the deploy CLI binary."},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for CloudFormation packages"},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"}},"required":["chartName","description"],"description":"Configuration for the Helm chart package"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"}},"required":["displayName","name"],"description":"Branding configuration for the Operator image."},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts."},"supportedAwsRegions":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by the environment that built this package."}},"description":"Configuration for Terraform package generation."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]}],"description":"Type-specific configuration"},"outputs":{"oneOf":[{"allOf":[{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},{"type":"object","properties":{"type":{"type":"string","enum":["cli"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"digest":{"type":"string","description":"Image digest (e.g., \"sha256:abc123...\")"},"image":{"type":"string","description":"Full image reference (e.g., \"public.ecr.aws/acme/operators/project-id:1.2.3\")"}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["agent-image"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},{"type":"object","properties":{"type":{"type":"string","enum":["helm"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},{"type":"object","properties":{"type":{"type":"string","enum":["cloudformation"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},{"type":"object","properties":{"type":{"type":"string","enum":["terraform"]}},"required":["type"]}]},{"nullable":true}],"description":"Package outputs (only when status is 'ready')"},"error":{"nullable":true,"description":"Error information if status is 'failed'"},"sourceBinarySha256":{"type":"string","nullable":true,"description":"Builder-recorded source binary SHA256 (for cli/terraform packages)"},"retries":{"type":"integer","minimum":0,"description":"Number of build retries"},"lockedAt":{"type":"string","format":"date-time","nullable":true},"lockedBy":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"completedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","projectId","workspaceId","type","status","version","sourceReleaseId","setupFingerprints","packageBuildInputHash","config","retries","createdAt","updatedAt"]},"SetupFingerprintMap":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SetupFingerprintInfo"},"description":"Per-target setup compatibility fingerprints copied from the source release"},"SetupFingerprintInfo":{"type":"object","properties":{"target":{"$ref":"#/components/schemas/SetupTarget"},"fingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"version":{"$ref":"#/components/schemas/SetupFingerprintVersion"}},"required":["target","fingerprint","version"]},"SetupTarget":{"type":"string","minLength":1,"description":"Stable target key for the setup contract, e.g. aws/us-east-1"},"SetupFingerprint":{"type":"string","minLength":1,"description":"Deterministic setup contract fingerprint for one setup target"},"SetupFingerprintVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup fingerprint algorithm version"},"ReleaseListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Release"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"StackByPlatform":{"type":"object","properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"Release":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"projectId":{"type":"string","maxLength":128},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"setupFingerprints":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintMap"},{"description":"Per-target setup compatibility fingerprints for this release"}]},"rootDirectory":{"type":"string","nullable":true,"maxLength":256},"workspaceId":{"type":"string","maxLength":128}},"required":["id","projectId","createdAt","stack","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"stack":{"$ref":"#/components/schemas/StackByPlatform"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256}},"required":["project"]},"ReleaseAuthorFilterItem":{"type":"object","properties":{"login":{"type":"string","nullable":true,"description":"Provider username (e.g., GitHub login)"},"name":{"type":"string","nullable":true,"description":"Git commit author name"},"avatarUrl":{"type":"string","nullable":true,"format":"uri","description":"Author avatar URL"}},"required":["login","name","avatarUrl"]},"DeploymentListItemResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint version"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if in a failed state"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"$ref":"#/components/schemas/ManagerID"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version reported on the last sync"},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS"},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture"},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime: os-service or kubernetes"},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag)"},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver) for upgrade-driven sync"},"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentProtocolVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"DeploymentState protocol version owned by the runtime/manager"},"ManagerID":{"type":"string","pattern":"mgr_[0-9a-z]{28}$","description":"ID of the manager","example":"mgr_enxscjrqiiu2lrc672hwwuc5"},"DeploymentReleaseInfo":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","createdAt"]},"DeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"}},"required":["id","name"]},"DeploymentProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"}},"required":["id","name"]},"DeploymentStats":{"type":"object","properties":{"total":{"type":"number","description":"Total number of deployments matching filters"},"byStatus":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by status (only includes statuses with non-zero counts)"},"byPlatform":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by platform (only includes platforms with non-zero counts)"},"byCurrentRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by currentReleaseId. The empty string key represents deployments with no current release (initial provisioning)."},"byPinnedRelease":{"type":"object","additionalProperties":{"type":"number"},"description":"Count of deployments by pinnedReleaseId among deployments that are pinned. Excludes unpinned deployments."}},"required":["total","byStatus","byPlatform","byCurrentRelease","byPinnedRelease"]},"DeploymentDetailResponse":{"allOf":[{"$ref":"#/components/schemas/Deployment"},{"type":"object","properties":{"release":{"$ref":"#/components/schemas/DeploymentReleaseInfo"},"deploymentGroup":{"$ref":"#/components/schemas/DeploymentGroupInfo"},"project":{"$ref":"#/components/schemas/DeploymentProjectInfo"}}}]},"Deployment":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"targetEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of target environment variables for the deployment"},"currentEnvironmentVariables":{"type":"object","nullable":true,"properties":{"variables":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Environment variables in the snapshot"},"hash":{"type":"string","description":"Deterministic hash of all variables for change detection"},"createdAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp when snapshot was created"}},"required":["variables","hash","createdAt"],"description":"Snapshot of current environment variables for the deployment"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version reported on the last sync (e.g. \"1.3.5\")"},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS reported on the last sync"},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture reported on the last sync"},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends."},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from."},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target."}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId"]},"DeploymentConnectionInfo":{"type":"object","properties":{"arc":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Manager URL for commands"},"deploymentId":{"type":"string","description":"Deployment ID to use in command requests"}},"required":["url","deploymentId"]},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"publicEndpoints":{"type":"object","additionalProperties":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"host":{"type":"string"},"wildcardHost":{"type":"string"}},"required":["url"]},"description":"Public endpoints keyed by endpoint name."}},"required":["type"]},"description":"Deployed resources and their public endpoints"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment"]},"NewDeploymentRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"deploymentGroupId":{"type":"string","description":"Required for workspace/project tokens. Deployment group tokens use their own group automatically."},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Optional manager to assign. If omitted, the project default or system manager is selected."}]},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"environmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"},"description":"Configuration of environment variables for the deployment"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"Stack settings for deployment customization"},"resourcePrefix":{"$ref":"#/components/schemas/ResourcePrefix"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method that created the deployment. Defaults to cli."}]},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup method metadata used to guide privileged teardown."}]},"inputValues":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"default":{},"description":"Stack input values provided by the deployment creator."}},"required":["name","platform","project"],"additionalProperties":false,"description":"Request schema for creating a new deployment"},"ResourcePrefix":{"type":"string","pattern":"^[a-z](?:[a-z0-9]|-(?=[a-z0-9])){1,38}[a-z0-9]$","description":"Optional physical-name prefix for generated cloud resources. Omit to let the manager generate one."},"RejoinDeploymentResponse":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"token":{"type":"string","description":"Fresh deployment-scoped sync token. The previously-issued token is NOT revoked — callers that want strict single-token semantics should rotate explicitly via the api-keys endpoints."}},"required":["deploymentId","token"]},"RejoinDeploymentRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Deployment name to rejoin. Must already exist in the caller's deployment group."}},"required":["name"],"additionalProperties":false,"description":"Request schema for re-acquiring a deployment-scoped sync token after local state loss."},"ImportDeploymentRequest":{"oneOf":[{"$ref":"#/components/schemas/ForwardImportRequest"},{"$ref":"#/components/schemas/PersistImportedDeploymentRequest"}],"description":"Request schema for importing a deployment from resolved setup infrastructure"},"ForwardImportRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["forward"],"default":"forward"},"project":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user-session callers."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Required for user-session callers. Deployment-group tokens use their own group automatically.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager ID. If omitted, the first suitable manager for the source platform is used."}]},"source":{"$ref":"#/components/schemas/ImportSource"},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["source"]},"ImportSource":{"type":"object","properties":{"deploymentName":{"type":"string","minLength":1,"description":"User-chosen deployment name. Must be unique within the deployment group; the manager returns 409 on collision."},"resourcePrefix":{"allOf":[{"$ref":"#/components/schemas/ResourcePrefix"},{"description":"Stable physical-name prefix used by the setup artifact."}]},"sourceKind":{"$ref":"#/components/schemas/ImportSourceKind"},"setupMetadata":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMetadata"},{"description":"Setup source metadata needed to guide privileged teardown."}]},"releaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release that produced the setup artifact. Defaults to latest.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Cloud platform of the imported stack"},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"region":{"type":"string","description":"Region or location reported by the setup artifact"},"setupTarget":{"allOf":[{"$ref":"#/components/schemas/SetupTarget"},{"description":"Setup target this package was generated for"}]},"setupImportFormatVersion":{"$ref":"#/components/schemas/SetupImportFormatVersion"},"setupFingerprint":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprint"},{"description":"Setup compatibility fingerprint embedded in the package"}]},"setupFingerprintVersion":{"allOf":[{"$ref":"#/components/schemas/SetupFingerprintVersion"},{"description":"Setup fingerprint algorithm version embedded in the package"}]},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"resources":{"type":"array","items":{"$ref":"#/components/schemas/ImportedResource"},"minItems":1}},"required":["deploymentName","resourcePrefix","platform","region","setupTarget","setupImportFormatVersion","setupFingerprint","setupFingerprintVersion","stackSettings","resources"],"description":"Resolved setup import payload"},"ImportSourceKind":{"type":"string","enum":["cloudformation","terraform","helm"],"description":"Source label for observability only — does not affect import behavior."},"KubernetesBasePlatform":{"type":"string","enum":["aws","gcp","azure"],"description":"Base cloud platform for cloud-backed Kubernetes imports."},"SetupImportFormatVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"description":"Setup import payload format version embedded in the package"},"ImportedResource":{"type":"object","properties":{"id":{"type":"string","description":"Resource id from the active stack"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},"importData":{"type":"object","additionalProperties":{"nullable":true},"description":"Resolved typed import payload"}},"required":["id","type","importData"]},"PersistImportedDeploymentRequest":{"type":"object","properties":{"mode":{"type":"string","enum":["persist"]},"name":{"type":"string","minLength":1,"description":"Deployment name. Must be unique within the deployment group."},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"basePlatform":{"$ref":"#/components/schemas/KubernetesBasePlatform"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."},"stackState":{"nullable":true},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"runtimeMetadata":{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"default":"provisioning","description":"Deployment status in the deployment lifecycle"},"currentReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"setupMetadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"setupTarget":{"$ref":"#/components/schemas/SetupTarget"},"setupFingerprint":{"$ref":"#/components/schemas/SetupFingerprint"},"setupFingerprintVersion":{"$ref":"#/components/schemas/SetupFingerprintVersion"},"deploymentToken":{"type":"string"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["mode","name","deploymentGroupId","managerId","platform","stackSettings","runtimeMetadata","deploymentProtocolVersion","setupTarget","setupFingerprint","setupFingerprintVersion"]},"SetFirstPartyDeploymentInputsResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"SetFirstPartyDeploymentInputsRequest":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"}},"required":["platform"]},"SetupRegistrationOperationResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"status":{"$ref":"#/components/schemas/SetupRegistrationOperationStatus"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"physicalResourceId":{"type":"string","nullable":true},"result":{"$ref":"#/components/schemas/SetupRegistrationOperationResult"},"error":{"type":"object","nullable":true,"properties":{"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["message","retryable"]}},"required":["id","action","sourceKind","status","deploymentId","physicalResourceId","result","error"]},"SetupRegistrationAction":{"type":"string","enum":["create","update","delete"]},"SetupRegistrationOperationStatus":{"type":"string","enum":["pending","processing","waiting-for-handoff","succeeded","failed","responding","responded"]},"SetupRegistrationOperationResult":{"type":"object","nullable":true,"properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"deploymentToken":{"type":"string","nullable":true},"helmValues":{"type":"string","nullable":true}},"required":["deploymentId","deploymentToken","helmValues"]},"CreateSetupRegistrationOperationRequest":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/SetupRegistrationAction"},"sourceKind":{"allOf":[{"$ref":"#/components/schemas/ImportSourceKind"},{"description":"Package source that produced the import payload"}]},"source":{"allOf":[{"$ref":"#/components/schemas/ImportSource"}],"nullable":true},"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":512},"cloudFormation":{"$ref":"#/components/schemas/SetupRegistrationCloudFormationTarget"}},"required":["action","sourceKind"],"additionalProperties":false},"SetupRegistrationCloudFormationTarget":{"type":"object","nullable":true,"properties":{"stackId":{"type":"string","minLength":1},"requestId":{"type":"string","minLength":1},"logicalResourceId":{"type":"string","minLength":1},"responseUrl":{"type":"string","format":"uri"},"physicalResourceId":{"type":"string","nullable":true,"minLength":1},"serviceTimeoutSeconds":{"type":"integer","minimum":60,"maximum":7200,"default":3300}},"required":["stackId","requestId","logicalResourceId","responseUrl"],"additionalProperties":false},"DeleteDeploymentResponse":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]},"message":{"type":"string"}},"required":["action","message"]},"DeleteDeploymentRequest":{"type":"object","properties":{"action":{"type":"string","enum":["cleanup","detach","forget"]}},"required":["action"]},"PinReleaseRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release ID to pin the deployment to. Set to null to unpin and use active release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for pinning/unpinning deployment release"},"SetTargetAgentVersionRequest":{"type":"object","properties":{"targetAgentVersion":{"type":"string","nullable":true,"pattern":"^\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]+)?$","description":"Target agent version (semver). null or omitted clears the target."}},"additionalProperties":false,"description":"Set or clear the target agent version"},"UpdateDeploymentEnvironmentVariablesRequest":{"type":"object","properties":{"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"value":{"type":"string","description":"Variable value"},"type":{"type":"string","enum":["plain","secret"],"description":"Variable type"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources)"}},"required":["name","value","type"]},"description":"Environment variables for the deployment"}},"required":["variables"],"additionalProperties":false,"description":"Request schema for updating deployment environment variables"},"CreateDeploymentTokenResponse":{"type":"object","properties":{"token":{"type":"string","description":"The generated deployment token (only shown once)"},"deploymentId":{"type":"string","description":"The deployment ID that this token is scoped to"}},"required":["token","deploymentId"]},"CreateDeploymentTokenRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128,"description":"Optional description for the deployment token"},"expiresAt":{"type":"string","format":"date-time","description":"Optional expiration date for the deployment token"}},"required":["description"]},"CreateManagerResponse":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["pending"]},"setupToken":{"type":"string"},"setupTokenId":{"type":"string"},"deploymentLink":{"type":"string"},"setupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"inputValues":{"$ref":"#/components/schemas/EncryptedStackInputValues"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["plain","secret"]},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"}}},"required":["name","type","targetResources"]}}},"required":["metadata","policy","environmentVariables"]},"setup":{"oneOf":[{"type":"object","properties":{"method":{"type":"string","enum":["cloudformation"]},"deploymentPortalUrl":{"type":"string"},"launchUrl":{"type":"string"},"templateUrl":{"type":"string"},"stackName":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","launchUrl","templateUrl","stackName","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["google-oauth"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"oauthStartUrl":{"type":"string"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","oauthStartUrl","region","stackSettings"]},{"type":"object","properties":{"method":{"type":"string","enum":["terraform"]},"deploymentPortalUrl":{"type":"string"},"managerUrl":{"type":"string"},"providerSource":{"type":"string"},"moduleSource":{"type":"string"},"moduleVersion":{"type":"string"},"moduleInputs":{"type":"object","additionalProperties":{"type":"string"}},"mainTf":{"type":"string"},"tfvars":{"type":"string"},"commands":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["method","deploymentPortalUrl","managerUrl","providerSource","moduleSource","moduleInputs","mainTf","tfvars","commands","stackSettings"]}]}},"required":["managerId","setupStatus","setupToken","setupTokenId","deploymentLink","setupConfig","setup"]},"NewManagerRequest":{"type":"object","properties":{"name":{"type":"string"},"cloud":{"$ref":"#/components/schemas/PrivateManagerCloud"},"region":{"type":"string","minLength":1,"maxLength":64,"description":"Cloud region for the manager."},"setupMethod":{"$ref":"#/components/schemas/PrivateManagerSetupMethod"},"network":{"type":"string","enum":["create","default"],"description":"Optional network mode for the private-manager setup. Defaults to create for production isolation; default uses the provider default network for faster dev/test setup."},"otlpConfig":{"type":"object","properties":{"logsEndpoint":{"type":"string","format":"uri","description":"External OTLP logs endpoint (e.g. https://api.axiom.co/v1/logs)"},"logsAuthHeader":{"type":"string","description":"Auth header in 'key=value,...' format (e.g. 'authorization=Bearer ,x-axiom-dataset=')"}},"required":["logsEndpoint","logsAuthHeader"],"description":"Optional external OTLP config for forwarding logs to Axiom, Datadog, etc. Falls back to built-in DeepStore when not set."}},"required":["name","cloud","region"]},"PrivateManagerCloud":{"type":"string","enum":["aws","gcp","azure"],"description":"Cloud where the private manager will be deployed."},"PrivateManagerSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform"],"description":"Optional setup method. Defaults to cloudformation for AWS, google-oauth for GCP, and terraform for Azure."},"ManagerRetryResponse":{"oneOf":[{"allOf":[{"$ref":"#/components/schemas/CreateManagerResponse"},{"type":"object","properties":{"mode":{"type":"string","enum":["setup"]}},"required":["mode"]}]},{"$ref":"#/components/schemas/ManagerRetryDeploymentResponse"}]},"ManagerRetryDeploymentResponse":{"type":"object","properties":{"mode":{"type":"string","enum":["deployment"]},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"setupStatus":{"type":"string","enum":["provisioning"]},"deploymentId":{"type":"string"},"message":{"type":"string"}},"required":["mode","managerId","setupStatus","deploymentId","message"]},"Manager":{"type":"object","properties":{"id":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for the manager"}]},"name":{"type":"string","description":"Display name of the manager"},"targets":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where this private manager is deployed"},"region":{"type":"string","nullable":true,"description":"Cloud region selected for this private manager"},"setupStatus":{"type":"string","nullable":true,"enum":["pending","provisioning","active","failed","deleting","deleted",null],"description":"Private manager setup lifecycle status"},"url":{"type":"string","nullable":true,"format":"uri","description":"Manager URL (self-reported via heartbeat). DeepStore endpoints are exposed through this URL (e.g., {url}/v1/logs)"},"managementConfigs":{"$ref":"#/components/schemas/ManagerManagementConfigs"},"isSystem":{"type":"boolean","description":"Whether this is a system manager (Alien-hosted)"},"workspaceId":{"type":"string","description":"The workspace ID (for system managers, this is ALIEN_WORKSPACE_ID)"},"status":{"$ref":"#/components/schemas/ManagerStatus"},"version":{"type":"string","nullable":true,"description":"Manager version (self-reported via heartbeat)"},"metrics":{"type":"object","nullable":true,"properties":{"activeDeployments":{"type":"number","description":"Number of active deployments"},"pendingDeployments":{"type":"number","description":"Number of pending deployments"},"memoryUsageMb":{"type":"number","description":"Memory usage in megabytes"},"cpuUsagePercent":{"type":"number","description":"CPU usage percentage"}},"description":"Runtime metrics (self-reported via heartbeat)"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the manager"},"logsDatabaseId":{"type":"string","nullable":true,"description":"ID of the logs database associated with this manager"},"managedDeploymentCount":{"type":"integer","minimum":0,"description":"Number of deployments currently being managed by this manager"},"defaultProjectCount":{"type":"integer","minimum":0,"description":"Number of projects that select this manager as a default manager"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp when the manager was created"}},"required":["id","name","targets","managementConfigs","isSystem","workspaceId","status","managedDeploymentCount","defaultProjectCount","createdAt"],"description":"Manager schema"},"ManagerManagementConfigs":{"type":"object","properties":{"aws":{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"},"platform":{"type":"string","enum":["aws"]}},"required":["managingRoleArn","platform"]},"gcp":{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"},"platform":{"type":"string","enum":["gcp"]}},"required":["serviceAccountEmail","platform"]},"azure":{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."},"platform":{"type":"string","enum":["azure"]}},"required":["managingTenantId","oidcIssuer","oidcSubject","platform"]},"kubernetes":{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}},"description":"Per-platform management configurations for cross-account access (self-reported via heartbeat)"},"ManagerStatus":{"type":"string","enum":["healthy","degraded","unhealthy","unknown"],"description":"Current health status"},"ManagerDomainBindingResponse":{"type":"object","properties":{"managerDomainBinding":{"$ref":"#/components/schemas/DomainEndpoint"}},"required":["managerDomainBinding"]},"UpdateManagerDomainBinding":{"type":"object","properties":{"domainId":{"type":"string","nullable":true,"pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"}},"additionalProperties":false},"UpdateManagerRequest":{"type":"object","properties":{"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Optional release ID to update to. If not provided, the active release will be chosen","example":"rel_WbhQgksrawSKIpEN0NAssHX9"}},"additionalProperties":false,"description":"Request schema for updating a manager to a new release"},"Event":{"type":"object","properties":{"id":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"deploymentId":{"type":"string","nullable":true,"pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"releaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"debugSessionId":{"type":"string","nullable":true,"pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"data":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["LoadingConfiguration"]}},"required":["type"]},{"type":"object","properties":{"type":{"type":"string","enum":["Finished"]}},"required":["type"]},{"type":"object","properties":{"stack":{"type":"string","description":"Name of the stack being built"},"type":{"type":"string","enum":["BuildingStack"]}},"required":["stack","type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform being targeted"},"stack":{"type":"string","description":"Name of the stack being checked"},"type":{"type":"string","enum":["RunningPreflights"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"targetTriple":{"type":"string","description":"Target triple for the runtime"},"type":{"type":"string","enum":["DownloadingAlienRuntime"]},"url":{"type":"string","description":"URL being downloaded from"}},"required":["targetTriple","type","url"]},{"type":"object","properties":{"relatedResources":{"type":"array","items":{"type":"string"},"description":"All resource names sharing this build (for deduped container groups)"},"resourceName":{"type":"string","description":"Name of the resource being built"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["BuildingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being built"},"type":{"type":"string","enum":["BuildingImage"]}},"required":["image","type"]},{"type":"object","properties":{"image":{"type":"string","description":"Name of the image being pushed"},"progress":{"oneOf":[{"type":"object","properties":{"bytesUploaded":{"type":"integer","minimum":0,"description":"Bytes uploaded so far"},"layersUploaded":{"type":"integer","minimum":0,"description":"Number of layers uploaded so far"},"operation":{"type":"string","description":"Current operation being performed"},"totalBytes":{"type":"integer","minimum":0,"description":"Total bytes to upload"},"totalLayers":{"type":"integer","minimum":0,"description":"Total number of layers to upload"}},"required":["bytesUploaded","layersUploaded","operation","totalBytes","totalLayers"],"description":"Progress information for image push operations"},{"nullable":true}]},"type":{"type":"string","enum":["PushingImage"]}},"required":["image","type"]},{"type":"object","properties":{"destination":{"type":"string","nullable":true,"description":"Human-readable destination for pushed images"},"platform":{"type":"string","description":"Target platform"},"stack":{"type":"string","description":"Name of the stack being pushed"},"type":{"type":"string","enum":["PushingStack"]}},"required":["platform","stack","type"]},{"type":"object","properties":{"resourceName":{"type":"string","description":"Name of the resource being pushed"},"resourceType":{"type":"string","description":"Type of the resource: \"worker\", \"container\""},"type":{"type":"string","enum":["PushingResource"]}},"required":["resourceName","resourceType","type"]},{"type":"object","properties":{"project":{"type":"string","description":"Project name"},"type":{"type":"string","enum":["CreatingRelease"]}},"required":["project","type"]},{"type":"object","properties":{"language":{"type":"string","description":"Language being compiled (rust, typescript, etc.)"},"progress":{"type":"string","nullable":true,"description":"Current progress/status line from the build output"},"type":{"type":"string","enum":["CompilingCode"]}},"required":["language","type"]},{"type":"object","properties":{"nextState":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},"suggestedDelayMs":{"type":"integer","nullable":true,"minimum":0,"description":"An suggested duration to wait before executing the next step."},"type":{"type":"string","enum":["StackStep"]}},"required":["nextState","type"]},{"type":"object","properties":{"type":{"type":"string","enum":["GeneratingCloudFormationTemplate"]}},"required":["type"]},{"type":"object","properties":{"platform":{"type":"string","description":"Platform for which the template is being generated"},"type":{"type":"string","enum":["GeneratingTemplate"]}},"required":["platform","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being provisioned"},"releaseId":{"type":"string","description":"ID of the release being deployed to the agent"},"type":{"type":"string","enum":["ProvisioningAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being updated"},"releaseId":{"type":"string","description":"ID of the new release being deployed to the agent"},"type":{"type":"string","enum":["UpdatingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being deleted"},"releaseId":{"type":"string","description":"ID of the release that was running on the agent"},"type":{"type":"string","enum":["DeletingAgent"]}},"required":["agentId","releaseId","type"]},{"type":"object","properties":{"agentId":{"type":"string","description":"ID of the agent being debugged"},"debugSessionId":{"type":"string","description":"ID of the debug session"},"type":{"type":"string","enum":["DebuggingAgent"]}},"required":["agentId","debugSessionId","type"]},{"type":"object","properties":{"strategyName":{"type":"string","description":"Name of the deployment strategy being used"},"type":{"type":"string","enum":["PreparingEnvironment"]}},"required":["strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being deployed"},"type":{"type":"string","enum":["DeployingStack"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being tested"},"type":{"type":"string","enum":["RunningTestWorker"]}},"required":["stackName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpStack"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"stackName":{"type":"string","description":"Name of the stack being cleaned up"},"strategyName":{"type":"string","description":"Name of the deployment strategy being used for cleanup"},"type":{"type":"string","enum":["CleaningUpEnvironment"]}},"required":["stackName","strategyName","type"]},{"type":"object","properties":{"platformName":{"type":"string","description":"Name of the platform (e.g., \"AWS\", \"GCP\")"},"type":{"type":"string","enum":["SettingUpPlatformContext"]}},"required":["platformName","type"]},{"type":"object","properties":{"repositoryName":{"type":"string","description":"Name of the docker repository"},"type":{"type":"string","enum":["EnsuringDockerRepository"]}},"required":["repositoryName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeployingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"roleArn":{"type":"string","description":"ARN of the role to assume"},"type":{"type":"string","enum":["AssumingRole"]}},"required":["roleArn","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"type":{"type":"string","enum":["ImportingStackStateFromCloudFormation"]}},"required":["cfnStackName","type"]},{"type":"object","properties":{"cfnStackName":{"type":"string","description":"Name of the CloudFormation stack"},"currentStatus":{"type":"string","description":"Current stack status"},"type":{"type":"string","enum":["DeletingCloudFormationStack"]}},"required":["cfnStackName","currentStatus","type"]},{"type":"object","properties":{"bucketNames":{"type":"array","items":{"type":"string"},"description":"Names of the S3 buckets being emptied"},"type":{"type":"string","enum":["EmptyingBuckets"]}},"required":["bucketNames","type"]},{"type":"object","properties":{"deploymentGroupId":{"type":"string","description":"ID of the deployment group this slot belongs to"},"deploymentId":{"type":"string","description":"ID of the deployment that was created"},"releaseId":{"type":"string","nullable":true,"description":"Initial release the slot was created with, if any"},"type":{"type":"string","enum":["DeploymentCreated"]}},"required":["deploymentGroupId","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousReleaseId":{"type":"string","nullable":true,"description":"ID of the release that was previously live, if any"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentReleased"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release the platform was trying to deploy, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"phase":{"type":"string","enum":["preflights","provisioning","updating","deleting"],"description":"Phase of a deployment at which a failure occurred.\n\nDerived from the source deployment status: `preflights-failed` →\n`Preflights`, `provisioning-failed` → `Provisioning`, `update-failed` →\n`Updating`, `delete-failed` → `Deleting`.\n`refresh-failed` is modelled separately via `DeploymentDegraded`."},"type":{"type":"string","enum":["DeploymentFailed"]}},"required":["deploymentId","error","phase","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"error":{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},"type":{"type":"string","enum":["DeploymentDegraded"]}},"required":["deploymentId","error","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release that is now live"},"type":{"type":"string","enum":["DeploymentRecovered"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment that was deleted"},"type":{"type":"string","enum":["DeploymentDeleted"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"deploymentGroupId":{"type":"string","description":"ID of the deployment group that authorized the rejoin"},"deploymentId":{"type":"string","description":"ID of the deployment whose agent rejoined"},"type":{"type":"string","enum":["DeploymentRejoined"]}},"required":["deploymentGroupId","deploymentId","type"]},{"type":"object","properties":{"attemptedReleaseId":{"type":"string","nullable":true,"description":"ID of the release that the failed attempt was targeting, if known"},"deploymentId":{"type":"string","description":"ID of the deployment"},"previousError":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"type":{"type":"string","enum":["DeploymentRetryRequested"]}},"required":["deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"releaseId":{"type":"string","description":"ID of the release being redeployed"},"type":{"type":"string","enum":["DeploymentRedeployRequested"]}},"required":["deploymentId","releaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"pinnedReleaseId":{"type":"string","description":"ID of the release that is now pinned"},"previousPinnedReleaseId":{"type":"string","nullable":true,"description":"ID of the previously pinned release, if any"},"type":{"type":"string","enum":["DeploymentReleasePinned"]}},"required":["deploymentId","pinnedReleaseId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"previousPinnedReleaseId":{"type":"string","description":"ID of the release that was previously pinned"},"type":{"type":"string","enum":["DeploymentReleaseUnpinned"]}},"required":["deploymentId","previousPinnedReleaseId","type"]},{"type":"object","properties":{"changedKeys":{"type":"array","items":{"type":"string"},"description":"Names of the environment variables that changed (added, removed, or modified)"},"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentEnvironmentUpdated"]}},"required":["changedKeys","deploymentId","type"]},{"type":"object","properties":{"deploymentId":{"type":"string","description":"ID of the deployment"},"type":{"type":"string","enum":["DeploymentDeletionRequested"]}},"required":["deploymentId","type"]}]},"state":{"oneOf":[{"type":"object","properties":{"failed":{"type":"object","properties":{"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]}},"description":"Event failed with an error"}},"required":["failed"]},{"type":"string","enum":["none"]},{"type":"string","enum":["started"]},{"type":"string","enum":["success"]}],"description":"Represents the state of an event"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"createdAt":{"type":"string","format":"date-time"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","data","state","projectId","createdAt","workspaceId"]},"GenerateManagerTokenResponse":{"type":"object","properties":{"accessToken":{"type":"string","description":"Platform JWT for authenticating with the manager"},"expiresIn":{"type":"number","nullable":true,"description":"Token lifetime in seconds"},"tokenType":{"type":"string","enum":["Bearer"]},"managerUrl":{"type":"string","description":"Manager URL for direct access"},"databaseId":{"type":"string","nullable":true,"description":"Log database ID (null if logs not configured)"},"controlPlaneUrl":{"type":"string","nullable":true,"description":"Log control plane URL (null if logs not configured)"}},"required":["accessToken","expiresIn","tokenType","managerUrl","databaseId","controlPlaneUrl"]},"GenerateManagerTokenRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to scope token access to. When omitted, the token is scoped to all projects accessible by the current user."}}},"ResolveManagerGcpOAuthProviderResponse":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["alien-managed"]}},"required":["mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["custom"]},"clientId":{"$ref":"#/components/schemas/GcpOAuthClientId"},"clientSecret":{"$ref":"#/components/schemas/GcpOAuthClientSecret"}},"required":["mode","clientId","clientSecret"]}]},"ResolveManagerGcpOAuthProviderRequest":{"type":"object","properties":{"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group bearer token whose project-level OAuth provider should be resolved."},"returnOrigin":{"type":"string","format":"uri","description":"Browser origin that will receive the Google OAuth callback result. Must be a first-party dashboard origin or the active portal origin for the deployment group's project."}},"required":["deploymentGroupToken"]},"ManagerHeartbeatResponse":{"type":"object","properties":{"acknowledged":{"type":"boolean"},"timestamp":{"type":"string"}},"required":["acknowledged","timestamp"]},"ManagerHeartbeatRequest":{"type":"object","properties":{"status":{"type":"string","enum":["healthy","degraded","unhealthy"],"description":"Current health status"},"version":{"type":"string","description":"Manager version"},"url":{"type":"string","format":"uri","description":"Manager public URL (for accessing DeepStore endpoints)"},"managementConfigs":{"allOf":[{"$ref":"#/components/schemas/ManagerManagementConfigs"},{"description":"Per-platform management configurations for cross-account access"}]},"metrics":{"type":"object","properties":{"activeDeployments":{"type":"number"},"pendingDeployments":{"type":"number"},"memoryUsageMb":{"type":"number"},"cpuUsagePercent":{"type":"number"}},"description":"Optional runtime metrics"}},"required":["status","url","managementConfigs"]},"ManagerDeployment":{"type":"object","properties":{"platform":{"type":"string","description":"Platform of the internal deployment"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status of the internal deployment"},"deploymentId":{"type":"string","description":"Internal deployment ID"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Currently deployed private manager release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Target private manager release for an in-progress update","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"error":{"nullable":true,"description":"Latest provision / upgrade / delete error"},"resources":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string","description":"Resource type"},"status":{"type":"string","description":"Resource status"},"outputs":{"type":"object","additionalProperties":{"nullable":true},"description":"Resource outputs"}},"required":["type","status"]},"description":"Simplified stack state resources"},"environmentInfo":{"nullable":true,"description":"Manager environment info"}},"required":["platform","status","deploymentId","resources"]},"APIKey":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"},"createdByUser":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"email":{"type":"string"},"image":{"type":"string","nullable":true}},"required":["id","email","image"],"description":"User information associated with the API key"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig","createdByUser"],"description":"API key information"},"APIKeyDeploymentSetupConfig":{"type":"object","nullable":true,"properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"$ref":"#/components/schemas/APIKeyDeploymentSetupEnvironmentVariable"}}},"required":["metadata","policy","environmentVariables"]},"APIKeyDeploymentSetupEnvironmentVariable":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]},"CreateAPIKeyResponse":{"type":"object","properties":{"apiKey":{"type":"string","description":"The generated API key value (only shown once)"},"keyInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"description":{"type":"string","nullable":true},"keyPrefix":{"type":"string"},"type":{"type":"string","enum":["workspace","project","deployment","deployment-group","manager"]},"role":{"type":"string"},"workspaceId":{"type":"string"},"projectId":{"type":"string","nullable":true},"deploymentId":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"managerId":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","nullable":true,"format":"date-time"},"lastUsedAt":{"type":"string","nullable":true,"format":"date-time"},"revokedAt":{"type":"string","nullable":true,"format":"date-time"},"deploymentSetupConfig":{"$ref":"#/components/schemas/APIKeyDeploymentSetupConfig"}},"required":["id","description","keyPrefix","type","role","workspaceId","projectId","deploymentId","deploymentGroupId","managerId","enabled","createdAt","expiresAt","lastUsedAt","revokedAt","deploymentSetupConfig"]}},"required":["apiKey","keyInfo"],"description":"Response containing the new API key and its metadata"},"CreateAPIKeyRequest":{"type":"object","properties":{"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"scope":{"$ref":"#/components/schemas/Scope"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"required":["description","scope","expiresAt"],"description":"Request schema for creating a new API key"},"Scope":{"oneOf":[{"$ref":"#/components/schemas/WorkspaceScope"},{"$ref":"#/components/schemas/ProjectScope"},{"$ref":"#/components/schemas/DeploymentScope"},{"$ref":"#/components/schemas/DeploymentGroupScope"},{"$ref":"#/components/schemas/ManagerScope"}],"discriminator":{"propertyName":"type","mapping":{"workspace":"#/components/schemas/WorkspaceScope","project":"#/components/schemas/ProjectScope","deployment":"#/components/schemas/DeploymentScope","deployment-group":"#/components/schemas/DeploymentGroupScope","manager":"#/components/schemas/ManagerScope"}},"description":"Scope and role configuration for service accounts"},"WorkspaceScope":{"type":"object","properties":{"type":{"type":"string","enum":["workspace"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["type","role"],"description":"Workspace-scoped configuration"},"ProjectScope":{"type":"object","properties":{"type":{"type":"string","enum":["project"]},"projectId":{"type":"string","description":"ID of the project this is scoped to"},"role":{"$ref":"#/components/schemas/ProjectRole"}},"required":["type","projectId","role"],"description":"Project-scoped configuration"},"DeploymentScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment"]},"deploymentId":{"type":"string","description":"ID of the deployment this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment belongs to"},"role":{"$ref":"#/components/schemas/DeploymentRole"}},"required":["type","deploymentId","projectId","role"],"description":"Deployment-scoped configuration"},"DeploymentGroupScope":{"type":"object","properties":{"type":{"type":"string","enum":["deployment-group"]},"deploymentGroupId":{"type":"string","description":"ID of the deployment group this is scoped to"},"projectId":{"type":"string","description":"ID of the project this deployment group belongs to"},"role":{"$ref":"#/components/schemas/DeploymentGroupRole"}},"required":["type","deploymentGroupId","projectId","role"],"description":"Deployment group-scoped configuration"},"ManagerScope":{"type":"object","properties":{"type":{"type":"string","enum":["manager"]},"managerId":{"type":"string","description":"ID of the manager this is scoped to"},"role":{"$ref":"#/components/schemas/ManagerRole"}},"required":["type","managerId","role"],"description":"Manager-scoped configuration"},"UpdateAPIKeyRequest":{"type":"object","properties":{"enabled":{"type":"boolean"},"description":{"type":"string","nullable":true,"minLength":3,"maxLength":128},"deploymentSetupConfig":{"$ref":"#/components/schemas/UpdateDeploymentSetupPolicy"},"expiresAt":{"type":"string","nullable":true,"format":"date-time","description":"Optional expiration date for the API key"}},"description":"Request schema for updating an API key"},"UpdateDeploymentSetupPolicy":{"type":"object","properties":{"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"}},"required":["policy"],"description":"Editable part of a deployment link's setup config. Locked env vars and input values are preserved."},"DeleteAPIKeysRequest":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"minItems":1}},"required":["ids"]},"DomainWithUsage":{"allOf":[{"$ref":"#/components/schemas/Domain"},{"type":"object","properties":{"endpoints":{"type":"array","items":{"$ref":"#/components/schemas/DomainEndpoint"}},"usage":{"type":"object","properties":{"deploymentUrlProjects":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"portalBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true},"hostname":{"type":"string"}},"required":["id","projectId","projectName","hostname"]}},"packageDomains":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"hostname":{"type":"string"}},"required":["id","hostname"]}},"managerBindings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"managerId":{"type":"string"},"managerName":{"type":"string"},"hostname":{"type":"string"}},"required":["id","managerId","managerName","hostname"]}}},"required":["deploymentUrlProjects","portalBindings","packageDomains","managerBindings"]}},"required":["endpoints","usage"]}]},"Domain":{"type":"object","properties":{"id":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"domain":{"type":"string"},"isSystem":{"type":"boolean"},"claimToken":{"type":"string"},"hostedZoneId":{"type":"string","nullable":true},"nameServers":{"type":"array","nullable":true,"items":{"type":"string"}},"status":{"type":"string","enum":["pending-zone-creation","pending-verification","verified","lost-verification","failed","deleting"]},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"verifiedAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","workspaceId","domain","isSystem","claimToken","status","createdAt","updatedAt"]},"CommandListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Command"},{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/CommandDeploymentInfo"},"project":{"$ref":"#/components/schemas/CommandProjectInfo"}}}]},"CommandDeploymentInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"$ref":"#/components/schemas/CommandDeploymentGroupInfo"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Platform-specific environment information"},"managerId":{"type":"string","description":"Manager ID for obtaining access tokens"},"managerUrl":{"type":"string","nullable":true,"format":"uri","description":"URL of the manager for direct payload access"},"managerName":{"type":"string","nullable":true,"description":"Human-readable name of the manager"},"managerIsSystem":{"type":"boolean","nullable":true,"description":"Whether the manager is Alien-hosted (system)"}},"required":["id","name","managerId"]},"CommandDeploymentGroupInfo":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"CommandProjectInfo":{"type":"object","properties":{"id":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"name":{"type":"string"}},"required":["id","name"]},"Command":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"name":{"type":"string","description":"Command name (e.g., 'analyze-repository', 'sync-data')"},"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Command states in the Commands protocol lifecycle"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model captured from deployment at creation time"},"attempt":{"type":"number","nullable":true,"description":"Current attempt number"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","nullable":true,"description":"Size of command params in bytes"},"responseSizeBytes":{"type":"number","nullable":true,"description":"Size of command response in bytes"},"createdAt":{"type":"string","format":"date-time","description":"When the command was created"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command was dispatched to the deployment"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When the command completed"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if command failed"},"result":{"nullable":true,"description":"Decoded command result when available"}},"required":["id","deploymentId","projectId","workspaceId","name","state","deploymentModel","attempt","deadline","requestSizeBytes","responseSizeBytes","createdAt","dispatchedAt","completedAt","error"]},"ListCommandNamesResponse":{"type":"object","properties":{"names":{"type":"array","items":{"type":"string"}}},"required":["names"]},"ListCommandDeploymentsResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}},"required":["id","name"]}}},"required":["deployments"]},"CreateCommandResponse":{"type":"object","properties":{"id":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"projectId":{"type":"string","description":"Project ID (for manager to use in routing)"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"How to dispatch the command"}},"required":["id","projectId","deploymentModel"]},"CreateCommandRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Target deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Command name (e.g., 'analyze-repository')"},"params":{"nullable":true,"description":"Command parameters for public invocation"},"initialState":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Initial state (PENDING_UPLOAD if params require upload, PENDING if inline)"},"deadline":{"type":"string","nullable":true,"format":"date-time","description":"Optional deadline for command execution"},"requestSizeBytes":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Size of command params in bytes"}},"required":["deploymentId","name"]},"UpdateCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"New command state"},"attempt":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Current attempt number"},"dispatchedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command was dispatched"},"completedAt":{"type":"string","nullable":true,"format":"date-time","description":"When command completed"},"responseSizeBytes":{"type":"number","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Size of response in bytes"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Error details if failed"}}},"DebugSessionListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DebugSession"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"},"DebugSession":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"owner":{"type":"string","nullable":true,"maxLength":128},"state":{"$ref":"#/components/schemas/DebugSessionState"},"mode":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"provider":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Represents the target cloud platform."},"presignedUrls":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DebugPackagePresignedURLs"}},"error":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"}},"required":["id","state","mode","presignedUrls","createdAt","expiresAt","deploymentId","projectId","workspaceId"]},"DebugSessionState":{"type":"string","enum":["pending","running","stopping","stopped","expired","failed"]},"DebugPackagePresignedURLs":{"type":"object","properties":{"readUrl":{"type":"string","maxLength":2048,"format":"uri"},"writeUrl":{"type":"string","maxLength":2048,"format":"uri"}},"required":["readUrl","writeUrl"]},"CreateDebugSessionRequest":{"type":"object","properties":{"id":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Override the generated id. Manager passes the registry session id so logs correlate.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"owner":{"type":"string","nullable":true,"maxLength":128},"expiresAt":{"type":"string","format":"date-time"},"state":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Initial state. Defaults to 'pending'."}]}},"required":["deploymentId","expiresAt"]},"UpdateDebugSessionRequest":{"type":"object","properties":{"state":{"$ref":"#/components/schemas/DebugSessionState"},"error":{"type":"object","nullable":true,"additionalProperties":{"nullable":true}},"expiresAt":{"type":"string","format":"date-time"}}},"DeploymentInfo":{"type":"object","properties":{"tokenType":{"type":"string","enum":["deployment","deployment-group"],"description":"Type of token used to authenticate this request"},"deployment":{"type":"object","properties":{"name":{"type":"string"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}},"required":["name","platform"],"description":"Deployment details (present when using a deployment-scoped token)"},"deploymentGroup":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"}},"required":["id","name"],"description":"Deployment group details (present when using a deployment-group token)"},"workspace":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"avatarUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name"]},"project":{"type":"object","properties":{"name":{"type":"string"},"portal":{"type":"object","properties":{"appearance":{"$ref":"#/components/schemas/DeploymentPortalAppearance"}},"required":["appearance"]},"stackSummary":{"type":"object","nullable":true,"properties":{"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"resourceCounts":{"type":"object","properties":{"workers":{"type":"integer","minimum":0},"containers":{"type":"integer","minimum":0},"publicHttpsEndpoints":{"type":"integer","minimum":0,"description":"Resources that declare managed public HTTPS endpoint setup"},"externalInfra":{"type":"integer","minimum":0,"description":"Storage, queue, KV, vault, database, or cache resources that Kubernetes needs Terraform to provision"},"total":{"type":"integer","minimum":0}},"required":["workers","containers","publicHttpsEndpoints","externalInfra","total"]},"publicEndpoints":{"type":"array","items":{"type":"object","properties":{"resourceId":{"type":"string"},"endpointName":{"type":"string"},"hostLabel":{"type":"string"},"wildcardSubdomains":{"type":"boolean"}},"required":["resourceId","endpointName","hostLabel","wildcardSubdomains"]},"description":"Public endpoints declared by the active release stack"}},"required":["platforms","resourceCounts","publicEndpoints"]}},"required":["name","portal"]},"packages":{"type":"object","properties":{"ready":{"type":"boolean","description":"True if all enabled packages are ready for deployment"},"cli":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"commandName":{"type":"string","description":"CLI command name to use in install instructions"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"binaries":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 checksum"},"size":{"type":"integer","minimum":0,"description":"File size in bytes"},"url":{"type":"string","description":"Download URL for the binary"}},"required":["sha256","size","url"],"description":"Information about a single binary artifact"},"description":"Binary information for each target platform"}},"required":["binaries"],"description":"Outputs from a CLI package build"},"error":{"nullable":true},"installScripts":{"type":"object","properties":{"windows":{"type":"string","format":"uri"},"mac":{"type":"string","format":"uri"},"linux":{"type":"string","format":"uri"}},"required":["windows","mac","linux"],"description":"Install script URLs for each OS"}},"required":["status","commandName","installScripts"]},"cloudformation":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"targets":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"launchStackUrl":{"type":"string","description":"AWS Console quick-launch URL"},"sha256":{"type":"string","description":"SHA256 checksum of the template"},"size":{"type":"integer","minimum":0,"description":"Template size in bytes"},"stackPolicyUrl":{"type":"string","description":"S3 URL to the CloudFormation stack policy"},"target":{"type":"string","description":"CloudFormation target (aws, eks)"},"templateUrl":{"type":"string","description":"S3 URL to the CloudFormation template"}},"required":["launchStackUrl","sha256","size","stackPolicyUrl","target","templateUrl"],"description":"Information about a single CloudFormation template package for one target."},"description":"Template artifacts by CloudFormation target."}},"required":["targets"],"description":"Outputs from a CloudFormation package build."},"error":{"nullable":true},"mode":{"type":"string","enum":["auto","outputs"]},"launchUrl":{"type":"string","format":"uri","description":"CloudFormation launch URL"},"outputsSchema":{"nullable":true}},"required":["status","mode","launchUrl"]},"terraform":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"modules":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the module archive"},"filename":{"type":"string","description":"Filename of the module archive"},"shasum":{"type":"string","description":"SHA256 checksum of the archive"},"size":{"type":"integer","minimum":0,"description":"Size of the archive in bytes"},"source":{"type":"string","description":"Terraform module source (hostname/namespace/name/provider, without scheme)"},"target":{"type":"string","description":"Terraform module target (aws, gcp, azure, eks, gke, aks)"},"variables":{"type":"array","items":{"type":"string"},"description":"Terraform input variables exposed by this module."}},"required":["downloadUrl","filename","shasum","size","source","target"],"description":"Information about a single Terraform module package for one target."},"description":"Module registry artifacts by Terraform target."},"provider":{"type":"object","properties":{"gpgPublicKey":{"type":"object","properties":{"asciiArmor":{"type":"string","description":"ASCII-armored public key"},"keyId":{"type":"string","description":"GPG key ID"}},"required":["asciiArmor","keyId"],"description":"GPG public key for Terraform provider signature verification"},"platforms":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"Download URL for the provider zip"},"filename":{"type":"string","description":"Filename of the provider zip"},"shasum":{"type":"string","description":"SHA256 checksum of the zip file"},"shasumsSignatureUrl":{"type":"string","description":"URL to the shasums signature file"},"shasumsUrl":{"type":"string","description":"URL to the shasums file"},"size":{"type":"integer","minimum":0,"description":"Size of the zip file in bytes"}},"required":["downloadUrl","filename","shasum","shasumsSignatureUrl","shasumsUrl","size"],"description":"Information about a single Terraform provider package for a specific platform"},"description":"Provider packages for each target platform"},"source":{"type":"string","description":"Terraform provider source (hostname/namespace/type, without scheme)"}},"required":["gpgPublicKey","platforms","source"],"description":"Terraform provider registry outputs."}},"required":["modules","provider"],"description":"Outputs from a Terraform package build."},"error":{"nullable":true},"providerSource":{"type":"string","description":"Terraform provider source (without https://)"},"moduleSources":{"type":"object","additionalProperties":{"type":"string"},"description":"Terraform module sources by target"},"moduleVersion":{"type":"string"},"managerUrls":{"type":"object","additionalProperties":{"type":"string"},"description":"Manager URLs by Terraform target"}},"required":["status","providerSource","moduleSources","managerUrls"]},"helm":{"type":"object","properties":{"status":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Status of a package build"},"version":{"type":"string"},"outputs":{"type":"object","properties":{"chart":{"type":"string","description":"OCI chart reference (e.g., \"oci://public.ecr.aws/acme/charts/project-id\")"},"version":{"type":"string","description":"Chart version (e.g., \"1.2.3\")"}},"required":["chart","version"],"description":"Outputs from a Helm chart package build"},"error":{"nullable":true},"chartRef":{"type":"string","description":"OCI chart reference"},"managerFetchExample":{"type":"string"},"localImportExample":{"type":"string"}},"required":["status","chartRef"]}},"required":["ready"]},"installContext":{"type":"object","properties":{"targets":{"type":"object","additionalProperties":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managerUrl":{"type":"string","format":"uri"},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"awsManagingAccountId":{"type":"string"}},"required":["platform","managerUrl"]},"description":"Deployment-session install context by Terraform/installer target"}},"required":["targets"]},"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"},"setupConfig":{"$ref":"#/components/schemas/DeploymentInfoSetupConfig"}},"required":["tokenType","workspace","project","packages","installContext","supportedRegions"]},"DeploymentPortalAppearance":{"type":"object","properties":{"avatarUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional project-specific avatar override for the deployment portal."},"preset":{"$ref":"#/components/schemas/DeploymentPortalAppearancePreset"},"accentColor":{"$ref":"#/components/schemas/DeploymentPortalAccentColor"},"title":{"type":"string","nullable":true,"maxLength":80,"description":"Optional portal title. Defaults to the project name."},"subtitle":{"type":"string","nullable":true,"maxLength":160,"description":"Optional customer-facing subtitle."},"supportUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional support or contact URL."},"docsUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri","description":"Optional documentation URL."},"density":{"$ref":"#/components/schemas/DeploymentPortalDensity"}}},"SupportedCloudRegions":{"type":"object","properties":{"aws":{"type":"array","items":{"type":"string"},"description":"AWS regions supported by this Alien environment."},"gcp":{"type":"array","items":{"type":"string"},"description":"GCP regions supported by this Alien environment."},"azure":{"type":"array","items":{"type":"string"},"description":"Azure locations supported by this Alien environment."}},"required":["aws","gcp","azure"]},"DeploymentInfoSetupConfig":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/DeploymentSetupMetadata"},"policy":{"$ref":"#/components/schemas/DeploymentSetupPolicy"},"environmentVariables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[A-Z_][A-Z0-9_]*$","description":"Variable name"},"type":{"$ref":"#/components/schemas/EnvironmentVariableType"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string","pattern":"^[a-zA-Z0-9_-]+(\\*)?$"},"description":"Target resource patterns (null = all resources, array = wildcard patterns)"}},"required":["name","type","targetResources"]}},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."}},"inputValues":{"type":"array","items":{"$ref":"#/components/schemas/ResolvedStackInputSummary"}}},"required":["metadata","policy","environmentVariables"]},"ResolvedStackInputSummary":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"]}},"required":{"type":"boolean"},"secret":{"type":"boolean"},"provided":{"type":"boolean"}},"required":["id","label","providedBy","required","secret","provided"]},"DeploymentComputePlan":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","properties":{"poolId":{"type":"string"},"workloads":{"type":"array","items":{"type":"string"}},"requirements":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"scale":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["fixed"]},"machines":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","machines"]},{"type":"object","properties":{"type":{"type":"string","enum":["autoscale"]},"min":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]},"max":{"type":"object","properties":{"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"default":{"type":"integer","minimum":0}},"required":["min","max","default"]}},"required":["type","min","max"]}]},"selected":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"recommended":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"machines":{"type":"array","items":{"type":"object","properties":{"machine":{"type":"string"},"profile":{"type":"object","properties":{"cpu":{"type":"string"},"memoryBytes":{"type":"integer","minimum":0},"ephemeralStorageBytes":{"type":"integer","minimum":0},"architecture":{"type":"string","nullable":true,"enum":["arm64","x86_64",null]},"gpu":{"type":"object","nullable":true,"properties":{"type":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["type","count"]}},"required":["cpu","memoryBytes","ephemeralStorageBytes"]},"recommended":{"type":"boolean"}},"required":["machine","profile","recommended"]}},"errors":{"type":"array","items":{"type":"string"}}},"required":["poolId","workloads","requirements","scale","selected","recommended","machines"]}}},"required":["pools"]},"PreparedDeploymentStack":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"setup":{"$ref":"#/components/schemas/SetupFingerprintInfo"}},"required":["platform","stack","setup"]},"SyncListResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!ag[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment name.","example":"acme-prod"},"publicSubdomain":{"type":"string","nullable":true,"minLength":6,"maxLength":6,"pattern":"^[a-z0-9]{6}$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"projectId":{"type":"string","pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform for the deployment"},"basePlatform":{"type":"string","nullable":true,"enum":["aws","gcp","azure",null],"description":"Underlying cloud platform for Kubernetes deployments."},"region":{"type":"string","nullable":true,"description":"Cloud region or location for the deployment."},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"ID of deployment group this deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}],"description":"Cloud environment information"},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-provided configuration (network, deployment model, approvals)"},"stackState":{"type":"object","nullable":true,"properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"State of infrastructure components managed by this deployment"},"runtimeMetadata":{"type":"object","nullable":true,"properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment state persistence"},"currentReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the currently deployed release (actual state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"desiredReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the desired release for deployment/update (desired state)","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"pinnedReleaseId":{"type":"string","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"ID of the pinned release","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"importSource":{"type":"string","nullable":true,"enum":["cloudformation","terraform","helm",null],"description":"Setup source that imported this deployment"},"setupMethod":{"type":"string","nullable":true,"enum":["cloudformation","google-oauth","terraform","helm","cli","manual",null],"description":"Setup method that created the deployment record and owns setup-time resources."},"setupMetadata":{"type":"object","nullable":true,"additionalProperties":{"nullable":true},"description":"Setup method metadata needed to guide privileged teardown."},"setupTarget":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup target for compatibility checks"},"setupFingerprint":{"type":"string","nullable":true,"minLength":1,"description":"Imported setup compatibility fingerprint"},"setupFingerprintVersion":{"type":"integer","nullable":true,"minimum":0,"exclusiveMinimum":true,"description":"Imported setup fingerprint algorithm version"},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment"},"lastHeartbeatAt":{"type":"string","format":"date-time","nullable":true,"description":"Timestamp of the last received heartbeat from the deployment"},"error":{"type":"object","nullable":true,"properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Latest error information if the deployment is in a failed state"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"ID of the manager responsible for this deployment"}]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version reported on the last sync (e.g. \"1.3.5\")"},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS reported on the last sync"},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture reported on the last sync"},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends."},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from."},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target."},"userEnvironmentVariables":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/EnvironmentVariableConfig"}},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."},"deploymentToken":{"type":"string","nullable":true},"lockedBy":{"type":"string","nullable":true},"lockedAt":{"type":"string","nullable":true,"format":"date-time"}},"required":["id","name","status","projectId","platform","deploymentProtocolVersion","deploymentGroupId","stackSettings","retryRequested","createdAt","updatedAt","managerId","workspaceId","userEnvironmentVariables"]}}},"required":["deployments"],"description":"Full deployment records for manager operation"},"SyncListRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. Manager-scoped tokens are always constrained to their own manager ID."}]},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to include"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by deployment platform"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Filter by deployment group ID","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"Maximum records to return"}},"additionalProperties":false,"description":"Request to list full operational deployments"},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the acquired deployment","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"deploymentGroupId":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Deployment group ID the deployment belongs to","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Setup method recorded on the deployment when it has a setup-owned path."}]},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state (includes releases)"},"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration"},"targetAgentVersion":{"type":"string","nullable":true,"description":"Pinned target agent version (semver) for upgrade-driven sync"}},"required":["deploymentId","projectId","deploymentGroupId","current","config"]},"description":"List of acquired deployments with deployment context"},"failures":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the deployment that failed","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"projectId":{"type":"string","description":"Project ID the deployment belongs to"},"error":{"allOf":[{"$ref":"#/components/schemas/APIError"},{"description":"Error that occurred during context building"}]}},"required":["deploymentId","projectId","error"]},"description":"List of deployments that failed during context building (locks already released)"}},"required":["deployments","failures"],"description":"Acquired deployments and failures"},"SyncAcquireRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the deployments. If omitted, resolved from each deployment's managerId column."}]},"session":{"type":"string","description":"Unique session identifier for lock tracking"},"deploymentIds":{"type":"array","items":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"description":"Specific deployment IDs to lock (for Pull model sync)"},"statuses":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter by platforms (default: all platforms the Manager supports)"},"setupMethod":{"allOf":[{"$ref":"#/components/schemas/DeploymentSetupMethod"},{"description":"Filter by setup method for setup-owned acquisition paths"}]},"acquireMode":{"type":"string","enum":["runtime","setup-run","setup-teardown"],"description":"Phase ownership mode for deployment acquisition"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model from stackSettings.deploymentModel (Manager should use 'push')"},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session"],"additionalProperties":false,"description":"Request to acquire deployments for processing"},"SyncReconcileResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the state was reconciled"},"current":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Current deployment state after reconciliation"},"target":{"type":"object","properties":{"config":{"type":"object","properties":{"allowFrozenChanges":{"type":"boolean","description":"Allow frozen resource changes during updates\nWhen true, skips the frozen resources compatibility check.\nThis requires running with elevated cloud credentials."},"basePlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"computeBackend":{"oneOf":[{"allOf":[{"type":"object","properties":{"clusters":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"clusterId":{"type":"string","description":"Cluster ID (deterministic: workspace/project/deployment/resourceid)"},"managementToken":{"type":"string","description":"Management token for API access (hm_...)\nUsed by alien-deployment controllers to create/update containers"}},"required":["clusterId","managementToken"],"description":"Configuration for a single container worker cluster.\n\nContains the cluster ID and management token needed to interact with\nthe managed container control plane API for container operations."},"description":"Cluster configurations (one per ComputeCluster resource)\nKey: ComputeCluster resource ID from stack\nValue: Cluster ID and management token for that cluster"},"horizonMachineImage":{"oneOf":[{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"amis":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"AMI IDs by architecture, then AWS region."}},"required":["amis"],"description":"AWS Horizon machine image catalog."},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"imageVersionId":{"type":"string","description":"Azure Compute Gallery image version ID."}},"required":["imageVersionId"],"description":"Azure Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"Azure Horizon machine image catalog."},{"nullable":true}]},"baseImage":{"type":"object","properties":{"name":{"type":"string","description":"Base OS image name."},"version":{"type":"string","description":"Base OS image version or channel."}},"required":["name","version"],"description":"Base image metadata for the Horizon machine image."},"channel":{"type":"string","description":"Logical image channel, such as prod, staging, or canary."},"createdAt":{"type":"string","description":"Image manifest creation timestamp."},"gcp":{"oneOf":[{"type":"object","properties":{"images":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sourceImage":{"type":"string","description":"Source image self link or image-family URL."}},"required":["sourceImage"],"description":"GCP Horizon machine image entry."},"description":"Images by architecture."}},"required":["images"],"description":"GCP Horizon machine image catalog."},{"nullable":true}]},"gitSha":{"type":"string","description":"Git commit SHA used to build the image."},"horizondVersion":{"type":"string","description":"horizond daemon version baked into the image."},"machineImageVersion":{"type":"string","description":"Published immutable machine image version."}},"required":["baseImage","channel","createdAt","gitSha","horizondVersion","machineImageVersion"],"description":"Horizon machine image catalog.\n\nPlatform resolves concrete provider images from this catalog during rollout."},{"nullable":true}]},"url":{"type":"string","description":"Horizon control-plane API base URL."}},"required":["clusters","url"],"description":"Horizon control-plane configuration for container orchestration.\n\nContains all the information needed for Alien to interact with managed\ncontainer clusters during deployment. Each ComputeCluster resource gets its own\nentry in the clusters map."},{"type":"object","properties":{"type":{"type":"string","enum":["horizon"]}},"required":["type"]}],"description":"Compute backend for Container and Worker resources.\n\nDetermines how compute workloads are orchestrated on cloud platforms.\nWhen None, the platform default is used for cloud platforms."},{"nullable":true}]},"deploymentName":{"type":"string","nullable":true,"description":"Human-readable deployment name for cloud console metadata.\n\nThis is separate from the physical resource prefix in StackState. It is\nused only for display text such as IAM role descriptions, service\naccount descriptions, and custom role titles."},"deploymentToken":{"type":"string","nullable":true,"description":"Deployment token for pull authentication with the manager's registry.\n\nUsed by controllers to configure registry credentials so cloud platforms\nand K8s can pull images from the manager's `/v2/` endpoint."},"domainMetadata":{"oneOf":[{"type":"object","properties":{"baseDomain":{"type":"string","description":"Base domain for auto-generated domains (e.g., \"vpc.direct\")."},"hostedZoneId":{"type":"string","description":"Hosted zone ID for DNS records."},"publicSubdomain":{"type":"string","description":"Deployment public subdomain (e.g., \"k8f2j3\")."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Additional managed hostnames for the resource."},"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"endpoints":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"certificateChain":{"type":"string","nullable":true,"description":"Full PEM certificate chain (only present if status is \"issued\")."},"certificateId":{"type":"string","description":"Certificate ID (for tracking/logging)."},"certificateStatus":{"type":"string","enum":["pending","issued","renewing","renewal-failed","failed","deleting"],"description":"Certificate status in the certificate lifecycle"},"dnsError":{"type":"string","nullable":true,"description":"Last DNS error message. Present when DNS previously failed, even if status\nwas reset to pending for retry. Used to surface actionable error context\nin WaitingForDns failure messages."},"dnsStatus":{"type":"string","enum":["pending","active","updating","deleting","failed"],"description":"DNS record status in the DNS lifecycle"},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a managed hostname.\n\nIncludes decrypted certificate data for issued certificates.\nPrivate keys are deployment-scoped secrets (like environment variables)."},"description":"Endpoint-scoped metadata keyed by endpoint name."},"fqdn":{"type":"string","description":"Fully qualified domain name."},"issuedAt":{"type":"string","nullable":true,"description":"ISO 8601 timestamp when certificate was issued (for renewal detection)."},"privateKey":{"type":"string","nullable":true,"description":"Decrypted private key (only present if status is \"issued\")."}},"required":["certificateId","certificateStatus","dnsStatus","fqdn"],"description":"Certificate and DNS metadata for a public resource.\n\nThe direct fields describe the primary endpoint hostname. `endpoints`\ncontains endpoint-scoped metadata keyed by endpoint name. `aliases` contains\nadditional managed hostnames that route directly to the primary endpoint."},"description":"Metadata per resource ID."}},"required":["baseDomain","hostedZoneId","publicSubdomain","resources"],"description":"Domain metadata for auto-managed public resources (no private keys)."},{"nullable":true}]},"environmentVariables":{"type":"object","properties":{"createdAt":{"type":"string","description":"ISO 8601 timestamp when snapshot was created"},"hash":{"type":"string","description":"Deterministic hash of all variables (for change detection)"},"variables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Variable name"},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource patterns (null = all resources, Some = wildcard patterns)"},"type":{"type":"string","enum":["plain","secret"],"description":"Type of environment variable"},"value":{"type":"string","description":"Variable value (decrypted - deployment has access to decryption keys)"}},"required":["name","type","value"],"description":"Environment variable for deployment"},"description":"Environment variables in the snapshot"}},"required":["createdAt","hash","variables"],"description":"Snapshot of environment variables at a point in time"},"externalBindings":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS S3 storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["s3"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"containerName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Blob Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["blob"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"bucketName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Cloud Storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gcs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"storagePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local filesystem storage binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-storage"]}},"required":["service"]}]}],"description":"Service-type based storage binding that supports multiple storage providers"},{"type":"object","properties":{"type":{"type":"string","enum":["storage"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"queueUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SQS queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["sqs"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"subscription":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"topic":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Pub/Sub parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["pubsub"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"queueName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Service Bus parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["servicebus"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"queuePath":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local queue parameters"},{"type":"object","properties":{"service":{"type":"string","enum":["local-queue"]}},"required":["service"]}]}],"description":"Binding parameters for Queue at runtime or in templates."},{"type":"object","properties":{"type":{"type":"string","enum":["queue"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"endpointUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"region":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS DynamoDB KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["dynamodb"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"collectionName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"databaseId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"projectId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Firestore KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["firestore"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"accountName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"tableName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Table Storage KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["tablestorage"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"connectionUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"database":{"oneOf":[{"type":"integer"},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Redis KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["redis"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"keyPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Local development KV binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["local-kv"]}},"required":["service"]}]}],"description":"Represents a KV binding for key-value storage across platforms"},{"type":"object","properties":{"type":{"type":"string","enum":["kv"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushRoleArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS ECR (Elastic Container Registry) binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["ecr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"registryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"repositoryPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Container Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["acr"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"pullServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"pushServiceAccountEmail":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]},"repositoryName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Google Artifact Registry binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["gar"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"type":"string"},{"nullable":true},{"nullable":true},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"registryUrl":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens)."},{"type":"object","properties":{"service":{"type":"string","enum":["local"]}},"required":["service"]}]}],"description":"Service-type based artifact registry binding that supports multiple registry providers"},{"type":"object","properties":{"type":{"type":"string","enum":["artifact_registry"]}},"required":["type"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"AWS SSM Parameter Store vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["parameter-store"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"GCP Secret Manager vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["secret-manager"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"vaultName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Azure Key Vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["key-vault"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultPrefix":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"description":"Kubernetes Secrets vault binding configuration"},{"type":"object","properties":{"service":{"type":"string","enum":["kubernetes-secret"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"dataDir":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"vaultName":{"type":"string","description":"The vault name for local storage"}},"required":["vaultName"],"description":"Local development vault binding (for testing/development)"},{"type":"object","properties":{"service":{"type":"string","enum":["local-vault"]}},"required":["service"]}]}],"description":"Represents a vault binding for secure secret management"},{"type":"object","properties":{"type":{"type":"string","enum":["vault"]}},"required":["type"]}]},{"allOf":[{"type":"object","properties":{"defaultDomain":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"environmentName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceGroupName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"resourceId":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"staticIp":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]},{"nullable":true}]}},"description":"Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."},{"type":"object","properties":{"type":{"type":"string","enum":["container_apps_environment"]}},"required":["type"]}]}],"description":"Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor."},"description":"Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]},{"nullable":true}]},"managerUrl":{"type":"string","nullable":true,"description":"Manager base URL (e.g., \"https://manager.alien.dev\").\n\nThe manager IS the container registry — its `/v2/` endpoint serves as\nthe OCI Distribution API. Controllers derive the proxy host from this\nto configure pull auth (RegistryCredentials, imagePullSecrets).\n\nWhen None (e.g., `alien dev`), controllers use image URIs as-is."},"monitoring":{"oneOf":[{"type":"object","properties":{"logsAuthHeader":{"type":"string","description":"Auth header value in \"key=value,...\" format.\nExample: \"authorization=Bearer \""},"logsEndpoint":{"type":"string","description":"Full OTLP logs endpoint URL.\nExample: \"https:///v1/logs\""},"metricsAuthHeader":{"type":"string","nullable":true,"description":"Auth header value for the metrics endpoint in \"key=value,...\" format (optional).\n\nWhen absent, `logs_auth_header` is reused for metrics -- suitable when the same\ncredential covers both signals. When present (e.g. Axiom with separate datasets),\nthis value is used exclusively for metrics.\n\nExample: \"authorization=Bearer ,x-axiom-dataset=\""},"metricsEndpoint":{"type":"string","nullable":true,"description":"Full OTLP metrics endpoint URL (optional).\nWhen set, the worker runtime exports its own VM/container orchestration metrics here.\nExample: \"https://api.axiom.co/v1/metrics\""},"resourceAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Resource attributes attached to every OTLP signal emitted for this deployment.\n\nPlatform managers use this for stable identity such as `alien.workspace_id`,\n`alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`.\nRuntime-specific resource attributes such as `service.name` remain owned by\nthe runtime/exporter."}},"required":["logsAuthHeader","logsEndpoint"],"description":"OTLP log export configuration for a deployment.\n\nWhen set, injected compute runtimes export captured application logs\nthrough the given endpoint via OTLP/HTTP; which resources are injected\nis platform-dependent. Workers and daemons read auth headers from a\nruntime-only secret — never from application environment variables.\nContainers have no runtime wrapper, so they get the endpoint and auth\nheader as plain OTEL env vars for the application's own exporter."},{"nullable":true}]},"nativeImageHost":{"type":"string","nullable":true,"description":"Native image registry host+prefix for platforms that require it.\n\nLambda (ECR) and Cloud Run (GAR) require native registry URIs. Other\nruntimes, including Azure Container Apps, pull through the manager's\nregistry proxy.\n\nDerived by the manager from the artifact registry binding:\n- ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}`\n- GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}`"},"publicEndpoints":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Public endpoint URLs for exposed resources (optional override).\n\nUse this only when a caller already knows the public URL. Managed public\nendpoint flows should prefer `domain_metadata` plus controller-reported\nload balancer outputs so DNS, certificate renewal, and route readiness\nstay tied to the resource state.\n\nIf not set, platforms determine public endpoint URLs from other sources:\n- Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS\n- Local: `http://localhost:{allocated_port}`\n- Custom or disabled exposure: no public endpoint URL unless a controller reports one\n\nOuter key: resource ID. Inner key: endpoint name. Value: public URL."},"stackSettings":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","minimum":0,"description":"Number of machines to run."},"mode":{"type":"string","enum":["fixed"]}},"required":["machines","mode"]},{"type":"object","properties":{"machine":{"type":"string","nullable":true,"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","minimum":0,"description":"Maximum machine count."},"min":{"type":"integer","minimum":0,"description":"Minimum machine count."},"mode":{"type":"string","enum":["autoscale"]}},"required":["max","min","mode"]}],"description":"User-selected deployment settings for one compute pool."},"description":"Selected compute choices keyed by pool ID."}},"description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts."},{"nullable":true}]},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}},"description":"User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager's ServiceAccount)."}},"required":["environmentVariables"],"description":"Deployment configuration\n\nConfiguration for how to perform the deployment.\nNote: Credentials (ClientConfig) are passed separately to step() function."},"releaseInfo":{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."}},"required":["config","releaseInfo"],"description":"Target deployment if update is needed"}},"required":["success","current"],"description":"State reconciliation result with optional target"},"SyncReconcileRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to reconcile state for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Lock session (push model only) - verifies lock ownership"},"state":{"type":"object","properties":{"currentRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]},"environmentInfo":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string","description":"AWS account ID"},"region":{"type":"string","description":"AWS region"}},"required":["accountId","region"],"description":"AWS-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"projectId":{"type":"string","description":"GCP project ID (e.g., \"my-project\")"},"projectNumber":{"type":"string","description":"GCP project number (e.g., \"123456789012\")"},"region":{"type":"string","description":"GCP region"}},"required":["projectId","projectNumber","region"],"description":"GCP-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string","description":"Azure location/region"},"subscriptionId":{"type":"string","description":"Azure subscription ID"},"tenantId":{"type":"string","description":"Azure tenant ID"}},"required":["location","subscriptionId","tenantId"],"description":"Azure-specific environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"arch":{"type":"string","description":"Architecture (e.g., \"x86_64\", \"aarch64\")"},"hostname":{"type":"string","description":"Hostname of the machine running the deployment"},"os":{"type":"string","description":"Operating system (e.g., \"linux\", \"macos\", \"windows\")"}},"required":["arch","hostname","os"],"description":"Local platform environment information"},{"type":"object","properties":{"platform":{"type":"string","enum":["local"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"testId":{"type":"string","description":"Test identifier for this environment"}},"required":["testId"],"description":"Test platform environment information (mock)"},{"type":"object","properties":{"platform":{"type":"string","enum":["test"]}},"required":["platform"]}]},{"nullable":true}]},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"protocolVersion":{"type":"integer","minimum":0,"description":"Protocol version for cross-actor compatibility.\nAll actors (manager, push client, agent) check this before stepping.\nMismatched versions produce a clear error instead of silent corruption.\nSee docs/02-manager/10-deployment-protocol.md."},"retryRequested":{"type":"boolean","description":"Whether a retry has been requested for a failed deployment\nWhen true and status is a failed state, the deployment system will retry failed resources"},"runtimeMetadata":{"oneOf":[{"type":"object","properties":{"lastSyncedEnvVarsHash":{"type":"string","nullable":true,"description":"Hash of the environment variables snapshot that was last synced to the vault\nUsed to avoid redundant sync operations during incremental deployment"},"preparedStack":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},{"nullable":true}]},"registryAccessGranted":{"type":"boolean","description":"Whether cross-account registry access has been successfully granted.\nSet to true after the manager successfully sets the ECR/GAR repo policy\nfor this deployment's target account. Prevents redundant API calls on\nevery reconcile tick."}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},{"nullable":true}]},"stackState":{"oneOf":[{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"resourcePrefix":{"type":"string","description":"A prefix used for resource naming to ensure uniqueness across deployments."},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"_internal":{"nullable":true,"description":"The platform-specific resource controller that manages this resource's lifecycle.\nThis is None when the resource status is Pending.\nStored as JSON to make the struct serializable and movable to alien-core."},"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"controllerPlatform":{"oneOf":[{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},{"nullable":true}]},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Complete list of dependencies for this resource, including infrastructure dependencies.\nThis preserves the full dependency information from the stack definition."},"error":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","maxLength":128,"description":"A unique identifier for the type of error.\n\nThis should be a short, machine-readable string that can be used\nby clients to programmatically handle different error types.\nExamples: \"NOT_FOUND\", \"VALIDATION_ERROR\", \"TIMEOUT\""},"context":{"nullable":true,"description":"Additional diagnostic information about the error context.\n\nThis optional field can contain structured data providing more details\nabout the error, such as validation errors, request parameters that\ncaused the issue, or other relevant context information."},"hint":{"type":"string","nullable":true,"description":"Optional human-facing remediation hint."},"httpStatusCode":{"type":"integer","nullable":true,"minimum":100,"maximum":599,"description":"HTTP status code for this error.\n\nUsed when converting the error to an HTTP response. If None, falls back to\nthe error type's default status code or 500."},"internal":{"type":"boolean","description":"Indicates if this is an internal error that should not be exposed to users.\n\nWhen `true`, this error contains sensitive information or implementation\ndetails that should not be shown to end-users. Such errors should be\nlogged for debugging but replaced with generic error messages in responses."},"message":{"type":"string","maxLength":16384,"description":"Human-readable error message.\n\nThis message should be clear and actionable for developers or end-users,\nproviding context about what went wrong and potentially how to fix it."},"retryable":{"type":"boolean","default":false,"description":"Indicates whether the operation that caused the error should be retried.\n\nWhen `true`, the error is transient and the operation might succeed\nif attempted again. When `false`, retrying the same operation is\nunlikely to succeed without changes."},"source":{"nullable":true,"description":"The underlying error that caused this error, creating an error chain.\n\nThis allows for proper error propagation and debugging by maintaining\nthe full context of how an error occurred through multiple layers\nof an application."}},"required":["code","internal","message"],"description":"Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems."},{"nullable":true}]},"lastFailedState":{"nullable":true,"description":"Stores the controller state that failed, used for manual retry operations.\nThis allows resuming from the exact point where the failure occurred.\nStored as JSON to make the struct serializable and movable to alien-core."},"lifecycle":{"oneOf":[{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},{"nullable":true}]},"outputs":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["type"],"additionalProperties":{"nullable":true},"description":"Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties."},{"nullable":true}]},"previousConfig":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},{"nullable":true}]},"remoteBindingParams":{"nullable":true,"description":"Binding parameters for remote access.\nOnly populated when the resource has `remote_access: true` in its ResourceEntry.\nThis is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding).\nPopulated by controllers during provisioning using get_binding_params()."},"retryAttempt":{"type":"integer","minimum":0,"description":"Tracks consecutive retry attempts for the current state transition."},"status":{"type":"string","enum":["pending","provisioning","provision-failed","running","updating","update-failed","deleting","delete-failed","teardown-required","deleted","refresh-failed"],"description":"Represents the high-level status of a resource during its lifecycle."},"type":{"type":"string","description":"The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE)."}},"required":["config","status","type"],"description":"Represents the state of a single resource within the stack for a specific platform."},"description":"The state of individual resources, keyed by resource ID."}},"required":["platform","resourcePrefix","resources"],"description":"Represents the collective state of all resources in a stack, including platform and pending actions."},{"nullable":true}]},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","description":"Release ID (e.g., rel_xyz)"},"stack":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","properties":{"default":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}},"required":["type","value"]},{"type":"object","properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}},"required":["type","value"]},{"nullable":true}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"string","enum":["plain","secret"],"description":"Environment variable handling for a stack input mapping."},{"nullable":true}]}},"required":["name"],"description":"How a resolved stack input is injected into runtime environment variables."},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"description":"Primitive stack input kind."},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":"string","nullable":true,"description":"Example placeholder shown in UI."},"platforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","enum":["developer","deployer"],"description":"Who can provide a stack input value."},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"object","properties":{"format":{"type":"string","nullable":true,"description":"Semantic format hint such as url."},"max":{"type":"string","nullable":true,"description":"Maximum number."},"maxItems":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string-list items."},"maxLength":{"type":"integer","nullable":true,"minimum":0,"description":"Maximum string length."},"min":{"type":"string","nullable":true,"description":"Minimum number."},"minItems":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string-list items."},"minLength":{"type":"integer","nullable":true,"minimum":0,"description":"Minimum string length."},"pattern":{"type":"string","nullable":true,"description":"Portable whole-value regex pattern."},"values":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Allowed string enum values."}},"description":"Portable stack input validation constraints."},{"nullable":true}]}},"required":["description","id","kind","label","providedBy","required"],"description":"Stack input definition serialized into a release stack."},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"type":"object","properties":{"management":{"oneOf":[{"type":"object","properties":{"extend":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["extend"]},{"type":"object","properties":{"override":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"}},"required":["override"]},{"type":"string","enum":["auto"]}],"description":"Management permissions configuration for stack management access"},"profiles":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","description":"Human-readable description of what this permission set allows"},"id":{"type":"string","description":"Unique identifier for the permission set (e.g., \"storage/data-read\")"},"platforms":{"type":"object","properties":{"aws":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"description":"Optional condition for additional filtering (rare)"},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"required":["resources"],"description":"AWS-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"effect":{"type":"string","enum":["Allow","Deny"],"description":"IAM effect. Defaults to Allow."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"AWS-specific platform permission configuration"},"description":"AWS permission configurations"},"azure":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"},"stack":{"type":"object","properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"required":["scope"],"description":"Azure-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"Azure-specific platform permission configuration"},"description":"Azure permission configurations"},"gcp":{"type":"array","nullable":true,"items":{"type":"object","properties":{"binding":{"type":"object","properties":{"resource":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"},"stack":{"type":"object","properties":{"condition":{"oneOf":[{"type":"object","properties":{"expression":{"type":"string"},"title":{"type":"string"}},"required":["expression","title"],"description":"GCP IAM condition"},{"nullable":true}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"required":["scope"],"description":"GCP-specific binding specification"}},"description":"Generic binding configuration for permissions"},"description":{"type":"string","nullable":true,"description":"Short admin-facing description of why this entry exists."},"grant":{"type":"object","properties":{"actions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":"array","nullable":true,"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"description":"Grant permissions for a specific cloud platform"},"label":{"type":"string","nullable":true,"description":"Stable admin-facing label for this permission entry."}},"required":["binding","grant"],"description":"GCP-specific platform permission configuration"},"description":"GCP permission configurations"}},"description":"Platform-specific permission configurations"}},"required":["description","id","platforms"],"description":"A permission set that can be applied across different cloud platforms"},{"type":"string"}],"description":"Reference to a permission set - either by name or inline definition"}},"description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource"},"description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration"}},"required":["profiles"],"description":"Combined permissions configuration that contains both profiles and management"},"resources":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"config":{"type":"object","properties":{"id":{"type":"string","description":"The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters."},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"additionalProperties":{"nullable":true},"description":"Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties."},"dependencies":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["id","type"],"description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"type":"string","enum":["frozen","live"],"description":"Describes the lifecycle of a resource within a stack, determining how it's managed and deployed."},"remoteAccess":{"type":"boolean","description":"Enable remote bindings for this resource (BYOB use case).\nWhen true, binding params are synced to StackState's `remote_binding_params`.\nDefault: false (prevents sensitive data in synced state)."}},"required":["config","dependencies","lifecycle"]},"description":"Map of resource IDs to their configurations and lifecycle settings"},"supportedPlatforms":{"type":"array","nullable":true,"items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"required":["id","resources"],"description":"A bag of resources, unaware of any cloud."},"version":{"type":"string","nullable":true,"description":"Version string (e.g., 2.1.0)"}},"required":["releaseId","stack"],"description":"Release metadata\n\nIdentifies a specific release version and includes the stack definition.\nThe deployment engine uses this to track which release is currently deployed\nand which is the target."},{"nullable":true}]}},"required":["platform","protocolVersion","status"],"description":"Complete deployment state after step() execution"},"updateHeartbeat":{"type":"boolean","description":"Update heartbeat timestamp (for successful health checks)"},"suggestedDelayMs":{"type":"integer","minimum":0,"description":"Delay before this deployment should be acquired again."},"heartbeats":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"description":"Latest typed resource heartbeats collected during this step."},"agentVersion":{"type":"string","nullable":true,"description":"Agent binary version from the last /v1/sync."},"agentOs":{"type":"string","nullable":true,"enum":["linux","macos","windows",null],"description":"Agent host OS."},"agentArch":{"type":"string","nullable":true,"enum":["x86_64","aarch64",null],"description":"Agent host architecture."},"regime":{"type":"string","nullable":true,"enum":["os-service","kubernetes",null],"description":"Supervisor regime: os-service or kubernetes."},"agentImageRepository":{"type":"string","nullable":true,"description":"Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry."}},"required":["deploymentId","state"],"additionalProperties":false,"description":"Request to reconcile deployment state"},"SyncReleaseRequest":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Deployment ID to release","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"session":{"type":"string","description":"Session identifier to release"}},"required":["deploymentId","session"],"additionalProperties":false,"description":"Request to release deployment lock"},"ResolveResponse":{"type":"object","properties":{"managerId":{"type":"string","description":"Manager ID"},"managerName":{"type":"string","description":"Manager display name"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL"},"managerIsSystem":{"type":"boolean","description":"Whether the manager is Alien-hosted"},"managerCloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","local","test",null],"description":"Cloud where the private manager is hosted. Null for Alien-hosted managers."},"projectId":{"type":"string","description":"Resolved project ID"},"installContext":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"managementConfig":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}},"required":["platform","managementConfig"],"description":"Target install context derived from platform-managed manager metadata. Present for cloud push platforms."}},"required":["managerId","managerName","managerUrl","managerIsSystem","projectId"]},"CloudRegionsResponse":{"type":"object","properties":{"supportedRegions":{"$ref":"#/components/schemas/SupportedCloudRegions"}},"required":["supportedRegions"]},"BillingAuditLogRow":{"type":"object","properties":{"id":{"type":"string"},"workspaceId":{"type":"string","nullable":true},"action":{"type":"string"},"payload":{"nullable":true},"createdAt":{"type":"string"}},"required":["id","workspaceId","action","createdAt"]},"WorkspaceBillingEntitlements":{"type":"object","properties":{"planId":{"$ref":"#/components/schemas/PlanId"},"planStatus":{"$ref":"#/components/schemas/BillingPlanStatus"},"features":{"$ref":"#/components/schemas/BillingFeatureFlags"},"limits":{"$ref":"#/components/schemas/BillingLimits"},"syncedAt":{"type":"string","nullable":true,"format":"date-time"},"stale":{"type":"boolean"}},"required":["planId","planStatus","features","limits","syncedAt","stale"]},"PlanId":{"type":"string","enum":["starter","pro","pro_annual","enterprise"]},"BillingPlanStatus":{"type":"string","enum":["active","trialing","past_due","canceled","none"]},"BillingFeatureFlags":{"type":"object","properties":{"custom_domains":{"type":"boolean"},"private_managers":{"type":"boolean"},"sso_saml":{"type":"boolean"},"audit_logs":{"type":"boolean"},"airgapped":{"type":"boolean"}},"required":["custom_domains","private_managers","sso_saml","audit_logs","airgapped"]},"BillingLimits":{"type":"object","properties":{"maxDeployments":{"type":"number","nullable":true},"maxProjects":{"type":"number","nullable":true},"maxSeats":{"type":"number","nullable":true},"maxCustomDomains":{"type":"number","nullable":true},"creditUsd":{"type":"number","nullable":true},"seatsIncluded":{"type":"number","nullable":true}},"required":["maxDeployments","maxProjects","maxSeats","maxCustomDomains","creditUsd","seatsIncluded"]}},"parameters":{}},"paths":{"/v1/user/memberships":{"get":{"operationId":"listMemberships","description":"List all workspaces the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listMemberships","responses":{"200":{"description":"List of user's workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Membership"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile":{"get":{"operationId":"getUserProfile","description":"Get the current user's profile and user-scoped onboarding state.","x-speakeasy-group":"user","x-speakeasy-name-override":"getProfile","responses":{"200":{"description":"User profile.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateUserProfile","description":"Update the current user's profile (display name).","x-speakeasy-group":"user","x-speakeasy-name-override":"updateProfile","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Display name"}}}}}},"responses":{"200":{"description":"Profile updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/profile/setup":{"post":{"operationId":"completeUserProfileSetup","description":"Complete the required beta intake and profile setup dialog.","x-speakeasy-group":"user","x-speakeasy-name-override":"completeProfileSetup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileSetupRequest"}}}},"responses":{"200":{"description":"Profile setup completed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfile"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/workspaces":{"post":{"operationId":"createWorkspace","description":"Create a new workspace. The current user will be automatically added as an admin.","x-speakeasy-group":"user","x-speakeasy-name-override":"createWorkspace","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name"},"logoUrl":{"type":"string","format":"uri","description":"Optional workspace logo URL"}},"required":["name"]}}}},"responses":{"201":{"description":"Created workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Membership"}}}},"400":{"description":"Bad request - invalid workspace name.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Workspace name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces":{"get":{"operationId":"listGitNamespaces","description":"List all git namespaces (GitHub installations) the current user has access to.","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaces","parameters":[{"schema":{"type":"string","enum":["github"],"default":"github"},"required":false,"name":"provider","in":"query"}],"responses":{"200":{"description":"List of user's git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/sync":{"post":{"operationId":"syncGitNamespaces","description":"Sync git namespaces from the provider. For GitHub, this fetches all app installations accessible to the user.","x-speakeasy-group":"user","x-speakeasy-name-override":"syncGitNamespaces","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","enum":["github"],"description":"Git provider to sync"}},"required":["provider"]}}}},"responses":{"200":{"description":"Synced git namespaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitNamespace"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/user/git-namespaces/{id}/repositories":{"get":{"operationId":"listGitNamespaceRepositories","description":"List repositories accessible through a git namespace (GitHub installation).","x-speakeasy-group":"user","x-speakeasy-name-override":"listGitNamespaceRepositories","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Search query to filter repositories by name"},"required":false,"description":"Search query to filter repositories by name","name":"search","in":"query"}],"responses":{"200":{"description":"List of repositories.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/GitRepository"}}},"required":["items"]}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Git namespace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/whoami":{"get":{"operationId":"whoami","description":"Get the current authenticated principal (user or service account). Works with both session cookies and API keys.","x-speakeasy-group":"auth","x-speakeasy-name-override":"whoami","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","example":"my-workspace"},"required":false,"description":"Workspace to resolve the principal in. Required for user credentials because a user's role is per-workspace. Service accounts carry their workspace in the credential and may omit it.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Current authenticated principal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Subject"}}}},"400":{"description":"Missing required workspace for user credentials.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Unauthorized - no valid authentication provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Request validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces":{"get":{"operationId":"listWorkspaces","description":"Retrieve all workspaces.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search workspaces by name"},"required":false,"description":"Search workspaces by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved workspaces.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Workspace"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}":{"get":{"operationId":"getWorkspace","description":"Retrieve a workspace by ID.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspace","description":"Update a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"logoUrl":{"type":"string","nullable":true,"maxLength":2048,"format":"uri"}}}}}},"responses":{"200":{"description":"Workspace updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteWorkspace","description":"Delete a workspace. The workspace must have no projects.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Workspace deleted successfully."},"400":{"description":"Workspace still has projects.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members":{"get":{"operationId":"listWorkspaceMembers","description":"List all members of a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"listMembers","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"List of workspace members.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceMember"}}},"required":["items"]}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"addWorkspaceMember","description":"Add a member to a workspace by email. The user must already have an account.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"addMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email of the user to add"},"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"Role to assign"}]}},"required":["email","role"]}}}},"responses":{"201":{"description":"Member added successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"404":{"description":"Workspace or user not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"User is already a member.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/members/{userId}":{"patch":{"operationId":"updateWorkspaceMember","description":"Update a workspace member's role.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"allOf":[{"$ref":"#/components/schemas/WorkspaceRole"},{"description":"New role to assign"}]}},"required":["role"]}}}},"responses":{"200":{"description":"Member role updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMember"}}}},"400":{"description":"Cannot remove last admin.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"removeWorkspaceMember","description":"Remove a member from a workspace.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"removeMember","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Member removed successfully."},"400":{"description":"Cannot remove last admin or self.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace or member not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/dismiss-onboarding":{"post":{"operationId":"dismissWorkspaceOnboarding","description":"Mark the Getting Started walkthrough as dismissed for a workspace. The dashboard stops auto-promoting onboarding once this is set; users can still re-enter the walkthrough via the help menu.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"dismissOnboarding","parameters":[{"schema":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"required":true,"description":"Unique identifier for the workspace.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace with onboardingDismissedAt populated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects":{"get":{"operationId":"listProjects","description":"Retrieve all projects.","x-speakeasy-group":"projects","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Search projects by name"},"required":false,"description":"Search projects by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deploymentCount","latestRelease"]},"description":"Optional fields to include: deploymentCount, latestRelease"},"required":false,"description":"Optional fields to include: deploymentCount, latestRelease","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved projects.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProjectListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createProject","description":"Create a new project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"gitRepository":{"type":"object","nullable":true,"properties":{"type":{"type":"string","enum":["github"],"description":"The Git Provider of the repository","example":"github"},"repo":{"type":"string","maxLength":128,"description":"The name of the git repository","example":"alien/my-agent"}},"required":["type","repo"],"additionalProperties":false,"description":"Verified source repository connected to the project. Alien uses this for GitHub Actions setup and source-aware features; releases are still created explicitly by CI or `alien release`."},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name"]}}}},"responses":{"201":{"description":"Project created successfully.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"}}}]}}}},"400":{"description":"Invalid request or GitHub repository connection failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"401":{"description":"Authentication is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}":{"get":{"operationId":"getProject","description":"Retrieve a project by ID or name.","x-speakeasy-group":"projects","x-speakeasy-name-override":"get","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateProject","description":"Update a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"update","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProject"}}}},"responses":{"200":{"description":"Project updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteProject","description":"Delete a project. The project must have no deployments.","x-speakeasy-group":"projects","x-speakeasy-name-override":"delete","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Project deleted successfully."},"400":{"description":"Project still has deployments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/gcp-oauth-provider":{"get":{"operationId":"getProjectGcpOAuthProvider","description":"Retrieve redacted project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateProjectGcpOAuthProvider","description":"Update project-level Google Cloud OAuth provider settings.","x-speakeasy-group":"projects","x-speakeasy-name-override":"updateGcpOAuthProvider","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectGcpOAuthProvider"}}}},"responses":{"200":{"description":"Google Cloud OAuth provider settings updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectGcpOAuthProvider"}}}},"400":{"description":"Invalid provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/deployment-portal-domain":{"get":{"operationId":"getProjectDeploymentPortalDomain","description":"Get the deployment portal domain binding for a project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentPortalDomain","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved deployment portal domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentPortalDomainResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/import-template":{"post":{"operationId":"createProjectFromTemplate","description":"Create a project by forking alienplatform/alien into your namespace, then configuring GitHub Actions.","x-speakeasy-group":"projects","x-speakeasy-name-override":"createFromTemplate","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Project name.","example":"my-app"},"targetNamespace":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-zA-Z0-9-]+$","description":"GitHub owner namespace (user or organization) that will receive the fork"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"rootDirectory":{"type":"string","nullable":true,"maxLength":256,"description":"The name of a directory or relative path to the source code of your project. When null is used it will default to the project root"},"packagesConfig":{"type":"object","nullable":true,"properties":{"cli":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for help banners and about text"},"name":{"type":"string","description":"Binary name displayed in help and usage (e.g., \"acmectl\")"},"enabled":{"type":"boolean","description":"Whether CLI package generation is enabled"}},"required":["displayName","name","enabled"],"description":"CLI package configuration. If null, CLI packages will not be generated."},"cloudformation":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether CloudFormation package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"CloudFormation package configuration. If null, CloudFormation packages will not be generated."},"agentImage":{"type":"object","nullable":true,"properties":{"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"name":{"type":"string","description":"Image name (e.g., \"acme-operator\")"},"enabled":{"type":"boolean","description":"Whether Operator image package generation is enabled"}},"required":["displayName","name","enabled"],"description":"Operator image package configuration. Required when Helm is enabled. If null, Operator image packages will not be generated."},"helm":{"type":"object","nullable":true,"properties":{"chartName":{"type":"string","description":"Chart name (e.g., \"acme-operator\")"},"description":{"type":"string","description":"Human-friendly description of the chart"},"enabled":{"type":"boolean","description":"Whether Helm chart package generation is enabled"}},"required":["chartName","description","enabled"],"description":"Helm chart package configuration. If null, Helm packages will not be generated."},"terraform":{"type":"object","nullable":true,"properties":{"enabled":{"type":"boolean","description":"Whether Terraform package generation is enabled"},"displayName":{"type":"string","nullable":true,"description":"Human-friendly application name shown in generated install artifacts"}},"required":["enabled"],"description":"Terraform package configuration. If null, Terraform packages will not be generated."}},"description":"Configuration for embedded packages (CLI, CloudFormation, Helm, Terraform)"}},"required":["name","targetNamespace","templatePath"]}}}},"responses":{"201":{"description":"Project created successfully from template.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Project"},{"type":"object","properties":{"githubSetup":{"type":"object","properties":{"pullRequestUrl":{"type":"string","format":"uri","description":"URL to the pull request with the Alien build workflow"},"workflowUrl":{"type":"string","format":"uri","description":"URL to the GitHub Actions workflow"}},"required":["pullRequestUrl","workflowUrl"]},"gitRepositoryWarning":{"$ref":"#/components/schemas/APIError"},"template":{"type":"object","properties":{"sourceRepository":{"type":"string","enum":["alienplatform/alien"]},"forkRepository":{"type":"string","description":"Fork repository in / format"},"templatePath":{"type":"string","enum":["examples/remote-worker-ts","examples/github-agent/packages/remote-agent","examples/endpoint-agent","examples/byoc-database"],"description":"Template root directory inside alienplatform/alien"},"resolvedRootDirectory":{"type":"string"}},"required":["sourceRepository","forkRepository","templatePath","resolvedRootDirectory"]}},"required":["template"]}]}}}},"400":{"description":"Bad request or GitHub integration not installed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Project name already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Fork exists but is not ready yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/template-urls":{"get":{"operationId":"getProjectTemplateUrls","description":"Get template URLs for deploying setup stacks in this project.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getTemplateUrls","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Template URLs retrieved successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"aws":{"type":"object","nullable":true,"properties":{"templateUrl":{"type":"string","format":"uri","description":"URL to download the CloudFormation template"},"launchStackUrl":{"type":"string","format":"uri","description":"URL to launch the template in the AWS CloudFormation console"}},"required":["templateUrl","launchStackUrl"],"description":"Template URLs for deploying an AWS setup stack"}}}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/projects/{idOrName}/active-release":{"get":{"operationId":"getProjectActiveRelease","description":"Get the active release for this project. Returns the latest release, or the pinned release if deploymentId is provided and that deployment has a pinned release.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getActiveRelease","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","description":"Optional deployment ID to check for pinned release"},"required":false,"description":"Optional deployment ID to check for pinned release","name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Active release retrieved successfully.","content":{"application/json":{"schema":{"nullable":true}}}},"404":{"description":"Project or active release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups":{"post":{"operationId":"createDeploymentGroup","tags":["deployment-groups"],"summary":"Create a new deployment group","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Project not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group with this name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listDeploymentGroups","tags":["deployment-groups"],"summary":"List deployment groups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of deployment groups","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"}}}]},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}":{"get":{"operationId":"getDeploymentGroup","tags":["deployment-groups"],"summary":"Get deployment group details","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Deployment group details","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/DeploymentGroup"},{"type":"object","properties":{"project":{"type":"object","nullable":true,"properties":{"id":{"type":"string","description":"Project ID"},"name":{"type":"string","description":"Project name"}},"required":["id","name"],"description":"Project info, included when ?include=project is used"},"deploymentCount":{"type":"integer","description":"Current number of deployments in this deployment group"}},"required":["deploymentCount"]}]}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateDeploymentGroup","tags":["deployment-groups"],"summary":"Update deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentGroupRequest"}}}},"responses":{"200":{"description":"Deployment group updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment group name already exists in the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDeploymentGroup","tags":["deployment-groups"],"summary":"Delete deployment group","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"Deployment group deleted successfully"},"400":{"description":"Cannot delete deployment group that has deployments","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/tokens":{"post":{"operationId":"createDeploymentGroupToken","tags":["deployment-groups"],"summary":"Create deployment group token","description":"Creates a deployment-group scoped API key and returns both the token and formatted deployment link","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenRequest"}}}},"responses":{"200":{"description":"Deployment group token created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentGroupTokenResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-groups/{id}/first-party-session":{"post":{"operationId":"createFirstPartyDeploymentSession","tags":["deployment-groups"],"summary":"Create first-party deployment session","description":"Mints a short-lived deployment-group token with the recommended self-deploy policy for the authenticated developer.","parameters":[{"schema":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"required":true,"description":"Unique identifier for the deployment group.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"First-party deployment session created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFirstPartyDeploymentSessionResponse"}}}},"404":{"description":"Deployment group not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages":{"get":{"operationId":"listPackages","description":"List packages with optional filters. Returns packages ordered by creation date (newest first).","x-speakeasy-group":"packages","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","enum":["cli","cloudformation","helm","agent-image","terraform"],"description":"Filter by package type"},"required":false,"description":"Filter by package type","name":"type","in":"query"},{"schema":{"type":"string","enum":["pending","building","ready","failed","canceled"],"description":"Filter by package status"},"required":false,"description":"Filter by package status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search packages by type or version"},"required":false,"description":"Search packages by type or version","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"List of packages.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Package"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}":{"get":{"operationId":"getPackage","description":"Get details of a specific package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/rebuild":{"post":{"operationId":"rebuildPackages","description":"Rebuild packages for a project. This will cancel any pending packages and create new ones with auto-incremented versions.","x-speakeasy-group":"packages","x-speakeasy-name-override":"rebuild","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name to rebuild packages for"}},"required":["project"]}}}},"responses":{"200":{"description":"Packages rebuilt successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"packagesCreated":{"type":"integer","description":"Number of packages created"}},"required":["packagesCreated"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/packages/{id}/cancel":{"post":{"operationId":"cancelPackage","description":"Cancel a pending or building package.","x-speakeasy-group":"packages","x-speakeasy-name-override":"cancel","parameters":[{"schema":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Unique identifier for the package.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"required":true,"description":"Unique identifier for the package.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Package canceled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Package"}}}},"400":{"description":"Package cannot be canceled (not in pending or building status).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Package not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases":{"get":{"operationId":"listReleases","description":"Retrieve all releases.","x-speakeasy-group":"releases","x-speakeasy-name-override":"list","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search releases by commit message, branch, SHA, or release ID"},"required":false,"description":"Search releases by commit message, branch, SHA, or release ID","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by git branch (commitRef)"},"required":false,"description":"Filter by git branch (commitRef)","name":"branch","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Filter by commit author login or name"},"required":false,"description":"Filter by commit author login or name","name":"author","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created after this date (ISO 8601)"},"required":false,"description":"Filter releases created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter releases created before this date (ISO 8601)"},"required":false,"description":"Filter releases created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved releases.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createRelease","description":"Create a new release.","x-speakeasy-group":"releases","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReleaseRequest"}}}},"responses":{"201":{"description":"Release created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Release"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/branches":{"get":{"operationId":"listReleaseBranches","description":"List distinct git branches across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listBranches","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search branches by name (case-insensitive contains)"},"required":false,"description":"Search branches by name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of branches to return"},"required":false,"description":"Maximum number of branches to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct branches.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/authors":{"get":{"operationId":"listReleaseAuthors","description":"List distinct commit authors across releases. Used for filter dropdowns.","x-speakeasy-group":"releases","x-speakeasy-name-override":"listAuthors","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}],"nullable":true},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search authors by login or name (case-insensitive contains)"},"required":false,"description":"Search authors by login or name (case-insensitive contains)","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Maximum number of authors to return"},"required":false,"description":"Maximum number of authors to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved distinct authors.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReleaseAuthorFilterItem"}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/releases/{id}":{"get":{"operationId":"getRelease","description":"Retrieve a release by ID.","x-speakeasy-group":"releases","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"required":true,"description":"Unique identifier for the release.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["project"]},"description":"Optional fields to include: project"},"required":false,"description":"Optional fields to include: project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReleaseListItemResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments":{"get":{"operationId":"listDeployments","description":"Retrieve all deployments.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"list","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Filter by exact deployment name. Must be used with deploymentGroup."},"required":false,"description":"Filter by exact deployment name. Must be used with deploymentGroup.","name":"name","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name, public subdomain, or deployment group name"},"required":false,"description":"Search deployments by name, public subdomain, or deployment group name","name":"search","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved deployments.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"400":{"description":"Invalid deployment list filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDeployment","description":"Create a new deployment. Deployment group tokens automatically use their group. Workspace/project tokens must provide deploymentGroupId.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewDeploymentRequest"}}}},"responses":{"201":{"description":"Deployment created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"400":{"description":"Bad request - deployment group has reached max deployments limit.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Forbidden - insufficient permissions to create deployments in this context.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project or deployment group not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/stats":{"get":{"operationId":"getDeploymentStats","description":"Get aggregated deployment statistics. Returns total count and breakdown by status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getStats","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by deployment group ID or name"},"required":false,"description":"Filter by deployment group ID or name","name":"deploymentGroup","in":"query"},{"schema":{"type":"string","description":"Filter by manager ID"},"required":false,"description":"Filter by manager ID","name":"managerId","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"description":"Filter deployments by effective environment"},"required":false,"description":"Filter deployments by effective environment","name":"environment","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","provisioning-failed","running","refresh-failed","update-pending","updating","update-failed","delete-pending","deleting","delete-failed","teardown-required","teardown-failed","deleted","error"],"description":"Deployment status in the deployment lifecycle"},"description":"Filter deployments by status"},"required":false,"description":"Filter deployments by status","name":"status","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search deployments by name or deployment group name"},"required":false,"description":"Search deployments by name or deployment group name","name":"search","in":"query"}],"responses":{"200":{"description":"Deployment statistics retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentStats"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-environments":{"get":{"operationId":"listDeploymentFilterEnvironments","description":"List distinct effective environments used by deployments. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterEnvironments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/filter-deployment-groups":{"get":{"operationId":"listDeploymentFilterDeploymentGroups","description":"List deployment groups with deployment counts. Used for filter dropdowns.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"listFilterDeploymentGroups","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","nullable":true,"maxLength":256,"description":"Search deployment groups by name"},"required":false,"description":"Search deployment groups by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return"},"required":false,"description":"Maximum number of items to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Deployment groups for filter retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"dg_[0-9a-z]{28}$","description":"Unique identifier for the deployment group.","example":"dg_r27ict8c7vcgsumpj90ackf7b"},"name":{"type":"string"},"deploymentCount":{"type":"number"},"runningCount":{"type":"number","description":"Number of deployments in 'running' status"},"failedCount":{"type":"number","description":"Number of deployments in a failed status"},"inProgressCount":{"type":"number","description":"Number of deployments in an in-progress status (provisioning, updating, etc.)"}},"required":["id","name","deploymentCount","runningCount","failedCount","inProgressCount"]}}},"required":["items"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}":{"get":{"operationId":"getDeployment","description":"Retrieve a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["release","deploymentGroup","project"]},"description":"Optional fields to include: release, deploymentGroup, project"},"required":false,"description":"Optional fields to include: release, deploymentGroup, project","name":"include","in":"query"}],"responses":{"200":{"description":"Retrieved deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentDetailResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/info":{"get":{"operationId":"getDeploymentConnectionInfo","description":"Get deployment connection information including command endpoint and resource URLs.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment connection information.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentConnectionInfo"}}}},"400":{"description":"Deployment not ready (no manager assigned).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/rejoin":{"post":{"operationId":"rejoinDeployment","description":"Re-acquire a deployment-scoped sync token for an existing deployment by name. Used by the agent when its persistent state was wiped (e.g. emptyDir on pod restart) and `/v1/initialize` would hit a DEPLOYMENT_NAME_ALREADY_EXISTS 409. Deployment-group tokens only.","tags":["deployments"],"x-speakeasy-group":"deployments","x-speakeasy-name-override":"rejoin","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejoinDeploymentRequest"}}}},"responses":{"200":{"description":"Existing deployment found; new deployment-scoped token issued.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejoinDeploymentResponse"}}}},"403":{"description":"Caller is not a deployment-group token, or is from a different deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"No deployment with that name exists in the caller's deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/import":{"post":{"operationId":"importDeployment","description":"Import a deployment from resolved setup infrastructure such as CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"import","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportDeploymentRequest"}}}},"responses":{"200":{"description":"Deployment import was idempotent and returned an existing deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"201":{"description":"Deployment imported and created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"409":{"description":"Deployment with the specified ID already exists, or a deployment with the same name already exists in the deployment group.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/first-party-inputs":{"put":{"operationId":"setFirstPartyDeploymentInputs","description":"Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setFirstPartyDeploymentInputs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Input values stored on the session token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFirstPartyDeploymentInputsResponse"}}}},"400":{"description":"A deployment-group token scope is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"The token is not a first-party deployment session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to store input values.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations":{"post":{"operationId":"createSetupRegistrationOperation","description":"Start a durable setup registration operation for CloudFormation, Terraform, or Helm.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createSetupRegistrationOperation","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSetupRegistrationOperationRequest"}}}},"responses":{"202":{"description":"Setup registration operation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"400":{"description":"Invalid setup registration operation request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed before callback acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/setup-registration-operations/{id}":{"get":{"operationId":"getSetupRegistrationOperation","description":"Get setup registration operation status.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getSetupRegistrationOperation","parameters":[{"schema":{"type":"string","pattern":"setupop_[0-9a-z]{28}$","description":"Unique identifier for the setup registration operation.","example":"setupop_y41lqnfosxuwqkzmiax7"},"required":true,"description":"Unique identifier for the setup registration operation.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Setup registration operation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupRegistrationOperationResponse"}}}},"404":{"description":"Setup registration operation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/delete":{"post":{"operationId":"deleteDeployment","description":"Delete, detach, or forget a deployment by ID.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentRequest"}}}},"responses":{"202":{"description":"Deployment deletion request accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteDeploymentResponse"}}}},"400":{"description":"Cannot delete the deployment in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/redeploy":{"post":{"operationId":"redeployDeployment","description":"Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"redeploy","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment redeployment triggered successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot redeploy - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/pin-release":{"post":{"operationId":"pinDeploymentRelease","description":"Pin or unpin deployment to a specific release. Only works for running deployments. Controller will automatically trigger update to target release.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"pinRelease","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinReleaseRequest"}}}},"responses":{"202":{"description":"Release pin updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot pin release - deployment must be running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment or release not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/target-agent-version":{"put":{"operationId":"setDeploymentTargetAgentVersion","description":"Set (or clear) the agent version this deployment should run. The manager compares this against the agent's reported version on each /v1/sync; when they differ, it emits an agent_target in the response so the agent triggers the upgrade itself. Pass null/omit to clear.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"setTargetAgentVersion","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetTargetAgentVersionRequest"}}}},"responses":{"202":{"description":"Target agent version updated.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/retry":{"post":{"operationId":"retryDeployment","description":"Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"retry","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Deployment retry enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Deployment is not in a failed state that can be retried.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/environment-variables":{"patch":{"operationId":"updateDeploymentEnvironmentVariables","description":"Update a deployment's environment variables. If the deployment is running and not locked, the status will be changed to update-pending to trigger a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateEnvironmentVariables","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentEnvironmentVariablesRequest"}}}},"responses":{"202":{"description":"Environment variables updated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployments/{id}/token":{"post":{"operationId":"createDeploymentToken","description":"Create a deployment token (deployment-scoped API key). The deployment must exist before creating a token.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"createToken","parameters":[{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Unique identifier for the deployment.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenRequest"}}}},"responses":{"201":{"description":"Deployment token created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentTokenResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers":{"post":{"operationId":"createManager","description":"Create a new manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewManagerRequest"}}}},"responses":{"201":{"description":"Manager created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Invalid private manager setup method.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"A manager for this target already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"listManagers","description":"Retrieve all managers.","x-speakeasy-group":"managers","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search managers by name"},"required":false,"description":"Search managers by name","name":"search","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of managers to return"},"required":false,"description":"Maximum number of managers to return","name":"limit","in":"query"}],"responses":{"200":{"description":"Retrieved managers.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Manager"}}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/setup-token":{"post":{"operationId":"retryManagerSetup","description":"Revoke previous private-manager setup tokens and issue a fresh setup token/config.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retrySetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"201":{"description":"Fresh manager setup token generated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateManagerResponse"}}}},"400":{"description":"Manager setup cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or setup config not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/retry":{"post":{"operationId":"retryManager","description":"Retry private-manager setup. Returns a fresh setup action before the internal deployment exists, or requests retry for the internal deployment after it exists.","x-speakeasy-group":"managers","x-speakeasy-name-override":"retry","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager retry handled successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerRetryResponse"}}}},"400":{"description":"Manager cannot be retried in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or internal deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/cancel-setup":{"post":{"operationId":"cancelManagerSetup","description":"Cancel pending private-manager setup, revoke setup/runtime tokens, and remove the undeployed manager record.","x-speakeasy-group":"managers","x-speakeasy-name-override":"cancelSetup","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager setup canceled successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Manager setup cannot be canceled in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}":{"get":{"operationId":"getManager","description":"Retrieve a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"get","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manager"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteManager","description":"Delete a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"delete","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager deletion enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot delete the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Internal deployment already has a conflicting delete request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/domain-binding":{"get":{"operationId":"getManagerDomainBinding","description":"Get the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved manager domain binding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"put":{"operationId":"updateManagerDomainBinding","description":"Create, update, or remove the custom domain binding for a private manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"updateDomainBinding","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerDomainBinding"}}}},"responses":{"200":{"description":"Manager domain binding updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDomainBindingResponse"}}}},"400":{"description":"Invalid domain binding request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager or domain not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/management-config":{"get":{"operationId":"getManagerManagementConfig","description":"Get the management configuration for a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"getManagementConfig","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"required":true,"description":"Represents the target cloud platform.","name":"platform","in":"query"}],"responses":{"200":{"description":"Management config retrieved successfully.","content":{"application/json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"managingRoleArn":{"type":"string","description":"The managing AWS IAM role ARN that can assume cross-account roles"}},"required":["managingRoleArn"],"description":"AWS management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["aws"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"serviceAccountEmail":{"type":"string","description":"Service account email for management roles"}},"required":["serviceAccountEmail"],"description":"GCP management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["gcp"]}},"required":["platform"]}]},{"allOf":[{"type":"object","properties":{"managingTenantId":{"type":"string","description":"The managing Azure Tenant ID for cross-tenant access"},"oidcIssuer":{"type":"string","description":"OIDC issuer URL trusted by the target-side managed identity."},"oidcSubject":{"type":"string","description":"OIDC subject claim trusted by the target-side managed identity."}},"required":["managingTenantId","oidcIssuer","oidcSubject"],"description":"Azure management configuration extracted from stack settings"},{"type":"object","properties":{"platform":{"type":"string","enum":["azure"]}},"required":["platform"]}]},{"type":"object","properties":{"platform":{"type":"string","enum":["kubernetes"]}},"required":["platform"]}],"description":"Management configuration for different cloud platforms.\n\nPlatform-derived configuration for cross-account/cross-tenant access.\nThis is NOT user-specified - it's derived from the Manager's ServiceAccount."}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/provision":{"post":{"operationId":"provisionManager","description":"Enqueue provisioning for a manager by ID.","x-speakeasy-group":"managers","x-speakeasy-name-override":"provision","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"202":{"description":"Manager provisioning enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot provision the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/update":{"post":{"operationId":"updateManager","description":"Update a manager to a specific release ID or active release.","x-speakeasy-group":"managers","x-speakeasy-name-override":"update","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateManagerRequest"}}}},"responses":{"202":{"description":"Manager update enqueued successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"400":{"description":"Cannot update the manager in its current state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/events":{"get":{"operationId":"listManagerEvents","description":"Retrieve all events of a manager.","x-speakeasy-group":"managers","x-speakeasy-name-override":"listEvents","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}},"required":["items"]}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/token":{"post":{"operationId":"generateManagerToken","description":"Generate a short-lived JWT for direct browser → manager communication. Used for fetching command payloads and querying logs without routing sensitive data through the platform API.","x-speakeasy-group":"managers","x-speakeasy-name-override":"generateManagerToken","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenRequest"}}}},"responses":{"200":{"description":"Manager access token and connection info.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateManagerTokenResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/gcp-oauth-provider/resolve":{"post":{"operationId":"resolveManagerGcpOAuthProvider","description":"Resolve decrypted project-level Google Cloud OAuth provider settings for a manager-side deployment bootstrap.","x-speakeasy-group":"managers","x-speakeasy-name-override":"resolveGcpOAuthProvider","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderRequest"}}}},"responses":{"200":{"description":"Resolved Google Cloud OAuth provider settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveManagerGcpOAuthProviderResponse"}}}},"401":{"description":"Unauthorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Manager cannot resolve this deployment group's project settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Manager, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/heartbeat":{"post":{"operationId":"reportManagerHeartbeat","description":"Report Manager health status and metrics.","x-speakeasy-group":"managers","x-speakeasy-name-override":"reportHeartbeat","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatRequest"}}}},"responses":{"200":{"description":"Heartbeat acknowledged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerHeartbeatResponse"}}}},"404":{"description":"Manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/managers/{id}/deployment":{"get":{"operationId":"getManagerDeployment","description":"Get deployment details for a private manager (internal deployment platform, status, resources).","x-speakeasy-group":"managers","x-speakeasy-name-override":"getDeployment","parameters":[{"schema":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Unique identifier for a manager."}]},"required":true,"description":"Unique identifier for a manager.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Manager deployment details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManagerDeployment"}}}},"404":{"description":"Manager not found or has no internal deployment (alien-hosted managers don't have deployment info).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Operation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys":{"get":{"operationId":"listAPIKeys","description":"Retrieve all API keys for the current workspace.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved API keys.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/APIKey"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createAPIKey","description":"Create a new API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyRequest"}}}},"responses":{"201":{"description":"API key created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyResponse"}}}},"403":{"description":"Insufficient permissions to create API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/{id}":{"get":{"operationId":"getAPIKey","description":"Retrieve a specific API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateAPIKey","description":"Update an API key (enable/disable, change description).","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAPIKeyRequest"}}}},"responses":{"200":{"description":"API key updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}}},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"revokeAPIKey","description":"Revoke (soft delete) an API key.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"revoke","parameters":[{"schema":{"type":"string","pattern":"apikey_[0-9a-z]{28}$","description":"Unique identifier for the api key.","example":"apikey_ye96yxs1tjnrrwulp8frh"},"required":true,"description":"Unique identifier for the api key.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"204":{"description":"API key revoked successfully."},"404":{"description":"API key not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/api-keys/batch-delete":{"post":{"operationId":"deleteAPIKeys","description":"Permanently delete multiple API keys.","x-speakeasy-group":"apiKeys","x-speakeasy-name-override":"deleteMultiple","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAPIKeysRequest"}}}},"responses":{"200":{"description":"API keys deleted successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"deletedCount":{"type":"number"}},"required":["deletedCount"]}}}},"403":{"description":"Insufficient permissions to delete API keys.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains":{"get":{"operationId":"listDomains","description":"List system domains and workspace domains.","x-speakeasy-group":"domains","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domains.","content":{"application/json":{"schema":{"type":"object","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/DomainWithUsage"}}},"required":["domains"]}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDomain","description":"Create a workspace domain and optional initial endpoints.","x-speakeasy-group":"domains","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":253},"setup":{"type":"object","properties":{"deploymentPortal":{"type":"boolean"},"packages":{"type":"boolean"},"deploymentUrlProjectId":{"type":"string","nullable":true,"pattern":"prj_[0-9a-z]{28}$","description":"Unique identifier for the project.","example":"prj_mcytp6z3j91f7tn5ryqsfwtr"},"managerIds":{"type":"array","items":{"type":"string"}}}}},"required":["domain"]}}}},"responses":{"200":{"description":"Returned an existing workspace domain claim.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"201":{"description":"Created domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Domain is reserved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permissions or plan limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/endpoints":{"post":{"operationId":"createDomainEndpoint","description":"Create an endpoint under a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"createEndpoint","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["deployment_portal","workspace_packages","manager_api","deployment_url_base"]},"owner":{"type":"object","properties":{"type":{"type":"string","enum":["workspace","project","manager"]},"id":{"type":"string"}},"required":["type","id"]}},"required":["kind"]}}}},"responses":{"201":{"description":"Created endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Endpoint cleanup is still in progress.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}":{"get":{"operationId":"getDomain","description":"Get domain by ID.","x-speakeasy-group":"domains","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved domain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"delete":{"operationId":"deleteDomain","description":"Delete a workspace domain.","x-speakeasy-group":"domains","x-speakeasy-name-override":"delete","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain deletion requested.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Domain is in use.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/domains/{id}/refresh":{"post":{"operationId":"refreshDomain","description":"Refresh workspace domain verification.","x-speakeasy-group":"domains","x-speakeasy-name-override":"refresh","parameters":[{"schema":{"type":"string","pattern":"dom_[0-9a-z]{28}$","description":"Unique identifier for the domain.","example":"dom_469m0agk8luj4s16sakmmpdd"},"required":true,"description":"Unique identifier for the domain.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Domain verification refresh requested.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainWithUsage"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events":{"get":{"operationId":"listEvents","description":"Retrieve all events.","x-speakeasy-group":"events","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter events to a single deployment."},"required":false,"description":"Filter events to a single deployment.","name":"deploymentId","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/events/{id}":{"get":{"operationId":"getEvent","description":"Retrieve an event by ID.","x-speakeasy-group":"events","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"event_[0-9a-zA-Z]{28}$","description":"Unique identifier for the event.","example":"event_MtSA24M3pWuAkQYxgZxuRI"},"required":true,"description":"Unique identifier for the event.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved event.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands":{"get":{"operationId":"listCommands","description":"Retrieve commands. Use for dashboard analytics and command history.","x-speakeasy-group":"commands","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"type":"string","enum":["PENDING_UPLOAD","PENDING","DISPATCHED","SUCCEEDED","FAILED","EXPIRED"],"description":"Filter by command state"},"required":false,"description":"Filter by command state","name":"state","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Filter by command name"},"required":false,"description":"Filter by command name","name":"name","in":"query"},{"schema":{"type":"string","maxLength":256,"description":"Search commands by name"},"required":false,"description":"Search commands by name","name":"search","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created after this date (ISO 8601)"},"required":false,"description":"Filter commands created after this date (ISO 8601)","name":"createdAfter","in":"query"},{"schema":{"type":"string","nullable":true,"format":"date-time","description":"Filter commands created before this date (ISO 8601)"},"required":false,"description":"Filter commands created before this date (ISO 8601)","name":"createdBefore","in":"query"},{"schema":{"type":"array","items":{"type":"string","enum":["deployment","project"]},"description":"Optional fields to include: deployment, project"},"required":false,"description":"Optional fields to include: deployment, project","name":"include","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Retrieved commands.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CommandListItemResponse"},"description":"Items in this page"},"nextCursor":{"type":"string","nullable":true,"description":"Cursor for the next page, null if last page"}},"required":["items","nextCursor"],"description":"Paginated response"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createCommand","description":"Create command metadata. Called by manager when processing commands. Returns project info for routing decisions.","x-speakeasy-group":"commands","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandRequest"}}}},"responses":{"201":{"description":"Command created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommandResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/names":{"get":{"operationId":"listCommandNames","description":"List distinct command names. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listNames","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search command names (prefix match)"},"required":false,"description":"Search command names (prefix match)","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct command names.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandNamesResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/deployments":{"get":{"operationId":"listCommandDeployments","description":"List distinct deployments that have commands, including deployment group info. Use for filter dropdowns in the dashboard.","x-speakeasy-group":"commands","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Search deployment or deployment group names"},"required":false,"description":"Search deployment or deployment group names","name":"search","in":"query"}],"responses":{"200":{"description":"Distinct deployments that have commands.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCommandDeploymentsResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/commands/{id}":{"patch":{"operationId":"updateCommand","description":"Update command state. Called by manager when command is dispatched or completes.","x-speakeasy-group":"commands","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCommandRequest"}}}},"responses":{"200":{"description":"Command updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Command not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getCommand","description":"Retrieve a command by ID.","x-speakeasy-group":"commands","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"cmd_[0-9a-zA-Z]{28}$","description":"Unique identifier for the command.","example":"cmd_2sxjXxvOYct7IohT3ukliAzf"},"required":true,"description":"Unique identifier for the command.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved command.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Command"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions":{"get":{"operationId":"listDebugSessions","description":"Retrieve debug sessions for dashboard audit. Filters: project, deployment, state, mode.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":false,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Filter by deployment ID","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":false,"description":"Filter by deployment ID","name":"deploymentId","in":"query"},{"schema":{"allOf":[{"$ref":"#/components/schemas/DebugSessionState"},{"description":"Filter by session state"}]},"required":false,"description":"Filter by session state","name":"state","in":"query"},{"schema":{"type":"string","enum":["push","pull"],"description":"Filter by deployment model (push/pull). Joins against the parent deployment."},"required":false,"description":"Filter by deployment model (push/pull). Joins against the parent deployment.","name":"mode","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Filter by cloud provider. Joins against the parent deployment."},"required":false,"description":"Filter by cloud provider. Joins against the parent deployment.","name":"provider","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"Maximum number of items to return per page"},"required":false,"description":"Maximum number of items to return per page","name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor for pagination - omit for first page"},"required":false,"description":"Cursor for pagination - omit for first page","name":"cursor","in":"query"}],"responses":{"200":{"description":"Paginated debug sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSessionListResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"post":{"operationId":"createDebugSession","description":"Create a debug-session audit row. Called by the manager when a pull or push debug tunnel is opened. Workspace + project derived from deployment.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"create","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDebugSessionRequest"}}}},"responses":{"201":{"description":"Debug session created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/debug-sessions/{id}":{"patch":{"operationId":"updateDebugSession","description":"Update debug-session state. Called by manager on tunnel attach, close, or deadline expiry.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"update","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDebugSessionRequest"}}}},"responses":{"200":{"description":"Debug session updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Debug session not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"get":{"operationId":"getDebugSession","description":"Retrieve a debug session by ID.","x-speakeasy-group":"debugSessions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","pattern":"dbg_[0-9a-zA-Z]{28}$","description":"Unique identifier for the debug session.","example":"dbg_HOXmkmT9UPYlsnxqSNlEGoXL"},"required":true,"description":"Unique identifier for the debug session.","name":"id","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Retrieved debug session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DebugSession"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info":{"get":{"operationId":"getDeploymentInfo","description":"Get deployment information for the deployment portal. Accepts both deployment-scoped and deployment-group-scoped API keys. Returns project information, package status/outputs, and either deployment or deployment group details depending on the token type. Poll this endpoint to check if packages are ready.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"getInfo","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Deployment information retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInfo"}}}},"401":{"description":"Unauthorized — requires a deployment-scoped or deployment-group-scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, deployment group, or project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/compute-plan":{"post":{"operationId":"planDeploymentCompute","description":"Plan deployment compute for the active release before stack preparation. The response contains recommended machine and scale choices for cloud compute pools.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"planCompute","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Compute plan returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentComputePlan"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/deployment-info/prepare-stack":{"post":{"operationId":"prepareDeploymentStack","description":"Prepare the active release stack for a deployment portal setup session. The response contains the generated stack shape plus setup compatibility metadata.","x-speakeasy-group":"deployment","x-speakeasy-name-override":"prepareStack","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"type":"string","enum":["aws","gcp","azure"]},"setupMethod":{"$ref":"#/components/schemas/DeploymentSetupMethod"},"region":{"type":"string"},"stackSettings":{"type":"object","properties":{"compute":{"type":"object","properties":{"pools":{"type":"object","additionalProperties":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["fixed"]},"machines":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","machines"]},{"type":"object","properties":{"mode":{"type":"string","enum":["autoscale"]},"min":{"type":"integer","minimum":0},"max":{"type":"integer","minimum":0},"machine":{"type":"string"}},"required":["mode","min","max"]}]},"default":{}}}},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Deployment model: how updates are delivered to the remote environment."},"domains":{"oneOf":[{"type":"object","properties":{"customDomains":{"type":"object","nullable":true,"properties":{},"additionalProperties":{"type":"object","properties":{"certificate":{"type":"object","properties":{"aws":{"oneOf":[{"type":"object","properties":{"certificateArn":{"type":"string"}},"required":["certificateArn"]},{"nullable":true}]},"azure":{"oneOf":[{"type":"object","properties":{"keyVaultCertificateId":{"type":"string"},"keyVaultResourceId":{"type":"string","nullable":true}},"required":["keyVaultCertificateId"]},{"nullable":true}]},"gcp":{"oneOf":[{"type":"object","properties":{"certificateName":{"type":"string"}},"required":["certificateName"]},{"nullable":true}]},"kubernetes":{"oneOf":[{"type":"object","properties":{"tlsSecretRef":{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."}},"required":["tlsSecretRef"]},{"nullable":true}]}},"description":"Platform-specific certificate references for custom domains."},"domain":{"type":"string","description":"Fully qualified domain name to use."}},"required":["certificate","domain"],"description":"Custom domain configuration for a single resource."},"description":"Custom domain configuration per resource ID."}},"description":"Domain configuration for the stack.\n\nWhen `custom_domains` is set, the specified resources use customer-provided\ndomains and certificates. Otherwise, Alien auto-generates domains."},{"nullable":true}]},"externalBindings":{"type":"object","nullable":true,"properties":{},"description":"External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms."},"heartbeats":{"type":"string","enum":["off","on"],"description":"How heartbeat health checks are handled."},"kubernetes":{"oneOf":[{"type":"object","properties":{"cluster":{"oneOf":[{"type":"object","properties":{"cloud":{"oneOf":[{"type":"object","properties":{"accountId":{"type":"string","nullable":true},"clusterId":{"type":"string","nullable":true},"clusterName":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"subscriptionId":{"type":"string","nullable":true}},"description":"Optional provider-specific identity for a cloud-backed Kubernetes cluster."},{"nullable":true}]},"namespace":{"type":"string","nullable":true,"description":"Namespace where the Alien chart and application resources run."},"ownership":{"type":"string","enum":["managed","existing","external"],"description":"Ownership model for the Kubernetes cluster."}},"required":["ownership"],"description":"Kubernetes cluster setup settings."},{"nullable":true}]},"exposure":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["disabled"]}},"required":["mode"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"mode":{"type":"string","enum":["generated"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","mode","route"]},{"type":"object","properties":{"certificate":{"oneOf":[{"allOf":[{"type":"object","properties":{"namespace":{"type":"string","nullable":true,"description":"Secret namespace. Defaults to the release namespace when omitted."},"secretName":{"type":"string","description":"Secret name."}},"required":["secretName"],"description":"Namespace-scoped Kubernetes TLS Secret reference."},{"type":"object","properties":{"mode":{"type":"string","enum":["tlsSecretRef"]}},"required":["mode"]}]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedAcmImport"]},"region":{"type":"string","nullable":true,"description":"ACM region. Defaults to the deployment region when omitted."},"tags":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Tags applied to runtime-imported ACM certificates."}},"required":["mode"]},{"type":"object","properties":{"certificateArn":{"type":"string","description":"Existing ACM certificate ARN."},"mode":{"type":"string","enum":["awsAcmArn"]}},"required":["certificateArn","mode"]},{"type":"object","properties":{"mode":{"type":"string","enum":["managedTlsSecret"]},"secretNameTemplate":{"type":"string","description":"Secret name template. Runtime may substitute resource/deployment tokens."}},"required":["mode","secretNameTemplate"]},{"type":"object","properties":{"mode":{"type":"string","enum":["none"]}},"required":["mode"]}],"description":"Certificate publication or reference mode for Kubernetes public endpoints."},"domain":{"type":"string","description":"Hostname routed by the Kubernetes public endpoint."},"mode":{"type":"string","enum":["custom"]},"route":{"oneOf":[{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example `eks.amazonaws.com/alb`."},"ingressClassName":{"type":"string","description":"`spec.ingressClassName` for generated Ingresses."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["ingressClassName"],"description":"Shared Ingress route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["ingress"]}},"required":["routeApi"]}]},{"allOf":[{"type":"object","properties":{"annotations":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Annotations applied to route objects."},"controller":{"type":"string","nullable":true,"description":"Route controller identifier, for example a cloud Gateway controller."},"gatewayClassName":{"type":"string","description":"GatewayClass selected for generated Gateways."},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"},"description":"Labels applied to route objects."},"listenerPort":{"type":"integer","minimum":0,"description":"Listener port, usually 443."},"provider":{"oneOf":[{"type":"object","properties":{"ipAddressType":{"type":"string","nullable":true,"description":"Optional ALB IP address type, such as `dualstack`."},"provider":{"type":"string","enum":["awsAlb"]},"scheme":{"type":"string","description":"Internet-facing or internal ALB scheme."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"Explicit subnet IDs when the profile cannot rely on controller discovery."},"targetType":{"type":"string","description":"ALB target type, usually `ip`."}},"required":["provider","scheme","targetType"]},{"type":"object","properties":{"provider":{"type":"string","enum":["gkeGateway"]},"staticAddressName":{"type":"string","nullable":true,"description":"Optional static address name for the Gateway frontend."}},"required":["provider"]},{"type":"object","properties":{"albName":{"type":"string","nullable":true,"description":"Optional ALB name when using BYO Application Gateway resources."},"albNamespace":{"type":"string","nullable":true,"description":"Optional ALB namespace when using BYO Application Gateway resources."},"frontend":{"type":"string","description":"Public or internal frontend exposure."},"provider":{"type":"string","enum":["azureApplicationGatewayForContainers"]}},"required":["frontend","provider"]},{"nullable":true}]}},"required":["gatewayClassName","listenerPort"],"description":"Shared Gateway API route profile values."},{"type":"object","properties":{"routeApi":{"type":"string","enum":["gateway"]}},"required":["routeApi"]}]}],"description":"Kubernetes route API selected for public endpoints."}},"required":["certificate","domain","mode","route"]},{"nullable":true}]}},"description":"Kubernetes runtime substrate configuration.\n\nThis controls how setup chooses the cluster backing `Platform::Kubernetes`\ndeployments. When omitted, cloud-backed Kubernetes deployments default to a\nmanaged cluster and generic/on-prem Kubernetes defaults to an external\ncluster."},{"nullable":true}]},"network":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["use-default"]}},"required":["type"]},{"type":"object","properties":{"availability_zones":{"type":"integer","minimum":0,"description":"Number of availability zones (default: 2)."},"cidr":{"type":"string","nullable":true,"description":"VPC/VNet CIDR block. If not specified, auto-generated from stack ID\nto reduce conflicts (e.g., \"10.{hash}.0.0/16\")."},"type":{"type":"string","enum":["create"]}},"required":["type"]},{"type":"object","properties":{"private_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of private subnets"},"public_subnet_ids":{"type":"array","items":{"type":"string"},"description":"IDs of public subnets (required for public ingress)"},"security_group_ids":{"type":"array","items":{"type":"string"},"description":"Optional security group IDs to use"},"type":{"type":"string","enum":["byo-vpc-aws"]},"vpc_id":{"type":"string","description":"The ID of the existing VPC"}},"required":["private_subnet_ids","public_subnet_ids","type","vpc_id"]},{"type":"object","properties":{"network_name":{"type":"string","description":"The name of the existing VPC network"},"region":{"type":"string","description":"The region of the subnet"},"subnet_name":{"type":"string","description":"The name of the subnet to use"},"type":{"type":"string","enum":["byo-vpc-gcp"]}},"required":["network_name","region","subnet_name","type"]},{"type":"object","properties":{"application_gateway_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated classic Application Gateway subnet within the VNet."},"private_subnet_name":{"type":"string","description":"Name of the private subnet within the VNet"},"public_subnet_name":{"type":"string","description":"Name of the public subnet within the VNet"},"type":{"type":"string","enum":["byo-vnet-azure"]},"vnet_resource_id":{"type":"string","description":"The full resource ID of the existing VNet"}},"required":["private_subnet_name","public_subnet_name","type","vnet_resource_id"]},{"nullable":true}]},"telemetry":{"type":"string","enum":["off","auto","approval-required"],"description":"How telemetry (logs, metrics, traces) is handled."},"updates":{"type":"string","enum":["auto","approval-required"],"description":"How updates are delivered to the deployment."}}}},"required":["platform","setupMethod","stackSettings"]}}}},"responses":{"200":{"description":"Prepared stack returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreparedDeploymentStack"}}}},"401":{"description":"Unauthorized — requires a deployment-group scoped API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment group, project, release, or manager not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/list":{"post":{"operationId":"syncList","description":"List full deployment records for manager operational loops. This endpoint is intentionally separate from the public deployments list, which returns lightweight UI rows.","x-speakeasy-group":"sync","x-speakeasy-name-override":"list","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListRequest"}}}},"responses":{"200":{"description":"Full deployment records returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncListResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/acquire":{"post":{"operationId":"syncAcquire","description":"Acquire a batch of deployments for processing. Used by Manager to atomically lock deployments matching filters. Each deployment in the batch must be released after processing.","x-speakeasy-group":"sync","x-speakeasy-name-override":"acquire","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireRequest"}}}},"responses":{"200":{"description":"Deployments acquired successfully (empty arrays if none available). Failures indicate deployments that were locked but failed during context building - their locks have been released.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponse"}}}},"400":{"description":"Bad request - invalid manager or filters.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/reconcile":{"post":{"operationId":"syncReconcile","description":"Reconcile deployment state. Push model requests that include a session verify lock ownership. Pull model state reports are accepted as authz-gated agent progress even when they carry an agent-sync session. Accepts full DeploymentState after step() execution.","x-speakeasy-group":"sync","x-speakeasy-name-override":"reconcile","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileRequest"}}}},"responses":{"200":{"description":"State reconciled successfully. If target is present, continue deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReconcileResponse"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Deployment locked (pull) or session mismatch (push).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/sync/release":{"post":{"operationId":"syncRelease","description":"Release a deployment lock. Must be called after processing an acquired deployment, even if processing failed. This is critical to avoid deadlocks.","x-speakeasy-group":"sync","x-speakeasy-name-override":"release","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncReleaseRequest"}}}},"responses":{"200":{"description":"Lock released successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"]}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}":{"get":{"operationId":"listResourceOverview","x-speakeasy-group":"resources","x-speakeasy-name-override":"listOverview","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Compute resource overview rows from latest heartbeats.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"deploymentCount":{"type":"integer"},"attentionCount":{"type":"integer"},"lastObservedAt":{"type":"string","format":"date-time"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt"]}}},"required":["resources"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/{resourceId}/deployments":{"get":{"operationId":"listResourceDeployments","x-speakeasy-group":"resources","x-speakeasy-name-override":"listDeployments","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Deployments where the resource is installed.","content":{"application/json":{"schema":{"type":"object","properties":{"resourceType":{"type":"string"},"resourceId":{"type":"string"},"deployments":{"type":"array","items":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]}}},"required":["resourceType","resourceId","deployments"]}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resources/{area}/deployments/{deploymentId}/{resourceId}":{"get":{"operationId":"getResourceDeploymentDetail","x-speakeasy-group":"resources","x-speakeasy-name-override":"getDeploymentDetail","parameters":[{"schema":{"type":"string","enum":["container","worker","daemon"]},"required":true,"name":"area","in":"path"},{"schema":{"type":"string"},"required":true,"name":"deploymentId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"resourceId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"required":true,"description":"Filter by project ID or name.","name":"project","in":"query"}],"responses":{"200":{"description":"Latest heartbeat detail for one compute resource deployment.","content":{"application/json":{"schema":{"type":"object","properties":{"deployment":{"type":"object","properties":{"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"health":{"type":"string"},"lifecycle":{"type":"string"},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerStale":{"type":"boolean"},"platformStale":{"type":"boolean"},"desiredCount":{"type":"integer","nullable":true},"currentCount":{"type":"integer","nullable":true},"readyCount":{"type":"integer","nullable":true},"observedAt":{"type":"string","format":"date-time"}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt"]},"heartbeat":{"oneOf":[{"type":"object","properties":{"status":{"type":"string","enum":["available"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"},"backend":{"type":"string"},"controllerPlatform":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"staleAt":{"type":"string","format":"date-time"},"platformStale":{"type":"boolean"},"heartbeat":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"]},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Represents the target cloud platform."},"data":{"oneOf":[{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"blockPublicAcls":{"type":"boolean","nullable":true},"blockPublicPolicy":{"type":"boolean","nullable":true},"bucketAclPresent":{"type":"boolean","nullable":true},"bucketLocation":{"type":"string","nullable":true},"bucketPolicyPresent":{"type":"boolean","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"encryptionEnabled":{"type":"boolean","nullable":true},"ignorePublicAcls":{"type":"boolean","nullable":true},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"publicAccessBlockPresent":{"type":"boolean"},"region":{"type":"string","nullable":true},"restrictPublicBuckets":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"versioningEnabled":{"type":"boolean","nullable":true},"versioningStatus":{"type":"string","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","publicAccessBlockPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsS3"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bucketId":{"type":"string","nullable":true},"defaultKmsKeyName":{"type":"string","nullable":true},"encryptionConfigPresent":{"type":"boolean"},"lifecyclePresent":{"type":"boolean"},"lifecycleRuleCount":{"type":"integer","nullable":true,"minimum":0},"location":{"type":"string","nullable":true},"locationType":{"type":"string","nullable":true},"name":{"type":"string"},"publicAccessPrevention":{"type":"string","nullable":true},"retentionPeriod":{"type":"string","nullable":true},"retentionPolicyEffectiveTime":{"type":"string","nullable":true},"retentionPolicyIsLocked":{"type":"boolean","nullable":true},"softDeleteEffectiveTime":{"type":"string","nullable":true},"softDeleteRetentionDurationSeconds":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageClass":{"type":"string","nullable":true},"uniformBucketLevelAccessEnabled":{"type":"boolean","nullable":true},"uniformBucketLevelAccessLockedTime":{"type":"string","nullable":true},"versioningEnabled":{"type":"boolean","nullable":true}},"required":["encryptionConfigPresent","lifecyclePresent","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudStorage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessTier":{"type":"string","nullable":true},"accountKind":{"type":"string","nullable":true},"allowBlobPublicAccess":{"type":"boolean","nullable":true},"blobDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"blobDeleteRetentionEnabled":{"type":"boolean","nullable":true},"blobEncryptionEnabled":{"type":"boolean","nullable":true},"blobVersioningEnabled":{"type":"boolean","nullable":true},"changeFeedEnabled":{"type":"boolean","nullable":true},"changeFeedRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionDays":{"type":"integer","nullable":true,"minimum":0},"containerDeleteRetentionEnabled":{"type":"boolean","nullable":true},"containerPublicAccess":{"type":"string","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"fileEncryptionEnabled":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"primaryLocation":{"type":"string","nullable":true},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"queueEncryptionEnabled":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"secondaryLocation":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"statusOfPrimary":{"type":"string","nullable":true},"statusOfSecondary":{"type":"string","nullable":true},"storageAccountName":{"type":"string","nullable":true},"tableEncryptionEnabled":{"type":"boolean","nullable":true}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureBlob"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["storage"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"codeSha256":{"type":"string","nullable":true},"functionName":{"type":"string"},"functionUrlAuthType":{"type":"string","nullable":true},"functionUrlCorsPresent":{"type":"boolean"},"lastModified":{"type":"string","nullable":true},"lastUpdateStatus":{"type":"string","nullable":true},"lastUpdateStatusReason":{"type":"string","nullable":true},"lastUpdateStatusReasonCode":{"type":"string","nullable":true},"layerCount":{"type":"integer","minimum":0},"memorySizeMb":{"type":"integer","nullable":true},"packageType":{"type":"string","nullable":true},"revisionId":{"type":"string","nullable":true},"runtime":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"stateReason":{"type":"string","nullable":true},"stateReasonCode":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutSeconds":{"type":"integer","nullable":true},"triggerCount":{"type":"integer","minimum":0},"version":{"type":"string","nullable":true}},"required":["functionName","functionUrlCorsPresent","layerCount","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsLambda"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"containerImage":{"type":"string","nullable":true},"cpuLimit":{"type":"string","nullable":true},"generation":{"type":"integer","nullable":true},"latestCreatedRevision":{"type":"string","nullable":true},"latestReadyRevision":{"type":"string","nullable":true},"maxInstanceCount":{"type":"integer","nullable":true},"memoryLimit":{"type":"string","nullable":true},"minInstanceCount":{"type":"integer","nullable":true},"observedGeneration":{"type":"integer","nullable":true},"region":{"type":"string","nullable":true},"service":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trafficCount":{"type":"integer","minimum":0},"uri":{"type":"string","nullable":true},"urls":{"type":"array","items":{"type":"string"}}},"required":["service","status","trafficCount","urls"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudRun"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appName":{"type":"string"},"cpu":{"type":"number","nullable":true},"environmentName":{"type":"string","nullable":true},"ingressFqdn":{"type":"string","nullable":true},"maxReplicas":{"type":"integer","nullable":true},"memory":{"type":"string","nullable":true},"minReplicas":{"type":"integer","nullable":true},"provisioningState":{"type":"string","nullable":true},"revision":{"type":"string","nullable":true},"runningStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["appName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","triggerCount","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"imagePathPresent":{"type":"boolean"},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pid":{"type":"integer","nullable":true,"minimum":0},"process":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"readinessProbeOk":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"triggerCount":{"type":"integer","minimum":0}},"required":["commandSupported","events","imagePathPresent","status","triggerCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["worker"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"attentionCount":{"type":"integer","minimum":0},"containerId":{"type":"string"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"image":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"replicaUnits":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"schedulingMode":{"type":"string","enum":["replicated","stateful","daemon"]},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["attentionCount","containerId","events","replicaUnits","replicas","schedulingMode","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["horizonPlatform"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]},"workloadKind":{"type":"string","enum":["deployment","statefulSet","daemonSet","replicaSet","pod"]}},"required":["events","name","namespace","pods","replicas","status","workloadKind"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"bindMountCount":{"type":"integer","minimum":0},"containerId":{"type":"string","nullable":true},"containerUnit":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"image":{"type":"string","nullable":true},"localUrl":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string","nullable":true},"portCount":{"type":"integer","minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeReachable":{"type":"boolean"},"runtimeStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["bindMountCount","events","portCount","runtimeReachable","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["container"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"assignedMachines":{"type":"integer","minimum":0},"capacityGroup":{"type":"string"},"commandSupported":{"type":"boolean"},"daemonInstances":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"ip":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"message":{"type":"string","nullable":true},"metricsHealthy":{"type":"boolean","nullable":true},"metricsLastUpdated":{"type":"string","nullable":true},"metricsStatus":{"type":"string","nullable":true},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"phase":{"type":"string","nullable":true},"ready":{"type":"boolean"},"reason":{"type":"string","nullable":true},"replicaId":{"type":"string"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"string","nullable":true},"terminatedReason":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ready","replicaId"]}},"daemonName":{"type":"string"},"desiredMachines":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"eventId":{"type":"string","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"details":{"oneOf":[{"nullable":true},{"nullable":true}]},"id":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"machineId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"healthyInstances":{"type":"integer","minimum":0},"horizonClusterId":{"type":"string"},"horizonStatus":{"type":"string"},"horizonStatusMessage":{"type":"string","nullable":true},"horizonStatusReason":{"type":"string","nullable":true},"latestUpdateTimestamp":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"unavailableInstances":{"type":"integer","minimum":0}},"required":["assignedMachines","capacityGroup","commandSupported","daemonInstances","daemonName","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string"},"pods":{"type":"array","items":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodeName":{"type":"string","nullable":true},"ownerReferences":{"type":"array","items":{"type":"object","properties":{"controller":{"type":"boolean"},"kind":{"type":"string"},"name":{"type":"string"},"uid":{"type":"string"}},"required":["controller","kind","name","uid"]}},"phase":{"type":"string","nullable":true},"podIp":{"type":"string","nullable":true},"ready":{"type":"boolean"},"restartCount":{"type":"integer","minimum":0},"terminatedReason":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true},"waitingReason":{"type":"string","nullable":true}},"required":["name","ownerReferences","ready","restartCount"]}},"replicas":{"type":"object","properties":{"available":{"type":"integer","nullable":true,"minimum":0},"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"misscheduled":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0},"updated":{"type":"integer","nullable":true,"minimum":0}}},"restarts":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workload":{"oneOf":[{"type":"object","properties":{"availableReplicas":{"type":"integer","nullable":true,"minimum":0},"conditions":{"type":"array","items":{"type":"object","properties":{"lastTransitionTime":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"desiredGeneration":{"type":"integer","nullable":true},"desiredReplicas":{"type":"integer","nullable":true,"minimum":0},"observedGeneration":{"type":"integer","nullable":true},"readyReplicas":{"type":"integer","nullable":true,"minimum":0},"rolloutReason":{"type":"string","nullable":true},"updatedReplicas":{"type":"integer","nullable":true,"minimum":0}},"required":["conditions"]},{"nullable":true}]}},"required":["commandSupported","events","name","namespace","pods","replicas","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetes"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"commandSupported":{"type":"boolean"},"daemonInstance":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"kind":{"type":"string","enum":["container","process","daemon"]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"phase":{"type":"string","nullable":true},"pid":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"boolean"},"restartCount":{"type":"integer","nullable":true,"minimum":0},"unitId":{"type":"string"}},"required":["kind","name","ready","unitId"]},{"nullable":true}]},"daemonName":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"severity":{"type":"string","enum":["info","warning","error"]},"subject":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","nullable":true},"kind":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["kind"]},{"nullable":true}]},"timestamp":{"type":"string","format":"date-time"}},"required":["kind","message","severity","timestamp"]}},"exitReason":{"type":"string","nullable":true},"imagePathPresent":{"type":"boolean"},"pid":{"type":"integer","nullable":true,"minimum":0},"restartCount":{"type":"integer","nullable":true,"minimum":0},"runtimeId":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["commandSupported","daemonName","events","imagePathPresent","runtimeId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["daemon"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aws"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcp"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"backendClusterId":{"type":"string","nullable":true},"capacityGroups":{"type":"array","items":{"type":"object","properties":{"capacityBlocker":{"oneOf":[{"type":"object","properties":{"category":{"type":"string","enum":["quota","capacity","allocation","other"]},"message":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"providerCode":{"type":"string","nullable":true},"providerReference":{"type":"string","nullable":true}},"required":["category","message","observedAt"]},{"nullable":true}]},"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"instanceType":{"type":"string","nullable":true},"maxMachines":{"type":"integer","nullable":true,"minimum":0},"minMachines":{"type":"integer","nullable":true,"minimum":0},"recommendation":{"oneOf":[{"type":"object","properties":{"desiredMachines":{"type":"integer","minimum":0},"reason":{"type":"string","nullable":true},"unschedulableReplicas":{"type":"integer","nullable":true,"minimum":0},"utilization":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}},"required":["desiredMachines"]},{"nullable":true}]}},"required":["currentMachines","desiredMachines","groupId"]}},"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"providerFleets":{"type":"array","items":{"type":"object","properties":{"currentMachines":{"type":"integer","minimum":0},"desiredMachines":{"type":"integer","minimum":0},"groupId":{"type":"string"},"location":{"type":"string","nullable":true},"providerId":{"type":"string"}},"required":["currentMachines","desiredMachines","groupId","providerId"]}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["capacityGroups","name","nodes","providerFleets","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"dockerApiVersion":{"type":"string","nullable":true},"dockerArch":{"type":"string","nullable":true},"dockerAvailable":{"type":"boolean"},"dockerOs":{"type":"string","nullable":true},"dockerVersion":{"type":"string","nullable":true},"hostIdentifier":{"type":"string","nullable":true},"name":{"type":"string"},"networkAvailable":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"nodes":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"runningContainers":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"trackedContainers":{"type":"integer","nullable":true,"minimum":0}},"required":["dockerAvailable","name","networkAvailable","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["compute-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"name":{"type":"string"},"namespace":{"type":"string","nullable":true},"nodeCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"nodeStatuses":{"type":"array","items":{"type":"object","properties":{"allocatable":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"capacity":{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"pods":{"type":"integer","nullable":true,"minimum":0}}},"conditions":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true},"status":{"type":"string"},"type":{"type":"string"}},"required":["status","type"]}},"containerRuntimeVersion":{"type":"string","nullable":true},"kubeletVersion":{"type":"string","nullable":true},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"ready":{"type":"boolean"},"roles":{"type":"array","items":{"type":"string"}},"uid":{"type":"string","nullable":true},"usage":{"oneOf":[{"type":"object","properties":{"cpu":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]},"memory":{"oneOf":[{"type":"object","properties":{"unit":{"type":"string","enum":["count","percent","bytes","cores","milliseconds","requests-per-second"]},"value":{"type":"number"}},"required":["unit","value"]},{"nullable":true}]}}},{"nullable":true}]}},"required":["allocatable","capacity","labels","name","ready","roles"]}},"podCounts":{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},"region":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"version":{"type":"string","nullable":true}},"required":["events","name","nodeCounts","podCounts","status"]},"resourceType":{"type":"string","enum":["kubernetes-cluster"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"approximateCounts":{"type":"boolean"},"approximateDelayedMessages":{"type":"integer","nullable":true,"minimum":0},"approximateInFlightMessages":{"type":"integer","nullable":true,"minimum":0},"approximateVisibleMessages":{"type":"integer","nullable":true,"minimum":0},"contentBasedDeduplication":{"type":"boolean","nullable":true},"deduplicationScope":{"type":"string","nullable":true},"delaySeconds":{"type":"integer","nullable":true,"minimum":0},"fifoQueue":{"type":"boolean","nullable":true},"fifoThroughputLimit":{"type":"string","nullable":true},"kmsDataKeyReusePeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"kmsMasterKeyId":{"type":"string","nullable":true},"maximumMessageSize":{"type":"integer","nullable":true,"minimum":0},"messageRetentionPeriodSeconds":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"queueArn":{"type":"string","nullable":true},"queueUrl":{"type":"string","nullable":true},"receiveMessageWaitTimeSeconds":{"type":"integer","nullable":true,"minimum":0},"redriveAllowPolicy":{"type":"string","nullable":true},"redrivePolicy":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"sqsManagedSseEnabled":{"type":"boolean","nullable":true},"sseEnabled":{"type":"boolean","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"visibilityTimeoutSeconds":{"type":"integer","nullable":true,"minimum":0}},"required":["approximateCounts","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsSqs"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"kmsKeyName":{"type":"string","nullable":true},"messageStorageAllowedPersistenceRegions":{"type":"array","items":{"type":"string"}},"messageStorageEnforceInTransit":{"type":"boolean","nullable":true},"projectId":{"type":"string","nullable":true},"schemaEncoding":{"type":"string","nullable":true},"schemaFirstRevisionId":{"type":"string","nullable":true},"schemaLastRevisionId":{"type":"string","nullable":true},"schemaName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subscriptionAckDeadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterMaxDeliveryAttempts":{"type":"integer","nullable":true,"minimum":0},"subscriptionDeadLetterTopic":{"type":"string","nullable":true},"subscriptionDetached":{"type":"boolean","nullable":true},"subscriptionEnableMessageOrdering":{"type":"boolean","nullable":true},"subscriptionFilter":{"type":"string","nullable":true},"subscriptionFullName":{"type":"string","nullable":true},"subscriptionLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionMessageRetentionDuration":{"type":"string","nullable":true},"subscriptionName":{"type":"string","nullable":true},"subscriptionPushAttributes":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"subscriptionPushConfigPresent":{"type":"boolean","nullable":true},"subscriptionPushEndpoint":{"type":"string","nullable":true},"subscriptionPushNoWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionPushOidcAudience":{"type":"string","nullable":true},"subscriptionPushOidcServiceAccountEmail":{"type":"string","nullable":true},"subscriptionPushPubsubWrapperWriteMetadata":{"type":"boolean","nullable":true},"subscriptionRetainAckedMessages":{"type":"boolean","nullable":true},"subscriptionState":{"type":"string","nullable":true},"topicFullName":{"type":"string","nullable":true},"topicLabels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"topicMessageRetentionDuration":{"type":"string","nullable":true},"topicName":{"type":"string"},"topicState":{"type":"string","nullable":true}},"required":["messageStorageAllowedPersistenceRegions","status","subscriptionLabels","subscriptionPushAttributes","topicLabels","topicName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpPubSub"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessedAt":{"type":"string","nullable":true},"activeMessageCount":{"type":"integer","nullable":true,"minimum":0},"autoDeleteOnIdle":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"deadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"deadLetteringOnMessageExpiration":{"type":"boolean","nullable":true},"defaultMessageTimeToLive":{"type":"string","nullable":true},"duplicateDetectionHistoryTimeWindow":{"type":"string","nullable":true},"enableBatchedOperations":{"type":"boolean","nullable":true},"enableExpress":{"type":"boolean","nullable":true},"enablePartitioning":{"type":"boolean","nullable":true},"endpoint":{"type":"string","nullable":true},"forwardDeadLetteredMessagesTo":{"type":"string","nullable":true},"forwardTo":{"type":"string","nullable":true},"lockDuration":{"type":"string","nullable":true},"maxDeliveryCount":{"type":"integer","nullable":true,"minimum":0},"maxMessageSizeInKilobytes":{"type":"integer","nullable":true,"minimum":0},"maxSizeInMegabytes":{"type":"integer","nullable":true,"minimum":0},"messageCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"namespaceName":{"type":"string"},"queueStatus":{"type":"string","nullable":true},"requiresDuplicateDetection":{"type":"boolean","nullable":true},"requiresSession":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"scheduledMessageCount":{"type":"integer","nullable":true,"minimum":0},"sizeInBytes":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"transferDeadLetterMessageCount":{"type":"integer","nullable":true,"minimum":0},"transferMessageCount":{"type":"integer","nullable":true,"minimum":0},"updatedAt":{"type":"string","nullable":true}},"required":["name","namespaceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureServiceBus"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string","nullable":true},"serviceStatus":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["queue"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"billingMode":{"type":"string","nullable":true},"deletionProtectionEnabled":{"type":"boolean","nullable":true},"globalSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"itemCount":{"type":"integer","nullable":true,"minimum":0},"keySchema":{"type":"array","items":{"type":"object","properties":{"attributeName":{"type":"string"},"keyType":{"type":"string"}},"required":["attributeName","keyType"]}},"localSecondaryIndexCount":{"type":"integer","nullable":true,"minimum":0},"name":{"type":"string"},"region":{"type":"string","nullable":true},"replicaCount":{"type":"integer","nullable":true,"minimum":0},"restoreInProgress":{"type":"boolean","nullable":true},"sseStatus":{"type":"string","nullable":true},"sseType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"streamEnabled":{"type":"boolean","nullable":true},"streamViewType":{"type":"string","nullable":true},"tableArn":{"type":"string","nullable":true},"tableClass":{"type":"string","nullable":true},"tableSizeBytes":{"type":"integer","nullable":true,"minimum":0},"tableStatus":{"type":"string","nullable":true},"ttlAttributeName":{"type":"string","nullable":true},"ttlStatus":{"type":"string","nullable":true}},"required":["keySchema","name","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsDynamoDb"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"appEngineIntegrationMode":{"type":"string","nullable":true},"cmekEnabled":{"type":"boolean"},"concurrencyMode":{"type":"string","nullable":true},"createTime":{"type":"string","nullable":true},"databaseEdition":{"type":"string","nullable":true},"databaseName":{"type":"string"},"databaseType":{"type":"string","nullable":true},"deleteProtectionState":{"type":"string","nullable":true},"deleteTime":{"type":"string","nullable":true},"earliestVersionTime":{"type":"string","nullable":true},"endpoint":{"type":"string","nullable":true},"locationId":{"type":"string","nullable":true},"pointInTimeRecoveryEnablement":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"sourceInfoPresent":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true},"versionRetentionPeriod":{"type":"string","nullable":true}},"required":["cmekEnabled","databaseName","sourceInfoPresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpFirestore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"endpoint":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"signedIdentifierCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"storageAccountKind":{"type":"string","nullable":true},"storageAccountLocation":{"type":"string","nullable":true},"storageAccountName":{"type":"string"},"storageAccountPrimaryStatus":{"type":"string","nullable":true},"storageAccountProvisioningState":{"type":"string","nullable":true},"storageAccountResourceId":{"type":"string","nullable":true},"tableExists":{"type":"boolean"},"tableName":{"type":"string"}},"required":["status","storageAccountName","tableExists","tableName"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureTable"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cloudMetadataSupported":{"type":"boolean"},"isDirectory":{"type":"boolean","nullable":true},"name":{"type":"string"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["cloudMetadataSupported","name","path","pathExists","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["kv"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"accountId":{"type":"string"},"hasMoreParameters":{"type":"boolean","nullable":true},"latestModifiedAt":{"type":"string","nullable":true,"format":"date-time"},"parameterMetadataSampled":{"type":"boolean"},"prefix":{"type":"string"},"region":{"type":"string"},"sampledAdvancedTierCount":{"type":"integer","nullable":true,"minimum":0},"sampledKmsKeyMetadataPresentCount":{"type":"integer","nullable":true,"minimum":0},"sampledParameterCount":{"type":"integer","nullable":true,"minimum":0},"sampledSecureStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringCount":{"type":"integer","nullable":true,"minimum":0},"sampledStringListCount":{"type":"integer","nullable":true,"minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["accountId","parameterMetadataSampled","prefix","region","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsParameterStore"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"location":{"type":"string"},"prefix":{"type":"string"},"projectId":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["location","prefix","projectId","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpSecretManager"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"accessPolicyCount":{"type":"integer","minimum":0},"location":{"type":"string","nullable":true},"name":{"type":"string"},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"purgeProtectionEnabled":{"type":"boolean","nullable":true},"rbacAuthorizationEnabled":{"type":"boolean"},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secretMetadataListed":{"type":"boolean"},"skuFamily":{"type":"string","nullable":true},"skuName":{"type":"string","nullable":true},"softDeleteEnabled":{"type":"boolean"},"softDeleteRetentionDays":{"type":"integer"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vaultUri":{"type":"string","nullable":true}},"required":["accessPolicyCount","name","privateEndpointConnectionCount","publicNetworkAccess","rbacAuthorizationEnabled","secretMetadataListed","softDeleteEnabled","softDeleteRetentionDays","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureKeyVault"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"prefix":{"type":"string"},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","prefix","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesSecret"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"isDirectory":{"type":"boolean","nullable":true},"modifiedAt":{"type":"string","nullable":true,"format":"date-time"},"path":{"type":"string"},"pathExists":{"type":"boolean"},"readonly":{"type":"boolean","nullable":true},"secretMetadataListed":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["path","pathExists","secretMetadataListed","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["vault"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"assumeRolePolicyPresent":{"type":"boolean"},"attachedPolicyCount":{"type":"integer","minimum":0},"attachedPolicyNames":{"type":"array","items":{"type":"string"}},"createDate":{"type":"string"},"description":{"type":"string","nullable":true},"inlinePolicyCount":{"type":"integer","minimum":0},"inlinePolicyNames":{"type":"array","items":{"type":"string"}},"lastUsedDate":{"type":"string","nullable":true},"lastUsedRegion":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"maxSessionDuration":{"type":"integer","nullable":true},"path":{"type":"string"},"permissionsBoundaryArn":{"type":"string","nullable":true},"permissionsBoundaryType":{"type":"string","nullable":true},"roleArn":{"type":"string"},"roleId":{"type":"string"},"roleName":{"type":"string"},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tagCount":{"type":"integer","minimum":0}},"required":["assumeRolePolicyPresent","attachedPolicyCount","attachedPolicyNames","createDate","inlinePolicyCount","inlinePolicyNames","managedTagCount","path","roleArn","roleId","roleName","stackPermissionsApplied","status","tagCount"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true},"disabled":{"type":"boolean","nullable":true},"displayName":{"type":"string","nullable":true},"email":{"type":"string"},"etag":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"oauth2ClientId":{"type":"string","nullable":true},"projectBindingCount":{"type":"integer","minimum":0},"projectId":{"type":"string","nullable":true},"projectRoles":{"type":"array","items":{"type":"string"}},"serviceAccountBindingCount":{"type":"integer","minimum":0},"serviceAccountRoles":{"type":"array","items":{"type":"string"}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"uniqueId":{"type":"string","nullable":true}},"required":["email","projectBindingCount","projectRoles","serviceAccountBindingCount","serviceAccountRoles","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"clientId":{"type":"string","nullable":true},"customRoleDefinitionCount":{"type":"integer","minimum":0},"customRoleDefinitionIds":{"type":"array","items":{"type":"string"}},"isolationScope":{"type":"string","nullable":true},"location":{"type":"string"},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"principalId":{"type":"string","nullable":true},"resourceGroup":{"type":"string"},"resourceId":{"type":"string"},"roleAssignmentCount":{"type":"integer","minimum":0},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"stackPermissionsApplied":{"type":"boolean"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"type":{"type":"string","nullable":true}},"required":["customRoleDefinitionCount","customRoleDefinitionIds","location","managedTagCount","name","resourceGroup","resourceId","roleAssignmentCount","roleAssignmentIds","stackPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"configured":{"type":"boolean"},"identity":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["configured","identity","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service-account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"availabilityZones":{"type":"array","items":{"type":"string"}},"cidrBlock":{"type":"string","nullable":true},"internetGatewayId":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"natGatewayId":{"type":"string","nullable":true},"privateSubnetIds":{"type":"array","items":{"type":"string"}},"publicSubnetIds":{"type":"array","items":{"type":"string"}},"routeTableCount":{"type":"integer","minimum":0},"securityGroupId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vpcId":{"type":"string","nullable":true},"vpcState":{"type":"string","nullable":true}},"required":["availabilityZones","isByoVpc","privateSubnetIds","publicSubnetIds","routeTableCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cidrBlock":{"type":"string","nullable":true},"cloudNatName":{"type":"string","nullable":true},"firewallName":{"type":"string","nullable":true},"isByoVpc":{"type":"boolean"},"networkName":{"type":"string","nullable":true},"networkSelfLink":{"type":"string","nullable":true},"region":{"type":"string","nullable":true},"routerName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"subnetworkName":{"type":"string","nullable":true},"subnetworkSelfLink":{"type":"string","nullable":true}},"required":["isByoVpc","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpVpc"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"applicationGatewaySubnetName":{"type":"string","nullable":true},"cidrBlock":{"type":"string","nullable":true},"isByoVnet":{"type":"boolean"},"lastByoVnetVerificationErrorCode":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"natGatewayId":{"type":"string","nullable":true},"nsgId":{"type":"string","nullable":true},"privateSubnetName":{"type":"string","nullable":true},"publicIpId":{"type":"string","nullable":true},"publicSubnetName":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"vnetName":{"type":"string","nullable":true},"vnetResourceId":{"type":"string","nullable":true}},"required":["isByoVnet","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureVnet"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["network"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"managementPermissionsApplied":{"type":"boolean"},"roleArn":{"type":"string","nullable":true},"roleName":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managementPermissionsApplied","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsIamRole"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"impersonationGranted":{"type":"boolean"},"roleBound":{"type":"boolean"},"serviceAccountEmail":{"type":"string","nullable":true},"serviceAccountUniqueId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["impersonationGranted","roleBound","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceAccount"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"ficName":{"type":"string","nullable":true},"roleAssignmentIds":{"type":"array","items":{"type":"string"}},"roleDefinitionId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"tenantId":{"type":"string","nullable":true},"uamiClientId":{"type":"string","nullable":true},"uamiPrincipalId":{"type":"string","nullable":true},"uamiResourceId":{"type":"string","nullable":true}},"required":["roleAssignmentIds","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureManagedIdentity"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["remote-stack-management"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"pullRoleArn":{"type":"string","nullable":true},"pushRoleArn":{"type":"string","nullable":true},"region":{"type":"string"},"registryId":{"type":"string"},"registryUri":{"type":"string"},"repositories":{"type":"array","items":{"type":"object","properties":{"createdAt":{"type":"number"},"encryptionType":{"type":"string","nullable":true},"imageTagMutability":{"type":"string","nullable":true},"kmsKeyPresent":{"type":"boolean"},"registryId":{"type":"string"},"repositoryArn":{"type":"string"},"repositoryName":{"type":"string"},"repositoryUri":{"type":"string"},"scanOnPush":{"type":"boolean","nullable":true}},"required":["createdAt","kmsKeyPresent","registryId","repositoryArn","repositoryName","repositoryUri"]}},"repositoriesTruncated":{"type":"boolean"},"repositoryCount":{"type":"integer","minimum":0},"repositoryPrefix":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["region","registryId","registryUri","repositories","repositoriesTruncated","repositoryCount","repositoryPrefix","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsEcr"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"cleanupPolicyCount":{"type":"integer","minimum":0},"cleanupPolicyDryRun":{"type":"boolean","nullable":true},"createTime":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"format":{"type":"string","nullable":true},"iamBindingCount":{"type":"integer","minimum":0},"iamPolicyEtagPresent":{"type":"boolean"},"iamRoles":{"type":"array","items":{"type":"string"}},"kmsKeyNamePresent":{"type":"boolean"},"labelCount":{"type":"integer","minimum":0},"location":{"type":"string"},"mode":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"projectId":{"type":"string"},"pullServiceAccountEmail":{"type":"string","nullable":true},"pushServiceAccountEmail":{"type":"string","nullable":true},"repositoryId":{"type":"string"},"satisfiesPzs":{"type":"boolean","nullable":true},"sizeBytes":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updateTime":{"type":"string","nullable":true}},"required":["cleanupPolicyCount","iamBindingCount","iamPolicyEtagPresent","iamRoles","kmsKeyNamePresent","labelCount","location","projectId","repositoryId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpArtifactRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"adminUserEnabled":{"type":"boolean"},"anonymousPullEnabled":{"type":"boolean"},"creationDate":{"type":"string","nullable":true},"dataEndpointEnabled":{"type":"boolean","nullable":true},"dataEndpointHostNames":{"type":"array","items":{"type":"string"}},"encryptionKeyIdentifierPresent":{"type":"boolean"},"encryptionKeyVaultUriPresent":{"type":"boolean"},"encryptionStatus":{"type":"string","nullable":true},"ipRuleCount":{"type":"integer","minimum":0},"location":{"type":"string"},"loginServer":{"type":"string","nullable":true},"managedTagCount":{"type":"integer","minimum":0},"name":{"type":"string"},"networkRuleBypassOptions":{"type":"string"},"networkRuleDefaultAction":{"type":"string","nullable":true},"policiesPresent":{"type":"boolean"},"policyCount":{"type":"integer","minimum":0},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string"},"resourceGroup":{"type":"string"},"resourceId":{"type":"string","nullable":true},"skuName":{"type":"string"},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"type":{"type":"string","nullable":true},"zoneRedundancy":{"type":"string"}},"required":["adminUserEnabled","anonymousPullEnabled","dataEndpointHostNames","encryptionKeyIdentifierPresent","encryptionKeyVaultUriPresent","ipRuleCount","location","managedTagCount","name","networkRuleBypassOptions","policiesPresent","policyCount","privateEndpointConnectionCount","publicNetworkAccess","resourceGroup","skuName","status","zoneRedundancy"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerRegistry"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"reachable":{"type":"boolean"},"registryUrl":{"type":"string"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["reachable","registryUrl","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["artifact-registry"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"artifactsEncryptionDisabled":{"type":"boolean","nullable":true},"artifactsType":{"type":"string","nullable":true},"cloudWatchLogsStatus":{"type":"string","nullable":true},"computeType":{"type":"string","nullable":true},"created":{"type":"number","nullable":true},"description":{"type":"string","nullable":true},"encryptionKeyPresent":{"type":"boolean"},"environmentImage":{"type":"string","nullable":true},"environmentType":{"type":"string","nullable":true},"environmentVariableCount":{"type":"integer","minimum":0},"imagePullCredentialsType":{"type":"string","nullable":true},"lastModified":{"type":"number","nullable":true},"privilegedMode":{"type":"boolean","nullable":true},"projectArn":{"type":"string","nullable":true},"projectName":{"type":"string"},"queuedTimeoutInMinutes":{"type":"integer","nullable":true},"s3LogsStatus":{"type":"string","nullable":true},"serviceRolePresent":{"type":"boolean"},"sourceType":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"timeoutInMinutes":{"type":"integer","nullable":true}},"required":["encryptionKeyPresent","environmentVariableCount","projectName","serviceRolePresent","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["awsCodeBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"buildConfigId":{"type":"string"},"environmentVariableCount":{"type":"integer","minimum":0},"location":{"type":"string"},"projectId":{"type":"string"},"serviceAccount":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["buildConfigId","environmentVariableCount","location","projectId","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpCloudBuild"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"environmentVariableCount":{"type":"integer","minimum":0},"managedEnvironmentId":{"type":"string"},"managedIdentityId":{"type":"string","nullable":true},"resourceGroupName":{"type":"string"},"resourcePrefix":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["environmentVariableCount","managedEnvironmentId","resourceGroupName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureContainerApps"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"active":{"type":"integer","nullable":true},"completionTime":{"type":"string","nullable":true,"format":"date-time"},"conditionCount":{"type":"integer","minimum":0},"events":{"type":"array","items":{"type":"object","properties":{"count":{"type":"integer","nullable":true},"eventTime":{"type":"string","nullable":true,"format":"date-time"},"firstTimestamp":{"type":"string","nullable":true,"format":"date-time"},"involvedObject":{"oneOf":[{"type":"object","properties":{"apiVersion":{"type":"string","nullable":true},"fieldPath":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"resourceVersion":{"type":"string","nullable":true},"uid":{"type":"string","nullable":true}}},{"nullable":true}]},"lastTimestamp":{"type":"string","nullable":true,"format":"date-time"},"message":{"type":"string"},"raw":{"oneOf":[{"nullable":true},{"nullable":true}]},"reason":{"type":"string"},"source":{"oneOf":[{"type":"object","properties":{"component":{"type":"string","nullable":true},"host":{"type":"string","nullable":true}}},{"nullable":true}]},"type":{"type":"string","nullable":true}},"required":["message","reason"]}},"failed":{"type":"integer","nullable":true},"imageDigest":{"type":"string","nullable":true},"jobName":{"type":"string"},"namespace":{"type":"string"},"startTime":{"type":"string","nullable":true,"format":"date-time"},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"succeeded":{"type":"integer","nullable":true}},"required":["conditionCount","events","jobName","namespace","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["kubernetesJob"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["build"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"oneOf":[{"allOf":[{"type":"object","properties":{"enabled":{"type":"boolean"},"lastOperationName":{"type":"string","nullable":true},"projectId":{"type":"string"},"serviceName":{"type":"string"},"serviceResourceName":{"type":"string","nullable":true},"state":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"title":{"type":"string","nullable":true}},"required":["enabled","projectId","serviceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["gcpServiceUsage"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"namespace":{"type":"string"},"providerId":{"type":"string","nullable":true},"registered":{"type":"boolean"},"registrationPolicy":{"type":"string","nullable":true},"registrationState":{"type":"string","nullable":true},"resourceTypeCount":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["namespace","registered","resourceTypeCount","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azureResourceProvider"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["service_activation"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"location":{"type":"string","nullable":true},"managedTags":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["managedTags","name","status"]},"resourceType":{"type":"string","enum":["azure_resource_group"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"allowBlobPublicAccess":{"type":"boolean","nullable":true},"allowSharedKeyAccess":{"type":"boolean","nullable":true},"encryptionKeySource":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"networkBypass":{"type":"string","nullable":true},"networkDefaultAction":{"type":"string","nullable":true},"networkIpRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkResourceAccessRuleCount":{"type":"integer","nullable":true,"minimum":0},"networkVirtualNetworkRuleCount":{"type":"integer","nullable":true,"minimum":0},"primaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"requireInfrastructureEncryption":{"type":"boolean","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"secondaryEndpoints":{"type":"object","properties":{"blob":{"type":"string","nullable":true},"dfs":{"type":"string","nullable":true},"file":{"type":"string","nullable":true},"queue":{"type":"string","nullable":true},"table":{"type":"string","nullable":true},"web":{"type":"string","nullable":true}}},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"supportsHttpsTrafficOnly":{"type":"boolean","nullable":true}},"required":["name","primaryEndpoints","secondaryEndpoints","status"]},"resourceType":{"type":"string","enum":["azure_storage_account"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"customDomainVerificationId":{"type":"string","nullable":true},"defaultDomain":{"type":"string","nullable":true},"eventStreamEndpoint":{"type":"string","nullable":true},"infrastructureResourceGroup":{"type":"string","nullable":true},"kind":{"type":"string","nullable":true},"location":{"type":"string","nullable":true},"name":{"type":"string"},"provisioningState":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"staticIp":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"workloadProfileCount":{"type":"integer","minimum":0},"workloadProfiles":{"type":"array","items":{"type":"object","properties":{"maximumCount":{"type":"integer","nullable":true},"minimumCount":{"type":"integer","nullable":true},"name":{"type":"string"},"workloadProfileType":{"type":"string"}},"required":["name","workloadProfileType"]}},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","status","workloadProfileCount","workloadProfiles"]},"resourceType":{"type":"string","enum":["azure_container_apps_environment"]}},"required":["data","resourceType"]},{"type":"object","properties":{"data":{"type":"object","properties":{"createdAt":{"type":"string","nullable":true},"disableLocalAuth":{"type":"boolean","nullable":true},"location":{"type":"string","nullable":true},"metricId":{"type":"string","nullable":true},"minimumTlsVersion":{"type":"string","nullable":true},"name":{"type":"string"},"namespaceStatus":{"type":"string","nullable":true},"premiumMessagingPartitions":{"type":"integer","nullable":true},"privateEndpointConnectionCount":{"type":"integer","minimum":0},"provisioningState":{"type":"string","nullable":true},"publicNetworkAccess":{"type":"string","nullable":true},"resourceGroup":{"type":"string","nullable":true},"resourceId":{"type":"string","nullable":true},"serviceBusEndpoint":{"type":"string","nullable":true},"skuCapacity":{"type":"integer","nullable":true},"skuName":{"type":"string","nullable":true},"skuTier":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]},"updatedAt":{"type":"string","nullable":true},"zoneRedundant":{"type":"boolean","nullable":true}},"required":["name","privateEndpointConnectionCount","status"]},"resourceType":{"type":"string","enum":["azure_service_bus_namespace"]}},"required":["data","resourceType"]}]},"deploymentId":{"type":"string","nullable":true},"observedAt":{"type":"string","format":"date-time"},"raw":{"type":"array","items":{"type":"object","properties":{"body":{"type":"string"},"collectedAt":{"type":"string","format":"date-time"},"format":{"type":"string","enum":["json","yaml","text"]},"source":{"type":"string"},"truncated":{"type":"boolean"}},"required":["body","collectedAt","format","source","truncated"]}},"resourceId":{"type":"string"},"resourceType":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."}},"required":["backend","controllerPlatform","data","observedAt","raw","resourceId","resourceType"]},"raw":{"type":"array","items":{"nullable":true}}},"required":["status","deploymentId","resourceId","resourceType","backend","controllerPlatform","observedAt","staleAt","platformStale","heartbeat","raw"]},{"type":"object","properties":{"status":{"type":"string","enum":["missing"]},"deploymentId":{"type":"string"},"resourceId":{"type":"string"},"resourceType":{"type":"string"}},"required":["status","deploymentId","resourceId","resourceType"]}]}},"required":["deployment","heartbeat"]}}}},"404":{"description":"Deployment or resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/resolve":{"get":{"operationId":"resolve","tags":["resolve"],"summary":"Resolve manager for a project and platform","description":"Returns the manager URL for a given project and platform. The project can be provided as a query parameter, or derived from the token's scope (project-scoped, deployment-group-scoped, or deployment-scoped tokens carry an implicit project). This is the single entry point for all CLI tools to discover which manager to talk to.","x-speakeasy-group":"resolve","x-speakeasy-name-override":"resolve","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","test"],"description":"Target platform to resolve the manager for"},"required":true,"description":"Target platform to resolve the manager for","name":"platform","in":"query"},{"schema":{"type":"string","maxLength":100,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope)."},"required":false,"description":"Project ID or name. Required for user and workspace-scoped tokens. Optional for project/deployment-group/deployment-scoped tokens (derived from token scope).","name":"project","in":"query"}],"responses":{"200":{"description":"Manager resolved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveResponse"}}}},"400":{"description":"Missing required project parameter for this token type.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Project not found or no manager available for platform.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"Manager not ready yet (no URL reported). Retry after a delay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/cloud-regions":{"get":{"operationId":"getCloudRegions","description":"Get cloud regions supported by this Alien environment.","x-speakeasy-group":"cloudRegions","x-speakeasy-name-override":"get","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Supported cloud regions retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudRegionsResponse"}}}}}}},"/v1/billing/audit-log":{"get":{"operationId":"listBillingAuditLog","description":"List billing activity entries for the current workspace.","x-speakeasy-group":"billing","x-speakeasy-name-override":"listAuditLog","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"Cursor: id from the previous page."},"required":false,"description":"Cursor: id from the previous page.","name":"before","in":"query"}],"responses":{"200":{"description":"Audit-log rows newest-first.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/BillingAuditLogRow"}},"nextCursor":{"type":"string","nullable":true}},"required":["items","nextCursor"]}}}}}}},"/v1/billing/entitlements":{"get":{"operationId":"getWorkspaceBillingEntitlements","description":"Get the workspace billing entitlements used for product feature gates. Autumn is the source of truth; the response is served through the workspace billing read model with stale-cache fallback.","x-speakeasy-group":"billing","x-speakeasy-name-override":"getEntitlements","parameters":[{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","name":"workspace","in":"query"}],"responses":{"200":{"description":"Workspace billing entitlements.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceBillingEntitlements"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}}}} \ No newline at end of file diff --git a/client-sdks/platform/typescript/.npmignore b/client-sdks/platform/typescript/.npmignore index cf98a6bf0..670ac0a62 100644 --- a/client-sdks/platform/typescript/.npmignore +++ b/client-sdks/platform/typescript/.npmignore @@ -5,10 +5,14 @@ !/**/*.ts !/**/*.js !/**/*.mjs -!/**/*.json +!/package.json +!/jsr.json +!/dist/**/*.json +!/esm/**/*.json !/**/*.map /eslint.config.mjs +/.oxlintrc.json /cjs /.tshy /.tshy-* diff --git a/client-sdks/platform/typescript/.speakeasy/gen.lock b/client-sdks/platform/typescript/.speakeasy/gen.lock index a0a88d190..f2bd89b80 100644 --- a/client-sdks/platform/typescript/.speakeasy/gen.lock +++ b/client-sdks/platform/typescript/.speakeasy/gen.lock @@ -1,38 +1,38 @@ lockVersion: 2.0.0 id: bc51eaa5-3f88-4290-b64f-cae16746dd5d management: - docChecksum: 333fb52deae855d7e648ca0518e6164c + docChecksum: 7b86a5bd07a7c6dc125f46a5bab1e477 docVersion: 1.0.0 - speakeasyVersion: 1.680.11 - generationVersion: 2.788.15 - releaseVersion: 1.0.185 - configChecksum: 9032eaec5547102eebf0dff6b69ea2d0 + speakeasyVersion: 1.761.11 + generationVersion: 2.881.17 + releaseVersion: 1.1.0 + configChecksum: 0c18195ed641aed9fdd399417064d1d9 persistentEdits: - generation_id: efe1d3b6-1bf5-4b38-ab82-f0b13af4b2e9 - pristine_commit_hash: b341527b8fed1807a78bfb1d813408b652457d60 - pristine_tree_hash: f06ec212719fec007214c5ff7c504cda0005a114 + generation_id: fb7e6402-03a6-4a78-9ed9-7c3808d861c1 + pristine_commit_hash: 25c886648cd5f64aca996d19b4fa0d605fd49324 + pristine_tree_hash: f3bdfae6c6168904733b4d85243e9f3ebfa0a36e features: typescript: additionalDependencies: 0.1.0 - additionalProperties: 0.1.2 - constsAndDefaults: 0.1.12 - core: 3.26.17 + additionalProperties: 0.1.3 + constsAndDefaults: 0.1.14 + core: 3.26.50 defaultEnabledRetries: 0.1.0 devContainers: 2.90.1 enumUnions: 0.1.0 envVarSecurityUsage: 0.1.2 - globalSecurity: 2.82.14 + globalSecurity: 2.82.16 globalSecurityCallbacks: 0.1.0 - globalSecurityFlattening: 0.1.0 - globalServerURLs: 2.83.0 + globalSecurityFlattening: 0.1.1 + globalServerURLs: 2.83.1 groups: 2.81.3 methodArguments: 0.1.2 - nameOverrides: 2.81.2 + nameOverrides: 2.81.4 nullables: 0.1.1 - responseFormat: 0.2.3 + responseFormat: 0.3.0 retries: 2.83.0 sdkHooks: 0.4.0 - unions: 2.86.3 + unions: 2.86.4 trackedFiles: .devcontainer/README.md: id: b170c0f184ac @@ -52,12 +52,12 @@ trackedFiles: pristine_git_object: 113eead5093c17d43a46159132885318f281a68a .npmignore: id: aa70c1f807c3 - last_write_checksum: sha1:3d5eb92f81539175db1ff0280e0aefbdd701f200 - pristine_git_object: cf98a6bf092538eb10ff0edc915102682ce9a6e6 + last_write_checksum: sha1:6572da81f2e7a978ec29c22c2210bf461c5897b2 + pristine_git_object: 670ac0a62d7e568c9d44a14f5deafb8442a255d8 FUNCTIONS.md: id: 21b9df02aaeb - last_write_checksum: sha1:ab2b06c33898806991c52b65abe91e2646e37cbd - pristine_git_object: 2f62253f5bf4f2ea763bd876093cbfbddd1d1e82 + last_write_checksum: sha1:6c6d2df5b71c61adcde53c82144ed9ed384c44b7 + pristine_git_object: c3f3cce6c41e029e3b69b489f10068b6dca946d3 RUNTIMES.md: id: 620c490847b6 last_write_checksum: sha1:e45b854f02c357cbcfdb8c3663000e8339e16505 @@ -1118,6 +1118,10 @@ trackedFiles: id: 863535fb6d36 last_write_checksum: sha1:ca9fcff74381d56c672a997896659499dde13097 pristine_git_object: ba2bae078b90e5aafa00457297d2f500e3fe2bc3 + docs/models/createfirstpartydeploymentsessionresponse.md: + id: 84ccd96df336 + last_write_checksum: sha1:a898103db9a9f684acf3df68c78cab986c59ac26 + pristine_git_object: e8aab6a0756469667b8cfa667fc73fc6cd2d67fe docs/models/createmanagerresponse.md: id: 0a11154b47da last_write_checksum: sha1:2e7f061ea5ce06b7f601c574b35e0128bb713072 @@ -3074,6 +3078,10 @@ trackedFiles: id: 1f5ce29dbb2f last_write_checksum: sha1:2abf5b064af370b1cc2160f120e59b651ea77dd4 pristine_git_object: d3b46276d867b517682d59c03663792117d42a4c + docs/models/datadeploymentrejoined.md: + id: c0cb2db4fae5 + last_write_checksum: sha1:cec87ce29e06ca471dafa60408520eefe784a46c + pristine_git_object: 172300dff69e2fdde01b8e521409d3e7ce282011 docs/models/datadeploymentreleased.md: id: 7c94572003bc last_write_checksum: sha1:8106af7ace27180117079fb1428b43901f2dc9a3 @@ -3392,8 +3400,16 @@ trackedFiles: pristine_git_object: 3c2c58061fcc626b206dd478b4908772363536f5 docs/models/deployment.md: id: e43ddcf597c5 - last_write_checksum: sha1:1110b9d22b022c4418db88a6fc23c61b567a2dd6 - pristine_git_object: 7f91120baab2aaf87326b320fb8c665f3ba960ff + last_write_checksum: sha1:9ea2512ff390c162810b874fd3bfcf54486658d5 + pristine_git_object: 01b1074e642dc01108b97cd0bdde50e11b183546 + docs/models/deploymentagentarch.md: + id: b0dd6cf5aa38 + last_write_checksum: sha1:8e484b655198d6b2eff67cd63a50773465d1654c + pristine_git_object: 2688a27510945c1afafcec8698c841d5212658a7 + docs/models/deploymentagentos.md: + id: eab0f0550482 + last_write_checksum: sha1:809f4b789e681e6436fc18ccdee1432d1c38b6f5 + pristine_git_object: cd77f9342887d0914866c4ed4d2a20d84772f0f6 docs/models/deploymentaws.md: id: 394331ec4c8d last_write_checksum: sha1:cf42d4e9478687e2a9e8bb44f752db9023dfd8b2 @@ -3548,8 +3564,16 @@ trackedFiles: pristine_git_object: d493877a3400acbdbf8b9bbb6a36754fb60bb6f6 docs/models/deploymentdetailresponse.md: id: 712f7bbc8cc0 - last_write_checksum: sha1:4cc7a28631f88f1f5e5e002b449a68b75a9bb635 - pristine_git_object: 6fb62c10078ec0ec7f4589b1d05e7124ed3f5c3a + last_write_checksum: sha1:b98c46580011cc5d2a9eba27df3edad28548b96d + pristine_git_object: 5222fb64ab962a44080f0193d2931a6c94d91d12 + docs/models/deploymentdetailresponseagentarch.md: + id: a0f8c6987ab9 + last_write_checksum: sha1:3eae8c4e8c46add2a1042190d749e7f706f5bf4c + pristine_git_object: ef2fe25c470dfed759e95bdbafd84c9171a1b8e8 + docs/models/deploymentdetailresponseagentos.md: + id: 8a731599f08e + last_write_checksum: sha1:3f755a01632c258575c23f0db6655466a3a68b04 + pristine_git_object: 510d7cbed8a053a369ff1ab5dc16ccf38f56b6b4 docs/models/deploymentdetailresponseaws.md: id: c1ab737c8113 last_write_checksum: sha1:43a494e9fd5f42bdb9ae4e4bbaf6d59b77e93cc7 @@ -4334,6 +4358,10 @@ trackedFiles: id: 5d9f4618cc5b last_write_checksum: sha1:ae2bae9f35990b11ae331a596bd304222ed73aad pristine_git_object: 11c2f9a7a5a0b2cb6fd02a7885a6c1d2d57ea16b + docs/models/deploymentdetailresponseregime.md: + id: ba9e1bc84e86 + last_write_checksum: sha1:4b6e03bc259a179bb07195577565b8ec80d1fc22 + pristine_git_object: 950a33a46572fa2789cb9089382af56007d83e41 docs/models/deploymentdetailresponseroutegateway1.md: id: 189ab9dc7ec0 last_write_checksum: sha1:16a257e1e2b2bae9e771ec9adfe4aca739a6fb13 @@ -4872,8 +4900,16 @@ trackedFiles: pristine_git_object: 71e03ffad01a0476b62dc946106a938b1e2efb00 docs/models/deploymentlistitemresponse.md: id: d8baf621fe6e - last_write_checksum: sha1:86cd2dd7cd1483e8be23b900e2586d7a80f25659 - pristine_git_object: 155ab117d52fe9418de5faccbf284312e8b60f81 + last_write_checksum: sha1:2f3d2e43c4cd2385b89044dc300b98617abcda45 + pristine_git_object: eab0fc0344a7dbbf299631769fbc6c9250f14030 + docs/models/deploymentlistitemresponseagentarch.md: + id: d6848fb8bfd6 + last_write_checksum: sha1:2a38ad0a7080273fd9432cc402a3fa847cca4a28 + pristine_git_object: 88fd6b4296d4d7a535f2e7d0922b2cf4ac7cf587 + docs/models/deploymentlistitemresponseagentos.md: + id: 3fde4d1e8857 + last_write_checksum: sha1:ba137f30a235e6ccde3b9f7c84013aeac3620825 + pristine_git_object: 6a8e4fb0b2b345f67ca6a0f3738f8e4a4ef06a79 docs/models/deploymentlistitemresponseenvironmentinfoaws.md: id: 5916867664ec last_write_checksum: sha1:67a5d4961e52203950354bbe7e76749e0d908663 @@ -4930,6 +4966,10 @@ trackedFiles: id: 327884e3ffe3 last_write_checksum: sha1:05ca7ee26bf29a643fc94634e6d96d0b73dde06a pristine_git_object: 3a4500b7b8f3bd314e4bec534a18000d4724d0d9 + docs/models/deploymentlistitemresponseregime.md: + id: deae8b9254b3 + last_write_checksum: sha1:7a5dc3b8e5148d82a01101485cb90a8cfb88f57c + pristine_git_object: 6221355a17b6f60db284b28c9fbbd74f9a3f4bc2 docs/models/deploymentlistitemresponsesetupmethod.md: id: 71f7f648bf97 last_write_checksum: sha1:04d7070f405bfb82e77e88b8d2eb233739754eec @@ -5406,6 +5446,10 @@ trackedFiles: id: af608497bc79 last_write_checksum: sha1:e44c488dec60f762f4ff054ccb21303ad2547731 pristine_git_object: 1ca0d55ae50ac5162f9f60616bb544c935ed6131 + docs/models/deploymentregime.md: + id: 02b5ce02caa1 + last_write_checksum: sha1:329912d814c869758a5ac522d868ea5f0ac4766b + pristine_git_object: 1bfd05e8f4dedb4e1056004f83df61bb30429895 docs/models/deploymentreleaseinfo.md: id: 31fe37e6a49b last_write_checksum: sha1:1ac7ee1f5972bba28846ad73fda726b3c9817e18 @@ -6040,8 +6084,8 @@ trackedFiles: pristine_git_object: 1013223491ee42ff9eaf960e15aa0a5c211b519c docs/models/eventdataunion.md: id: 5af073344910 - last_write_checksum: sha1:cba36fabfff539fc14600022191bac1609b992a9 - pristine_git_object: 8b1db163fb6236cdf76ef1416629ceae4d7440eb + last_write_checksum: sha1:06892f5d8e27d294b6d53851bfa2fcb2058000e7 + pristine_git_object: ae5888216006198191ccd1e11e6659b3bd96ed3f docs/models/eventdependency.md: id: 8b54666b2bdb last_write_checksum: sha1:aff88b967ecba56fdd0809af9f00c50c91db8462 @@ -10162,6 +10206,10 @@ trackedFiles: id: ffa9a43bdb49 last_write_checksum: sha1:d3039374effa74626d9d7fffb4cc35fc65e4cce3 pristine_git_object: db06a31dd41e571bc718885d2c9b2fb3ae7f8a9f + docs/models/operations/createfirstpartydeploymentsessionrequest.md: + id: fa614a4db717 + last_write_checksum: sha1:9521cf368544334cf070ea873ad7e3ff8dcdfd4b + pristine_git_object: f50c69209d69f3ccb4a7943a727bed1428c049f5 docs/models/operations/createmanagerrequest.md: id: 0d6ba95c7ef9 last_write_checksum: sha1:6351871e5ffaf492b8279ba025a641e546d83763 @@ -11056,8 +11104,8 @@ trackedFiles: pristine_git_object: aeb8f482cc74a6afc002dd7dde70a5124a2a2053 docs/models/operations/deleteprojectrequest.md: id: 48b7d1a72221 - last_write_checksum: sha1:62d1bc92962c48071ccc5a386db88a1f34223945 - pristine_git_object: 03dcda06b20f95a6c694efe2dee62be41dd42a76 + last_write_checksum: sha1:a18a45f46bf8b8f7529e75b23a49c43aecfd732c + pristine_git_object: d080f5fa31a5a18297e60ae123a800dda520378c docs/models/operations/deleteworkspacerequest.md: id: c3a6fd8ac219 last_write_checksum: sha1:52cf255a6ab8ccc998e1659748a726aefc951d25 @@ -11188,8 +11236,8 @@ trackedFiles: pristine_git_object: 35e347544a740cd54f7f131d8f63c005912daa7e docs/models/operations/getdeploymentstatsrequest.md: id: 034555bbd656 - last_write_checksum: sha1:46a395f53afb80edc6919c442e5b307d433ac49d - pristine_git_object: 05e11221ed4935e995b87c0f81ada8952ad6a851 + last_write_checksum: sha1:4edbddd4deadff2c7d972b8ba326386f5354c8f1 + pristine_git_object: c6629c821345876cfd17bbd15f7a1aa50a298639 docs/models/operations/getdeploymentstatsstatus.md: id: 1eaf0af49a7a last_write_checksum: sha1:139a04dcf634055221adbcfe80e087267b214835 @@ -11248,28 +11296,28 @@ trackedFiles: pristine_git_object: b43d36a10e0634ac16f13a21e17f31bcb6d81933 docs/models/operations/getprojectactivereleaserequest.md: id: 0a329eadfcdb - last_write_checksum: sha1:6d64cdb24c20abbbdb11f5be6e2540cd2aa23eb7 - pristine_git_object: 7394426b348f7cbc481d569af548a06a2bb17eb3 + last_write_checksum: sha1:f59b6db17dc8cd62d0e2adb567bd7bae0b35bea0 + pristine_git_object: a7b9e425c564b1e6cf04eb57f98f776ebf9ed79a docs/models/operations/getprojectdeploymentportaldomainrequest.md: id: b9babbda355e - last_write_checksum: sha1:d08d61124abb9aac34ce093fa962695b9d9e1066 - pristine_git_object: fb6e1258cee8e65edecbfbc9692579b50d89a239 + last_write_checksum: sha1:5cfd245dae7f43cd2381c6740279107f4dc3639d + pristine_git_object: fcfee0681ae66d811c1d14633b66ee9edeac131c docs/models/operations/getprojectgcpoauthproviderrequest.md: id: "683776069141" - last_write_checksum: sha1:478e52102464bafb4d3d4471cd1814dccd9f36f9 - pristine_git_object: 0b2f1505a775822e562ab65d98ff748d1e6aae9b + last_write_checksum: sha1:ea29c1b1950cbdb964ab6b66ab98b27acb2d8027 + pristine_git_object: ee453c60ef50b49d43c9f55868d34cd7f14110de docs/models/operations/getprojectrequest.md: id: c8b582ab72a0 - last_write_checksum: sha1:63778b85e495ae5438f53c0bb7015085339c2aa5 - pristine_git_object: b725d77f1b34e50770bf8c935a0663618208042f + last_write_checksum: sha1:d026ef37687a9a6dcd7637d75ffc8accd66805f3 + pristine_git_object: b77c51787f7332834e81a7dc48bb4ad82e4eb67c docs/models/operations/getprojecttemplateurlsaws.md: id: de9aa6dbb151 last_write_checksum: sha1:f05d52a3601389ff2909b3b47daf7072fc7558f8 pristine_git_object: 907c804e7f83274235f51f937aebb43a9b71a714 docs/models/operations/getprojecttemplateurlsrequest.md: id: 16cd605e973a - last_write_checksum: sha1:632f1d2df9cc92039c1b0cdbc6e9c8be3ab198f1 - pristine_git_object: 3c7b4569637bbc3cd71bddff00453224c31ad235 + last_write_checksum: sha1:e9ded82112162875718a497558e914ea48a86b19 + pristine_git_object: bd8027576adeb605e1dc3202073ffc8a75f7922d docs/models/operations/getprojecttemplateurlsresponse.md: id: 35c5b937ae36 last_write_checksum: sha1:b20878857f0429280c21998e25097a0951611ecf @@ -11292,8 +11340,8 @@ trackedFiles: pristine_git_object: 16efd5c03b836344bf57f5798d3f90597a993f2a docs/models/operations/getresourcedeploymentdetailrequest.md: id: d2e5d03fbf7d - last_write_checksum: sha1:b38517152cda05b5a090a89d15cdc112b5f516e7 - pristine_git_object: 71e01fff5e4dbdeedfa05d562f031a285e5e9a6f + last_write_checksum: sha1:51d2e76ada5588f1dd79bbee21693adb69024a5e + pristine_git_object: 9ec11b2454a10cbec016d8ea7060551bcf709ff2 docs/models/operations/getresourcedeploymentdetailresponse.md: id: e5b08a917f2b last_write_checksum: sha1:d2900639190aed735706cd97770ecc3289c3becc @@ -11884,8 +11932,8 @@ trackedFiles: pristine_git_object: b9b0d6b23c2b2d173e89282c7915e249bf030e0f docs/models/operations/listapikeysrequest.md: id: d184dc4cdcab - last_write_checksum: sha1:d5df74d53da3bd3c0a88770138450254c058c0af - pristine_git_object: 9cb5b7260776bdc0e09a42e8be6bb42e33b3e4a5 + last_write_checksum: sha1:eb0d27cc03f2f69be19abeeedc960614e93a123e + pristine_git_object: 24f696610cedb322ee82438f7ef6c807a7489b1a docs/models/operations/listapikeysresponse.md: id: feed1d8bc9c0 last_write_checksum: sha1:c448c41b1d380583f8c6d9eea8dd2481969c0589 @@ -11900,20 +11948,20 @@ trackedFiles: pristine_git_object: 6ba801938c7d24e9dcc50e73a6514a0e6b6eaefa docs/models/operations/listcommanddeploymentsrequest.md: id: 11aedc766e42 - last_write_checksum: sha1:c4d47f7bc0dfd636b6095e6c2701dbce8d10a938 - pristine_git_object: fdcf8290df50e2081d2d325ee425edad0d517753 + last_write_checksum: sha1:37560b7c7efe40ddf1c8a4b43dabc4e5df8c607a + pristine_git_object: c5cea7ee2aa1c47daf87e155c4725fc86accbad5 docs/models/operations/listcommandnamesrequest.md: id: 4d4817aff7b4 - last_write_checksum: sha1:052151e1a0838aa3a8d7da668f10c75de1aa02b7 - pristine_git_object: 8e73e1f870a14400df1b8d94da2ad0ecba0b987b + last_write_checksum: sha1:36f71c64e0786e081bdd41299fa85086bd5fb792 + pristine_git_object: 0632f43a583243145d63bb62788ae84a17e0d20a docs/models/operations/listcommandsinclude.md: id: c2685f20e71f last_write_checksum: sha1:ffb51ade7f9fa18ee1c51f2a56db59b126b33d94 pristine_git_object: 4c1ddcb1d59ac62b75c30cc341952d8630ee8aa2 docs/models/operations/listcommandsrequest.md: id: 3cc236e8a7a3 - last_write_checksum: sha1:8dbac806a68d28907de291aa9f8d074ea7df4f43 - pristine_git_object: 59b6fbb5ae3ffdf022ea407cc8b255802deb4651 + last_write_checksum: sha1:08cf1112189f3056eebb0f75ea019ed8698810ad + pristine_git_object: b4120a27191637bb167e853dec87af487e3b671e docs/models/operations/listcommandsresponse.md: id: 0f1c06183015 last_write_checksum: sha1:4d10175088ee8eec6e9a4afa92d949901e4ac81f @@ -11928,16 +11976,16 @@ trackedFiles: pristine_git_object: fc8c6cd6ed4adf8fa259cdec5603b5759a42540e docs/models/operations/listdebugsessionsrequest.md: id: 7fe38f95bc7d - last_write_checksum: sha1:b59fa93c9e4a09fad9b751c05dbc1ca04ed659a2 - pristine_git_object: f7eb891727d3899b2f383dc510be735e8b024b9c + last_write_checksum: sha1:a718d0f80c090b63d2a59535dcfc861593c8b94f + pristine_git_object: 62cefc7b92c86bad40f923df2bdbc99cd9f1bd61 docs/models/operations/listdeploymentfilterdeploymentgroupsitem.md: id: 2bfe92db3ace last_write_checksum: sha1:95f01deead0b3445683d543d679b1afb845e93c7 pristine_git_object: fda47ac70d0ee0f922383ce625adcd7c56a53aa2 docs/models/operations/listdeploymentfilterdeploymentgroupsrequest.md: id: 961dd8047c04 - last_write_checksum: sha1:9da36f9f40489db371f1e9c5fdcce495ea9143e2 - pristine_git_object: 2ff755670ac3325aba614c16dd43753475da29f5 + last_write_checksum: sha1:9ba7314874e548dcfac73240d2b7d0e8aa52d5a5 + pristine_git_object: f1fc90a56bc2683ec7674abdc0b86d083d861b6b docs/models/operations/listdeploymentfilterdeploymentgroupsresponse.md: id: f84ac956fa62 last_write_checksum: sha1:3bc3e18bc196bc0e8f37859acbf459a0ec2d8257 @@ -11948,8 +11996,8 @@ trackedFiles: pristine_git_object: 2af8ae302b54774ed102f2470c9ace41a09fc894 docs/models/operations/listdeploymentfilterenvironmentsrequest.md: id: 653ec6b5d3de - last_write_checksum: sha1:febca4b2d8260a76d2f5ac8c09ea492b1a11b3df - pristine_git_object: 4f0e478800d82a850a4dfac00448b18f9310ec25 + last_write_checksum: sha1:5efcb670ba15768b3b8442f319ac00baa6ec23f3 + pristine_git_object: 564d88cc0398d9bc625cb3b497ed0ef9d0bb47cc docs/models/operations/listdeploymentfilterenvironmentsresponse.md: id: bf4be3523974 last_write_checksum: sha1:d1a17b7a134d326dd21e218bfaa46135e8dd189f @@ -11968,8 +12016,8 @@ trackedFiles: pristine_git_object: a510020423596f03ec33405300e9072220887bfa docs/models/operations/listdeploymentgroupsrequest.md: id: 046f58f925f8 - last_write_checksum: sha1:a52824dbe73fd77b78803b5a0a6ffa1648a40715 - pristine_git_object: 905ecb6a2489345fa2800c3502085699cbb651dd + last_write_checksum: sha1:e33af024a757a10e972334e7d085d19f5fa17de6 + pristine_git_object: efbf7c4ce080f98d1ea8bda72fd417babc32e4c2 docs/models/operations/listdeploymentgroupsresponse.md: id: 5e579afb744e last_write_checksum: sha1:db9accccf1cee07e6b919ddade9dd9cb36a54a4a @@ -11984,8 +12032,8 @@ trackedFiles: pristine_git_object: 1a399d3c0e68ac2ad6ad5528e136d4273994a89f docs/models/operations/listdeploymentsrequest.md: id: 854523666c28 - last_write_checksum: sha1:04a000713b868c50deefb80d44136242be879d45 - pristine_git_object: 44fe69b8a24ebeac6bc6c7e62ecfae357be40780 + last_write_checksum: sha1:14b469e9ebadf2d572a8ebeef15b6acf621bcacc + pristine_git_object: c17c79a8447b20b6074550bd11d08a264ac66950 docs/models/operations/listdeploymentsresponse.md: id: b3b1e4f8a3b8 last_write_checksum: sha1:11cb163e73cfa3836f9efd2041347c64d718d4c1 @@ -12004,8 +12052,8 @@ trackedFiles: pristine_git_object: 86d53e2967c889ab89b3722f63fc0bc1a906207c docs/models/operations/listeventsrequest.md: id: 4c63e4d672e2 - last_write_checksum: sha1:c5332db6d4dc98b177e2a1466aa01ae036817007 - pristine_git_object: 73dfec390e1140b6b3b5c5714bd98402fa2ce4ad + last_write_checksum: sha1:2675d3ec3d7f7e2effcaefe079319f9bacb3e52d + pristine_git_object: c35609c5dbc8edab66161f2a5c13676480710770 docs/models/operations/listeventsresponse.md: id: 4ce22aaeca78 last_write_checksum: sha1:6099b79c8d28f6a4aa0a4db3db921d8afedbd769 @@ -12048,8 +12096,8 @@ trackedFiles: pristine_git_object: 8eb625b21ce6e3f8514330d0bb750327a7c7b92e docs/models/operations/listpackagesrequest.md: id: 2a8e5e099f9a - last_write_checksum: sha1:99f536a8ba8852b2c275575c118f409f86e8f4d8 - pristine_git_object: 226c29e1c86bc3f5d617d8f7a0f270f8117bf48e + last_write_checksum: sha1:5e1b18d4fa80be7e0286a783cb7399043fc332dd + pristine_git_object: 6d5e9425dbcc43f25f2a53aa39c2f7c9a3d4a13c docs/models/operations/listpackagesresponse.md: id: f0805ea4f3ac last_write_checksum: sha1:22c60c4ffd1719695c665655916c7b8d552963ce @@ -12076,16 +12124,16 @@ trackedFiles: pristine_git_object: ffc1fad25c02f9a42969166116d184172a0663e7 docs/models/operations/listreleaseauthorsrequest.md: id: da2003a8e133 - last_write_checksum: sha1:50517bf46a43bc3bfca785f760f684cb20296b2f - pristine_git_object: 0e93ce2c5258dd8a7c23992b3b0fdc4711fcb45b + last_write_checksum: sha1:b1a99fe29fb96201561940176b71b3361699232f + pristine_git_object: b5648d1fb2288c42a3e9b26d021bb2fae3012862 docs/models/operations/listreleaseauthorsresponse.md: id: 44c53579b082 last_write_checksum: sha1:910faf2c1ca0e09e4d6c69625c5b801128f409af pristine_git_object: e96ac52f4f242f45dc3c5333a4fb16b403984a71 docs/models/operations/listreleasebranchesrequest.md: id: 95e3ba8f993c - last_write_checksum: sha1:c98b71eb1f387256131ff7d66cda3695a00b8218 - pristine_git_object: d667f3dc3a0068e304f3ede31aea84a598c7a195 + last_write_checksum: sha1:5fe0627b4fb66a5dd954a6934de9d799b4a09a43 + pristine_git_object: 22444b5066e83a23b0c94da3337452970773fb49 docs/models/operations/listreleasebranchesresponse.md: id: f2ac65d89a63 last_write_checksum: sha1:cefe9d0dd13ac0f2e75e7207a377fa44199fb1fa @@ -12096,8 +12144,8 @@ trackedFiles: pristine_git_object: 1f958a0e30d63f146477ccccf8ee73727706ae89 docs/models/operations/listreleasesrequest.md: id: 5055faa42f8c - last_write_checksum: sha1:a97f5e29249f2d6808a2f9865c466a58bf999f73 - pristine_git_object: 6e361a453e2aceb49431157936d13fe88cd552db + last_write_checksum: sha1:08bd512eeaf53866715bdb6bf9b1947d15bb0328 + pristine_git_object: 13330dab6f0839c9b4ddf6ab7bd9cd73868388ba docs/models/operations/listreleasesresponse.md: id: fe20d3e71b3f last_write_checksum: sha1:b0bb82743f5997998a1daced5f44e387cfc96cd4 @@ -12112,8 +12160,8 @@ trackedFiles: pristine_git_object: e77f502e8a66d5bcddc7f4cdb313a0776db8eb9a docs/models/operations/listresourcedeploymentsrequest.md: id: b1f4b0e060d8 - last_write_checksum: sha1:f978775320d812d2460b1e4889d9276ac8349b72 - pristine_git_object: 5ae1639f46ec4e92f0eeb1f684c7060369b33b40 + last_write_checksum: sha1:5a3a8079991137833fa471836902cc955f3a1950 + pristine_git_object: 4d10283001690bceeb6e96e2c9ad7c2930cd0998 docs/models/operations/listresourcedeploymentsresponse.md: id: 0c93efaed40a last_write_checksum: sha1:9fea239d4eda85e6b668607c3e5fb599058edaa0 @@ -12124,8 +12172,8 @@ trackedFiles: pristine_git_object: c51c26234d7e30cffb865529a77a45b060f5b07a docs/models/operations/listresourceoverviewrequest.md: id: 97eb9730d0ef - last_write_checksum: sha1:376194c888f015eb076ff68ca3465263e7f8a5bd - pristine_git_object: 27dca352e694d0447251b21831b8755d24951d2c + last_write_checksum: sha1:cc6e15714793751654be5fb7c301f650486bc018 + pristine_git_object: a27caa2e1587b01dd128625be50f7f71f1fbd4a0 docs/models/operations/listresourceoverviewresponse.md: id: d18e327878ea last_write_checksum: sha1:af053f42a92052233e99a0cc4474c3e73809e61c @@ -13554,6 +13602,10 @@ trackedFiles: id: 8cc3a38a9cff last_write_checksum: sha1:ca2bcc1b7ce83529568ff331a228aab6dd633f12 pristine_git_object: 204f221d4300c1c72896c81afbf78efb99db8a59 + docs/models/operations/rejoindeploymentrequest.md: + id: e83008f64766 + last_write_checksum: sha1:246eb307066aae30a50ec86ae5ddb7ee4579b85b + pristine_git_object: 897758d39a4a8ea7f982bc14b00fb454f08c7680 docs/models/operations/removeworkspacememberrequest.md: id: 42a61b1913b7 last_write_checksum: sha1:a4a0ed4326c32332aa030b6fc3ef031a711d655f @@ -13638,6 +13690,14 @@ trackedFiles: id: bcf983fbb314 last_write_checksum: sha1:a1b8e4ef93724071c1a4f8f85b743bc4fcf08a07 pristine_git_object: d82694736e314191315aa77f65dcbe5b42c954d7 + docs/models/operations/setdeploymenttargetagentversionrequest.md: + id: a3829b5e0aa1 + last_write_checksum: sha1:24ffcd898fb88d3161952086ec735b21cd1077e8 + pristine_git_object: 3feef3cbda201e9a2eb403d1b809693f1fc1f965 + docs/models/operations/setdeploymenttargetagentversionresponse.md: + id: d94a026bf916 + last_write_checksum: sha1:7de8072af3e058aa8a8a5ef0fed8e4b524a83207 + pristine_git_object: c6b403be8856bf3ce9d45b615397864de5064dcc docs/models/operations/setup.md: id: f1a9d176014b last_write_checksum: sha1:7ad92e358e31ec51bbaa3c6cb757b915bd997e0a @@ -13828,12 +13888,12 @@ trackedFiles: pristine_git_object: 7406c1e2c3b90b8c3542a84515df99f5233d029d docs/models/operations/updateprojectgcpoauthproviderrequest.md: id: 1b4c3f5addcc - last_write_checksum: sha1:463c390e635320ae1d0f52a8f177bb093e67b1c4 - pristine_git_object: 339c12f8fe86d9f2f23ce607cbcf887e2885b769 + last_write_checksum: sha1:7fafe828e25b131f4fcb5861a1fc6fa00179494f + pristine_git_object: ae1d7570be42da64cfc40281536c743058247c31 docs/models/operations/updateprojectrequest.md: id: c8277360927c - last_write_checksum: sha1:d06e9017fa631c795f935b1bead4ae972b639058 - pristine_git_object: 844f5b16f44e11e397c874a897852aef1e5a8c0b + last_write_checksum: sha1:4a39a7b97bc498eb7552be374559f8d48d6443bc + pristine_git_object: 01b7f455c6b543cd96f6902152ca04cc37ea32d1 docs/models/operations/updateuserprofilerequest.md: id: 1e59616c750f last_write_checksum: sha1:e95584ac79cde7d2e7a870c38e18c3c7a3bc4ff8 @@ -15728,16 +15788,16 @@ trackedFiles: pristine_git_object: e2afc7a3a49a874c049562212544ad6a0073926e docs/models/projectgcpoauthprovider.md: id: d8273d39764a - last_write_checksum: sha1:74ebb97277826581d5567e1e7ba5e84c740c6fbf - pristine_git_object: ff27385479bb429e6faab2cba64edda5e8e8f367 + last_write_checksum: sha1:abd98bcc73173441832412fcdeab7e80c7b3a9f1 + pristine_git_object: 4446ca3bb418cf26a74d813c1a5b4f338514b2b3 docs/models/projectgcpoauthprovideralienmanaged.md: id: ebe8f2209231 last_write_checksum: sha1:47a322acec4e2329c11f9a0bdd01cbca3fd2a7cf pristine_git_object: 8fde8dfffc783b3e00b46be10a3109ae85fce1a7 docs/models/projectgcpoauthprovidercustom.md: id: 6fe4e956a614 - last_write_checksum: sha1:1d56025e0f3a2acdc02302969688f0249c1ae0da - pristine_git_object: 69c120711848e1ce6fe8939177d419a480ab0bb4 + last_write_checksum: sha1:390d6b80e2a9ef5d545e3929fb53df857668185d + pristine_git_object: a1ed65f5bd8a7c6ade60c91b922c1bfbfa356939 docs/models/projectgitrepository.md: id: 1348e774fbc5 last_write_checksum: sha1:b33b3e546318cf1199c248c1bd65defd34975cea @@ -16110,6 +16170,14 @@ trackedFiles: id: 0afc6ecffb9c last_write_checksum: sha1:1c5442656467bc4ef693a7936d42e5d8fc4ce288 pristine_git_object: f06bd084011b11425b7c87531152458d666eb657 + docs/models/rejoindeploymentrequest.md: + id: 9371dfb49820 + last_write_checksum: sha1:1f46c6e6ab1800f059844a189a715e2d0b9a726d + pristine_git_object: 4821e947219aa5ca76b6138fba8ea59542ce30e4 + docs/models/rejoindeploymentresponse.md: + id: f895426babb4 + last_write_checksum: sha1:8a3f698cfaad5d482970f3151603e602773c2a13 + pristine_git_object: 3c092ae04cb935d4bec04dd0c6e10ed22f351dfe docs/models/release.md: id: 704b04b89ff5 last_write_checksum: sha1:45bd3afbe1ea444b40f4ea128fd597f7a01699a9 @@ -16374,6 +16442,22 @@ trackedFiles: id: 24d45508cc12 last_write_checksum: sha1:dbbf4105c4a120cc4c8c168216916acc897b4be7 pristine_git_object: 637435568b6d7f906e1866ef6c19dabaacd3b6da + docs/models/setfirstpartydeploymentinputsrequest.md: + id: 07649e146cee + last_write_checksum: sha1:5a435c0b25bcee94b5f080bd95567224e70942e6 + pristine_git_object: 77fafb41c1b76cb2f716becdc72eace2715d8238 + docs/models/setfirstpartydeploymentinputsrequestplatform.md: + id: a3b778c6c2fe + last_write_checksum: sha1:4ae55c9c4f7d88152648b61fd6c7f1b752b4e6a2 + pristine_git_object: 08c133bc2f3975ded3ef2cb94c0e80e26b3b6f12 + docs/models/setfirstpartydeploymentinputsresponse.md: + id: 54b48c71ea00 + last_write_checksum: sha1:cd691ef0837bcba3534fc9a113c8f10f5debdbfc + pristine_git_object: 69372428d4a8a7f6453acb6cdf55d419eb4fef5c + docs/models/settargetagentversionrequest.md: + id: 563f2ef94ded + last_write_checksum: sha1:0a3afe3616871f99e93ac2974542386a717bc784 + pristine_git_object: 6a24ebcc50035807771c752dd35a3ae818089c09 docs/models/setupfingerprintinfo.md: id: 1ab1dee0cccd last_write_checksum: sha1:086207ac295127cd1f9e446193f5eb5ae824ce7c @@ -17504,8 +17588,8 @@ trackedFiles: pristine_git_object: f79d22af28cf23fab7d8bfd9cfabc0d64286d05f docs/models/syncacquireresponsedeployment.md: id: 1ac9e677bef8 - last_write_checksum: sha1:3d5ab2705e6abe633b30e7e9f67e3d1ffe2d03a5 - pristine_git_object: 6000c538d9fde88e20ebf0b4253abd93a9e99df8 + last_write_checksum: sha1:db3a1e4764af14b036ed043a2d2d278cbde5e6db + pristine_git_object: 2a7daa9f25f3eb591188eaeaa112673ffcfbb55c docs/models/syncacquireresponsedeploymentmodel.md: id: 78970a40b66f last_write_checksum: sha1:f4a9cedc99ff047a4165b2fa4c67a8bd454757e4 @@ -19414,6 +19498,14 @@ trackedFiles: id: b32dae5c9df7 last_write_checksum: sha1:57f1f843d14939cd40fdfc77b26ff6c3307a9558 pristine_git_object: 9796c5bdd38e92b33a6366756bc83f880971e5b0 + docs/models/synclistresponseagentarch.md: + id: 3c7c5df652e8 + last_write_checksum: sha1:f9a8248cf69e9830d3fcac5cfaf10b28382d1132 + pristine_git_object: 1a3281d71e4ce9062a8c9d53b4e4166f0b924608 + docs/models/synclistresponseagentos.md: + id: 27e0d68d260d + last_write_checksum: sha1:816fb6255f9263da46e47045a406b41d18558027 + pristine_git_object: 4b3b612627cebe735215804c98b0eb010b8402e7 docs/models/synclistresponseaws.md: id: 0c4db6c5cf1e last_write_checksum: sha1:e7a82cc1eda8049ed0a7806b51a92b9dadb87756 @@ -19540,8 +19632,8 @@ trackedFiles: pristine_git_object: 0047656f46cc24ded8e80e851d5cad76892f7eec docs/models/synclistresponsedeployment.md: id: d74bef4848ee - last_write_checksum: sha1:1630f0a48694670120c6821de2da3c3247800124 - pristine_git_object: c1aaa54863e64d31537c2d1ede88a8511f692e23 + last_write_checksum: sha1:20e3dc94e1cb28aca122df3634b69fe8f0a610ed + pristine_git_object: bfd246281892a7257f8c07ee2ab9d39848557e83 docs/models/synclistresponsedeploymentmodel.md: id: c3122380abb4 last_write_checksum: sha1:7a7c519fe607626a652a4ae344808643ae57fb17 @@ -20234,6 +20326,10 @@ trackedFiles: id: 74e741ef443b last_write_checksum: sha1:87760b2db94fca94eb288e8bb4082b8f5f78c298 pristine_git_object: 84eaa118bd7016f51480ad2068e9bb7f358b8404 + docs/models/synclistresponseregime.md: + id: 7974a34ef716 + last_write_checksum: sha1:5ae80f7310678d3a03aa1b46ba3cc99e40541b27 + pristine_git_object: 37ab3df2c1f1af314f665c16604a6d902cb48d8c docs/models/synclistresponseroutegateway1.md: id: 22de02d89d83 last_write_checksum: sha1:ff8dea63e7d731126e5c040e874141f6b1cff672 @@ -20368,8 +20464,16 @@ trackedFiles: pristine_git_object: a239f4dbfd683116e3f641dd8af9332f05732774 docs/models/syncreconcilerequest.md: id: 4855da36149e - last_write_checksum: sha1:e2060d5cf30874884fcdcb469550cb5a3ea5fed8 - pristine_git_object: 86d588b5f772ed8aec807e416f0b5c99fe249afb + last_write_checksum: sha1:e9580b873699b29162d6c38296b3590551a265db + pristine_git_object: 21785b5f91d3d09d15fea046dc96008ef14ae7bc + docs/models/syncreconcilerequestagentarch.md: + id: 9318ec555b3a + last_write_checksum: sha1:04439ac19e3a2582b00bb7b231be531ce14e8164 + pristine_git_object: 56ef3ce58f548afefdc1d4c98212933e63daee01 + docs/models/syncreconcilerequestagentos.md: + id: 53683b2ea00d + last_write_checksum: sha1:a96a35909e5cc8fa0d4087b807faa14d5aff4059 + pristine_git_object: dfc6aac4464531f46a00a8a2963b804d2dfedcc8 docs/models/syncreconcilerequestcurrentrelease.md: id: d35f941a4a2e last_write_checksum: sha1:1be7a9cca9b80cdc5bcd56973f8c9f5acc8bbb8b @@ -21254,6 +21358,10 @@ trackedFiles: id: ea7e769eb92d last_write_checksum: sha1:65f49c248f37e5438fa8103ac40dd781cdc89071 pristine_git_object: 8ccb2b167da8d10a429a46b8c5ca887bb05a5ae5 + docs/models/syncreconcilerequestregime.md: + id: ccb90f0e27a5 + last_write_checksum: sha1:e43287b779435dc13b0fa318255324699f29332c + pristine_git_object: 73aed138f53707d463ac5b818b1e8052596a4190 docs/models/syncreconcilerequestruntimemetadata.md: id: cd7ac50f8ae2 last_write_checksum: sha1:a99d8ac66e4d7534da96ea2d572efa8dfdf15232 @@ -24684,12 +24792,12 @@ trackedFiles: pristine_git_object: 3e791cad7f6102a7a2aaffeddcb40990d20ff890 docs/sdks/deploymentgroups/README.md: id: 5df9f1e7770b - last_write_checksum: sha1:788d31d1e965dc502b9c88ac9e00a6be00cb90e5 - pristine_git_object: 5eb23007e1e69d32f648e2e2099aa64428f70766 + last_write_checksum: sha1:13bf646b1c20f56776e2106b78d0b90235dc4c74 + pristine_git_object: 88f513be5fe5878ec62a1210eadd0bf09aa85d8a docs/sdks/deployments/README.md: id: e7c5559ab768 - last_write_checksum: sha1:390dd99ef85414e63849f85dbf900b48b2660e13 - pristine_git_object: 3b450d95cd244c1142a45dc4ce4739cef907b8e2 + last_write_checksum: sha1:520eb35dc32df5602a6815f5d31e7da7060d6083 + pristine_git_object: 2772b9b96109b6c25083f1489d798633f96c3bb3 docs/sdks/domains/README.md: id: 06e9beb4063b last_write_checksum: sha1:f67185776fcc10b386cd3e90b2f7bbbdfd5f435f @@ -24756,476 +24864,492 @@ trackedFiles: pristine_git_object: dc513216f32a6341abe21c560c28d4d70a769203 jsr.json: id: 7f6ab7767282 - last_write_checksum: sha1:a5b39bbc5b8403fb466d610c70bc9a934dac2d5e - pristine_git_object: 2b3ae23fc62c9c2228f8765348ce0f5ea43f5d29 + last_write_checksum: sha1:2b8e188bfc338d7e68d95b38cbb8940e00667993 + pristine_git_object: aa29499ae93141105b1f216c5bfc77be90aa6a90 package.json: id: 7030d0b2f71b - last_write_checksum: sha1:bf5f04e6125d5fd44356d8481291b0ee1c76a2e7 - pristine_git_object: 69e304b1d385dab8274c8520b1acf4dfdb31070c + last_write_checksum: sha1:aafa55241955bc12b671ced929333ac4e2449ac5 + pristine_git_object: 03f7464e4929d66927f2f9f521baccf068591863 src/core.ts: id: f431fdbcd144 last_write_checksum: sha1:c634ddf4882f77c6dba4422d8b4ba7cb5a3a23d4 pristine_git_object: e636ed43350b38029ea85faff425f7d4aca39fb1 src/funcs/apiKeysCreate.ts: id: 133e2c5f487c - last_write_checksum: sha1:be3255691199eb6a1d9b21ec93e871907b0d1345 - pristine_git_object: 98ccd89d853ccb459b07d4c0026cc97ec2d0fd3d + last_write_checksum: sha1:ecfb79a3bbcb7f83c963f849b120270f64799670 + pristine_git_object: 46c8546de064619d3da867e0dc59df0f813a88b1 src/funcs/apiKeysDeleteMultiple.ts: id: e7da99139a30 - last_write_checksum: sha1:f59a33f411641db89c8e14f0ff89b51386781cb2 - pristine_git_object: 4df560cc5c0c25423c0f3db8d63b30d1006fc2dc + last_write_checksum: sha1:127579952a5a161c8fa94643610e711a28bb5ac6 + pristine_git_object: 2a21f65295209a929d8b54881794b9abfe7dc858 src/funcs/apiKeysGet.ts: id: 12a5c2abbddd - last_write_checksum: sha1:75838a8b9bc74064de54eadf119c39f43da425e7 - pristine_git_object: ce72fb26e32ac33d9185883175111abd83cccfce + last_write_checksum: sha1:41d27797c2bf4f8e374c73edfc6d84bd921945ce + pristine_git_object: 2c5ad059a6f0038babd2e98fc1c1560341f2fcb9 src/funcs/apiKeysList.ts: id: 2afc8d8f1ce0 - last_write_checksum: sha1:844d456fa8df5a81faec1c4265361070857fa18c - pristine_git_object: 004da7a637b2b3c8dd715e522dfc3a7c8d89277d + last_write_checksum: sha1:1ab01e962556c68e9e3e73e02e72b5a388dc509c + pristine_git_object: b9c7b3ea1c7c348e24ab5dfb4dbb40aff6f8c346 src/funcs/apiKeysRevoke.ts: id: ac927d1fb580 - last_write_checksum: sha1:32b6326bf11e654f64b996a434d2d3ade284390f - pristine_git_object: 509c1e2a02546d6ce4d802e0d86bdc6f1d87238c + last_write_checksum: sha1:3a99bb4e025d88960485444854a99cc82e62b459 + pristine_git_object: ec77577351de831bb8a6e08ad84081f8736d1c05 src/funcs/apiKeysUpdate.ts: id: 05700884934b - last_write_checksum: sha1:cff9e0d35a4f365b0c815756c12bb4ffc0a0d923 - pristine_git_object: 8c40fbc50b25e5cb8ecb4e31df059b2fda5e01dc + last_write_checksum: sha1:5fcf0e71e3c2659365936e825866734c2c3c5b02 + pristine_git_object: 7de5ba22adcf5188a4aeda1bd74c624a2c564d43 src/funcs/authWhoami.ts: id: 2359118d67d9 - last_write_checksum: sha1:6ddb332fbdef4c881faa3544bc50cfe22d89ec42 - pristine_git_object: 605cc3dbe3fece65e440bd65095384f67628b67c + last_write_checksum: sha1:4f8d25766df7e6ba04e9447236056113662f6239 + pristine_git_object: 64ec83ac9567b3dba3828bf35a5ff47bd33eda67 src/funcs/billingGetEntitlements.ts: id: beccc332180d - last_write_checksum: sha1:23e9df936aa5fc4e5729e5e465967d8595c90f63 - pristine_git_object: 1c0ae4990b20c298800ac400f4ed85266b916c00 + last_write_checksum: sha1:bb268e930b598986d4d71a4eaf6af4681038c11c + pristine_git_object: c56d82958d934c90bdbc173efa0533874e3386e1 src/funcs/billingListAuditLog.ts: id: 4f54dc2d27dd - last_write_checksum: sha1:538f2a9f000c9b59c23c1c497598e921558d3c95 - pristine_git_object: 0b30c452bb9ab71056bdde3a15992cead1bf14a4 + last_write_checksum: sha1:75c421228e5e7661de4940751dfaac5394d63cf8 + pristine_git_object: 9b7b2adcd4ccd18c149b4b16dbe6b52fd90c22fc src/funcs/cloudRegionsGet.ts: id: 317ae74c198a - last_write_checksum: sha1:1fde0491e1de5317c505692591e10811014ba0b8 - pristine_git_object: 74342031cbf02013ef4e03188204cfbd831e37c2 + last_write_checksum: sha1:3f7e4edc38b39e0507587e0df8ae4327a72b23cd + pristine_git_object: e0c3247b2e4830d9233da386d2e9d3500563fcab src/funcs/commandsCreate.ts: id: 0b907cdab561 - last_write_checksum: sha1:5eb8876f6186383adb37e42ac3a36bacf999dff9 - pristine_git_object: edf436e128a5f788f8554ed9f7fc4af8318b853f + last_write_checksum: sha1:dfc020c1d100b6ce2b271632a89d01ff79f55bc0 + pristine_git_object: f0faba8f042a006a624330c9bb5e4f9846b0967a src/funcs/commandsGet.ts: id: c548544f38d9 - last_write_checksum: sha1:539a574e317123270bfc2dcd1077de89a81824ef - pristine_git_object: 3ca7f9ec76e1dabd86a3a1ee8cb7587630bfe7b5 + last_write_checksum: sha1:30de9a9a66db6412182128e25ba61f417abbd165 + pristine_git_object: 668f5d22835a76f21422aa5c58cf32c201cf3edd src/funcs/commandsList.ts: id: 6268e586260b - last_write_checksum: sha1:e5eef4ed365e0c8346b02568b6bc526a1063c88a - pristine_git_object: 76f43c3f6c96095f66d4934e5872f2195a249956 + last_write_checksum: sha1:117e3b97bfe0332f918f362e4e1195351a8ed3a7 + pristine_git_object: 7bf16b6628661bd1e51fd63337dccd505d325d39 src/funcs/commandsListDeployments.ts: id: b78c37b6a8cb - last_write_checksum: sha1:2f97b896457f46ead3d370215f46d6c9ae02b96c - pristine_git_object: 33176865b2d1c610fe22cacc86653d1b56b659fa + last_write_checksum: sha1:d23624e17584a590029ef92987fcb1149894f771 + pristine_git_object: f9d50cce53a35f5a11600392fba0017d6242c91b src/funcs/commandsListNames.ts: id: 85678adc7854 - last_write_checksum: sha1:4a3dafae35381cb72f5612140bc575fa1388c6e6 - pristine_git_object: cd8c66000f75f3bab2022cb63160514b8f173c5b + last_write_checksum: sha1:accba78fc8145df49df6fc4b3c9c780c88e5cd95 + pristine_git_object: b9c159746526c2a63f61281d3f6d361e4af2bf51 src/funcs/commandsUpdate.ts: id: 08c09d84d2c6 - last_write_checksum: sha1:cc982bf548af5d9201881340d950baf03509ee0c - pristine_git_object: 77b845097d249ff83c45ba4f87f7413741e3f42d + last_write_checksum: sha1:ba95af31ab281917912820c5babf960c7be50309 + pristine_git_object: 4f4002430e765ba07788e973cc6a7eba9e5b075d src/funcs/debugSessionsCreate.ts: id: 0ab661b4b653 - last_write_checksum: sha1:b8057dfbd96ee390f53d88605e32be4dd39e277d - pristine_git_object: 177493d921902aeb7e1501765dc8b0e78da1e98c + last_write_checksum: sha1:4af570a04cd268256a9753873b01a8c7d2d70506 + pristine_git_object: 2d0b6da35a64f8b5fd2b50adc6f374a08347565a src/funcs/debugSessionsGet.ts: id: a3fbbabbc566 - last_write_checksum: sha1:289679b8730a9ccf09dd4a3f60367d895ebf6bd0 - pristine_git_object: cedd14052e294fd7b949007c157e5130f69cc764 + last_write_checksum: sha1:53657ac6c85529e1b996512f866da7785ca52197 + pristine_git_object: 34632e910ece64cbc67fa45e7b1fa836e30af4d7 src/funcs/debugSessionsList.ts: id: 93b91b8dd257 - last_write_checksum: sha1:75022f648ff07179aa6c7ad45da9c0cd4ed362ae - pristine_git_object: bf514095b16882736514e219432457fbcf8a2cec + last_write_checksum: sha1:739e5050f1e1fe8bd212e44395f04eaf13d753fc + pristine_git_object: 25dbcf524a7582914e8d176b5b9ce4c10bd06853 src/funcs/debugSessionsUpdate.ts: id: 36cc51df179b - last_write_checksum: sha1:1e7d64df22c881aeaf15111cbf48f9ad7491e927 - pristine_git_object: c5c0a800891e327b48f5c7ae3f8b42675442ca99 + last_write_checksum: sha1:0beca9a1c96770b2b57feb173641e33230b7fb7a + pristine_git_object: 47937be1ae5bafe32efaa63ae1fd1745f579209d src/funcs/deploymentGetInfo.ts: id: 5c45d30a687b - last_write_checksum: sha1:331a60edab49c984ad40cf26dde1407730df79df - pristine_git_object: 5cbe2972deb77c8194e949de76face1ad5b78ddc + last_write_checksum: sha1:c067deb9d9abbdb4258370eaad185729d264ef83 + pristine_git_object: 5bd2c99cd71bbbd139933effa233d3b9e639da66 src/funcs/deploymentGroupsCreateDeploymentGroup.ts: id: ed689368c82d - last_write_checksum: sha1:2746164cc0ab90e7983134bc54b18022c5cb5be2 - pristine_git_object: 39850e87ab75f48324d59166d59a77f64d27131b + last_write_checksum: sha1:c4614a607fdbe73a23b885646e3f648b7a11aa0a + pristine_git_object: 64d123c7651039a06e6888a97f13246630df8e11 src/funcs/deploymentGroupsCreateDeploymentGroupToken.ts: id: a343994dab62 - last_write_checksum: sha1:87fd10fba6a6c5d56db7299ca381a4d90b14902a - pristine_git_object: c7967960a65d8fa28750e466b4efd2d1fa73e16b + last_write_checksum: sha1:af43f1a7d8210a5ce4d0ef8f6ca3a28c6cedfedc + pristine_git_object: 503462acc2959e5657e6d8fe00c720088142932d + src/funcs/deploymentGroupsCreateFirstPartyDeploymentSession.ts: + id: 2d05efac25c9 + last_write_checksum: sha1:bbe223255c41cb0e95f7b7739aad609a029bb248 + pristine_git_object: 6bbbf2d668bd9ad15afc4cadc06b88d0b474bf63 src/funcs/deploymentGroupsDeleteDeploymentGroup.ts: id: 9009b9be171a - last_write_checksum: sha1:928c67c2de496ef83b3f830d574f5e05d193fc1d - pristine_git_object: 614c92f68b9cb2d2ffaa0bb9c097f9296d6cdc0d + last_write_checksum: sha1:dcf9f7b7602d66785da2f659bda2a1526b6aa9a2 + pristine_git_object: f63c79f55a9c422d6624636db692ec381ba57766 src/funcs/deploymentGroupsGetDeploymentGroup.ts: id: 3b48dcfcac4f - last_write_checksum: sha1:5e4f51491120eaaed8bb6b2fe12ebb792119903f - pristine_git_object: 7e0b8d81645f8aee8c52d37d88298dc4c5838efb + last_write_checksum: sha1:2e7c98d846e7631c3488610573fb1f7efcdc6039 + pristine_git_object: 2c9f0eee2128c881a599a8f8cd00680ddfe79d0a src/funcs/deploymentGroupsListDeploymentGroups.ts: id: 34292c2a1420 - last_write_checksum: sha1:7bd00ee1deebd77cdfbc47dcb4d143c04554fbf5 - pristine_git_object: 4b1e1514967cbdfc55b68380cdae431dbbb0e9c0 + last_write_checksum: sha1:9e522c342c6a9fa20b124c9510ccd52c851c4078 + pristine_git_object: 06704dd495945d39674a1e2472b641ad502eb545 src/funcs/deploymentGroupsUpdateDeploymentGroup.ts: id: aeb915f29e37 - last_write_checksum: sha1:64b5067670abfb43a86f10748293f8153370e585 - pristine_git_object: 076a72e7e301206137a511a70510f0d7095a2e21 + last_write_checksum: sha1:ddaa20f3770c1400860e738cae9c754934acfb84 + pristine_git_object: be6658bd2d8b20b0990a6922d3eb5f802236d0a7 src/funcs/deploymentPlanCompute.ts: id: 055caaae09d6 - last_write_checksum: sha1:4ff5399bdad54c2031dfa9af7f247e6280392ab3 - pristine_git_object: b1a43030a30169cf513faa2502c65eadf579d16a + last_write_checksum: sha1:92af045ac9742fe2c54bd6bf392a1534c3fbf7e3 + pristine_git_object: 233e8144c8afbac255526c428bb509c1b2347250 src/funcs/deploymentPrepareStack.ts: id: 5203c67f8724 - last_write_checksum: sha1:996835ffc2ba771e8d4064d364f6c6f820f16c65 - pristine_git_object: 1c13444c9d959ed17bc7c2cdc56be832e64057ff + last_write_checksum: sha1:85cea340a35ffda7900bd3a7676d467460df8016 + pristine_git_object: d403c51da3d4c310fcba9f4e0e279bf6258eaac5 src/funcs/deploymentsCreate.ts: id: 89c4da4d04a5 - last_write_checksum: sha1:5849d1ab5d14383c6158391a10be4b767ccb0e25 - pristine_git_object: 29e22716433c3cabf2905d425b8f5c1fc4aaf9e7 + last_write_checksum: sha1:8d273cc7b2d0c0a6585587c1242cb55b0338d8a8 + pristine_git_object: b7c128356970eb22c3e4ab7d58ddb4aaa22d7366 src/funcs/deploymentsCreateSetupRegistrationOperation.ts: id: 70ea78d26bc8 - last_write_checksum: sha1:cb1a43637fe73eb3cf591435c587887edbe1ec38 - pristine_git_object: cdd904fec7680da9e25fb345cecd95e7b86f18e5 + last_write_checksum: sha1:231d0dd1b1918ad710c40fcc4efe38105868f4cc + pristine_git_object: 06f493e8b77c1b68ae1c86fa705186b358888c39 src/funcs/deploymentsCreateToken.ts: id: c4e7471fa546 - last_write_checksum: sha1:0352fbabf70eab1945833c7a99510515126ed262 - pristine_git_object: c3a6fa673733b1f80a6d74ce6354921eac37c68d + last_write_checksum: sha1:94bf26689a034b06785e1030bb96e87e3d74f719 + pristine_git_object: 147cec8034e25300b0efc574297c1a54443dd50e src/funcs/deploymentsDelete.ts: id: 1dc4aca78a43 - last_write_checksum: sha1:af5216947bb39d2b55d246a6b436ecd52a6364ff - pristine_git_object: 73a22f47fb527e77c7a76051ddb27f53085988f4 + last_write_checksum: sha1:3dfe11d91b53bd1e5da46e109a1b9d125d697f2f + pristine_git_object: dbc6d88e6972e4f0039afd24ad9c110bbc105f77 src/funcs/deploymentsGet.ts: id: be42aac7545a - last_write_checksum: sha1:a0c814862dcab29830c6a3e1b54aebd6a2ddd3bd - pristine_git_object: 091bf879ea99dae7dc1aae0aa41a9283b1c10ebd + last_write_checksum: sha1:bc6d9a9e34556544c134c7e4e61948f5e5184934 + pristine_git_object: 105fb07ec6890d9b4d070158723e935ffd41034f src/funcs/deploymentsGetInfo.ts: id: d1e41cd4a41f - last_write_checksum: sha1:9fe65b6152032191f1d25df5074c196d99e14516 - pristine_git_object: 04768a7eeb281ed75b5d7648a48f37f1ad4f4752 + last_write_checksum: sha1:842d20e48a30a5d242c37081f819f985ed5af4cb + pristine_git_object: cc5f80fa61a89fda6226163e48a6eeba5a88b758 src/funcs/deploymentsGetSetupRegistrationOperation.ts: id: c341e0a62b88 - last_write_checksum: sha1:1e1f8eebb9429821837a27f5cccd3ca255ef96d0 - pristine_git_object: 61823d3c4442cffa4d7a1c8fce17c51b279e635b + last_write_checksum: sha1:6d76e506add7dec6a3e9a4a350f34f5ada0df1ec + pristine_git_object: b8f9227efbe3bb7437f62f9ad796d221dd19f20f src/funcs/deploymentsGetStats.ts: id: abb0edbab838 - last_write_checksum: sha1:b04b60b6f7726d5d81a381983cb6a757fef7720c - pristine_git_object: e1df927b2b28fe35cfece24b56ae8fa8b4d8f003 + last_write_checksum: sha1:fe7ccc36a94e9d0368241e059b6cdf4261a80afb + pristine_git_object: 0c8a19beccd4488579edd8992da430e22d0ccb0c src/funcs/deploymentsImport.ts: id: 28fdbdd61a2b - last_write_checksum: sha1:dc7ce2df6e9c1ea0114433a0caf8958d6c38d6da - pristine_git_object: 903c16882c7459bc8f42dadda6e43199596f686a + last_write_checksum: sha1:b0831ad47287aff73b32daf1d213848ac37639e2 + pristine_git_object: 757a9023a0f0d01ce8b40495882e34ee7b4ef94f src/funcs/deploymentsList.ts: id: 01f616973238 - last_write_checksum: sha1:0440005c6e38761cb32b84835b11125bfad8954f - pristine_git_object: b43a1bfbbfab7d1927a26d16baedfdff6a3f25a7 + last_write_checksum: sha1:cdeef4f2766515ed6cc1dea97bd1dd07a00df45c + pristine_git_object: 17e05be45473fbdaf7ca087a4080afbf1c133377 src/funcs/deploymentsListFilterDeploymentGroups.ts: id: 236b2e9acb32 - last_write_checksum: sha1:fa91c314b1ded62e01442b3cbeb8670f3957472a - pristine_git_object: 7602626cc936894c84d22f37706677e5f8414f6e + last_write_checksum: sha1:5844fc3c118afb13c4925fc9c3f33b1b6e8e2609 + pristine_git_object: f725fe325038379a65b02690050ba7b8fa91fc36 src/funcs/deploymentsListFilterEnvironments.ts: id: 4afe828e0e52 - last_write_checksum: sha1:8b2f5a7150f36553dc766f44fbd529edb2bd61a8 - pristine_git_object: 074b12741d7cdc438bab70cfa81c9f84730c3709 + last_write_checksum: sha1:973062e856b8c3c89fb9a91d1664d4deb710d24d + pristine_git_object: f7016226a777e2611d758681f7ffb7adcccba2ae src/funcs/deploymentsPinRelease.ts: id: fc058c79ad16 - last_write_checksum: sha1:cdfd403e8d0885d4250bb49024d50389faee5e3c - pristine_git_object: 18d7297e23645a934571a676214b5965ee5ed58a + last_write_checksum: sha1:1ae750e00468c62d38fd60aff76bb44d67a10ab0 + pristine_git_object: 1efe3105f477b54dddeded0ef4df159a2ae20c8d src/funcs/deploymentsRedeploy.ts: id: e6a049912ff7 - last_write_checksum: sha1:6e3172ca91dc5268f5f63ee5925fcf98623b9efd - pristine_git_object: a510ec7b472f4383e0667650e62204e4b2ebf5f9 + last_write_checksum: sha1:1352f27f884a00ddd4b7c50c8064d703efa96113 + pristine_git_object: 4cdb89810198d4776fb4f656691b969d297bd58e + src/funcs/deploymentsRejoin.ts: + id: 8b5c8811d51e + last_write_checksum: sha1:15b156d7dcb6e4ffab5677c53257fa76c9c17d19 + pristine_git_object: a02caa0677514be318fc687e5c131e8c20356bd7 src/funcs/deploymentsRetry.ts: id: e144dc000aa4 - last_write_checksum: sha1:bf284ce96bc00e99ef7864f55a344931a5595154 - pristine_git_object: 23cc8640c23fcf8f7b47aebb98b0a568d494f2af + last_write_checksum: sha1:72f92ca0d514444e3871739f1fece1590f8139e9 + pristine_git_object: 07b06a436c2d3cdd21230689a57d56e201b5f230 + src/funcs/deploymentsSetFirstPartyDeploymentInputs.ts: + id: 050fb72e75c7 + last_write_checksum: sha1:97be5758baa8eb76b10f5156486c046869521003 + pristine_git_object: 25adfbb1bd5721d59a7cd79118ff54d285b4028a + src/funcs/deploymentsSetTargetAgentVersion.ts: + id: 6a663e137425 + last_write_checksum: sha1:26d04ba4d7cfb546abcf4a21c5b1c490c8408015 + pristine_git_object: 91a63ca9ae481e64fde6471d94918ed57b9a75ce src/funcs/deploymentsUpdateEnvironmentVariables.ts: id: aa49c47ca700 - last_write_checksum: sha1:01ee4f5bfa1a7e4acd3c5880cb19eff3797a17da - pristine_git_object: a6d0bd967880770a8c801ef83470e6f320008043 + last_write_checksum: sha1:64aabc3e386b788a90c2be4f27fdc90ffa9cad51 + pristine_git_object: b6846cc7671d07f54e5c2b863a3aa81984e0d0f5 src/funcs/domainsCreate.ts: id: d4efc05891e3 - last_write_checksum: sha1:6196825a1f7870c67e77aa9a2e7664dd1a3eb552 - pristine_git_object: a5d25eb78494653d982815e865fe7423f43c0eb6 + last_write_checksum: sha1:6fc4280a2535e0b5e70a12b2872d2949be413ad7 + pristine_git_object: 2360ddc505c4e7a83884c7ee2288b38aea9970dc src/funcs/domainsCreateEndpoint.ts: id: 48a5a6c8562b - last_write_checksum: sha1:98c4d0e613d062d92dd73aded8cbd54b7625efd9 - pristine_git_object: 9474152be7138afdfdedc14b21bab2da6d00ee44 + last_write_checksum: sha1:881e0abdb4699306317fcd525d6665fe97075531 + pristine_git_object: 3006584bd8b6681a3088f6bedd79ea8a7e77a7e5 src/funcs/domainsDelete.ts: id: aa9dab4d1845 - last_write_checksum: sha1:ad6289eba0f29613bc9bd3ca0eea66e92aefe2c8 - pristine_git_object: 09e1097d3dbd10dfaba455df277f75a3ebdc4d57 + last_write_checksum: sha1:5e4a78125d91db047cb018960be926f80183f478 + pristine_git_object: 3269d7ca4f404b142cd4574fd103a88c7c8c6e2e src/funcs/domainsGet.ts: id: 209bc401611d - last_write_checksum: sha1:76766ad1977ad53868a40a3533a2b333c3e82028 - pristine_git_object: 68a8aa03a43da8dcfcc15d1b3e762dcb13a3ecdc + last_write_checksum: sha1:d4f3b0196f930568893d71d2ac91d434fcd9ec6c + pristine_git_object: 6ce571b71ef165841798046c5e35f6ba93b52323 src/funcs/domainsList.ts: id: fc873fe61584 - last_write_checksum: sha1:2aefc811d89e2590084c91f05c817172edcb7c0e - pristine_git_object: 352de6b74287e17675d5e2e18c0e8918cdcdb3ec + last_write_checksum: sha1:1e56919b796739bce30a3fee0a14d26a9f3bbaa9 + pristine_git_object: 1c36528bf1f696480566e625d943849d2230fe4a src/funcs/domainsRefresh.ts: id: f26aafc26659 - last_write_checksum: sha1:25244a517c1e190166da02cad2a15d31e4b75393 - pristine_git_object: 88fab9817f5b7c68f2821e5ebfc239732d92a4fd + last_write_checksum: sha1:ad8e734c551cdcd2fed77fee334485d11eb76df9 + pristine_git_object: 8fa6dfb10e38447383b764673999af84b98d081b src/funcs/eventsGet.ts: id: 5f1c128a8a40 - last_write_checksum: sha1:9d37461eb8f192867e4d12b5902253d9f0a3b7a0 - pristine_git_object: 977fbe409cb702af90d4bf08039368caaa67a552 + last_write_checksum: sha1:2f8bf5cbad09986c2315805e34548e9461fcca6e + pristine_git_object: f456469aa6c7f0e90b3b6aa0001d43054b5bdb18 src/funcs/eventsList.ts: id: 4522a8542985 - last_write_checksum: sha1:de66a377d92d0d51827cf9d98f6e82492dcb9065 - pristine_git_object: 9eb6232914eab09dc4edfff3ac5b1543d5b49a66 + last_write_checksum: sha1:298ea710d3d2fc44cbaad8422712de1c52700218 + pristine_git_object: a011fc18da5648b6b62368370ebd7f028e8c198f src/funcs/managersCancelSetup.ts: id: 9ae11703cb76 - last_write_checksum: sha1:523bb620407379c5abae659ebe686bd7fe38cda2 - pristine_git_object: 391d8659314993a66b74bf22a230227a4e396fd8 + last_write_checksum: sha1:4c1e568cade1f0f3e293b1b029c511842b7ff700 + pristine_git_object: 4bb2011bf4dbb045dc6055549c59cae6f16657dd src/funcs/managersCreate.ts: id: 7adfcf0b2ed1 - last_write_checksum: sha1:08884ccae59d73d5bde6b8a3a23710ba6d989563 - pristine_git_object: 56b94ee6782357ab1031657cc79a92e2a39630d7 + last_write_checksum: sha1:f2bbe5d050bd563a2d7f40ae26d6d62a316e63c6 + pristine_git_object: 2b8f05d1a67baa82d12ade8257a668c94a7c550c src/funcs/managersDelete.ts: id: ce3e434b894f - last_write_checksum: sha1:2c55972597b24fa4835c19e3f247e5d5648cb5f0 - pristine_git_object: 7eb37a567a8ea9aedee0ba8b85498cd8b91dbbef + last_write_checksum: sha1:db85da6bb1e2eadeaf81c823ceb49fadcfaa7347 + pristine_git_object: d37e4c6a65523dd2f591318441ded27adfb47669 src/funcs/managersGenerateManagerToken.ts: id: e1ce023349b5 - last_write_checksum: sha1:05ef2f7710dabd2a8f8f166cf241ac42743547b4 - pristine_git_object: 45ee42d61b756c61292f31b6bf09b49e85ae65ea + last_write_checksum: sha1:7ad74ddaa2cd31768687599c843913243391866a + pristine_git_object: b800968e776c10db7eb4824d33aeebbdbee9e3df src/funcs/managersGet.ts: id: 7ff3855f0b26 - last_write_checksum: sha1:7b88a61fcb540beb6aeb2c4db301a84c286c16bf - pristine_git_object: 21d8914bfc60f1053faf0857c439182b0613dbb9 + last_write_checksum: sha1:6719d1126b397013667515c433a8bb5312f90cc2 + pristine_git_object: 37167fc3a4bcd76de5989dbd6056e977124f5ef0 src/funcs/managersGetDeployment.ts: id: 58f7e5fcef01 - last_write_checksum: sha1:4367cc0431de891d33c6be3403c844487cebc44d - pristine_git_object: ff23c4079944589cfc48b8850fadc593efec3962 + last_write_checksum: sha1:31140954f6c2932a3dcd5404983eb80addd78c8a + pristine_git_object: 46c960dd6f74d3dba0350bdb4ffaecc946c131b0 src/funcs/managersGetDomainBinding.ts: id: c5b9d26d9cbf - last_write_checksum: sha1:6e53804f2e00a2217895fd8e28184d92774dd94a - pristine_git_object: 48b8747c97b49cd75b81ecb19a73ddf1abb69e2d + last_write_checksum: sha1:2964ef22949948ea01033c56ee75d9cefb1e5988 + pristine_git_object: 500c7a1c702ea318f637f0252a77cf411fcd9697 src/funcs/managersGetManagementConfig.ts: id: 8f27428ea626 - last_write_checksum: sha1:6727ed066575e06c71117165c92513a65d80fe7d - pristine_git_object: fdaf8c9aaf4694a25823ad7d625d6086c6f0afcc + last_write_checksum: sha1:ad91d95e62c5faaabe5ca9152618bbca786ad2e9 + pristine_git_object: 55eeed60238cf615f87698abd2232234e74a4717 src/funcs/managersList.ts: id: "682754721450" - last_write_checksum: sha1:ebbd573a485fca6ad8682ae132a0d041a95b3ab5 - pristine_git_object: d75b93565bf972e5ef4c8d85b440aa0c2365738d + last_write_checksum: sha1:50d92a8d269144255ffe3f435a4e490db72d54a7 + pristine_git_object: 166185ffa5016b1421261aedd0b73c8bfe3a60df src/funcs/managersListEvents.ts: id: 1a25e62fe86d - last_write_checksum: sha1:9a74457def68c3488470aa947430b79746b796f2 - pristine_git_object: 8dbe70bd761825f058f4f8037f718b2cf855a3cc + last_write_checksum: sha1:a06084951388d35fc81574f23f327c6a01155af1 + pristine_git_object: 896bb6f850deec12282f7a752b35c7e1db907a1a src/funcs/managersProvision.ts: id: b27cb50ffea7 - last_write_checksum: sha1:94a021281b576fc8aeb031ff4c95f3395286b072 - pristine_git_object: 56fd24c8d4bdc806c67b9699e8242197a45fdcfd + last_write_checksum: sha1:5a2d96376c09eec94310efba26811569ce93f351 + pristine_git_object: 874ee1c339e6a8a56d6ea06840a3d3f9b550539e src/funcs/managersReportHeartbeat.ts: id: 0982d5b78cc2 - last_write_checksum: sha1:e8410b1202cb27fac1a0a32b735655b66737c373 - pristine_git_object: cdc8c349740e30aef95171b8c116a38a8343c9b4 + last_write_checksum: sha1:0abbf2a5fd8461b50080a372faec86aaf04a5c8a + pristine_git_object: b751290d41a0f7e6177d93034c650315d5965d4c src/funcs/managersResolveGcpOAuthProvider.ts: id: d38f0f2e83a9 - last_write_checksum: sha1:b49f2da8761c0c5be6ddce9fe156dc908e8a3cee - pristine_git_object: 7c40cf6840cbc18e797c9a9e9543358aff61891b + last_write_checksum: sha1:97708488b96d184a81def307e40237944fc3ea0c + pristine_git_object: 48c501a617d95b7515961a18dc5691d032b1f7f9 src/funcs/managersRetry.ts: id: 9f1cb07bffe1 - last_write_checksum: sha1:4d3ddbbbcabe675922c8034b3f3794d31bcbcfcd - pristine_git_object: 03bafd3dc55d59279670973cdd1ea87f5d0a9ce5 + last_write_checksum: sha1:5e3c0f48f516cc61296a419f5d58a82c6341cee2 + pristine_git_object: 54ce7880f49a033c27b5e7d33d5919ba9139544d src/funcs/managersRetrySetup.ts: id: 00926b83980b - last_write_checksum: sha1:6bc26628abe1075f218e6f7d5db459e5a3f68853 - pristine_git_object: 230815ac96f46898c5b905aba9d57f5c5b803c06 + last_write_checksum: sha1:a953256ea7e093fe8731236b99db5fe275a4a97e + pristine_git_object: d9386fcc9bbded6bd48f305302894c9d6682c9f3 src/funcs/managersUpdate.ts: id: 84c8da187c2f - last_write_checksum: sha1:484d1d7f6812def79f0d82ce5afb8f169387356d - pristine_git_object: 795c2f1bbcb6a88cb3a1fbe9b6533bbbec304744 + last_write_checksum: sha1:b4be15f3dc44c38e462bba23faf35c3314511638 + pristine_git_object: 3cd94e3b4fde5556d07ea64a7ca8fe680ce73861 src/funcs/managersUpdateDomainBinding.ts: id: b54a59b54ebd - last_write_checksum: sha1:d92f4deb4cb365586d84f2d2f19e8d60cc53e173 - pristine_git_object: 6a9f1b94bcdeaf56c901179d2ba4d0917232abc7 + last_write_checksum: sha1:97153dde0c710df340a7ed63d1fea34fe3a68889 + pristine_git_object: 3b21dde263cafcdf9b2bcd14ea4f72607526f769 src/funcs/packagesCancel.ts: id: 626f56742c3f - last_write_checksum: sha1:da45b9d8a7f4c1140c818e15a4d0dfae29592f77 - pristine_git_object: 23e57a40c210ae3b63280da005cb8e1eec21cc6d + last_write_checksum: sha1:df466a0606c1fc9203aee16f2ef30b7268a779e6 + pristine_git_object: 2e3a81bb7452aa0a40d0daf4bf1bd5964333d955 src/funcs/packagesGet.ts: id: 9aee8342e62a - last_write_checksum: sha1:a0cde03d266699cd7280ffd72e37852b69fb34f0 - pristine_git_object: e51463b4fc58f4d107141804e0210152696ef123 + last_write_checksum: sha1:25fff204a495befca15e6eec65e8c182f429aec7 + pristine_git_object: 0c3250e705bcd738c2af554e943723c5427bf577 src/funcs/packagesList.ts: id: 0a3d43fdd8f7 - last_write_checksum: sha1:299d4560261f6dbc66680cf4dc63c7fe71c23875 - pristine_git_object: cc0eb80477e6bc9570e4e6f474254ede010bf8e0 + last_write_checksum: sha1:2b0e28ea034c779f4ce46ae9409cfd40e87f150b + pristine_git_object: 4912ca2db9f284a61f9a82800a7515a8dd20dfd1 src/funcs/packagesRebuild.ts: id: 5c39ca65adc9 - last_write_checksum: sha1:cbf75ddc6395b1c1677605a477808a87fa5727c8 - pristine_git_object: f8e261fb7b398c043b8988e9c1542d8dafe01953 + last_write_checksum: sha1:3bdb391556c2d16518d830212982e861e4cbec7f + pristine_git_object: 587d70a6e93bc7c7b6603ad0d0e070713b5d4dba src/funcs/projectsCreate.ts: id: dd2581a3ecbe - last_write_checksum: sha1:5035b9d42a8748bab0804cf542d57535fc69c446 - pristine_git_object: ac9d49631cfd45eecdfc48061eaa70ecd92c64ea + last_write_checksum: sha1:cbb3a42b0da01275d6db3718d953650e58623441 + pristine_git_object: 1fe866c58899c144beae7efb169d011a2b051f35 src/funcs/projectsCreateFromTemplate.ts: id: f43115642aa1 - last_write_checksum: sha1:0992e27d460c80f45b324f1da4ca688b188e51c8 - pristine_git_object: e972283f1471aa2e376e74a1714afdf4d91293ce + last_write_checksum: sha1:9348a42300c59915513553f71f25589d775cab26 + pristine_git_object: 974bebbb934b7e26864ab03b4e206d90b32b31e2 src/funcs/projectsDelete.ts: id: f0314aeffe2c - last_write_checksum: sha1:4719b072bf036c5507628f10c035faa63c54b76a - pristine_git_object: 9c3797d73b855587cf76685b689c24f8a3a30bc4 + last_write_checksum: sha1:9827c484e74a210ca4abe1001708fb5ea7f8b13e + pristine_git_object: 16ed9a08f702c54a9154334daddd6037e8b43e78 src/funcs/projectsGet.ts: id: edf71b388841 - last_write_checksum: sha1:a1f58c233ef354e72ef923cfa4668d42b79da880 - pristine_git_object: ce1689521cf79a953bc7ef106dc5483b8db055a8 + last_write_checksum: sha1:cddce4e0f92cfa5ad951b7b07cce2c082cd0c303 + pristine_git_object: d2798deee732647ab64fe7ac53e6da772d0a67b2 src/funcs/projectsGetActiveRelease.ts: id: 082c0d7043d1 - last_write_checksum: sha1:6941fd9a99b90e45e12cd44972ee21e0634172d1 - pristine_git_object: ead8e6b0146629d9cb759fcd626db96aff008333 + last_write_checksum: sha1:a8e7c2e629e13aa07b94075bbc70864f4217896a + pristine_git_object: db62fddb94e9e6e32c8e12406910a9a5480d7096 src/funcs/projectsGetDeploymentPortalDomain.ts: id: e4066a24921b - last_write_checksum: sha1:d948261377e043cc03081cc8d6cd688b28385bc9 - pristine_git_object: d1029a912b74c0ea535da2bf0e36cf3dbe7dcc6c + last_write_checksum: sha1:a6c0a93e5b93d0fa0c6f31b584027d96ce7a461d + pristine_git_object: 14b4c78445d27ed6215709c320e2e7380ec404f8 src/funcs/projectsGetGcpOAuthProvider.ts: id: e165739dcccd - last_write_checksum: sha1:1c34cf11151f433ae18f301c6a3dfe84f5b530c7 - pristine_git_object: 60bfcb74496865563b1e627985228be4da737330 + last_write_checksum: sha1:8f5ae59cbae7a1487758fb93a45e5270374e87f9 + pristine_git_object: bebba09385f231ea62d39eeb1c55c8b7a6fee714 src/funcs/projectsGetTemplateUrls.ts: id: 14ed9dabaa19 - last_write_checksum: sha1:643c9e75257335f79a10743ec6b84bdfb1574105 - pristine_git_object: a6bde43ed7143a893fa79066b3ca095d1e2ed841 + last_write_checksum: sha1:c6616b5b951a592b329ae62700d6e60050ff9c71 + pristine_git_object: 309966bbcdc967d720fd1aa09dc0322fde86bd44 src/funcs/projectsList.ts: id: 125a25405644 - last_write_checksum: sha1:fc3fd401cac285344e7cbe4db679d66fa6cbf0de - pristine_git_object: 9759c4fbe894166c93e43abcf04db8b569610b94 + last_write_checksum: sha1:e5d931916baf79771ae4cb4fef1bab1872a9e95c + pristine_git_object: 1124284be8aae0a4f22bd294cfb3264fd74d0dbc src/funcs/projectsUpdate.ts: id: aa9c21646b56 - last_write_checksum: sha1:f81fa2886ebed71fe11033a439cfdf77cab5c737 - pristine_git_object: 9389fe2a5195256134dd669cefe0fbb7bbd7cd4a + last_write_checksum: sha1:877d67ef296f259bd76966f1bf6cd3dc4a589d4f + pristine_git_object: c7acbba05c9a6a2d4179274540cd796ff05c593d src/funcs/projectsUpdateGcpOAuthProvider.ts: id: 0c5b6de9c70d - last_write_checksum: sha1:652b825afcff5e9732ab7c3fc91509a74b3a85c1 - pristine_git_object: fd46ae522f4a31cc04e2249e616889d65b57c2da + last_write_checksum: sha1:d93788cb088b74e9f81c59f67bdfb35109909650 + pristine_git_object: 73f7a51d4eee7a45d0044e44c783736f7846734c src/funcs/releasesCreate.ts: id: fc712b319633 - last_write_checksum: sha1:394b04980aab08bc78ff18b9e708c771cbb677fe - pristine_git_object: 96fb8d498cbe242d7ce0c1f0e5c0d84c58b6395e + last_write_checksum: sha1:3581de6c586861c2f0f529e95ef6067efe1c4c8f + pristine_git_object: 8677d61b39f7456ed0fe264a6382e7c1d1e724c7 src/funcs/releasesGet.ts: id: 4fd1a9e45da0 - last_write_checksum: sha1:9f84cbddd59330d0d0a442a989adfcc0d44a7026 - pristine_git_object: 93b01e23c50cc5704eb3e3ff67279ea62599c0ea + last_write_checksum: sha1:b3cc36ff7eb50bf3c6622d655724e726abde1411 + pristine_git_object: ed45b1521d15304a012aebbeaca0a83020797f7d src/funcs/releasesList.ts: id: 54dff85f9621 - last_write_checksum: sha1:8f0f103414af0e27cde339264afc73a04f06f10e - pristine_git_object: 945fb175ca42a69465da1560b3f4807e09622e5f + last_write_checksum: sha1:ae7836f9913b18a722263e08ba80378f8acc1f8f + pristine_git_object: eae3bc9396bc98c0d5354fc9f33d2a446c834882 src/funcs/releasesListAuthors.ts: id: 15914882569b - last_write_checksum: sha1:9553ecb8832d20259a3c399b744d9618a92f04cb - pristine_git_object: 26889173000cf2321dc5e9bd045b091743cdf287 + last_write_checksum: sha1:221da487c1a39e9e96a6956febcc24a41be61db1 + pristine_git_object: a2c8301f41a6b32abcd73ce7d7d6d03cc9614275 src/funcs/releasesListBranches.ts: id: ac44b53308d8 - last_write_checksum: sha1:4b00e93db3afac0d2f76f2793a912615ad602aad - pristine_git_object: 1b94e03cf4d96af30496f0c918c85f0cf95280fc + last_write_checksum: sha1:90798f6013465cc240b8367daf8b1e8590b9f17e + pristine_git_object: ec29f3d0b3f6331e16490585c1e649976954f113 src/funcs/resolveResolve.ts: id: 7590d79420ee - last_write_checksum: sha1:a122859e1eba97e0ef6a2bc16a7445df32367f06 - pristine_git_object: 215c08f3b7fbef922b108b5fcb65460bf901ff70 + last_write_checksum: sha1:c1c93e7a902206cea185f5b39469c3ee2f497625 + pristine_git_object: d04609fc95d7b3649340f58b2a38b07d308c1da2 src/funcs/resourcesGetDeploymentDetail.ts: id: 9f542f2f324b - last_write_checksum: sha1:506c80ca344c7c2c38b136c0cbf39f76c6f761d4 - pristine_git_object: 682ef006ab495dffdca731e5f1a8779202dfd60a + last_write_checksum: sha1:30e041b93ce48ab58f1d0e8c772e5524a11acead + pristine_git_object: 160d90e518fa798aeea42733dd83af5b6283419d src/funcs/resourcesListDeployments.ts: id: 3b9106ec0c8d - last_write_checksum: sha1:4b3ec0bfa4f21620d188aad242a117360ce1f16f - pristine_git_object: 5cf546825f1db300c587d97c40368b7912ec1700 + last_write_checksum: sha1:36eddc5ce57230e7ec7940dde51d00e4adc67ec4 + pristine_git_object: 005a1e406bb24b798818b472af8a25eb142f936d src/funcs/resourcesListOverview.ts: id: 0e88bb16488e - last_write_checksum: sha1:001a7c182daa37aaa7754710f6d67612b0130521 - pristine_git_object: bd0af0059383eedd1cb4101cc237a1aa0a975cbc + last_write_checksum: sha1:d74f639e88588d3e8cb438519f38697407c54e12 + pristine_git_object: ce72b89b6c9dee2b81db949f56979019971d4929 src/funcs/syncAcquire.ts: id: e30e2745d113 - last_write_checksum: sha1:9084d31a8e315a29e784ca55e392b5ac05653839 - pristine_git_object: 6f5239fdd2930f6d6a78f0e4137cad167a2ff92c + last_write_checksum: sha1:4dbc4e6b5c939da52cb6ec97a9f6f6d9cfcb2c5b + pristine_git_object: 3e0476658d61620ddaee45fd1e0acefb9107e49b src/funcs/syncList.ts: id: 0f32f1d735f3 - last_write_checksum: sha1:122eaad22772a188f53f0043d4d0208daf523f66 - pristine_git_object: c9b4a15406bb876d96fb4e0e2be203cd8fe56ef0 + last_write_checksum: sha1:f3d76b57585c7264bd1bda87422d25543269d0b3 + pristine_git_object: 7d580ae4b4cc274c359c503877bdc3d954d60049 src/funcs/syncReconcile.ts: id: ed27d270d53e - last_write_checksum: sha1:f32b28d141e755ac954c0bb638213430dcf05f5c - pristine_git_object: 78715f4d85978273ce960fa19c763e224a8885e0 + last_write_checksum: sha1:fe8d8fa89bafc41ec407f9b14bce78168c7f60a0 + pristine_git_object: ed500b9ea1603bf9e91b74064a8f4a76f8867a85 src/funcs/syncRelease.ts: id: 85c91cd44f53 - last_write_checksum: sha1:7320937ccf73ced8856a4cf768f729d89be6e025 - pristine_git_object: c4c595b98539f7213b5ec45902ac98d669df0a6d + last_write_checksum: sha1:392b6bfc2d51b7d8675829ab9a53f1779316e28d + pristine_git_object: 0f9fc3d9120d1d35cc37b9b1d0b588da7bc5f63d src/funcs/userCompleteProfileSetup.ts: id: d563ba12ae03 - last_write_checksum: sha1:da78c09b267c75e36afe9e58c417227d63007194 - pristine_git_object: a687f130bec65821bf42c27a8016327bc6fdeac5 + last_write_checksum: sha1:109783ea2821d05f6fe9f04e8d735dc4285098f0 + pristine_git_object: d3e3961d326871c52355affde153da46820f4b05 src/funcs/userCreateWorkspace.ts: id: daae72025028 - last_write_checksum: sha1:09ca1723b6795cccc5daa925c8f23a7037be8441 - pristine_git_object: fdbf70e7af78472bcbfa40eb5b89c6e435584b1e + last_write_checksum: sha1:ddb1d9c60601ffd18225e41924f48d14b84ce2cc + pristine_git_object: 5751dc06fb85467287acdadb875ecc4bb4974b62 src/funcs/userGetProfile.ts: id: ba2cd6a0d153 - last_write_checksum: sha1:7aba3ac2f0a0d03ff07f898ddda58240504558d8 - pristine_git_object: 4d3e6d72dc01052e4ff185c16ebc70dc6adf6cd5 + last_write_checksum: sha1:4c2e6bc5d3645aafacf9a0307023556ddd67ebc1 + pristine_git_object: 2e764cccb0af0df92fa8aae1b413172c534f71b4 src/funcs/userListGitNamespaceRepositories.ts: id: 8f992efa4717 - last_write_checksum: sha1:ec9673f3d5a14e22c5836a53c60a54b9b9bd7685 - pristine_git_object: 85bc01501b9eadd37fdc3c1d1c0b7db502d61e73 + last_write_checksum: sha1:7f308fe38a9fd9f38a899713d84d83ce55ddc389 + pristine_git_object: 33e8e3e730b6818f35a50718dc494fd91466e758 src/funcs/userListGitNamespaces.ts: id: 1ccb70663f62 - last_write_checksum: sha1:8e383d762aedfbff23c4a49158b28fc9ffd77a50 - pristine_git_object: e6ad75387001920e63dff709e3df47e80025d75d + last_write_checksum: sha1:46a0b32b651e8a7e6ac08c491a85079c28324792 + pristine_git_object: afb39d0de2b132102eca38339009c207804551dc src/funcs/userListMemberships.ts: id: 69ffc353f2e7 - last_write_checksum: sha1:c70d870103eb1f29325942948bc5873d2222b0e2 - pristine_git_object: f0a1d609ba53f1b128cf808397d2be695dadd5f8 + last_write_checksum: sha1:15fcc7eb754a2c0b582fce1e67729858cac8f551 + pristine_git_object: d2b3a50f1e4e59a0a7c2cb7a207fa378140cffab src/funcs/userSyncGitNamespaces.ts: id: 36835ab54159 - last_write_checksum: sha1:3eb229a9660b339b078243aa524dd0251d8b7b9c - pristine_git_object: 2d436604e9962a1e6625fdd9c0324a671b3b6ac8 + last_write_checksum: sha1:299635fe00b8b34ff09535505a1168ec1c72df78 + pristine_git_object: 1061db8ce849fd18c0974534474d940010f28804 src/funcs/userUpdateProfile.ts: id: c321fb0f4cee - last_write_checksum: sha1:6e5ae315ba2292fdaedba722630ec394f4ebfe89 - pristine_git_object: 961681cb1725da1339e4ab1fd877cfd037b87817 + last_write_checksum: sha1:1d34196ec948a69c4eacec5145e09921cc7f1c30 + pristine_git_object: a1bc1c6785bbd13def75258e8faf6e5c60b66dd0 src/funcs/workspacesAddMember.ts: id: 831417e9feae - last_write_checksum: sha1:d2d8ab527e40813d16e8593ddf8cf8148e20233c - pristine_git_object: 14a736512fe26e5024f28d0d5c82cf0b60c0d600 + last_write_checksum: sha1:2365fe7e3ecc8a6bf66c96c889456b8900e359e4 + pristine_git_object: 7b6793dbab5d9229017ec3c4a10b26f0ffa5ebfc src/funcs/workspacesDelete.ts: id: 548699dffed1 - last_write_checksum: sha1:b48d88abfa7dfdd93647e018a723023b65a8e3a4 - pristine_git_object: 11a6f24c6f92740c6d2060f6e93cb1684e61ce32 + last_write_checksum: sha1:d591266ed1df4a33cff290c439198ffb17911106 + pristine_git_object: 1923dc12d51c052be09fcbab90bf8bd4edfcab4d src/funcs/workspacesDismissOnboarding.ts: id: 046f52c0c3c7 - last_write_checksum: sha1:337ce93d65117d59685a2253107da6484153dfe1 - pristine_git_object: 1415902a708c11732077e5725b0dcb5343301422 + last_write_checksum: sha1:0bce943ca06850ba61e0590fc9433e71404b3088 + pristine_git_object: 8c4657d69a1f74cc1e04bf4f9d1f07590d36a1fa src/funcs/workspacesGet.ts: id: f361d34e5bff - last_write_checksum: sha1:6a122f1e6762088452c408331f7d259bc2f1a48f - pristine_git_object: a1dd5004d0447ceeb078029d690e649435576cbc + last_write_checksum: sha1:93d411446106d68b1a98be9c22b8f97d948bde4d + pristine_git_object: 1c94b4bb3b37d7bca03a13c45bdb8df7bb86a6d3 src/funcs/workspacesList.ts: id: 6ff9df556ff5 - last_write_checksum: sha1:9035299e434cbd75433c3a37cd7d3e95abeb947e - pristine_git_object: 105e58ecd976bd27bb73ae514ac9498d233bafd5 + last_write_checksum: sha1:5394244db07acc45a35c5bc53cf3919586078ef0 + pristine_git_object: 453d54f46caa40b865b434ed02e25cb7acabe0e2 src/funcs/workspacesListMembers.ts: id: 52e1d4037081 - last_write_checksum: sha1:f5f58abd1a84b552eee4801c4cb362fe6eac3817 - pristine_git_object: ca4ff464f20d8b051ac2ab4443bf745c276a4163 + last_write_checksum: sha1:569c72e5eb2896c48e1918aab15d3809c9febce2 + pristine_git_object: c314424bae22973ff1e8c8e66595b1d65cfd0f0e src/funcs/workspacesRemoveMember.ts: id: 99059041343e - last_write_checksum: sha1:abbd4b6f8537b5152d97b1ad105dfc1b8e6c2177 - pristine_git_object: fa57e265209b575c40b97418cec84675eed4a354 + last_write_checksum: sha1:ea716ebf65f25b4f3332f0d98d78361c002534af + pristine_git_object: aea7ee5c0b236777c806412c130c439c47815fa2 src/funcs/workspacesUpdate.ts: id: f0404418dd03 - last_write_checksum: sha1:3d5f82ded34557cb2680e31e873cdbfb6cfe1ae6 - pristine_git_object: 973fdba84eeea2ff6e22ea9e05c1e4430531744f + last_write_checksum: sha1:cb42e5cfe98ec10ca41b889111efc8f229ea8fdd + pristine_git_object: 70ef1ac5ae5bef29f09ceae3803d06e555cb4c23 src/funcs/workspacesUpdateMember.ts: id: 76f106c4bb9f - last_write_checksum: sha1:2f070d8c85f02be9cacf363b6d770a3ba49f4765 - pristine_git_object: 5e980b70744a757bbcdb8e6255970dbee74fef2e + last_write_checksum: sha1:732dae5a1eee5c32ff4b211b4f028ca529c941f9 + pristine_git_object: 54ba3d3b8767a6749caaf7babc8e5ffcfbd17170 src/hooks/hooks.ts: id: a2463fc6f69b last_write_checksum: sha1:3a90d88b4c6c07247db8e5f6441a79538232394e @@ -25248,24 +25372,24 @@ trackedFiles: pristine_git_object: 962ea486e17eabe13bcf068493a556110c944df8 src/lib/config.ts: id: 320761608fb3 - last_write_checksum: sha1:71fb90f45a76a90db859b46c3fa3aca5f16cbeac - pristine_git_object: 2878234ccdea8d9f1158027323fc9740cff33035 + last_write_checksum: sha1:8a3592b5ce1d87c44e5e5725159f6670324e918e + pristine_git_object: 94ea76e2191b542de08b57c9cf258ca46b96723f src/lib/dlv.ts: id: b1988214835a last_write_checksum: sha1:1dd3e3fbb4550c4bf31f5ef997faff355d6f3250 pristine_git_object: e81091f5e536f82739f71379b1fddc2d147c49e2 src/lib/encodings.ts: id: 3bd8ead98afd - last_write_checksum: sha1:d20c131976ab8ac68b22bdde2b7ed84b5b873922 - pristine_git_object: 31cd3733907afbee3641b9ab680ed417247a7d33 + last_write_checksum: sha1:d47614c415b37e092965c34cb668562195701004 + pristine_git_object: 2791d25bc4f7cf6eec17a65f899851e225fa3deb src/lib/env.ts: id: c52972a3b198 last_write_checksum: sha1:1429a7f41120f3fbc9b4319a6c9ac3ec6b5e8b14 pristine_git_object: 0c9674c6767924b55fdcca9dc5df7a033bf7e067 src/lib/files.ts: id: e5efa54fcb95 - last_write_checksum: sha1:d0f325f445b8d22e7d73baf052c585ec2dd24841 - pristine_git_object: 0344cd046d033f9e8a55de02f7935c5cec5dc30b + last_write_checksum: sha1:795c14026405d547bfc47012f7ad9666e530fa7f + pristine_git_object: 6ca6b37d35a12448da176ee2517cc036db12c81c src/lib/http.ts: id: 63a80782d37e last_write_checksum: sha1:797cbf16d3c7c4d62d3ba0eedb08617524938457 @@ -25280,8 +25404,8 @@ trackedFiles: pristine_git_object: d181f2937d4128afbe9b0327e0f81d1fa9c877b7 src/lib/matchers.ts: id: d54b2253b719 - last_write_checksum: sha1:474f46972db0416031db70a0ad73d7e1bcdd3ee9 - pristine_git_object: 62c6cfb1ba5f17fd5d49235a42b812102521f233 + last_write_checksum: sha1:310eb82c796148f74e77f4e283bbd9f193736333 + pristine_git_object: ed8da759102fdc4173601301f066733722c02601 src/lib/primitives.ts: id: 74859f750b28 last_write_checksum: sha1:987869fc54790b9c22e9182099103d6aa7c67016 @@ -25296,16 +25420,16 @@ trackedFiles: pristine_git_object: e06a37fe70b89c88b7a06d61df7100609b69ee50 src/lib/sdks.ts: id: 8a6d91f1218d - last_write_checksum: sha1:b6c80ebb5cc595d083dc70c53db5962606e92c43 - pristine_git_object: 49094e7cd517c41c72aee08b634065eafeebbb8f + last_write_checksum: sha1:8bb2179e9b626105423fe7f38d389641a3482559 + pristine_git_object: 7559ddfbb9bcba9ee098dca8b44e57abfb124310 src/lib/security.ts: id: 0502afa7922e - last_write_checksum: sha1:c338aaf4f6818c75b879c1ec27f96710cb3a7166 - pristine_git_object: 8d81329b15e1da4d4657c198f581a9d131f2f04f + last_write_checksum: sha1:77b84d4b72615543184908d17816c40e704589c1 + pristine_git_object: 19f72037ad67c0bab15ea19ae7ba48ec0b2863d3 src/lib/url.ts: id: b0057e24ed76 - last_write_checksum: sha1:d124050c7e755c0cce233b9e029afb584ff65201 - pristine_git_object: f3a8de6c021de59c991707946cd294596cae954d + last_write_checksum: sha1:3bceadd74bf0b31adf13eb06b7531077c3e07d65 + pristine_git_object: 79e7ce660b3732053e3adcbb5a4cdeb51496e8aa src/models/apierror.ts: id: ba8cfc219d76 last_write_checksum: sha1:890861e87dd1e663e8faf2f8577d15e487332dbf @@ -25342,6 +25466,10 @@ trackedFiles: id: 437c34e1ea3d last_write_checksum: sha1:70f786ceedf40ba311d0bf4f232e09b5808a9f5b pristine_git_object: a5a452a667644df85ace43b658f9cfa5020bb421 + src/models/collectionissue26.ts: + id: 302c9f7b9b77 + last_write_checksum: sha1:9eaefbe2aa9492e913be2172fc59ceb9a661f25a + pristine_git_object: 5297f6675cf103e1b42dde079a1b2df95ab693fe src/models/command.ts: id: 3e8c75f902bb last_write_checksum: sha1:557ef9ace4a13c9d08339acbf1eeb8fb20579612 @@ -25406,10 +25534,18 @@ trackedFiles: id: 888de25aa4b8 last_write_checksum: sha1:fe70edf58e6a580825ab470dd8855032bc0a4b98 pristine_git_object: 4316ba9a500d15b4899bbdf069124eae228af531 + src/models/createfirstpartydeploymentsessionresponse.ts: + id: 2f601c6e443a + last_write_checksum: sha1:0ce3e3b5222e250803e1ceabfb90c7083873e514 + pristine_git_object: 72f95fbaf05ddbf9fb76d2bc057f835bf593b6f7 src/models/createmanagerresponse.ts: id: c51c5ebd08da - last_write_checksum: sha1:851a8a031149a013959d543a3475cd59a630adae - pristine_git_object: 8916b53c11de38801b966f92a5b9327f3d1091c1 + last_write_checksum: sha1:2c369003520ea2ef860fa714d68cb540c667c026 + pristine_git_object: bcffd5e07834ae511611cad51d3547909e0a244a + src/models/createmanagerresponserouteunion4.ts: + id: 20ea46df758e + last_write_checksum: sha1:6f2489f4e3904d161a3608067b5034f0bf01efa6 + pristine_git_object: e155537245b9ab412ea214f7bed5c48b39df8d04 src/models/createreleaserequest.ts: id: 4ad3666dac5c last_write_checksum: sha1:4dcc5397d5cf6ede5fc2c31ba44afa6d6b0f2293 @@ -25418,6 +25554,10 @@ trackedFiles: id: 72fc21b3c242 last_write_checksum: sha1:0c1e825d284b20fbfcdbf2df601c0c82f00bbd4d pristine_git_object: 3739b99fcaf30db7fa90dcdc2e2c2f1bdaba78bf + src/models/datagcpcloudstorage.ts: + id: 835a11c5adb1 + last_write_checksum: sha1:899072bd099eff0a5552c120b57a6cdcf92897fc + pristine_git_object: 40629a97d01ef6afcb1c8b09d93bb05651227dc0 src/models/debugpackagepresignedurls.ts: id: 58fc121473e2 last_write_checksum: sha1:22a621946b520d04c3fd9dbc903e83508fe48221 @@ -25448,8 +25588,8 @@ trackedFiles: pristine_git_object: 9ebaaa9820ac80a522625b15c811dc7988f85952 src/models/deployment.ts: id: 26e71f87af0c - last_write_checksum: sha1:63a5323a713810593a13cf1481b9a125b41cc903 - pristine_git_object: c336c4caefb636d84cfa158d806bd6d4df926e23 + last_write_checksum: sha1:5cbe783a703aff984e031867ab0329ae6720c819 + pristine_git_object: ae88928bcebb00656a26dc090433dfc6e7f78b95 src/models/deploymentcomputeplan.ts: id: 4f61336f1204 last_write_checksum: sha1:d51b8a5fb8bab51fd1321ccab38354c697894bde @@ -25460,8 +25600,12 @@ trackedFiles: pristine_git_object: 334f4f7ee0e2d673ad22def9f6b1ba3829e496d8 src/models/deploymentdetailresponse.ts: id: f3d0b380668f - last_write_checksum: sha1:c4e14fdeb5d75403ce89475b5d2871965bf18355 - pristine_git_object: 4235167946f30ebf639db4f43603485acb7f7a23 + last_write_checksum: sha1:ba9706b6beaf1fbbf296526eb0db94341fbc7327 + pristine_git_object: 0190944c172aa9378d8b1f071fb1628465b10aac + src/models/deploymentdetailresponseoverrideaw.ts: + id: 6047d012d643 + last_write_checksum: sha1:2db8ace4dd51b283b1dfa0233af7e760d55982dc + pristine_git_object: 641a452a3a2489d4cf3f99545f22fefacacdd04c src/models/deploymentgroup.ts: id: ddf1c24537b3 last_write_checksum: sha1:b7cbce1d496465e2ebe5accc99d7f3fcd2e7c964 @@ -25488,8 +25632,12 @@ trackedFiles: pristine_git_object: 2a1c1723d9e81bfb89fac5647b3ee35ec8f2aba0 src/models/deploymentlistitemresponse.ts: id: 5ef7a740eac6 - last_write_checksum: sha1:af5dd6de7ecd01904cd3b9b1738974e6a51b6319 - pristine_git_object: 22a72651e0e4880706dff731a52b386e38b17134 + last_write_checksum: sha1:183830feea35ea1930e9e59ed9607d8d19695f90 + pristine_git_object: 7b6348a3dfcb1c6c3c3a4e79815f0888bd2efc94 + src/models/deploymentoverrideaw.ts: + id: 607490adbd0f + last_write_checksum: sha1:d8e3cf6ca32fd3e9d3cfa5d73a1613a3fb1f29cd + pristine_git_object: 023d53e3dfa1460b23ea3b5ff3889ed9fcb9ec97 src/models/deploymentportalaccentcolor.ts: id: b9150a2ead17 last_write_checksum: sha1:48c6b21d116efe69cd3260c68903cefe9bfc162a @@ -25616,8 +25764,8 @@ trackedFiles: pristine_git_object: db00022e05d55600252f401eb0e6ab46278e0b07 src/models/event.ts: id: 7d1800694a8b - last_write_checksum: sha1:d64a600dade5c9a383c9f79ecd9bbd13df61014a - pristine_git_object: 48fafe9d9e972f5f51ec545a7a01615639243ff3 + last_write_checksum: sha1:699ab9d021a8f2f43cef7da99e07d8170445ab42 + pristine_git_object: 12c91de02788e568abd08e566e77950d7d38fbf4 src/models/forwardimportrequest.ts: id: 2f3eeed18289 last_write_checksum: sha1:da0a8dc4f9abbafa698bbe990d943f6c754b7321 @@ -25654,6 +25802,10 @@ trackedFiles: id: 175dde68db6e last_write_checksum: sha1:6fdeefc96db0591630265d3faaca82459be95ba3 pristine_git_object: a952f514bbefc8bd73e0eabd261bdefa899c1668 + src/models/heartbeatstatus46.ts: + id: 310ba6e8e2b0 + last_write_checksum: sha1:dd4502cfefc7b910ba3d27e8923a0f9c65007cba + pristine_git_object: 31eea0753f6b48c660bf0d004df87b1129b87c4e src/models/importdeploymentrequest.ts: id: dfa13f26a3f0 last_write_checksum: sha1:457b9d2befa1580c8d0a5ceaf49012063e5b04e4 @@ -25672,8 +25824,8 @@ trackedFiles: pristine_git_object: e4da2499183a8d8a598128fd4710db6c7db2e892 src/models/index.ts: id: f93644b0f37e - last_write_checksum: sha1:109de4f9ca49e7600f01277792eb54382c1b9945 - pristine_git_object: a5f7dbfcbcef5890d9e46f952cb0e996901fefc5 + last_write_checksum: sha1:c4f9f529309d14ce9e6f11c3c6692ac19f3c8ffc + pristine_git_object: 9139216cd5e9481e41f5b85a31dfd44b8298fd38 src/models/kubernetesbaseplatform.ts: id: 772a228cf68d last_write_checksum: sha1:9c4ce4aa9f5eda395cc86daf24eda66661eaeaa0 @@ -25716,8 +25868,12 @@ trackedFiles: pristine_git_object: 31826f6990ff56898ba2c28f0cbba91f7fdff563 src/models/managerretryresponse.ts: id: c97f5890b391 - last_write_checksum: sha1:5c86490be2a7aa58e971b7beba7af4e06da6fa36 - pristine_git_object: f542c4aff95d905485334e308826a617fde08252 + last_write_checksum: sha1:20205ab1d371c617aada62200b5282259322994e + pristine_git_object: baba08b6f73d0980ea0c91d6a2132d23a1ca7f5c + src/models/managerretryresponseexposurecustom2.ts: + id: 548f62e94dcf + last_write_checksum: sha1:26ddacd6f36e54e396b8c2f7640dc480c9e8f813 + pristine_git_object: abe6ce42fd17c68d0077d5b63fdabb7e10244eff src/models/managerrole.ts: id: 3cb93e346cd6 last_write_checksum: sha1:a14a1f047e03086b4207409a66ba6203d748171f @@ -25734,6 +25890,10 @@ trackedFiles: id: c8003e947a48 last_write_checksum: sha1:716f3997ba4b9304909236dd795ebc64b04ef075 pristine_git_object: 36c61ac6fad40e1e2e90f7c1bfd834827725b6e6 + src/models/memoryunion4.ts: + id: 3eb84a65a7f5 + last_write_checksum: sha1:67e86a9dc6e7379f5db30de318732ccc6d929f50 + pristine_git_object: ea076a1aa186204be5c853eadeeee18974cfc05d src/models/newdeploymentrequest.ts: id: e89206c57a99 last_write_checksum: sha1:e2a65d9828a8b3e943d927f0a18919c804337d60 @@ -25754,6 +25914,10 @@ trackedFiles: id: 858e6ced089c last_write_checksum: sha1:b0eca3f80da0687552226a5d04fb73c14d3ad561 pristine_git_object: 34890debdf4895cab63529d441a82738f82d5aa5 + src/models/operations/cpuunion10.ts: + id: e06dfca282bf + last_write_checksum: sha1:b69106981a1b1b186ba00f3bee0f5bdb44b566a9 + pristine_git_object: ea7a096f42a30f6edb7fea1ed8ae0b5528330806 src/models/operations/createapikey.ts: id: 083db57ce11b last_write_checksum: sha1:509a11c092af3e66e92b9159de1831ab40353bbb @@ -25790,6 +25954,10 @@ trackedFiles: id: 6908f03e0f19 last_write_checksum: sha1:d20cd1544f76f65742ae11ad4063ab5b5b7bfdaf pristine_git_object: 32236c4e83e9017a9c42353af32724226095efb7 + src/models/operations/createfirstpartydeploymentsession.ts: + id: 1d7428252ca2 + last_write_checksum: sha1:4b9d318f9640ed461b70bd54596f2ec6d7ac1b9d + pristine_git_object: cf959f740080c5707baa6a1c213687481ec39d83 src/models/operations/createmanager.ts: id: fbb187e1aa08 last_write_checksum: sha1:753d340eef0086a74f2948fe1448d815b3bafa2c @@ -25938,10 +26106,10 @@ trackedFiles: id: 14cdd32ee38f last_write_checksum: sha1:4cf3d8d3cca949285ceafa4187272c3c42cf9a9d pristine_git_object: 4f2edd99c25ed8cb5cfe69eaffe32727b18da120 - src/models/operations/getresourcedeploymentdetail.ts: - id: 61664b1aea1b - last_write_checksum: sha1:bd4f72ec0ba2e5f80a12cb1a81aeb2c48e161d02 - pristine_git_object: 13501a118a1c5dfe2aa6edfebd27d4e040690f20 + src/models/operations/getresourcedeploymentdetailresponse.ts: + id: 73f623584c20 + last_write_checksum: sha1:91ffa3f95af6c4ca573b11ee0cff3e0c244250cc + pristine_git_object: 2c98a0f7f86399558ea8f88dda8fa81804def547 src/models/operations/getsetupregistrationoperation.ts: id: c1cf70012dca last_write_checksum: sha1:db4548f689c838e85ca3bb1c4c306393ee1150e4 @@ -25954,14 +26122,18 @@ trackedFiles: id: b5e687d1b4ad last_write_checksum: sha1:f4f4f5b711311165bfc0a33d1431b5da54a2fc38 pristine_git_object: df7207c640224f8a0dde3626e97350f9c69559b3 + src/models/operations/health42.ts: + id: "750364475234" + last_write_checksum: sha1:2a1745bf8e9ebabc1f96f02f84a9957667b3307c + pristine_git_object: 7ab9ebef83a727cf6369dce3b72c4444c832aaa5 src/models/operations/importdeployment.ts: id: fa8d08957b7b last_write_checksum: sha1:a363fba2541fa3c95200b05fabffc8f0f88e9b0f pristine_git_object: b294e5231eccecca873a77925ea6811f8494d13e src/models/operations/index.ts: id: 0d9ffaf774d2 - last_write_checksum: sha1:f7ffe72c0927f0d6639cefce86bc2073573612ac - pristine_git_object: 41a609853dcf8e5ce75360c195499c5150a4411d + last_write_checksum: sha1:3e9f7d5a0486ef087f411d174d067b359d91f84a + pristine_git_object: d088b924b82d41910ac590eb3f86647f2066740f src/models/operations/listapikeys.ts: id: f6a5b994cd87 last_write_checksum: sha1:c880049a7a615a11ac10318062e5758af2bee946 @@ -26066,6 +26238,10 @@ trackedFiles: id: 04f9b5b78c0f last_write_checksum: sha1:f5372e1d20c60f1c822c35e3324342886d3b91e3 pristine_git_object: 318f0fc61894ad07e4bd99110cdab7b4907759be + src/models/operations/memory3.ts: + id: d172490992ee + last_write_checksum: sha1:2c00bef6bfeca86f20f4c5f921009dfaaa62261b + pristine_git_object: 9de34845ffd4a8112336b26b7e601677e90b60dd src/models/operations/pindeploymentrelease.ts: id: 721e20db4eeb last_write_checksum: sha1:fb8f61ae3b5769949b338de5d70fb86bf2d82a56 @@ -26094,6 +26270,10 @@ trackedFiles: id: 3fc4f7b99926 last_write_checksum: sha1:1cdde92e490c34bea5758e23976849a81eac1e59 pristine_git_object: c4e2e785a0330e3fffae1c24450283459ee09ccf + src/models/operations/rejoindeployment.ts: + id: 9af825dc2815 + last_write_checksum: sha1:c52fdc63bd32ab682f5e9ce9600583af900a89ad + pristine_git_object: 67a4c5461288c2ccda8624979308078a8f09bfa4 src/models/operations/removeworkspacemember.ts: id: 9a1c81927280 last_write_checksum: sha1:5ae3dc4659eeb1f07cba42d907f31c57e2fe2c1b @@ -26126,6 +26306,14 @@ trackedFiles: id: a50bffb0aa79 last_write_checksum: sha1:a664d74d49f30cb03c5b2b5ca4821e5f87f86e6c pristine_git_object: dbda4f2627e6b49ea9f93f20b5f4433e718dba08 + src/models/operations/setdeploymenttargetagentversion.ts: + id: 5b163f22c2e8 + last_write_checksum: sha1:a44137218906c18420c7425b506675da47714b82 + pristine_git_object: f5911e24f8a8ece37de8748ae444e8587a3cd23f + src/models/operations/source7.ts: + id: c72f15d383e9 + last_write_checksum: sha1:b363c1c5c9fdf17b06d276c220997a4327ac28f2 + pristine_git_object: 540dbc61bb150bf6e64e5dd9ca02ec92444c1bc7 src/models/operations/syncacquire.ts: id: 4280d0a7aa28 last_write_checksum: sha1:adfe6afc59d43c1dfcee3aea4eb235e0a30d6fd5 @@ -26204,8 +26392,12 @@ trackedFiles: pristine_git_object: 6184493d15685bb7fe53f47ccf76a1608e1cf3c1 src/models/persistimporteddeploymentrequest.ts: id: c11c3fd39cc0 - last_write_checksum: sha1:e8c9c55a0cb38ec1d5554a1f9dd2ac8448c76f8a - pristine_git_object: 6db3650aa9d4928dcff5a5f0dec9003150b37d5d + last_write_checksum: sha1:5b696908d1fba13bf4122858d0bba0487bcba945 + pristine_git_object: 0cb80058bf337191a2a354a4976eddc7822424b8 + src/models/persistimporteddeploymentrequestoverrideunion.ts: + id: e939ff72a06b + last_write_checksum: sha1:cc8b6a016a28f87d5c198aab20d936922e8b7694 + pristine_git_object: 64f8290eed55b78cb7f21dda55debee7aaf91ce8 src/models/pinreleaserequest.ts: id: 4a22091eb2be last_write_checksum: sha1:f053be70eb0d7b043501590f6adc8fa700c4253c @@ -26232,8 +26424,8 @@ trackedFiles: pristine_git_object: 85e886a7228d49032bf7f4282b8ee1c0e4f3738c src/models/projectgcpoauthprovider.ts: id: fab70ede1870 - last_write_checksum: sha1:561908dd22cf0616db036b27f963595b7d339093 - pristine_git_object: 7436ccb9b2ea7cbf64c203c17bc2a0a0d469db92 + last_write_checksum: sha1:fa6b2162174bb76a8d89e13ef5cb893d4eb86dab + pristine_git_object: e1aab59ce8727573e616780ad55bfc860bec13cd src/models/projectlistitemresponse.ts: id: b07ac2938422 last_write_checksum: sha1:a7dd886a8196ede906f5b6a05471ba0c54cf5aad @@ -26250,6 +26442,14 @@ trackedFiles: id: 94b9ced20495 last_write_checksum: sha1:585bd5c77dc2a91da7d1f34239d89c4f52bd186f pristine_git_object: 577726343ff8d938ab4bee62d8670c2296e9c3a7 + src/models/rejoindeploymentrequest.ts: + id: 668c1ba06bfe + last_write_checksum: sha1:8ea1af69ecc645801a4e89f2341e5c095c2e68a4 + pristine_git_object: 088f509e948a659e67847d4b3f0ffb1b0e0d03e4 + src/models/rejoindeploymentresponse.ts: + id: 148cae8e5ccd + last_write_checksum: sha1:de265f76419fdd70c2a17a6063cd88d1f795d038 + pristine_git_object: ec719c233e4c7c2cc245fa21c04847de326b2044 src/models/release.ts: id: 4cd61360fa2e last_write_checksum: sha1:384695f8111c892630cf009b03ef665309e1e0ab @@ -26258,6 +26458,10 @@ trackedFiles: id: cd9c303547e9 last_write_checksum: sha1:518c14b2bede8bb541204eea1eaf76b3456282f1 pristine_git_object: 403f3d9c56c6e40fc91b738f2306b11742897334 + src/models/releaseinforesources.ts: + id: e8a8ebec2dc3 + last_write_checksum: sha1:5a0640f9fa7ec7ea86866ae17906184128efae18 + pristine_git_object: a69c13daf72c0ae128cf7790da48a7967dcb5cd2 src/models/releaselistitemresponse.ts: id: f747ff5a66e6 last_write_checksum: sha1:1b1f4cb029e99306aef9866a4c7fe90da6d4c4a4 @@ -26294,6 +26498,18 @@ trackedFiles: id: 0c77cee2b1da last_write_checksum: sha1:27e6afdc835d18b9d67bfc75a39ada1886476e5b pristine_git_object: 0c765a72bef5b1ce1f8f450a23e554b8bfe655fb + src/models/setfirstpartydeploymentinputsrequest.ts: + id: 3aade69fc633 + last_write_checksum: sha1:bf4f094e0d370d29cf21da31606e345f574306c2 + pristine_git_object: d9bc04182f0ca5db1372e69f8fdd9e1d2a7bd68e + src/models/setfirstpartydeploymentinputsresponse.ts: + id: 6a3b32c05838 + last_write_checksum: sha1:1cc6262841b6662981775b4787073a8690fbb725 + pristine_git_object: 69d9fa083a9586d7ae70f9fa70cca56402780aab + src/models/settargetagentversionrequest.ts: + id: 38769480ba6f + last_write_checksum: sha1:c0b0755e0fa2274217ce7d70cc5aaf7d5d0c0d44 + pristine_git_object: 74be90c2bc20dbe0949da1ec05094c58f48762aa src/models/setupfingerprintinfo.ts: id: 7a4c468ef208 last_write_checksum: sha1:92dd363b982f072f03144102190be5c2b6e140af @@ -26326,6 +26542,10 @@ trackedFiles: id: 6a7717d075b6 last_write_checksum: sha1:e98eef0d4c67b062d7efa2ddb7a4385f46f2a2ae pristine_git_object: 0c1d2a3bab6db14982ba51a445d492403a60f97a + src/models/statuslifecycle18.ts: + id: 87291b48361d + last_write_checksum: sha1:e06f4e6b1ed5e02d5de7ad041b219da8eaf3f2c6 + pristine_git_object: 74d3702d472b3edab2465a8780c22376708c3bc5 src/models/subject.ts: id: afba17dcd51a last_write_checksum: sha1:d175e2f3d28dcbc56d5616d4dc90fef1b8b6c3e3 @@ -26344,24 +26564,68 @@ trackedFiles: pristine_git_object: dd36484075475276bcd61b9e9e0fa27056402503 src/models/syncacquireresponse.ts: id: ab1ff9f97674 - last_write_checksum: sha1:48684b7db1107bcb5bf5b53d6d33193186388cef - pristine_git_object: 63494ae3c4cb7e32035d9f9380a93e38c7b58d66 + last_write_checksum: sha1:db90402a758d0839e295f39fcda15ee20e5a6788 + pristine_git_object: fa0be04623a505e1bac64e51b05e77330607b571 + src/models/syncacquireresponsekeyprefixsecretref2.ts: + id: d325a02dd002 + last_write_checksum: sha1:4e7159f4aa563aae8098b5420232717ca4ef965f + pristine_git_object: 4497db5c7e5b40ff6846977c1e2f5ce49a2def2f + src/models/syncacquireresponsepreparedstackoverridegcpstack.ts: + id: 601df9d64497 + last_write_checksum: sha1:d8c507ada3bb982175588762a2436721b6f3169e + pristine_git_object: b06e008fba2e464bea344cdfb1f463569ba1f909 + src/models/syncacquireresponseproviderazureapplicationgatewayforcontainersenum3.ts: + id: 311d3057cfdf + last_write_checksum: sha1:b88f71b2cf9b6f9c8fa9d329bd53017e04409b17 + pristine_git_object: b6bdcfbf995bb3b8ce61d48e6ef48cbd4c7d325b + src/models/syncacquireresponsetargetreleasemanagement1.ts: + id: 8f95253ff565 + last_write_checksum: sha1:6b56d6024f14f4a41318ac399d525a2078933456 + pristine_git_object: 23532b3f7e56dc9d95829122d68ca4bf232da262 src/models/synclistrequest.ts: id: bf1d0d49da35 last_write_checksum: sha1:7c3fbe1b6b0451061b0291f2fe2cd79c81f3782e pristine_git_object: 1c6a1f32548f40ba3db70d8c3b0e90029526bcbe src/models/synclistresponse.ts: id: 9c42028a90f9 - last_write_checksum: sha1:6fdbebe2864180237c6e68d05c52f84aab896aa9 - pristine_git_object: 4c032e51078391e3a34f6299599d17ed3bb8690c + last_write_checksum: sha1:b3e7dcdcb3ec2758fedbcfbf79b2e21eca292904 + pristine_git_object: 11e1f0d2c841a6690dbf30cb284c29efd51e8116 + src/models/synclistresponseoverrideaw.ts: + id: 21aaafc802a1 + last_write_checksum: sha1:0feb176269d03085cbafd825a845455e31f79002 + pristine_git_object: 57615fe005f62833f3efc5544e462f126c455251 src/models/syncreconcilerequest.ts: id: 8881baf7e7c9 - last_write_checksum: sha1:febd10fb28117067defa6976637179c323e8dd4e - pristine_git_object: 7f18298cdf867cdf451d853dc5bfeea7ae3665a3 + last_write_checksum: sha1:f323d766d725ff4c2e1e2ccc6228f65e4c0905b1 + pristine_git_object: 0745228b17736f74915a93185acfedc92de29c3e + src/models/syncreconcilerequestpreparedstackoverridegcpstack.ts: + id: 5fe1a32bb4da + last_write_checksum: sha1:75e940cecd50929dbe0d0be15bff63da0b606240 + pristine_git_object: f9695243f8b0d0c0d2866bb7366a7baebc886a6d + src/models/syncreconcilerequesttargetreleasemanagement1.ts: + id: 84c42fb9b50b + last_write_checksum: sha1:4b9c9231e8777b5e7aad5dcc1d7b0b5ef6a7d8a6 + pristine_git_object: 56ab00f0c5ca0415bf75ee94ee262201e4ca6500 src/models/syncreconcileresponse.ts: id: 8fc1acf0281a - last_write_checksum: sha1:4cf9b3d4bfa1cf78131a539e13550703db1e9e57 - pristine_git_object: 86d4fc76ceb4b0f832451a94f9ff266799b09c0f + last_write_checksum: sha1:e81c6da9a5c46bdcfb3a7906fb9ff9bfff9129f2 + pristine_git_object: a6d385fe20709f1443ad5436c7111caeb49cc0e3 + src/models/syncreconcileresponsekeyprefixsecretref2.ts: + id: 2146f8be8919 + last_write_checksum: sha1:17d00bf35aa4c0e4885071d705b5068192f68687 + pristine_git_object: 0721260c086fcdaae124cc7b7bbb06c8bcfc21ac + src/models/syncreconcileresponsepreparedstackoverridegcpstack.ts: + id: 43d0e8266223 + last_write_checksum: sha1:7274f0dfb4fe9faac6c315f1e39bb600abf7e6b5 + pristine_git_object: 6f01bcbbd5d9ec8c6c4980a143430fdadf33ffef + src/models/syncreconcileresponseproviderazureapplicationgatewayforcontainersenum3.ts: + id: 1688664003f5 + last_write_checksum: sha1:fce713967d0b25384c65529111bca2e25e825dc9 + pristine_git_object: 60311af079cc09dd849f37499265f4b11363d947 + src/models/syncreconcileresponsetargetreleasemanagement1.ts: + id: 6907101dda65 + last_write_checksum: sha1:d8de484fca6cb00e124859a41f421048bfa68189 + pristine_git_object: 04d5359b5f9c219181a5257463f8787d3402e95d src/models/syncreleaserequest.ts: id: 2543a00820b6 last_write_checksum: sha1:83dee1c83e3864e639578cf54c3818c2352fd277 @@ -26472,12 +26736,12 @@ trackedFiles: pristine_git_object: 65c560e796087c8b49528a38a952aaab78f8de9d src/sdk/deploymentgroups.ts: id: fee2f374fda2 - last_write_checksum: sha1:2faaf6928d30ae1b4c7ef8b9cfef1b121f0fe18e - pristine_git_object: f57e2d45082d021ba059a11eb71d9457764fc64f + last_write_checksum: sha1:13b614c9a80de0204d135ac1a3f760725962f6ee + pristine_git_object: a2ff810a314ce5549a2b19e69f163af4e1bfc4e5 src/sdk/deployments.ts: id: 80d6fb28a717 - last_write_checksum: sha1:d2c6deec5c38142143a905eccdb3593a912ad84a - pristine_git_object: 493fe566775ae4bff7f576ad6ed55c8004a85e63 + last_write_checksum: sha1:28d7c2a872227cf3797694af32d1473775296b8d + pristine_git_object: 4cdef8293e6f6bd6d1209e837f20be3b5e324276 src/sdk/domains.ts: id: 70955e5c763b last_write_checksum: sha1:e2a26c6914ddb5bfd05e3ae866f979df4cc7ed6b @@ -26572,8 +26836,8 @@ trackedFiles: pristine_git_object: b7a2a13f3dff50663429df24ae2f55b647ff1084 tsconfig.json: id: 61ebb9fd6e8c - last_write_checksum: sha1:2e344714e2df3cf6ecf3f8c8df0dd773fccdc1e4 - pristine_git_object: feac755105182e970c7a41d712f0de91768a1a08 + last_write_checksum: sha1:4f9c4daf3281a9be06591b2814e5bbcf98b5c803 + pristine_git_object: e6cd950ad724815ee1ed48ef2e52389cbd3a9143 examples: updateUserProfile: speakeasy-default-update-user-profile: @@ -27687,7 +27951,7 @@ examples: application/json: {"managerId": "mgr_enxscjrqiiu2lrc672hwwuc5", "session": "", "deploymentIds": ["dep_0c29fq4a2yjb7kx3smwdgxlc"]} responses: "200": - application/json: {"deployments": [{"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "projectId": "", "current": {"platform": "kubernetes", "protocolVersion": 670986, "status": "provisioning-failed"}, "config": {"environmentVariables": {"createdAt": "1731491596603", "hash": "", "variables": [{"name": "", "type": "plain", "value": ""}]}}}], "failures": [{"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "projectId": "", "error": {"code": "", "message": "", "retryable": false, "internal": true}}]} + application/json: {"deployments": [{"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "projectId": "", "deploymentGroupId": "dg_r27ict8c7vcgsumpj90ackf7b", "current": {"platform": "kubernetes", "protocolVersion": 670986, "status": "provisioning-failed"}, "config": {"environmentVariables": {"createdAt": "1731491596603", "hash": "", "variables": [{"name": "", "type": "plain", "value": ""}]}}}], "failures": [{"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "projectId": "", "error": {"code": "", "message": "", "retryable": false, "internal": true}}]} "400": application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": @@ -28355,4 +28619,51 @@ examples: application/json: {"code": "", "message": "", "retryable": false, "internal": true} "500": application/json: {"code": "", "message": "", "retryable": false, "internal": true} + createFirstPartyDeploymentSession: + speakeasy-default-create-first-party-deployment-session: + parameters: + path: + id: "dg_r27ict8c7vcgsumpj90ackf7b" + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"token": ""} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + rejoinDeployment: + speakeasy-default-rejoin-deployment: + parameters: + query: + workspace: "my-workspace" + responses: + "200": + application/json: {"deploymentId": "dep_0c29fq4a2yjb7kx3smwdgxlc", "token": ""} + "403": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + setFirstPartyDeploymentInputs: + speakeasy-default-set-first-party-deployment-inputs: + responses: + "200": + application/json: {"ok": true} + "400": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": true} + setDeploymentTargetAgentVersion: + speakeasy-default-set-deployment-target-agent-version: + parameters: + path: + id: "dep_0c29fq4a2yjb7kx3smwdgxlc" + query: + workspace: "my-workspace" + responses: + "202": + application/json: {"message": ""} + "404": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} + "500": + application/json: {"code": "", "message": "", "retryable": false, "internal": false} examplesVersion: 1.0.2 diff --git a/client-sdks/platform/typescript/.speakeasy/gen.yaml b/client-sdks/platform/typescript/.speakeasy/gen.yaml index b2d11403d..ea4e301a4 100644 --- a/client-sdks/platform/typescript/.speakeasy/gen.yaml +++ b/client-sdks/platform/typescript/.speakeasy/gen.yaml @@ -16,6 +16,8 @@ generation: requestResponseComponentNamesFeb2024: true securityFeb2025: true sharedErrorComponentsApr2025: true + sharedNestedComponentsJan2026: false + nameOverrideFeb2026: false auth: oAuth2ClientCredentialsEnabled: false oAuth2PasswordEnabled: false @@ -25,13 +27,14 @@ generation: schemas: allOfMergeStrategy: shallowMerge requestBodyFieldName: "" + versioningStrategy: automatic persistentEdits: {} tests: generateTests: false generateNewTests: true skipResponseBodyAssertions: false typescript: - version: 1.0.185 + version: 1.1.0 acceptHeaderEnum: true additionalDependencies: dependencies: {} @@ -57,6 +60,8 @@ typescript: enumFormat: union envVarPrefix: ALIEN exportZodModelNamespace: false + fixEnumNameSanitization: false + flatAdditionalProperties: false flattenGlobalSecurity: true flatteningOrder: parameters-first formStringArrayEncodeMode: encoded-string @@ -75,6 +80,7 @@ typescript: inputModelSuffix: input jsonpath: rfc9535 laxMode: strict + legacyFileNaming: true maxMethodParams: 0 methodArguments: infer-optional-args modelPropertyCasing: camel @@ -83,10 +89,13 @@ typescript: outputModelSuffix: output packageName: '@alienplatform/platform-api' preApplyUnionDiscriminators: true + preserveModelFieldNames: false responseFormat: flat sseFlatResponse: true templateVersion: v2 unionStrategy: left-to-right usageSDKInitImports: [] useIndexModules: true + useOxlint: false + useTsgo: false zodVersion: v4 diff --git a/client-sdks/platform/typescript/FUNCTIONS.md b/client-sdks/platform/typescript/FUNCTIONS.md index 2f62253f5..c3f3cce6c 100644 --- a/client-sdks/platform/typescript/FUNCTIONS.md +++ b/client-sdks/platform/typescript/FUNCTIONS.md @@ -1,11 +1,11 @@ # Standalone Functions > [!NOTE] -> This section is useful if you are using a bundler and targetting browsers and +> This section is useful if you are using a bundler and targeting browsers and > runtimes where the size of an application affects performance and load times. Every method in this SDK is also available as a standalone function. This -alternative API is suitable when targetting the browser or serverless runtimes +alternative API is suitable when targeting the browser or serverless runtimes and using a bundler to build your application since all unused functionality will be tree-shaken away. This includes code for unused methods, Zod schemas, encoding helpers and response handlers. The result is dramatically smaller diff --git a/client-sdks/platform/typescript/README.md b/client-sdks/platform/typescript/README.md index f388f54db..9f0c3d8b2 100644 --- a/client-sdks/platform/typescript/README.md +++ b/client-sdks/platform/typescript/README.md @@ -196,6 +196,7 @@ run(); * [deleteDeploymentGroup](docs/sdks/deploymentgroups/README.md#deletedeploymentgroup) - Delete deployment group * [updateDeploymentGroup](docs/sdks/deploymentgroups/README.md#updatedeploymentgroup) - Update deployment group * [createDeploymentGroupToken](docs/sdks/deploymentgroups/README.md#createdeploymentgrouptoken) - Create deployment group token +* [createFirstPartyDeploymentSession](docs/sdks/deploymentgroups/README.md#createfirstpartydeploymentsession) - Create first-party deployment session ### [Deployments](docs/sdks/deployments/README.md) @@ -206,12 +207,15 @@ run(); * [listFilterDeploymentGroups](docs/sdks/deployments/README.md#listfilterdeploymentgroups) - List deployment groups with deployment counts. Used for filter dropdowns. * [get](docs/sdks/deployments/README.md#get) - Retrieve a deployment by ID. * [getInfo](docs/sdks/deployments/README.md#getinfo) - Get deployment connection information including command endpoint and resource URLs. +* [rejoin](docs/sdks/deployments/README.md#rejoin) - Re-acquire a deployment-scoped sync token for an existing deployment by name. Used by the agent when its persistent state was wiped (e.g. emptyDir on pod restart) and `/v1/initialize` would hit a DEPLOYMENT_NAME_ALREADY_EXISTS 409. Deployment-group tokens only. * [import](docs/sdks/deployments/README.md#import) - Import a deployment from resolved setup infrastructure such as CloudFormation, Terraform, or Helm. +* [setFirstPartyDeploymentInputs](docs/sdks/deployments/README.md#setfirstpartydeploymentinputs) - Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them. * [createSetupRegistrationOperation](docs/sdks/deployments/README.md#createsetupregistrationoperation) - Start a durable setup registration operation for CloudFormation, Terraform, or Helm. * [getSetupRegistrationOperation](docs/sdks/deployments/README.md#getsetupregistrationoperation) - Get setup registration operation status. * [delete](docs/sdks/deployments/README.md#delete) - Delete, detach, or forget a deployment by ID. * [redeploy](docs/sdks/deployments/README.md#redeploy) - Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending. * [pinRelease](docs/sdks/deployments/README.md#pinrelease) - Pin or unpin deployment to a specific release. Only works for running deployments. Controller will automatically trigger update to target release. +* [setTargetAgentVersion](docs/sdks/deployments/README.md#settargetagentversion) - Set (or clear) the agent version this deployment should run. The manager compares this against the agent's reported version on each /v1/sync; when they differ, it emits an agent_target in the response so the agent triggers the upgrade itself. Pass null/omit to clear. * [retry](docs/sdks/deployments/README.md#retry) - Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point. * [updateEnvironmentVariables](docs/sdks/deployments/README.md#updateenvironmentvariables) - Update a deployment's environment variables. If the deployment is running and not locked, the status will be changed to update-pending to trigger a deployment. * [createToken](docs/sdks/deployments/README.md#createtoken) - Create a deployment token (deployment-scoped API key). The deployment must exist before creating a token. @@ -360,6 +364,7 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`deploymentGetInfo`](docs/sdks/deployment/README.md#getinfo) - Get deployment information for the deployment portal. Accepts both deployment-scoped and deployment-group-scoped API keys. Returns project information, package status/outputs, and either deployment or deployment group details depending on the token type. Poll this endpoint to check if packages are ready. - [`deploymentGroupsCreateDeploymentGroup`](docs/sdks/deploymentgroups/README.md#createdeploymentgroup) - Create a new deployment group - [`deploymentGroupsCreateDeploymentGroupToken`](docs/sdks/deploymentgroups/README.md#createdeploymentgrouptoken) - Create deployment group token +- [`deploymentGroupsCreateFirstPartyDeploymentSession`](docs/sdks/deploymentgroups/README.md#createfirstpartydeploymentsession) - Create first-party deployment session - [`deploymentGroupsDeleteDeploymentGroup`](docs/sdks/deploymentgroups/README.md#deletedeploymentgroup) - Delete deployment group - [`deploymentGroupsGetDeploymentGroup`](docs/sdks/deploymentgroups/README.md#getdeploymentgroup) - Get deployment group details - [`deploymentGroupsListDeploymentGroups`](docs/sdks/deploymentgroups/README.md#listdeploymentgroups) - List deployment groups @@ -380,7 +385,10 @@ To read more about standalone functions, check [FUNCTIONS.md](./FUNCTIONS.md). - [`deploymentsListFilterEnvironments`](docs/sdks/deployments/README.md#listfilterenvironments) - List distinct effective environments used by deployments. Used for filter dropdowns. - [`deploymentsPinRelease`](docs/sdks/deployments/README.md#pinrelease) - Pin or unpin deployment to a specific release. Only works for running deployments. Controller will automatically trigger update to target release. - [`deploymentsRedeploy`](docs/sdks/deployments/README.md#redeploy) - Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending. +- [`deploymentsRejoin`](docs/sdks/deployments/README.md#rejoin) - Re-acquire a deployment-scoped sync token for an existing deployment by name. Used by the agent when its persistent state was wiped (e.g. emptyDir on pod restart) and `/v1/initialize` would hit a DEPLOYMENT_NAME_ALREADY_EXISTS 409. Deployment-group tokens only. - [`deploymentsRetry`](docs/sdks/deployments/README.md#retry) - Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point. +- [`deploymentsSetFirstPartyDeploymentInputs`](docs/sdks/deployments/README.md#setfirstpartydeploymentinputs) - Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them. +- [`deploymentsSetTargetAgentVersion`](docs/sdks/deployments/README.md#settargetagentversion) - Set (or clear) the agent version this deployment should run. The manager compares this against the agent's reported version on each /v1/sync; when they differ, it emits an agent_target in the response so the agent triggers the upgrade itself. Pass null/omit to clear. - [`deploymentsUpdateEnvironmentVariables`](docs/sdks/deployments/README.md#updateenvironmentvariables) - Update a deployment's environment variables. If the deployment is running and not locked, the status will be changed to update-pending to trigger a deployment. - [`domainsCreate`](docs/sdks/domains/README.md#create) - Create a workspace domain and optional initial endpoints. - [`domainsCreateEndpoint`](docs/sdks/domains/README.md#createendpoint) - Create an endpoint under a workspace domain. @@ -634,19 +642,23 @@ The `HTTPClient` constructor takes an optional `fetcher` argument that can be used to integrate a third-party HTTP client or when writing tests to mock out the HTTP client and feed in fixtures. -The following example shows how to use the `"beforeRequest"` hook to to add a -custom header and a timeout to requests and how to use the `"requestError"` hook -to log errors: +The following example shows how to: +- route requests through a proxy server using [undici](https://www.npmjs.com/package/undici)'s ProxyAgent +- use the `"beforeRequest"` hook to add a custom header and a timeout to requests +- use the `"requestError"` hook to log errors ```typescript import { Alien } from "@alienplatform/platform-api"; +import { ProxyAgent } from "undici"; import { HTTPClient } from "@alienplatform/platform-api/lib/http"; +const dispatcher = new ProxyAgent("http://proxy.example.com:8080"); + const httpClient = new HTTPClient({ - // fetcher takes a function that has the same signature as native `fetch`. - fetcher: (request) => { - return fetch(request); - } + // 'fetcher' takes a function that has the same signature as native 'fetch'. + fetcher: (input, init) => + // 'dispatcher' is specific to undici and not part of the standard Fetch API. + fetch(input, { ...init, dispatcher } as RequestInit), }); httpClient.addHook("beforeRequest", (request) => { diff --git a/client-sdks/platform/typescript/docs/models/createfirstpartydeploymentsessionresponse.md b/client-sdks/platform/typescript/docs/models/createfirstpartydeploymentsessionresponse.md new file mode 100644 index 000000000..e8aab6a07 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/createfirstpartydeploymentsessionresponse.md @@ -0,0 +1,17 @@ +# CreateFirstPartyDeploymentSessionResponse + +## Example Usage + +```typescript +import { CreateFirstPartyDeploymentSessionResponse } from "@alienplatform/platform-api/models"; + +let value: CreateFirstPartyDeploymentSessionResponse = { + token: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `token` | *string* | :heavy_check_mark: | The deployment-group session token | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/datadeploymentrejoined.md b/client-sdks/platform/typescript/docs/models/datadeploymentrejoined.md new file mode 100644 index 000000000..172300dff --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/datadeploymentrejoined.md @@ -0,0 +1,21 @@ +# DataDeploymentRejoined + +## Example Usage + +```typescript +import { DataDeploymentRejoined } from "@alienplatform/platform-api/models"; + +let value: DataDeploymentRejoined = { + deploymentGroupId: "", + deploymentId: "", + type: "DeploymentRejoined", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `deploymentGroupId` | *string* | :heavy_check_mark: | ID of the deployment group that authorized the rejoin | +| `deploymentId` | *string* | :heavy_check_mark: | ID of the deployment whose agent rejoined | +| `type` | *"DeploymentRejoined"* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deployment.md b/client-sdks/platform/typescript/docs/models/deployment.md index 7f91120ba..01b1074e6 100644 --- a/client-sdks/platform/typescript/docs/models/deployment.md +++ b/client-sdks/platform/typescript/docs/models/deployment.md @@ -27,38 +27,44 @@ let value: Deployment = { ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | -| `name` | *string* | :heavy_check_mark: | Deployment name. | acme-prod | -| `publicSubdomain` | *string* | :heavy_minus_sign: | Public subdomain for auto-generated domains | | -| `status` | [models.DeploymentStatus](../models/deploymentstatus.md) | :heavy_check_mark: | Deployment status in the deployment lifecycle | | -| `projectId` | *string* | :heavy_check_mark: | Unique identifier for the project. | prj_mcytp6z3j91f7tn5ryqsfwtr | -| `platform` | [models.DeploymentPlatform](../models/deploymentplatform.md) | :heavy_check_mark: | Target platform for the deployment | | -| `basePlatform` | [models.DeploymentBasePlatform](../models/deploymentbaseplatform.md) | :heavy_minus_sign: | Underlying cloud platform for Kubernetes deployments. | | -| `region` | *string* | :heavy_minus_sign: | Cloud region or location for the deployment. | | -| `deploymentProtocolVersion` | *number* | :heavy_check_mark: | DeploymentState protocol version owned by the runtime/manager | | -| `deploymentGroupId` | *string* | :heavy_check_mark: | ID of deployment group this deployment belongs to | dg_r27ict8c7vcgsumpj90ackf7b | -| `environmentInfo` | *models.DeploymentEnvironmentInfoUnion* | :heavy_minus_sign: | Cloud environment information | | -| `stackSettings` | [models.DeploymentStackSettings](../models/deploymentstacksettings.md) | :heavy_check_mark: | User-provided configuration (network, deployment model, approvals) | | -| `stackState` | [models.DeploymentStackState](../models/deploymentstackstate.md) | :heavy_minus_sign: | State of infrastructure components managed by this deployment | | -| `runtimeMetadata` | [models.DeploymentRuntimeMetadata](../models/deploymentruntimemetadata.md) | :heavy_minus_sign: | Runtime metadata for deployment state persistence | | -| `currentReleaseId` | *string* | :heavy_minus_sign: | ID of the currently deployed release (actual state) | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `desiredReleaseId` | *string* | :heavy_minus_sign: | ID of the desired release for deployment/update (desired state) | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `pinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the pinned release | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `importSource` | [models.DeploymentImportSource](../models/deploymentimportsource.md) | :heavy_minus_sign: | Setup source that imported this deployment | | -| `setupMethod` | [models.DeploymentSetupMethod1](../models/deploymentsetupmethod1.md) | :heavy_minus_sign: | Setup method that created the deployment record and owns setup-time resources. | | -| `setupMetadata` | Record | :heavy_minus_sign: | Setup method metadata needed to guide privileged teardown. | | -| `setupTarget` | *string* | :heavy_minus_sign: | Imported setup target for compatibility checks | | -| `setupFingerprint` | *string* | :heavy_minus_sign: | Imported setup compatibility fingerprint | | -| `setupFingerprintVersion` | *number* | :heavy_minus_sign: | Imported setup fingerprint algorithm version | | -| `retryRequested` | *boolean* | :heavy_check_mark: | Whether a retry has been requested for a failed deployment | | -| `lastHeartbeatAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | Timestamp of the last received heartbeat from the deployment | | -| `error` | [models.DeploymentError](../models/deploymenterror.md) | :heavy_minus_sign: | Latest error information if the deployment is in a failed state | | -| `environmentVariables` | [models.EnvironmentVariableConfig](../models/environmentvariableconfig.md)[] | :heavy_minus_sign: | Configuration of environment variables for the deployment | | -| `targetEnvironmentVariables` | [models.DeploymentTargetEnvironmentVariables](../models/deploymenttargetenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of target environment variables for the deployment | | -| `currentEnvironmentVariables` | [models.DeploymentCurrentEnvironmentVariables](../models/deploymentcurrentenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of current environment variables for the deployment | | -| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | -| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | -| `managerId` | *string* | :heavy_check_mark: | N/A | mgr_enxscjrqiiu2lrc672hwwuc5 | -| `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `name` | *string* | :heavy_check_mark: | Deployment name. | acme-prod | +| `publicSubdomain` | *string* | :heavy_minus_sign: | Public subdomain for auto-generated domains | | +| `status` | [models.DeploymentStatus](../models/deploymentstatus.md) | :heavy_check_mark: | Deployment status in the deployment lifecycle | | +| `projectId` | *string* | :heavy_check_mark: | Unique identifier for the project. | prj_mcytp6z3j91f7tn5ryqsfwtr | +| `platform` | [models.DeploymentPlatform](../models/deploymentplatform.md) | :heavy_check_mark: | Target platform for the deployment | | +| `basePlatform` | [models.DeploymentBasePlatform](../models/deploymentbaseplatform.md) | :heavy_minus_sign: | Underlying cloud platform for Kubernetes deployments. | | +| `region` | *string* | :heavy_minus_sign: | Cloud region or location for the deployment. | | +| `deploymentProtocolVersion` | *number* | :heavy_check_mark: | DeploymentState protocol version owned by the runtime/manager | | +| `deploymentGroupId` | *string* | :heavy_check_mark: | ID of deployment group this deployment belongs to | dg_r27ict8c7vcgsumpj90ackf7b | +| `environmentInfo` | *models.DeploymentEnvironmentInfoUnion* | :heavy_minus_sign: | Cloud environment information | | +| `stackSettings` | [models.DeploymentStackSettings](../models/deploymentstacksettings.md) | :heavy_check_mark: | User-provided configuration (network, deployment model, approvals) | | +| `stackState` | [models.DeploymentStackState](../models/deploymentstackstate.md) | :heavy_minus_sign: | State of infrastructure components managed by this deployment | | +| `runtimeMetadata` | [models.DeploymentRuntimeMetadata](../models/deploymentruntimemetadata.md) | :heavy_minus_sign: | Runtime metadata for deployment state persistence | | +| `currentReleaseId` | *string* | :heavy_minus_sign: | ID of the currently deployed release (actual state) | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `desiredReleaseId` | *string* | :heavy_minus_sign: | ID of the desired release for deployment/update (desired state) | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `pinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the pinned release | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `importSource` | [models.DeploymentImportSource](../models/deploymentimportsource.md) | :heavy_minus_sign: | Setup source that imported this deployment | | +| `setupMethod` | [models.DeploymentSetupMethod1](../models/deploymentsetupmethod1.md) | :heavy_minus_sign: | Setup method that created the deployment record and owns setup-time resources. | | +| `setupMetadata` | Record | :heavy_minus_sign: | Setup method metadata needed to guide privileged teardown. | | +| `setupTarget` | *string* | :heavy_minus_sign: | Imported setup target for compatibility checks | | +| `setupFingerprint` | *string* | :heavy_minus_sign: | Imported setup compatibility fingerprint | | +| `setupFingerprintVersion` | *number* | :heavy_minus_sign: | Imported setup fingerprint algorithm version | | +| `retryRequested` | *boolean* | :heavy_check_mark: | Whether a retry has been requested for a failed deployment | | +| `lastHeartbeatAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | Timestamp of the last received heartbeat from the deployment | | +| `error` | [models.DeploymentError](../models/deploymenterror.md) | :heavy_minus_sign: | Latest error information if the deployment is in a failed state | | +| `environmentVariables` | [models.EnvironmentVariableConfig](../models/environmentvariableconfig.md)[] | :heavy_minus_sign: | Configuration of environment variables for the deployment | | +| `targetEnvironmentVariables` | [models.DeploymentTargetEnvironmentVariables](../models/deploymenttargetenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of target environment variables for the deployment | | +| `currentEnvironmentVariables` | [models.DeploymentCurrentEnvironmentVariables](../models/deploymentcurrentenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of current environment variables for the deployment | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `managerId` | *string* | :heavy_check_mark: | N/A | mgr_enxscjrqiiu2lrc672hwwuc5 | +| `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `agentVersion` | *string* | :heavy_minus_sign: | Agent binary version reported on the last sync (e.g. "1.3.5") | | +| `agentOs` | [models.DeploymentAgentOs](../models/deploymentagentos.md) | :heavy_minus_sign: | Agent host OS reported on the last sync | | +| `agentArch` | [models.DeploymentAgentArch](../models/deploymentagentarch.md) | :heavy_minus_sign: | Agent host architecture reported on the last sync | | +| `regime` | [models.DeploymentRegime](../models/deploymentregime.md) | :heavy_minus_sign: | Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. | | +| `agentImageRepository` | *string* | :heavy_minus_sign: | Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from. | | +| `targetAgentVersion` | *string* | :heavy_minus_sign: | Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target. | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentagentarch.md b/client-sdks/platform/typescript/docs/models/deploymentagentarch.md new file mode 100644 index 000000000..2688a2751 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentagentarch.md @@ -0,0 +1,17 @@ +# DeploymentAgentArch + +Agent host architecture reported on the last sync + +## Example Usage + +```typescript +import { DeploymentAgentArch } from "@alienplatform/platform-api/models"; + +let value: DeploymentAgentArch = "x86_64"; +``` + +## Values + +```typescript +"x86_64" | "aarch64" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentagentos.md b/client-sdks/platform/typescript/docs/models/deploymentagentos.md new file mode 100644 index 000000000..cd77f9342 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentagentos.md @@ -0,0 +1,17 @@ +# DeploymentAgentOs + +Agent host OS reported on the last sync + +## Example Usage + +```typescript +import { DeploymentAgentOs } from "@alienplatform/platform-api/models"; + +let value: DeploymentAgentOs = "windows"; +``` + +## Values + +```typescript +"linux" | "macos" | "windows" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponse.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponse.md index 6fb62c100..5222fb64a 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentdetailresponse.md +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponse.md @@ -52,41 +52,47 @@ let value: DeploymentDetailResponse = { ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | -| `name` | *string* | :heavy_check_mark: | Deployment name. | acme-prod | -| `publicSubdomain` | *string* | :heavy_minus_sign: | Public subdomain for auto-generated domains | | -| `status` | [models.DeploymentDetailResponseStatus](../models/deploymentdetailresponsestatus.md) | :heavy_check_mark: | Deployment status in the deployment lifecycle | | -| `projectId` | *string* | :heavy_check_mark: | Unique identifier for the project. | prj_mcytp6z3j91f7tn5ryqsfwtr | -| `platform` | [models.DeploymentDetailResponsePlatform](../models/deploymentdetailresponseplatform.md) | :heavy_check_mark: | Target platform for the deployment | | -| `basePlatform` | [models.DeploymentDetailResponseBasePlatform](../models/deploymentdetailresponsebaseplatform.md) | :heavy_minus_sign: | Underlying cloud platform for Kubernetes deployments. | | -| `region` | *string* | :heavy_minus_sign: | Cloud region or location for the deployment. | | -| `deploymentProtocolVersion` | *number* | :heavy_check_mark: | DeploymentState protocol version owned by the runtime/manager | | -| `deploymentGroupId` | *string* | :heavy_check_mark: | ID of deployment group this deployment belongs to | dg_r27ict8c7vcgsumpj90ackf7b | -| `environmentInfo` | *models.DeploymentDetailResponseEnvironmentInfoUnion* | :heavy_minus_sign: | Cloud environment information | | -| `stackSettings` | [models.DeploymentDetailResponseStackSettings](../models/deploymentdetailresponsestacksettings.md) | :heavy_check_mark: | User-provided configuration (network, deployment model, approvals) | | -| `stackState` | [models.DeploymentDetailResponseStackState](../models/deploymentdetailresponsestackstate.md) | :heavy_minus_sign: | State of infrastructure components managed by this deployment | | -| `runtimeMetadata` | [models.DeploymentDetailResponseRuntimeMetadata](../models/deploymentdetailresponseruntimemetadata.md) | :heavy_minus_sign: | Runtime metadata for deployment state persistence | | -| `currentReleaseId` | *string* | :heavy_minus_sign: | ID of the currently deployed release (actual state) | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `desiredReleaseId` | *string* | :heavy_minus_sign: | ID of the desired release for deployment/update (desired state) | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `pinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the pinned release | rel_WbhQgksrawSKIpEN0NAssHX9 | -| `importSource` | [models.DeploymentDetailResponseImportSource](../models/deploymentdetailresponseimportsource.md) | :heavy_minus_sign: | Setup source that imported this deployment | | -| `setupMethod` | [models.DeploymentDetailResponseSetupMethod](../models/deploymentdetailresponsesetupmethod.md) | :heavy_minus_sign: | Setup method that created the deployment record and owns setup-time resources. | | -| `setupMetadata` | Record | :heavy_minus_sign: | Setup method metadata needed to guide privileged teardown. | | -| `setupTarget` | *string* | :heavy_minus_sign: | Imported setup target for compatibility checks | | -| `setupFingerprint` | *string* | :heavy_minus_sign: | Imported setup compatibility fingerprint | | -| `setupFingerprintVersion` | *number* | :heavy_minus_sign: | Imported setup fingerprint algorithm version | | -| `retryRequested` | *boolean* | :heavy_check_mark: | Whether a retry has been requested for a failed deployment | | -| `lastHeartbeatAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | Timestamp of the last received heartbeat from the deployment | | -| `error` | [models.DeploymentDetailResponseError](../models/deploymentdetailresponseerror.md) | :heavy_minus_sign: | Latest error information if the deployment is in a failed state | | -| `environmentVariables` | [models.EnvironmentVariableConfig](../models/environmentvariableconfig.md)[] | :heavy_minus_sign: | Configuration of environment variables for the deployment | | -| `targetEnvironmentVariables` | [models.DeploymentDetailResponseTargetEnvironmentVariables](../models/deploymentdetailresponsetargetenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of target environment variables for the deployment | | -| `currentEnvironmentVariables` | [models.DeploymentDetailResponseCurrentEnvironmentVariables](../models/deploymentdetailresponsecurrentenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of current environment variables for the deployment | | -| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | -| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | -| `managerId` | *string* | :heavy_check_mark: | N/A | mgr_enxscjrqiiu2lrc672hwwuc5 | -| `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | -| `release` | [models.DeploymentReleaseInfo](../models/deploymentreleaseinfo.md) | :heavy_minus_sign: | N/A | | -| `deploymentGroup` | [models.DeploymentGroupInfo](../models/deploymentgroupinfo.md) | :heavy_minus_sign: | N/A | | -| `project` | [models.DeploymentProjectInfo](../models/deploymentprojectinfo.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `name` | *string* | :heavy_check_mark: | Deployment name. | acme-prod | +| `publicSubdomain` | *string* | :heavy_minus_sign: | Public subdomain for auto-generated domains | | +| `status` | [models.DeploymentDetailResponseStatus](../models/deploymentdetailresponsestatus.md) | :heavy_check_mark: | Deployment status in the deployment lifecycle | | +| `projectId` | *string* | :heavy_check_mark: | Unique identifier for the project. | prj_mcytp6z3j91f7tn5ryqsfwtr | +| `platform` | [models.DeploymentDetailResponsePlatform](../models/deploymentdetailresponseplatform.md) | :heavy_check_mark: | Target platform for the deployment | | +| `basePlatform` | [models.DeploymentDetailResponseBasePlatform](../models/deploymentdetailresponsebaseplatform.md) | :heavy_minus_sign: | Underlying cloud platform for Kubernetes deployments. | | +| `region` | *string* | :heavy_minus_sign: | Cloud region or location for the deployment. | | +| `deploymentProtocolVersion` | *number* | :heavy_check_mark: | DeploymentState protocol version owned by the runtime/manager | | +| `deploymentGroupId` | *string* | :heavy_check_mark: | ID of deployment group this deployment belongs to | dg_r27ict8c7vcgsumpj90ackf7b | +| `environmentInfo` | *models.DeploymentDetailResponseEnvironmentInfoUnion* | :heavy_minus_sign: | Cloud environment information | | +| `stackSettings` | [models.DeploymentDetailResponseStackSettings](../models/deploymentdetailresponsestacksettings.md) | :heavy_check_mark: | User-provided configuration (network, deployment model, approvals) | | +| `stackState` | [models.DeploymentDetailResponseStackState](../models/deploymentdetailresponsestackstate.md) | :heavy_minus_sign: | State of infrastructure components managed by this deployment | | +| `runtimeMetadata` | [models.DeploymentDetailResponseRuntimeMetadata](../models/deploymentdetailresponseruntimemetadata.md) | :heavy_minus_sign: | Runtime metadata for deployment state persistence | | +| `currentReleaseId` | *string* | :heavy_minus_sign: | ID of the currently deployed release (actual state) | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `desiredReleaseId` | *string* | :heavy_minus_sign: | ID of the desired release for deployment/update (desired state) | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `pinnedReleaseId` | *string* | :heavy_minus_sign: | ID of the pinned release | rel_WbhQgksrawSKIpEN0NAssHX9 | +| `importSource` | [models.DeploymentDetailResponseImportSource](../models/deploymentdetailresponseimportsource.md) | :heavy_minus_sign: | Setup source that imported this deployment | | +| `setupMethod` | [models.DeploymentDetailResponseSetupMethod](../models/deploymentdetailresponsesetupmethod.md) | :heavy_minus_sign: | Setup method that created the deployment record and owns setup-time resources. | | +| `setupMetadata` | Record | :heavy_minus_sign: | Setup method metadata needed to guide privileged teardown. | | +| `setupTarget` | *string* | :heavy_minus_sign: | Imported setup target for compatibility checks | | +| `setupFingerprint` | *string* | :heavy_minus_sign: | Imported setup compatibility fingerprint | | +| `setupFingerprintVersion` | *number* | :heavy_minus_sign: | Imported setup fingerprint algorithm version | | +| `retryRequested` | *boolean* | :heavy_check_mark: | Whether a retry has been requested for a failed deployment | | +| `lastHeartbeatAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_minus_sign: | Timestamp of the last received heartbeat from the deployment | | +| `error` | [models.DeploymentDetailResponseError](../models/deploymentdetailresponseerror.md) | :heavy_minus_sign: | Latest error information if the deployment is in a failed state | | +| `environmentVariables` | [models.EnvironmentVariableConfig](../models/environmentvariableconfig.md)[] | :heavy_minus_sign: | Configuration of environment variables for the deployment | | +| `targetEnvironmentVariables` | [models.DeploymentDetailResponseTargetEnvironmentVariables](../models/deploymentdetailresponsetargetenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of target environment variables for the deployment | | +| `currentEnvironmentVariables` | [models.DeploymentDetailResponseCurrentEnvironmentVariables](../models/deploymentdetailresponsecurrentenvironmentvariables.md) | :heavy_minus_sign: | Snapshot of current environment variables for the deployment | | +| `createdAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | +| `managerId` | *string* | :heavy_check_mark: | N/A | mgr_enxscjrqiiu2lrc672hwwuc5 | +| `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `agentVersion` | *string* | :heavy_minus_sign: | Agent binary version reported on the last sync (e.g. "1.3.5") | | +| `agentOs` | [models.DeploymentDetailResponseAgentOs](../models/deploymentdetailresponseagentos.md) | :heavy_minus_sign: | Agent host OS reported on the last sync | | +| `agentArch` | [models.DeploymentDetailResponseAgentArch](../models/deploymentdetailresponseagentarch.md) | :heavy_minus_sign: | Agent host architecture reported on the last sync | | +| `regime` | [models.DeploymentDetailResponseRegime](../models/deploymentdetailresponseregime.md) | :heavy_minus_sign: | Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. | | +| `agentImageRepository` | *string* | :heavy_minus_sign: | Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from. | | +| `targetAgentVersion` | *string* | :heavy_minus_sign: | Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target. | | +| `release` | [models.DeploymentReleaseInfo](../models/deploymentreleaseinfo.md) | :heavy_minus_sign: | N/A | | +| `deploymentGroup` | [models.DeploymentGroupInfo](../models/deploymentgroupinfo.md) | :heavy_minus_sign: | N/A | | +| `project` | [models.DeploymentProjectInfo](../models/deploymentprojectinfo.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseagentarch.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseagentarch.md new file mode 100644 index 000000000..ef2fe25c4 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseagentarch.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponseAgentArch + +Agent host architecture reported on the last sync + +## Example Usage + +```typescript +import { DeploymentDetailResponseAgentArch } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponseAgentArch = "x86_64"; +``` + +## Values + +```typescript +"x86_64" | "aarch64" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseagentos.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseagentos.md new file mode 100644 index 000000000..510d7cbed --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseagentos.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponseAgentOs + +Agent host OS reported on the last sync + +## Example Usage + +```typescript +import { DeploymentDetailResponseAgentOs } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponseAgentOs = "macos"; +``` + +## Values + +```typescript +"linux" | "macos" | "windows" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentdetailresponseregime.md b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseregime.md new file mode 100644 index 000000000..950a33a46 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentdetailresponseregime.md @@ -0,0 +1,17 @@ +# DeploymentDetailResponseRegime + +Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. + +## Example Usage + +```typescript +import { DeploymentDetailResponseRegime } from "@alienplatform/platform-api/models"; + +let value: DeploymentDetailResponseRegime = "kubernetes"; +``` + +## Values + +```typescript +"os-service" | "kubernetes" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentlistitemresponse.md b/client-sdks/platform/typescript/docs/models/deploymentlistitemresponse.md index 155ab117d..eab0fc034 100644 --- a/client-sdks/platform/typescript/docs/models/deploymentlistitemresponse.md +++ b/client-sdks/platform/typescript/docs/models/deploymentlistitemresponse.md @@ -77,6 +77,12 @@ let value: DeploymentListItemResponse = { | `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `managerId` | *string* | :heavy_check_mark: | ID of the manager | mgr_enxscjrqiiu2lrc672hwwuc5 | | `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `agentVersion` | *string* | :heavy_minus_sign: | Agent binary version reported on the last sync | | +| `agentOs` | [models.DeploymentListItemResponseAgentOs](../models/deploymentlistitemresponseagentos.md) | :heavy_minus_sign: | Agent host OS | | +| `agentArch` | [models.DeploymentListItemResponseAgentArch](../models/deploymentlistitemresponseagentarch.md) | :heavy_minus_sign: | Agent host architecture | | +| `regime` | [models.DeploymentListItemResponseRegime](../models/deploymentlistitemresponseregime.md) | :heavy_minus_sign: | Supervisor regime: os-service or kubernetes | | +| `agentImageRepository` | *string* | :heavy_minus_sign: | Container image repository the agent was pulled from (no tag) | | +| `targetAgentVersion` | *string* | :heavy_minus_sign: | Pinned target agent version (semver) for upgrade-driven sync | | | `release` | [models.DeploymentReleaseInfo](../models/deploymentreleaseinfo.md) | :heavy_minus_sign: | N/A | | | `deploymentGroup` | [models.DeploymentGroupInfo](../models/deploymentgroupinfo.md) | :heavy_minus_sign: | N/A | | | `project` | [models.DeploymentProjectInfo](../models/deploymentprojectinfo.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentlistitemresponseagentarch.md b/client-sdks/platform/typescript/docs/models/deploymentlistitemresponseagentarch.md new file mode 100644 index 000000000..88fd6b429 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentlistitemresponseagentarch.md @@ -0,0 +1,17 @@ +# DeploymentListItemResponseAgentArch + +Agent host architecture + +## Example Usage + +```typescript +import { DeploymentListItemResponseAgentArch } from "@alienplatform/platform-api/models"; + +let value: DeploymentListItemResponseAgentArch = "x86_64"; +``` + +## Values + +```typescript +"x86_64" | "aarch64" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentlistitemresponseagentos.md b/client-sdks/platform/typescript/docs/models/deploymentlistitemresponseagentos.md new file mode 100644 index 000000000..6a8e4fb0b --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentlistitemresponseagentos.md @@ -0,0 +1,17 @@ +# DeploymentListItemResponseAgentOs + +Agent host OS + +## Example Usage + +```typescript +import { DeploymentListItemResponseAgentOs } from "@alienplatform/platform-api/models"; + +let value: DeploymentListItemResponseAgentOs = "windows"; +``` + +## Values + +```typescript +"linux" | "macos" | "windows" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentlistitemresponseregime.md b/client-sdks/platform/typescript/docs/models/deploymentlistitemresponseregime.md new file mode 100644 index 000000000..6221355a1 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentlistitemresponseregime.md @@ -0,0 +1,17 @@ +# DeploymentListItemResponseRegime + +Supervisor regime: os-service or kubernetes + +## Example Usage + +```typescript +import { DeploymentListItemResponseRegime } from "@alienplatform/platform-api/models"; + +let value: DeploymentListItemResponseRegime = "os-service"; +``` + +## Values + +```typescript +"os-service" | "kubernetes" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/deploymentregime.md b/client-sdks/platform/typescript/docs/models/deploymentregime.md new file mode 100644 index 000000000..1bfd05e8f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/deploymentregime.md @@ -0,0 +1,17 @@ +# DeploymentRegime + +Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. + +## Example Usage + +```typescript +import { DeploymentRegime } from "@alienplatform/platform-api/models"; + +let value: DeploymentRegime = "kubernetes"; +``` + +## Values + +```typescript +"os-service" | "kubernetes" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/eventdataunion.md b/client-sdks/platform/typescript/docs/models/eventdataunion.md index 8b1db163f..ae5888216 100644 --- a/client-sdks/platform/typescript/docs/models/eventdataunion.md +++ b/client-sdks/platform/typescript/docs/models/eventdataunion.md @@ -375,6 +375,16 @@ const value: models.DataDeploymentDeleted = { }; ``` +### `models.DataDeploymentRejoined` + +```typescript +const value: models.DataDeploymentRejoined = { + deploymentGroupId: "", + deploymentId: "", + type: "DeploymentRejoined", +}; +``` + ### `models.DataDeploymentRetryRequested` ```typescript diff --git a/client-sdks/platform/typescript/docs/models/operations/createfirstpartydeploymentsessionrequest.md b/client-sdks/platform/typescript/docs/models/operations/createfirstpartydeploymentsessionrequest.md new file mode 100644 index 000000000..f50c69209 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/createfirstpartydeploymentsessionrequest.md @@ -0,0 +1,19 @@ +# CreateFirstPartyDeploymentSessionRequest + +## Example Usage + +```typescript +import { CreateFirstPartyDeploymentSessionRequest } from "@alienplatform/platform-api/models/operations"; + +let value: CreateFirstPartyDeploymentSessionRequest = { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment group. | dg_r27ict8c7vcgsumpj90ackf7b | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/deleteprojectrequest.md b/client-sdks/platform/typescript/docs/models/operations/deleteprojectrequest.md index 03dcda06b..d080f5fa3 100644 --- a/client-sdks/platform/typescript/docs/models/operations/deleteprojectrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/deleteprojectrequest.md @@ -15,5 +15,5 @@ let value: DeleteProjectRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | my-project | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getdeploymentstatsrequest.md b/client-sdks/platform/typescript/docs/models/operations/getdeploymentstatsrequest.md index 05e11221e..c6629c821 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getdeploymentstatsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/getdeploymentstatsrequest.md @@ -16,7 +16,7 @@ let value: GetDeploymentStatsRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `deploymentGroup` | *string* | :heavy_minus_sign: | Filter by deployment group ID or name | | | `managerId` | *string* | :heavy_minus_sign: | Filter by manager ID | | | `environment` | [operations.GetDeploymentStatsEnvironment](../../models/operations/getdeploymentstatsenvironment.md)[] | :heavy_minus_sign: | Filter deployments by effective environment | | diff --git a/client-sdks/platform/typescript/docs/models/operations/getprojectactivereleaserequest.md b/client-sdks/platform/typescript/docs/models/operations/getprojectactivereleaserequest.md index 7394426b3..a7b9e425c 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getprojectactivereleaserequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/getprojectactivereleaserequest.md @@ -15,6 +15,6 @@ let value: GetProjectActiveReleaseRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | my-project | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | | `deploymentId` | *string* | :heavy_minus_sign: | Optional deployment ID to check for pinned release | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getprojectdeploymentportaldomainrequest.md b/client-sdks/platform/typescript/docs/models/operations/getprojectdeploymentportaldomainrequest.md index fb6e1258c..fcfee0681 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getprojectdeploymentportaldomainrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/getprojectdeploymentportaldomainrequest.md @@ -15,5 +15,5 @@ let value: GetProjectDeploymentPortalDomainRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | my-project | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getprojectgcpoauthproviderrequest.md b/client-sdks/platform/typescript/docs/models/operations/getprojectgcpoauthproviderrequest.md index 0b2f1505a..ee453c60e 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getprojectgcpoauthproviderrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/getprojectgcpoauthproviderrequest.md @@ -15,5 +15,5 @@ let value: GetProjectGcpOAuthProviderRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | my-project | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getprojectrequest.md b/client-sdks/platform/typescript/docs/models/operations/getprojectrequest.md index b725d77f1..b77c51787 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getprojectrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/getprojectrequest.md @@ -15,5 +15,5 @@ let value: GetProjectRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | my-project | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getprojecttemplateurlsrequest.md b/client-sdks/platform/typescript/docs/models/operations/getprojecttemplateurlsrequest.md index 3c7b45696..bd8027576 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getprojecttemplateurlsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/getprojecttemplateurlsrequest.md @@ -15,5 +15,5 @@ let value: GetProjectTemplateUrlsRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | my-project | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailrequest.md b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailrequest.md index 71e01fff5..9ec11b245 100644 --- a/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/getresourcedeploymentdetailrequest.md @@ -22,4 +22,4 @@ let value: GetResourceDeploymentDetailRequest = { | `deploymentId` | *string* | :heavy_check_mark: | N/A | | | `resourceId` | *string* | :heavy_check_mark: | N/A | | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | my-project | \ No newline at end of file +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listapikeysrequest.md b/client-sdks/platform/typescript/docs/models/operations/listapikeysrequest.md index 9cb5b7260..24f696610 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listapikeysrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listapikeysrequest.md @@ -16,6 +16,6 @@ let value: ListAPIKeysRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `limit` | *number* | :heavy_minus_sign: | Maximum number of items to return per page | | | `cursor` | *string* | :heavy_minus_sign: | Cursor for pagination - omit for first page | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listcommanddeploymentsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listcommanddeploymentsrequest.md index fdcf8290d..c5cea7ee2 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listcommanddeploymentsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listcommanddeploymentsrequest.md @@ -16,5 +16,5 @@ let value: ListCommandDeploymentsRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `search` | *string* | :heavy_minus_sign: | Search deployment or deployment group names | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listcommandnamesrequest.md b/client-sdks/platform/typescript/docs/models/operations/listcommandnamesrequest.md index 8e73e1f87..0632f43a5 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listcommandnamesrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listcommandnamesrequest.md @@ -16,5 +16,5 @@ let value: ListCommandNamesRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `search` | *string* | :heavy_minus_sign: | Search command names (prefix match) | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listcommandsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listcommandsrequest.md index 59b6fbb5a..b4120a271 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listcommandsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listcommandsrequest.md @@ -17,7 +17,7 @@ let value: ListCommandsRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `deploymentId` | *string* | :heavy_minus_sign: | Filter by deployment ID | dep_0c29fq4a2yjb7kx3smwdgxlc | | `state` | [operations.State](../../models/operations/state.md) | :heavy_minus_sign: | Filter by command state | | | `name` | *string* | :heavy_minus_sign: | Filter by command name | | diff --git a/client-sdks/platform/typescript/docs/models/operations/listdebugsessionsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listdebugsessionsrequest.md index f7eb89172..62cefc7b9 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listdebugsessionsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listdebugsessionsrequest.md @@ -17,7 +17,7 @@ let value: ListDebugSessionsRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `deploymentId` | *string* | :heavy_minus_sign: | Filter by deployment ID | dep_0c29fq4a2yjb7kx3smwdgxlc | | `state` | [models.DebugSessionState](../../models/debugsessionstate.md) | :heavy_minus_sign: | Filter by session state | | | `mode` | [operations.ListDebugSessionsMode](../../models/operations/listdebugsessionsmode.md) | :heavy_minus_sign: | Filter by deployment model (push/pull). Joins against the parent deployment. | | diff --git a/client-sdks/platform/typescript/docs/models/operations/listdeploymentfilterdeploymentgroupsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listdeploymentfilterdeploymentgroupsrequest.md index 2ff755670..f1fc90a56 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listdeploymentfilterdeploymentgroupsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listdeploymentfilterdeploymentgroupsrequest.md @@ -16,6 +16,6 @@ let value: ListDeploymentFilterDeploymentGroupsRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `search` | *string* | :heavy_minus_sign: | Search deployment groups by name | | | `limit` | *number* | :heavy_minus_sign: | Maximum number of items to return | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listdeploymentfilterenvironmentsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listdeploymentfilterenvironmentsrequest.md index 4f0e47880..564d88cc0 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listdeploymentfilterenvironmentsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listdeploymentfilterenvironmentsrequest.md @@ -16,4 +16,4 @@ let value: ListDeploymentFilterEnvironmentsRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | \ No newline at end of file +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listdeploymentgroupsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listdeploymentgroupsrequest.md index 905ecb6a2..efbf7c4ce 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listdeploymentgroupsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listdeploymentgroupsrequest.md @@ -16,7 +16,7 @@ let value: ListDeploymentGroupsRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `search` | *string* | :heavy_minus_sign: | Search deployment groups by name | | | `include` | [operations.ListDeploymentGroupsInclude](../../models/operations/listdeploymentgroupsinclude.md)[] | :heavy_minus_sign: | Optional fields to include: project | | | `limit` | *number* | :heavy_minus_sign: | Maximum number of items to return per page | | diff --git a/client-sdks/platform/typescript/docs/models/operations/listdeploymentsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listdeploymentsrequest.md index 44fe69b8a..c17c79a84 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listdeploymentsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listdeploymentsrequest.md @@ -15,7 +15,7 @@ let value: ListDeploymentsRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `deploymentGroup` | *string* | :heavy_minus_sign: | Filter by deployment group ID or name | | | `name` | *string* | :heavy_minus_sign: | Filter by exact deployment name. Must be used with deploymentGroup. | | | `managerId` | *string* | :heavy_minus_sign: | Filter by manager ID | | diff --git a/client-sdks/platform/typescript/docs/models/operations/listeventsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listeventsrequest.md index 73dfec390..c35609c5d 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listeventsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listeventsrequest.md @@ -16,7 +16,7 @@ let value: ListEventsRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `deploymentId` | *string* | :heavy_minus_sign: | Filter events to a single deployment. | | | `limit` | *number* | :heavy_minus_sign: | Maximum number of items to return per page | | | `cursor` | *string* | :heavy_minus_sign: | Cursor for pagination - omit for first page | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listpackagesrequest.md b/client-sdks/platform/typescript/docs/models/operations/listpackagesrequest.md index 226c29e1c..6d5e9425d 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listpackagesrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listpackagesrequest.md @@ -16,7 +16,7 @@ let value: ListPackagesRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `type` | [operations.ListPackagesType](../../models/operations/listpackagestype.md) | :heavy_minus_sign: | Filter by package type | | | `status` | [operations.ListPackagesStatus](../../models/operations/listpackagesstatus.md) | :heavy_minus_sign: | Filter by package status | | | `search` | *string* | :heavy_minus_sign: | Search packages by type or version | | diff --git a/client-sdks/platform/typescript/docs/models/operations/listreleaseauthorsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listreleaseauthorsrequest.md index 0e93ce2c5..b5648d1fb 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listreleaseauthorsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listreleaseauthorsrequest.md @@ -16,6 +16,6 @@ let value: ListReleaseAuthorsRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `search` | *string* | :heavy_minus_sign: | Search authors by login or name (case-insensitive contains) | | | `limit` | *number* | :heavy_minus_sign: | Maximum number of authors to return | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listreleasebranchesrequest.md b/client-sdks/platform/typescript/docs/models/operations/listreleasebranchesrequest.md index d667f3dc3..22444b506 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listreleasebranchesrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listreleasebranchesrequest.md @@ -16,6 +16,6 @@ let value: ListReleaseBranchesRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `search` | *string* | :heavy_minus_sign: | Search branches by name (case-insensitive contains) | | | `limit` | *number* | :heavy_minus_sign: | Maximum number of branches to return | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listreleasesrequest.md b/client-sdks/platform/typescript/docs/models/operations/listreleasesrequest.md index 6e361a453..13330dab6 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listreleasesrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listreleasesrequest.md @@ -15,7 +15,7 @@ let value: ListReleasesRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_minus_sign: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | | `include` | [operations.ListReleasesInclude](../../models/operations/listreleasesinclude.md)[] | :heavy_minus_sign: | Optional fields to include: project | | | `search` | *string* | :heavy_minus_sign: | Search releases by commit message, branch, SHA, or release ID | | diff --git a/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsrequest.md b/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsrequest.md index 5ae1639f4..4d1028300 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listresourcedeploymentsrequest.md @@ -20,6 +20,6 @@ let value: ListResourceDeploymentsRequest = { | `area` | [operations.ListResourceDeploymentsArea](../../models/operations/listresourcedeploymentsarea.md) | :heavy_check_mark: | N/A | | | `resourceId` | *string* | :heavy_check_mark: | N/A | | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `deploymentGroupId` | *string* | :heavy_minus_sign: | N/A | | | `deploymentId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/listresourceoverviewrequest.md b/client-sdks/platform/typescript/docs/models/operations/listresourceoverviewrequest.md index 27dca352e..a27caa2e1 100644 --- a/client-sdks/platform/typescript/docs/models/operations/listresourceoverviewrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/listresourceoverviewrequest.md @@ -18,6 +18,6 @@ let value: ListResourceOverviewRequest = { | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `area` | [operations.ListResourceOverviewArea](../../models/operations/listresourceoverviewarea.md) | :heavy_check_mark: | N/A | | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | -| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | my-project | +| `project` | *string* | :heavy_check_mark: | Filter by project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `deploymentGroupId` | *string* | :heavy_minus_sign: | N/A | | | `deploymentId` | *string* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/rejoindeploymentrequest.md b/client-sdks/platform/typescript/docs/models/operations/rejoindeploymentrequest.md new file mode 100644 index 000000000..897758d39 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/rejoindeploymentrequest.md @@ -0,0 +1,18 @@ +# RejoinDeploymentRequest + +## Example Usage + +```typescript +import { RejoinDeploymentRequest } from "@alienplatform/platform-api/models/operations"; + +let value: RejoinDeploymentRequest = { + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `rejoinDeploymentRequest` | [models.RejoinDeploymentRequest](../../models/rejoindeploymentrequest.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/setdeploymenttargetagentversionrequest.md b/client-sdks/platform/typescript/docs/models/operations/setdeploymenttargetagentversionrequest.md new file mode 100644 index 000000000..3feef3cbd --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/setdeploymenttargetagentversionrequest.md @@ -0,0 +1,20 @@ +# SetDeploymentTargetAgentVersionRequest + +## Example Usage + +```typescript +import { SetDeploymentTargetAgentVersionRequest } from "@alienplatform/platform-api/models/operations"; + +let value: SetDeploymentTargetAgentVersionRequest = { + id: "dep_0c29fq4a2yjb7kx3smwdgxlc", + workspace: "my-workspace", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | +| `setTargetAgentVersionRequest` | [models.SetTargetAgentVersionRequest](../../models/settargetagentversionrequest.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/setdeploymenttargetagentversionresponse.md b/client-sdks/platform/typescript/docs/models/operations/setdeploymenttargetagentversionresponse.md new file mode 100644 index 000000000..c6b403be8 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/operations/setdeploymenttargetagentversionresponse.md @@ -0,0 +1,19 @@ +# SetDeploymentTargetAgentVersionResponse + +Target agent version updated. + +## Example Usage + +```typescript +import { SetDeploymentTargetAgentVersionResponse } from "@alienplatform/platform-api/models/operations"; + +let value: SetDeploymentTargetAgentVersionResponse = { + message: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `message` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/updateprojectgcpoauthproviderrequest.md b/client-sdks/platform/typescript/docs/models/operations/updateprojectgcpoauthproviderrequest.md index 339c12f8f..ae1d7570b 100644 --- a/client-sdks/platform/typescript/docs/models/operations/updateprojectgcpoauthproviderrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/updateprojectgcpoauthproviderrequest.md @@ -15,6 +15,6 @@ let value: UpdateProjectGcpOAuthProviderRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | my-project | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | | `updateProjectGcpOAuthProvider` | *models.UpdateProjectGcpOAuthProvider* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/operations/updateprojectrequest.md b/client-sdks/platform/typescript/docs/models/operations/updateprojectrequest.md index 844f5b16f..01b7f455c 100644 --- a/client-sdks/platform/typescript/docs/models/operations/updateprojectrequest.md +++ b/client-sdks/platform/typescript/docs/models/operations/updateprojectrequest.md @@ -15,6 +15,6 @@ let value: UpdateProjectRequest = { | Field | Type | Required | Description | Example | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | my-project | +| `idOrName` | *string* | :heavy_check_mark: | Project ID or name. | **Example 1:** my-project
**Example 2:** prj_mcytp6z3j91f7tn5ryqsfwtr | | `workspace` | *string* | :heavy_minus_sign: | Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. | my-workspace | | `updateProject` | [models.UpdateProject](../../models/updateproject.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/projectgcpoauthprovider.md b/client-sdks/platform/typescript/docs/models/projectgcpoauthprovider.md index ff2738547..4446ca3bb 100644 --- a/client-sdks/platform/typescript/docs/models/projectgcpoauthprovider.md +++ b/client-sdks/platform/typescript/docs/models/projectgcpoauthprovider.md @@ -22,10 +22,10 @@ const value: models.ProjectGcpOAuthProviderAlienManaged = { const value: models.ProjectGcpOAuthProviderCustom = { mode: "custom", clientId: "1234567890-abc123.apps.googleusercontent.com", - hasClientSecret: false, + hasClientSecret: true, redirectUris: [ - "https://rowdy-catalyst.biz/", - "https://inborn-gymnast.name/", + "https://idolized-populist.com", + "https://dependent-hammock.info/", ], }; ``` diff --git a/client-sdks/platform/typescript/docs/models/projectgcpoauthprovidercustom.md b/client-sdks/platform/typescript/docs/models/projectgcpoauthprovidercustom.md index 69c120711..a1ed65f5b 100644 --- a/client-sdks/platform/typescript/docs/models/projectgcpoauthprovidercustom.md +++ b/client-sdks/platform/typescript/docs/models/projectgcpoauthprovidercustom.md @@ -8,10 +8,10 @@ import { ProjectGcpOAuthProviderCustom } from "@alienplatform/platform-api/model let value: ProjectGcpOAuthProviderCustom = { mode: "custom", clientId: "1234567890-abc123.apps.googleusercontent.com", - hasClientSecret: false, + hasClientSecret: true, redirectUris: [ - "https://rowdy-catalyst.biz/", - "https://inborn-gymnast.name/", + "https://idolized-populist.com", + "https://dependent-hammock.info/", ], }; ``` @@ -22,5 +22,5 @@ let value: ProjectGcpOAuthProviderCustom = { | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | | `mode` | *"custom"* | :heavy_check_mark: | N/A | | | `clientId` | *string* | :heavy_check_mark: | Google OAuth web client ID. | 1234567890-abc123.apps.googleusercontent.com | -| `hasClientSecret` | *boolean* | :heavy_check_mark: | N/A | | +| `hasClientSecret` | *true* | :heavy_check_mark: | N/A | | | `redirectUris` | *string*[] | :heavy_check_mark: | Authorized redirect URIs that must be configured on the Google OAuth client. | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/rejoindeploymentrequest.md b/client-sdks/platform/typescript/docs/models/rejoindeploymentrequest.md new file mode 100644 index 000000000..4821e9472 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/rejoindeploymentrequest.md @@ -0,0 +1,19 @@ +# RejoinDeploymentRequest + +Request schema for re-acquiring a deployment-scoped sync token after local state loss. + +## Example Usage + +```typescript +import { RejoinDeploymentRequest } from "@alienplatform/platform-api/models"; + +let value: RejoinDeploymentRequest = { + name: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `name` | *string* | :heavy_check_mark: | Deployment name to rejoin. Must already exist in the caller's deployment group. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/rejoindeploymentresponse.md b/client-sdks/platform/typescript/docs/models/rejoindeploymentresponse.md new file mode 100644 index 000000000..3c092ae04 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/rejoindeploymentresponse.md @@ -0,0 +1,19 @@ +# RejoinDeploymentResponse + +## Example Usage + +```typescript +import { RejoinDeploymentResponse } from "@alienplatform/platform-api/models"; + +let value: RejoinDeploymentResponse = { + deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", + token: "", +}; +``` + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | Unique identifier for the deployment. | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `token` | *string* | :heavy_check_mark: | Fresh deployment-scoped sync token. The previously-issued token is NOT revoked — callers that want strict single-token semantics should rotate explicitly via the api-keys endpoints. | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/setfirstpartydeploymentinputsrequest.md b/client-sdks/platform/typescript/docs/models/setfirstpartydeploymentinputsrequest.md new file mode 100644 index 000000000..77fafb41c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/setfirstpartydeploymentinputsrequest.md @@ -0,0 +1,18 @@ +# SetFirstPartyDeploymentInputsRequest + +## Example Usage + +```typescript +import { SetFirstPartyDeploymentInputsRequest } from "@alienplatform/platform-api/models"; + +let value: SetFirstPartyDeploymentInputsRequest = { + platform: "gcp", +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `platform` | [models.SetFirstPartyDeploymentInputsRequestPlatform](../models/setfirstpartydeploymentinputsrequestplatform.md) | :heavy_check_mark: | Represents the target cloud platform. | +| `inputValues` | Record | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/setfirstpartydeploymentinputsrequestplatform.md b/client-sdks/platform/typescript/docs/models/setfirstpartydeploymentinputsrequestplatform.md new file mode 100644 index 000000000..08c133bc2 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/setfirstpartydeploymentinputsrequestplatform.md @@ -0,0 +1,17 @@ +# SetFirstPartyDeploymentInputsRequestPlatform + +Represents the target cloud platform. + +## Example Usage + +```typescript +import { SetFirstPartyDeploymentInputsRequestPlatform } from "@alienplatform/platform-api/models"; + +let value: SetFirstPartyDeploymentInputsRequestPlatform = "test"; +``` + +## Values + +```typescript +"aws" | "gcp" | "azure" | "kubernetes" | "local" | "test" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/setfirstpartydeploymentinputsresponse.md b/client-sdks/platform/typescript/docs/models/setfirstpartydeploymentinputsresponse.md new file mode 100644 index 000000000..69372428d --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/setfirstpartydeploymentinputsresponse.md @@ -0,0 +1,17 @@ +# SetFirstPartyDeploymentInputsResponse + +## Example Usage + +```typescript +import { SetFirstPartyDeploymentInputsResponse } from "@alienplatform/platform-api/models"; + +let value: SetFirstPartyDeploymentInputsResponse = { + ok: false, +}; +``` + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `ok` | *boolean* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/settargetagentversionrequest.md b/client-sdks/platform/typescript/docs/models/settargetagentversionrequest.md new file mode 100644 index 000000000..6a24ebcc5 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/settargetagentversionrequest.md @@ -0,0 +1,17 @@ +# SetTargetAgentVersionRequest + +Set or clear the target agent version + +## Example Usage + +```typescript +import { SetTargetAgentVersionRequest } from "@alienplatform/platform-api/models"; + +let value: SetTargetAgentVersionRequest = {}; +``` + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `targetAgentVersion` | *string* | :heavy_minus_sign: | Target agent version (semver). null or omitted clears the target. | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeployment.md b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeployment.md index 6000c538d..2a7daa9f2 100644 --- a/client-sdks/platform/typescript/docs/models/syncacquireresponsedeployment.md +++ b/client-sdks/platform/typescript/docs/models/syncacquireresponsedeployment.md @@ -8,6 +8,7 @@ import { SyncAcquireResponseDeployment } from "@alienplatform/platform-api/model let value: SyncAcquireResponseDeployment = { deploymentId: "dep_0c29fq4a2yjb7kx3smwdgxlc", projectId: "", + deploymentGroupId: "dg_r27ict8c7vcgsumpj90ackf7b", current: { platform: "aws", protocolVersion: 626709, @@ -29,6 +30,8 @@ let value: SyncAcquireResponseDeployment = { | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | | `deploymentId` | *string* | :heavy_check_mark: | ID of the acquired deployment | dep_0c29fq4a2yjb7kx3smwdgxlc | | `projectId` | *string* | :heavy_check_mark: | Project ID the deployment belongs to | | +| `deploymentGroupId` | *string* | :heavy_check_mark: | Deployment group ID the deployment belongs to | dg_r27ict8c7vcgsumpj90ackf7b | | `setupMethod` | [models.DeploymentSetupMethod](../models/deploymentsetupmethod.md) | :heavy_minus_sign: | N/A | | | `current` | [models.SyncAcquireResponseCurrent](../models/syncacquireresponsecurrent.md) | :heavy_check_mark: | Current deployment state (includes releases) | | -| `config` | [models.SyncAcquireResponseConfig](../models/syncacquireresponseconfig.md) | :heavy_check_mark: | Deployment configuration | | \ No newline at end of file +| `config` | [models.SyncAcquireResponseConfig](../models/syncacquireresponseconfig.md) | :heavy_check_mark: | Deployment configuration | | +| `targetAgentVersion` | *string* | :heavy_minus_sign: | Pinned target agent version (semver) for upgrade-driven sync | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseagentarch.md b/client-sdks/platform/typescript/docs/models/synclistresponseagentarch.md new file mode 100644 index 000000000..1a3281d71 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponseagentarch.md @@ -0,0 +1,17 @@ +# SyncListResponseAgentArch + +Agent host architecture reported on the last sync + +## Example Usage + +```typescript +import { SyncListResponseAgentArch } from "@alienplatform/platform-api/models"; + +let value: SyncListResponseAgentArch = "x86_64"; +``` + +## Values + +```typescript +"x86_64" | "aarch64" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseagentos.md b/client-sdks/platform/typescript/docs/models/synclistresponseagentos.md new file mode 100644 index 000000000..4b3b61262 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponseagentos.md @@ -0,0 +1,17 @@ +# SyncListResponseAgentOs + +Agent host OS reported on the last sync + +## Example Usage + +```typescript +import { SyncListResponseAgentOs } from "@alienplatform/platform-api/models"; + +let value: SyncListResponseAgentOs = "linux"; +``` + +## Values + +```typescript +"linux" | "macos" | "windows" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/synclistresponsedeployment.md b/client-sdks/platform/typescript/docs/models/synclistresponsedeployment.md index c1aaa5486..bfd246281 100644 --- a/client-sdks/platform/typescript/docs/models/synclistresponsedeployment.md +++ b/client-sdks/platform/typescript/docs/models/synclistresponsedeployment.md @@ -60,6 +60,12 @@ let value: SyncListResponseDeployment = { | `updatedAt` | [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) | :heavy_check_mark: | N/A | | | `managerId` | *string* | :heavy_check_mark: | N/A | mgr_enxscjrqiiu2lrc672hwwuc5 | | `workspaceId` | *string* | :heavy_check_mark: | Unique identifier for the workspace. | ws_It13CUaGEhLLAB87simX0 | +| `agentVersion` | *string* | :heavy_minus_sign: | Agent binary version reported on the last sync (e.g. "1.3.5") | | +| `agentOs` | [models.SyncListResponseAgentOs](../models/synclistresponseagentos.md) | :heavy_minus_sign: | Agent host OS reported on the last sync | | +| `agentArch` | [models.SyncListResponseAgentArch](../models/synclistresponseagentarch.md) | :heavy_minus_sign: | Agent host architecture reported on the last sync | | +| `regime` | [models.SyncListResponseRegime](../models/synclistresponseregime.md) | :heavy_minus_sign: | Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. | | +| `agentImageRepository` | *string* | :heavy_minus_sign: | Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from. | | +| `targetAgentVersion` | *string* | :heavy_minus_sign: | Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target. | | | `userEnvironmentVariables` | [models.EnvironmentVariableConfig](../models/environmentvariableconfig.md)[] | :heavy_check_mark: | N/A | | | `managementConfig` | *models.SyncListResponseManagementConfigUnion* | :heavy_minus_sign: | Management configuration for different cloud platforms.

Platform-derived configuration for cross-account/cross-tenant access.
This is NOT user-specified - it's derived from the Manager's ServiceAccount. | | | `deploymentToken` | *string* | :heavy_minus_sign: | N/A | | diff --git a/client-sdks/platform/typescript/docs/models/synclistresponseregime.md b/client-sdks/platform/typescript/docs/models/synclistresponseregime.md new file mode 100644 index 000000000..37ab3df2c --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/synclistresponseregime.md @@ -0,0 +1,17 @@ +# SyncListResponseRegime + +Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. + +## Example Usage + +```typescript +import { SyncListResponseRegime } from "@alienplatform/platform-api/models"; + +let value: SyncListResponseRegime = "os-service"; +``` + +## Values + +```typescript +"os-service" | "kubernetes" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequest.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequest.md index 86d588b5f..21785b5f9 100644 --- a/client-sdks/platform/typescript/docs/models/syncreconcilerequest.md +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequest.md @@ -19,11 +19,16 @@ let value: SyncReconcileRequest = { ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `deploymentId` | *string* | :heavy_check_mark: | Deployment ID to reconcile state for | dep_0c29fq4a2yjb7kx3smwdgxlc | -| `session` | *string* | :heavy_minus_sign: | Lock session (push model only) - verifies lock ownership | | -| `state` | [models.SyncReconcileRequestState](../models/syncreconcilerequeststate.md) | :heavy_check_mark: | Complete deployment state after step() execution | | -| `updateHeartbeat` | *boolean* | :heavy_minus_sign: | Update heartbeat timestamp (for successful health checks) | | -| `suggestedDelayMs` | *number* | :heavy_minus_sign: | Delay before this deployment should be acquired again. | | -| `heartbeats` | [models.Heartbeat](../models/heartbeat.md)[] | :heavy_minus_sign: | Latest typed resource heartbeats collected during this step. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `deploymentId` | *string* | :heavy_check_mark: | Deployment ID to reconcile state for | dep_0c29fq4a2yjb7kx3smwdgxlc | +| `session` | *string* | :heavy_minus_sign: | Lock session (push model only) - verifies lock ownership | | +| `state` | [models.SyncReconcileRequestState](../models/syncreconcilerequeststate.md) | :heavy_check_mark: | Complete deployment state after step() execution | | +| `updateHeartbeat` | *boolean* | :heavy_minus_sign: | Update heartbeat timestamp (for successful health checks) | | +| `suggestedDelayMs` | *number* | :heavy_minus_sign: | Delay before this deployment should be acquired again. | | +| `heartbeats` | [models.Heartbeat](../models/heartbeat.md)[] | :heavy_minus_sign: | Latest typed resource heartbeats collected during this step. | | +| `agentVersion` | *string* | :heavy_minus_sign: | Agent binary version from the last /v1/sync. | | +| `agentOs` | [models.SyncReconcileRequestAgentOs](../models/syncreconcilerequestagentos.md) | :heavy_minus_sign: | Agent host OS. | | +| `agentArch` | [models.SyncReconcileRequestAgentArch](../models/syncreconcilerequestagentarch.md) | :heavy_minus_sign: | Agent host architecture. | | +| `regime` | [models.SyncReconcileRequestRegime](../models/syncreconcilerequestregime.md) | :heavy_minus_sign: | Supervisor regime: os-service or kubernetes. | | +| `agentImageRepository` | *string* | :heavy_minus_sign: | Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry. | | \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestagentarch.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestagentarch.md new file mode 100644 index 000000000..56ef3ce58 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestagentarch.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestAgentArch + +Agent host architecture. + +## Example Usage + +```typescript +import { SyncReconcileRequestAgentArch } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAgentArch = "aarch64"; +``` + +## Values + +```typescript +"x86_64" | "aarch64" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestagentos.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestagentos.md new file mode 100644 index 000000000..dfc6aac44 --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestagentos.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestAgentOs + +Agent host OS. + +## Example Usage + +```typescript +import { SyncReconcileRequestAgentOs } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestAgentOs = "windows"; +``` + +## Values + +```typescript +"linux" | "macos" | "windows" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/models/syncreconcilerequestregime.md b/client-sdks/platform/typescript/docs/models/syncreconcilerequestregime.md new file mode 100644 index 000000000..73aed138f --- /dev/null +++ b/client-sdks/platform/typescript/docs/models/syncreconcilerequestregime.md @@ -0,0 +1,17 @@ +# SyncReconcileRequestRegime + +Supervisor regime: os-service or kubernetes. + +## Example Usage + +```typescript +import { SyncReconcileRequestRegime } from "@alienplatform/platform-api/models"; + +let value: SyncReconcileRequestRegime = "os-service"; +``` + +## Values + +```typescript +"os-service" | "kubernetes" +``` \ No newline at end of file diff --git a/client-sdks/platform/typescript/docs/sdks/deploymentgroups/README.md b/client-sdks/platform/typescript/docs/sdks/deploymentgroups/README.md index 5eb23007e..88f513be5 100644 --- a/client-sdks/platform/typescript/docs/sdks/deploymentgroups/README.md +++ b/client-sdks/platform/typescript/docs/sdks/deploymentgroups/README.md @@ -10,6 +10,7 @@ * [deleteDeploymentGroup](#deletedeploymentgroup) - Delete deployment group * [updateDeploymentGroup](#updatedeploymentgroup) - Update deployment group * [createDeploymentGroupToken](#createdeploymentgrouptoken) - Create deployment group token +* [createFirstPartyDeploymentSession](#createfirstpartydeploymentsession) - Create first-party deployment session ## listDeploymentGroups @@ -500,6 +501,83 @@ run(); ### Errors +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + +## createFirstPartyDeploymentSession + +Mints a short-lived deployment-group token with the recommended self-deploy policy for the authenticated developer. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.deploymentGroups.createFirstPartyDeploymentSession({ + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { deploymentGroupsCreateFirstPartyDeploymentSession } from "@alienplatform/platform-api/funcs/deploymentGroupsCreateFirstPartyDeploymentSession.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await deploymentGroupsCreateFirstPartyDeploymentSession(alien, { + id: "dg_r27ict8c7vcgsumpj90ackf7b", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("deploymentGroupsCreateFirstPartyDeploymentSession failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.CreateFirstPartyDeploymentSessionRequest](../../models/operations/createfirstpartydeploymentsessionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.CreateFirstPartyDeploymentSessionResponse](../../models/createfirstpartydeploymentsessionresponse.md)\>** + +### Errors + | Error Type | Status Code | Content Type | | ------------------------ | ------------------------ | ------------------------ | | errors.APIError | 404 | application/json | diff --git a/client-sdks/platform/typescript/docs/sdks/deployments/README.md b/client-sdks/platform/typescript/docs/sdks/deployments/README.md index 3b450d95c..2772b9b96 100644 --- a/client-sdks/platform/typescript/docs/sdks/deployments/README.md +++ b/client-sdks/platform/typescript/docs/sdks/deployments/README.md @@ -11,12 +11,15 @@ * [listFilterDeploymentGroups](#listfilterdeploymentgroups) - List deployment groups with deployment counts. Used for filter dropdowns. * [get](#get) - Retrieve a deployment by ID. * [getInfo](#getinfo) - Get deployment connection information including command endpoint and resource URLs. +* [rejoin](#rejoin) - Re-acquire a deployment-scoped sync token for an existing deployment by name. Used by the agent when its persistent state was wiped (e.g. emptyDir on pod restart) and `/v1/initialize` would hit a DEPLOYMENT_NAME_ALREADY_EXISTS 409. Deployment-group tokens only. * [import](#import) - Import a deployment from resolved setup infrastructure such as CloudFormation, Terraform, or Helm. +* [setFirstPartyDeploymentInputs](#setfirstpartydeploymentinputs) - Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them. * [createSetupRegistrationOperation](#createsetupregistrationoperation) - Start a durable setup registration operation for CloudFormation, Terraform, or Helm. * [getSetupRegistrationOperation](#getsetupregistrationoperation) - Get setup registration operation status. * [delete](#delete) - Delete, detach, or forget a deployment by ID. * [redeploy](#redeploy) - Redeploy a running deployment with the same release and fresh environment variables. Sets status to update-pending. * [pinRelease](#pinrelease) - Pin or unpin deployment to a specific release. Only works for running deployments. Controller will automatically trigger update to target release. +* [setTargetAgentVersion](#settargetagentversion) - Set (or clear) the agent version this deployment should run. The manager compares this against the agent's reported version on each /v1/sync; when they differ, it emits an agent_target in the response so the agent triggers the upgrade itself. Pass null/omit to clear. * [retry](#retry) - Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point. * [updateEnvironmentVariables](#updateenvironmentvariables) - Update a deployment's environment variables. If the deployment is running and not locked, the status will be changed to update-pending to trigger a deployment. * [createToken](#createtoken) - Create a deployment token (deployment-scoped API key). The deployment must exist before creating a token. @@ -569,6 +572,80 @@ run(); | errors.APIError | 500 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | +## rejoin + +Re-acquire a deployment-scoped sync token for an existing deployment by name. Used by the agent when its persistent state was wiped (e.g. emptyDir on pod restart) and `/v1/initialize` would hit a DEPLOYMENT_NAME_ALREADY_EXISTS 409. Deployment-group tokens only. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.deployments.rejoin({ + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { deploymentsRejoin } from "@alienplatform/platform-api/funcs/deploymentsRejoin.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await deploymentsRejoin(alien, { + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("deploymentsRejoin failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.RejoinDeploymentRequest](../../models/operations/rejoindeploymentrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.RejoinDeploymentResponse](../../models/rejoindeploymentresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 403, 404 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + ## import Import a deployment from resolved setup infrastructure such as CloudFormation, Terraform, or Helm. @@ -706,6 +783,77 @@ run(); | errors.APIError | 500 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | +## setFirstPartyDeploymentInputs + +Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.deployments.setFirstPartyDeploymentInputs(); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { deploymentsSetFirstPartyDeploymentInputs } from "@alienplatform/platform-api/funcs/deploymentsSetFirstPartyDeploymentInputs.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await deploymentsSetFirstPartyDeploymentInputs(alien); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("deploymentsSetFirstPartyDeploymentInputs failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [models.SetFirstPartyDeploymentInputsRequest](../../models/setfirstpartydeploymentinputsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[models.SetFirstPartyDeploymentInputsResponse](../../models/setfirstpartydeploymentinputsresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 400, 403 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + ## createSetupRegistrationOperation Start a durable setup registration operation for CloudFormation, Terraform, or Helm. @@ -1147,6 +1295,83 @@ run(); | errors.APIError | 500 | application/json | | errors.AlienDefaultError | 4XX, 5XX | \*/\* | +## setTargetAgentVersion + +Set (or clear) the agent version this deployment should run. The manager compares this against the agent's reported version on each /v1/sync; when they differ, it emits an agent_target in the response so the agent triggers the upgrade itself. Pass null/omit to clear. + +### Example Usage + + +```typescript +import { Alien } from "@alienplatform/platform-api"; + +const alien = new Alien({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const result = await alien.deployments.setTargetAgentVersion({ + id: "dep_0c29fq4a2yjb7kx3smwdgxlc", + workspace: "my-workspace", + }); + + console.log(result); +} + +run(); +``` + +### Standalone function + +The standalone function version of this method: + +```typescript +import { AlienCore } from "@alienplatform/platform-api/core.js"; +import { deploymentsSetTargetAgentVersion } from "@alienplatform/platform-api/funcs/deploymentsSetTargetAgentVersion.js"; + +// Use `AlienCore` for best tree-shaking performance. +// You can create one instance of it to use across an application. +const alien = new AlienCore({ + apiKey: process.env["ALIEN_API_KEY"] ?? "", +}); + +async function run() { + const res = await deploymentsSetTargetAgentVersion(alien, { + id: "dep_0c29fq4a2yjb7kx3smwdgxlc", + workspace: "my-workspace", + }); + if (res.ok) { + const { value: result } = res; + console.log(result); + } else { + console.log("deploymentsSetTargetAgentVersion failed:", res.error); + } +} + +run(); +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.SetDeploymentTargetAgentVersionRequest](../../models/operations/setdeploymenttargetagentversionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `options` | RequestOptions | :heavy_minus_sign: | Used to set various options for making HTTP requests. | +| `options.fetchOptions` | [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options) | :heavy_minus_sign: | Options that are passed to the underlying HTTP request. This can be used to inject extra headers for examples. All `Request` options, except `method` and `body`, are allowed. | +| `options.retries` | [RetryConfig](../../lib/utils/retryconfig.md) | :heavy_minus_sign: | Enables retrying HTTP requests under certain failure conditions. | + +### Response + +**Promise\<[operations.SetDeploymentTargetAgentVersionResponse](../../models/operations/setdeploymenttargetagentversionresponse.md)\>** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.APIError | 404 | application/json | +| errors.APIError | 500 | application/json | +| errors.AlienDefaultError | 4XX, 5XX | \*/\* | + ## retry Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point. diff --git a/client-sdks/platform/typescript/jsr.json b/client-sdks/platform/typescript/jsr.json index 2b3ae23fc..aa29499ae 100644 --- a/client-sdks/platform/typescript/jsr.json +++ b/client-sdks/platform/typescript/jsr.json @@ -2,7 +2,7 @@ { "name": "@alienplatform/platform-api", - "version": "1.0.185", + "version": "1.1.0", "exports": { ".": "./src/index.ts", "./models/errors": "./src/models/errors/index.ts", diff --git a/client-sdks/platform/typescript/package.json b/client-sdks/platform/typescript/package.json index 9310049ec..03f7464e4 100644 --- a/client-sdks/platform/typescript/package.json +++ b/client-sdks/platform/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@alienplatform/platform-api", - "version": "1.10.4", + "version": "1.1.0", "author": "Alien Software, Inc. ", "homepage": "https://alien.dev", "license": "FSL-1.1-Apache-2.0", @@ -59,8 +59,8 @@ }, "devDependencies": { - "@eslint/js": "^9.19.0", - "eslint": "^9.19.0", + "@eslint/js": "^9.26.0", + "eslint": "^9.26.0", "globals": "^15.14.0", "typescript": "~5.8.3", "typescript-eslint": "^8.26.0" diff --git a/client-sdks/platform/typescript/src/funcs/apiKeysCreate.ts b/client-sdks/platform/typescript/src/funcs/apiKeysCreate.ts index 98ccd89d8..46c8546de 100644 --- a/client-sdks/platform/typescript/src/funcs/apiKeysCreate.ts +++ b/client-sdks/platform/typescript/src/funcs/apiKeysCreate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["403", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/apiKeysDeleteMultiple.ts b/client-sdks/platform/typescript/src/funcs/apiKeysDeleteMultiple.ts index 4df560cc5..2a21f6529 100644 --- a/client-sdks/platform/typescript/src/funcs/apiKeysDeleteMultiple.ts +++ b/client-sdks/platform/typescript/src/funcs/apiKeysDeleteMultiple.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -136,7 +137,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["403", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/apiKeysGet.ts b/client-sdks/platform/typescript/src/funcs/apiKeysGet.ts index ce72fb26e..2c5ad059a 100644 --- a/client-sdks/platform/typescript/src/funcs/apiKeysGet.ts +++ b/client-sdks/platform/typescript/src/funcs/apiKeysGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/api-keys/{id}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/apiKeysList.ts b/client-sdks/platform/typescript/src/funcs/apiKeysList.ts index 004da7a63..b9c7b3ea1 100644 --- a/client-sdks/platform/typescript/src/funcs/apiKeysList.ts +++ b/client-sdks/platform/typescript/src/funcs/apiKeysList.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -136,7 +137,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/apiKeysRevoke.ts b/client-sdks/platform/typescript/src/funcs/apiKeysRevoke.ts index 509c1e2a0..ec7757735 100644 --- a/client-sdks/platform/typescript/src/funcs/apiKeysRevoke.ts +++ b/client-sdks/platform/typescript/src/funcs/apiKeysRevoke.ts @@ -5,6 +5,7 @@ import * as z from "zod/v4"; import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/api-keys/{id}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/apiKeysUpdate.ts b/client-sdks/platform/typescript/src/funcs/apiKeysUpdate.ts index 8c40fbc50..7de5ba22a 100644 --- a/client-sdks/platform/typescript/src/funcs/apiKeysUpdate.ts +++ b/client-sdks/platform/typescript/src/funcs/apiKeysUpdate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -94,7 +95,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/api-keys/{id}")(pathParams); const query = encodeFormQuery({ @@ -143,7 +143,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/authWhoami.ts b/client-sdks/platform/typescript/src/funcs/authWhoami.ts index 605cc3dbe..64ec83ac9 100644 --- a/client-sdks/platform/typescript/src/funcs/authWhoami.ts +++ b/client-sdks/platform/typescript/src/funcs/authWhoami.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -133,7 +134,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "401", "422", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/billingGetEntitlements.ts b/client-sdks/platform/typescript/src/funcs/billingGetEntitlements.ts index 1c0ae4990..c56d82958 100644 --- a/client-sdks/platform/typescript/src/funcs/billingGetEntitlements.ts +++ b/client-sdks/platform/typescript/src/funcs/billingGetEntitlements.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -135,7 +136,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/billingListAuditLog.ts b/client-sdks/platform/typescript/src/funcs/billingListAuditLog.ts index 0b30c452b..9b7b2adcd 100644 --- a/client-sdks/platform/typescript/src/funcs/billingListAuditLog.ts +++ b/client-sdks/platform/typescript/src/funcs/billingListAuditLog.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -134,7 +135,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/cloudRegionsGet.ts b/client-sdks/platform/typescript/src/funcs/cloudRegionsGet.ts index 74342031c..e0c3247b2 100644 --- a/client-sdks/platform/typescript/src/funcs/cloudRegionsGet.ts +++ b/client-sdks/platform/typescript/src/funcs/cloudRegionsGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -131,7 +132,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/commandsCreate.ts b/client-sdks/platform/typescript/src/funcs/commandsCreate.ts index edf436e12..f0faba8f0 100644 --- a/client-sdks/platform/typescript/src/funcs/commandsCreate.ts +++ b/client-sdks/platform/typescript/src/funcs/commandsCreate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/commandsGet.ts b/client-sdks/platform/typescript/src/funcs/commandsGet.ts index 3ca7f9ec7..668f5d228 100644 --- a/client-sdks/platform/typescript/src/funcs/commandsGet.ts +++ b/client-sdks/platform/typescript/src/funcs/commandsGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/commands/{id}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/commandsList.ts b/client-sdks/platform/typescript/src/funcs/commandsList.ts index 76f43c3f6..7bf16b662 100644 --- a/client-sdks/platform/typescript/src/funcs/commandsList.ts +++ b/client-sdks/platform/typescript/src/funcs/commandsList.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -143,7 +144,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/commandsListDeployments.ts b/client-sdks/platform/typescript/src/funcs/commandsListDeployments.ts index 33176865b..f9d50cce5 100644 --- a/client-sdks/platform/typescript/src/funcs/commandsListDeployments.ts +++ b/client-sdks/platform/typescript/src/funcs/commandsListDeployments.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -138,7 +139,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/commandsListNames.ts b/client-sdks/platform/typescript/src/funcs/commandsListNames.ts index cd8c66000..b9c159746 100644 --- a/client-sdks/platform/typescript/src/funcs/commandsListNames.ts +++ b/client-sdks/platform/typescript/src/funcs/commandsListNames.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -136,7 +137,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/commandsUpdate.ts b/client-sdks/platform/typescript/src/funcs/commandsUpdate.ts index 77b845097..4f4002430 100644 --- a/client-sdks/platform/typescript/src/funcs/commandsUpdate.ts +++ b/client-sdks/platform/typescript/src/funcs/commandsUpdate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -94,7 +95,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/commands/{id}")(pathParams); const query = encodeFormQuery({ @@ -143,7 +143,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/debugSessionsCreate.ts b/client-sdks/platform/typescript/src/funcs/debugSessionsCreate.ts index 177493d92..2d0b6da35 100644 --- a/client-sdks/platform/typescript/src/funcs/debugSessionsCreate.ts +++ b/client-sdks/platform/typescript/src/funcs/debugSessionsCreate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -139,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/debugSessionsGet.ts b/client-sdks/platform/typescript/src/funcs/debugSessionsGet.ts index cedd14052..34632e910 100644 --- a/client-sdks/platform/typescript/src/funcs/debugSessionsGet.ts +++ b/client-sdks/platform/typescript/src/funcs/debugSessionsGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/debug-sessions/{id}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/debugSessionsList.ts b/client-sdks/platform/typescript/src/funcs/debugSessionsList.ts index bf514095b..25dbcf524 100644 --- a/client-sdks/platform/typescript/src/funcs/debugSessionsList.ts +++ b/client-sdks/platform/typescript/src/funcs/debugSessionsList.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -143,7 +144,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/debugSessionsUpdate.ts b/client-sdks/platform/typescript/src/funcs/debugSessionsUpdate.ts index c5c0a8008..47937be1a 100644 --- a/client-sdks/platform/typescript/src/funcs/debugSessionsUpdate.ts +++ b/client-sdks/platform/typescript/src/funcs/debugSessionsUpdate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -94,7 +95,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/debug-sessions/{id}")(pathParams); const query = encodeFormQuery({ @@ -143,7 +143,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGetInfo.ts b/client-sdks/platform/typescript/src/funcs/deploymentGetInfo.ts index 5cbe2972d..5bd2c99cd 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentGetInfo.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentGetInfo.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -136,7 +137,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["401", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroup.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroup.ts index 39850e87a..64d123c76 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroup.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroup.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -139,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroupToken.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroupToken.ts index c7967960a..503462acc 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroupToken.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateDeploymentGroupToken.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -98,7 +99,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployment-groups/{id}/tokens")(pathParams); const query = encodeFormQuery({ @@ -147,7 +147,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateFirstPartyDeploymentSession.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateFirstPartyDeploymentSession.ts new file mode 100644 index 000000000..6bbbf2d66 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/deploymentGroupsCreateFirstPartyDeploymentSession.ts @@ -0,0 +1,188 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Create first-party deployment session + * + * @remarks + * Mints a short-lived deployment-group token with the recommended self-deploy policy for the authenticated developer. + */ +export function deploymentGroupsCreateFirstPartyDeploymentSession( + client: AlienCore, + request: operations.CreateFirstPartyDeploymentSessionRequest, + options?: RequestOptions, +): APIPromise< + Result< + models.CreateFirstPartyDeploymentSessionResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.CreateFirstPartyDeploymentSessionRequest, + options?: RequestOptions, +): Promise< + [ + Result< + models.CreateFirstPartyDeploymentSessionResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.CreateFirstPartyDeploymentSessionRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = null; + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path = pathToFunc("/v1/deployment-groups/{id}/first-party-session")( + pathParams, + ); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "createFirstPartyDeploymentSession", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.CreateFirstPartyDeploymentSessionResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.CreateFirstPartyDeploymentSessionResponse$inboundSchema), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsDeleteDeploymentGroup.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsDeleteDeploymentGroup.ts index 614c92f68..f63c79f55 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentGroupsDeleteDeploymentGroup.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentGroupsDeleteDeploymentGroup.ts @@ -5,6 +5,7 @@ import * as z from "zod/v4"; import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -93,7 +94,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployment-groups/{id}")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsGetDeploymentGroup.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsGetDeploymentGroup.ts index 7e0b8d816..2c9f0eee2 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentGroupsGetDeploymentGroup.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentGroupsGetDeploymentGroup.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -91,7 +92,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployment-groups/{id}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsListDeploymentGroups.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsListDeploymentGroups.ts index 4b1e15149..06704dd49 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentGroupsListDeploymentGroups.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentGroupsListDeploymentGroups.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -140,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentGroupsUpdateDeploymentGroup.ts b/client-sdks/platform/typescript/src/funcs/deploymentGroupsUpdateDeploymentGroup.ts index 076a72e7e..be6658bd2 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentGroupsUpdateDeploymentGroup.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentGroupsUpdateDeploymentGroup.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -95,7 +96,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployment-groups/{id}")(pathParams); const query = encodeFormQuery({ @@ -144,7 +144,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentPlanCompute.ts b/client-sdks/platform/typescript/src/funcs/deploymentPlanCompute.ts index b1a43030a..233e8144c 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentPlanCompute.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentPlanCompute.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["401", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentPrepareStack.ts b/client-sdks/platform/typescript/src/funcs/deploymentPrepareStack.ts index 1c13444c9..d403c51da 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentPrepareStack.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentPrepareStack.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["401", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsCreate.ts b/client-sdks/platform/typescript/src/funcs/deploymentsCreate.ts index 29e227164..b7c128356 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsCreate.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsCreate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "403", "404", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsCreateSetupRegistrationOperation.ts b/client-sdks/platform/typescript/src/funcs/deploymentsCreateSetupRegistrationOperation.ts index cdd904fec..06f493e8b 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsCreateSetupRegistrationOperation.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsCreateSetupRegistrationOperation.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -140,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsCreateToken.ts b/client-sdks/platform/typescript/src/funcs/deploymentsCreateToken.ts index c3a6fa673..147cec803 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsCreateToken.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsCreateToken.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -95,7 +96,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployments/{id}/token")(pathParams); const query = encodeFormQuery({ @@ -144,7 +144,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsDelete.ts b/client-sdks/platform/typescript/src/funcs/deploymentsDelete.ts index 73a22f47f..dbc6d88e6 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsDelete.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsDelete.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -94,7 +95,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployments/{id}/delete")(pathParams); const query = encodeFormQuery({ @@ -143,7 +143,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsGet.ts b/client-sdks/platform/typescript/src/funcs/deploymentsGet.ts index 091bf879e..105fb07ec 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsGet.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployments/{id}")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsGetInfo.ts b/client-sdks/platform/typescript/src/funcs/deploymentsGetInfo.ts index 04768a7ee..cc5f80fa6 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsGetInfo.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsGetInfo.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -93,7 +94,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployments/{id}/info")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsGetSetupRegistrationOperation.ts b/client-sdks/platform/typescript/src/funcs/deploymentsGetSetupRegistrationOperation.ts index 61823d3c4..b8f9227ef 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsGetSetupRegistrationOperation.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsGetSetupRegistrationOperation.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -95,7 +96,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployments/setup-registration-operations/{id}")( pathParams, ); @@ -145,7 +145,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsGetStats.ts b/client-sdks/platform/typescript/src/funcs/deploymentsGetStats.ts index e1df927b2..0c8a19bec 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsGetStats.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsGetStats.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -142,7 +143,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsImport.ts b/client-sdks/platform/typescript/src/funcs/deploymentsImport.ts index 903c16882..757a9023a 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsImport.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsImport.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsList.ts b/client-sdks/platform/typescript/src/funcs/deploymentsList.ts index b43a1bfbb..17e05be45 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsList.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsList.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -143,7 +144,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsListFilterDeploymentGroups.ts b/client-sdks/platform/typescript/src/funcs/deploymentsListFilterDeploymentGroups.ts index 7602626cc..f725fe325 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsListFilterDeploymentGroups.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsListFilterDeploymentGroups.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsListFilterEnvironments.ts b/client-sdks/platform/typescript/src/funcs/deploymentsListFilterEnvironments.ts index 074b12741..f7016226a 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsListFilterEnvironments.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsListFilterEnvironments.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -135,7 +136,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsPinRelease.ts b/client-sdks/platform/typescript/src/funcs/deploymentsPinRelease.ts index 18d7297e2..1efe3105f 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsPinRelease.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsPinRelease.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployments/{id}/pin-release")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsRedeploy.ts b/client-sdks/platform/typescript/src/funcs/deploymentsRedeploy.ts index a510ec7b4..4cdb89810 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsRedeploy.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsRedeploy.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -91,7 +92,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployments/{id}/redeploy")(pathParams); const query = encodeFormQuery({ @@ -139,7 +139,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsRejoin.ts b/client-sdks/platform/typescript/src/funcs/deploymentsRejoin.ts new file mode 100644 index 000000000..a02caa067 --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/deploymentsRejoin.ts @@ -0,0 +1,177 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Re-acquire a deployment-scoped sync token for an existing deployment by name. Used by the agent when its persistent state was wiped (e.g. emptyDir on pod restart) and `/v1/initialize` would hit a DEPLOYMENT_NAME_ALREADY_EXISTS 409. Deployment-group tokens only. + */ +export function deploymentsRejoin( + client: AlienCore, + request?: operations.RejoinDeploymentRequest | undefined, + options?: RequestOptions, +): APIPromise< + Result< + models.RejoinDeploymentResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request?: operations.RejoinDeploymentRequest | undefined, + options?: RequestOptions, +): Promise< + [ + Result< + models.RejoinDeploymentResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.RejoinDeploymentRequest$outboundSchema.optional().parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload?.RejoinDeploymentRequest, { + explode: true, + }); + + const path = pathToFunc("/v1/deployments/rejoin")(); + + const query = encodeFormQuery({ + "workspace": payload?.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "rejoinDeployment", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "POST", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.RejoinDeploymentResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.RejoinDeploymentResponse$inboundSchema), + M.jsonErr([403, 404], errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsRetry.ts b/client-sdks/platform/typescript/src/funcs/deploymentsRetry.ts index 23cc8640c..07b06a436 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsRetry.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsRetry.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -91,7 +92,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployments/{id}/retry")(pathParams); const query = encodeFormQuery({ @@ -139,7 +139,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsSetFirstPartyDeploymentInputs.ts b/client-sdks/platform/typescript/src/funcs/deploymentsSetFirstPartyDeploymentInputs.ts new file mode 100644 index 000000000..25adfbb1b --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/deploymentsSetFirstPartyDeploymentInputs.ts @@ -0,0 +1,173 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as models from "../models/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them. + */ +export function deploymentsSetFirstPartyDeploymentInputs( + client: AlienCore, + request?: models.SetFirstPartyDeploymentInputsRequest | undefined, + options?: RequestOptions, +): APIPromise< + Result< + models.SetFirstPartyDeploymentInputsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request?: models.SetFirstPartyDeploymentInputsRequest | undefined, + options?: RequestOptions, +): Promise< + [ + Result< + models.SetFirstPartyDeploymentInputsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + models.SetFirstPartyDeploymentInputsRequest$outboundSchema.optional() + .parse(value), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = payload === undefined + ? null + : encodeJSON("body", payload, { explode: true }); + + const path = pathToFunc("/v1/deployments/first-party-inputs")(); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "setFirstPartyDeploymentInputs", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + models.SetFirstPartyDeploymentInputsResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json(200, models.SetFirstPartyDeploymentInputsResponse$inboundSchema), + M.jsonErr([400, 403], errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsSetTargetAgentVersion.ts b/client-sdks/platform/typescript/src/funcs/deploymentsSetTargetAgentVersion.ts new file mode 100644 index 000000000..91a63ca9a --- /dev/null +++ b/client-sdks/platform/typescript/src/funcs/deploymentsSetTargetAgentVersion.ts @@ -0,0 +1,190 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import { AlienCore } from "../core.js"; +import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; +import * as M from "../lib/matchers.js"; +import { compactMap } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { RequestOptions } from "../lib/sdks.js"; +import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js"; +import { pathToFunc } from "../lib/url.js"; +import { AlienError } from "../models/errors/alienerror.js"; +import { + ConnectionError, + InvalidRequestError, + RequestAbortedError, + RequestTimeoutError, + UnexpectedClientError, +} from "../models/errors/httpclienterrors.js"; +import * as errors from "../models/errors/index.js"; +import { ResponseValidationError } from "../models/errors/responsevalidationerror.js"; +import { SDKValidationError } from "../models/errors/sdkvalidationerror.js"; +import * as operations from "../models/operations/index.js"; +import { APICall, APIPromise } from "../types/async.js"; +import { Result } from "../types/fp.js"; + +/** + * Set (or clear) the agent version this deployment should run. The manager compares this against the agent's reported version on each /v1/sync; when they differ, it emits an agent_target in the response so the agent triggers the upgrade itself. Pass null/omit to clear. + */ +export function deploymentsSetTargetAgentVersion( + client: AlienCore, + request: operations.SetDeploymentTargetAgentVersionRequest, + options?: RequestOptions, +): APIPromise< + Result< + operations.SetDeploymentTargetAgentVersionResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + > +> { + return new APIPromise($do( + client, + request, + options, + )); +} + +async function $do( + client: AlienCore, + request: operations.SetDeploymentTargetAgentVersionRequest, + options?: RequestOptions, +): Promise< + [ + Result< + operations.SetDeploymentTargetAgentVersionResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >, + APICall, + ] +> { + const parsed = safeParse( + request, + (value) => + operations.SetDeploymentTargetAgentVersionRequest$outboundSchema.parse( + value, + ), + "Input validation failed", + ); + if (!parsed.ok) { + return [parsed, { status: "invalid" }]; + } + const payload = parsed.value; + const body = encodeJSON("body", payload.SetTargetAgentVersionRequest, { + explode: true, + }); + + const pathParams = { + id: encodeSimple("id", payload.id, { + explode: false, + charEncoding: "percent", + }), + }; + const path = pathToFunc("/v1/deployments/{id}/target-agent-version")( + pathParams, + ); + + const query = encodeFormQuery({ + "workspace": payload.workspace, + }); + + const headers = new Headers(compactMap({ + "Content-Type": "application/json", + Accept: "application/json", + })); + + const secConfig = await extractSecurity(client._options.apiKey); + const securityInput = secConfig == null ? {} : { apiKey: secConfig }; + const requestSecurity = resolveGlobalSecurity(securityInput); + + const context = { + options: client._options, + baseURL: options?.serverURL ?? client._baseURL ?? "", + operationID: "setDeploymentTargetAgentVersion", + oAuth2Scopes: null, + + resolvedSecurity: requestSecurity, + + securitySource: client._options.apiKey, + retryConfig: options?.retries + || client._options.retryConfig + || { strategy: "none" }, + retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"], + }; + + const requestRes = client._createRequest(context, { + security: requestSecurity, + method: "PUT", + baseURL: options?.serverURL, + path: path, + headers: headers, + query: query, + body: body, + userAgent: client._options.userAgent, + timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1, + }, options); + if (!requestRes.ok) { + return [requestRes, { status: "invalid" }]; + } + const req = requestRes.value; + + const doResult = await client._do(req, { + context, + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), + retryConfig: context.retryConfig, + retryCodes: context.retryCodes, + }); + if (!doResult.ok) { + return [doResult, { status: "request-error", request: req }]; + } + const response = doResult.value; + + const responseFields = { + HttpMeta: { Response: response, Request: req }, + }; + + const [result] = await M.match< + operations.SetDeploymentTargetAgentVersionResponse, + | errors.APIError + | AlienError + | ResponseValidationError + | ConnectionError + | RequestAbortedError + | RequestTimeoutError + | InvalidRequestError + | UnexpectedClientError + | SDKValidationError + >( + M.json( + 202, + operations.SetDeploymentTargetAgentVersionResponse$inboundSchema, + ), + M.jsonErr(404, errors.APIError$inboundSchema), + M.jsonErr(500, errors.APIError$inboundSchema), + M.fail("4XX"), + M.fail("5XX"), + )(response, req, { extraFields: responseFields }); + if (!result.ok) { + return [result, { status: "complete", request: req, response }]; + } + + return [result, { status: "complete", request: req, response }]; +} diff --git a/client-sdks/platform/typescript/src/funcs/deploymentsUpdateEnvironmentVariables.ts b/client-sdks/platform/typescript/src/funcs/deploymentsUpdateEnvironmentVariables.ts index a6d0bd967..b6846cc76 100644 --- a/client-sdks/platform/typescript/src/funcs/deploymentsUpdateEnvironmentVariables.ts +++ b/client-sdks/platform/typescript/src/funcs/deploymentsUpdateEnvironmentVariables.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -97,7 +98,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/deployments/{id}/environment-variables")( pathParams, ); @@ -148,7 +148,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/domainsCreate.ts b/client-sdks/platform/typescript/src/funcs/domainsCreate.ts index a5d25eb78..2360ddc50 100644 --- a/client-sdks/platform/typescript/src/funcs/domainsCreate.ts +++ b/client-sdks/platform/typescript/src/funcs/domainsCreate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -135,7 +136,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "403", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/domainsCreateEndpoint.ts b/client-sdks/platform/typescript/src/funcs/domainsCreateEndpoint.ts index 9474152be..3006584bd 100644 --- a/client-sdks/platform/typescript/src/funcs/domainsCreateEndpoint.ts +++ b/client-sdks/platform/typescript/src/funcs/domainsCreateEndpoint.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -93,7 +94,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/domains/{id}/endpoints")(pathParams); const query = encodeFormQuery({ @@ -142,7 +142,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/domainsDelete.ts b/client-sdks/platform/typescript/src/funcs/domainsDelete.ts index 09e1097d3..3269d7ca4 100644 --- a/client-sdks/platform/typescript/src/funcs/domainsDelete.ts +++ b/client-sdks/platform/typescript/src/funcs/domainsDelete.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -91,7 +92,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/domains/{id}")(pathParams); const query = encodeFormQuery({ @@ -139,7 +139,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["403", "404", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/domainsGet.ts b/client-sdks/platform/typescript/src/funcs/domainsGet.ts index 68a8aa03a..6ce571b71 100644 --- a/client-sdks/platform/typescript/src/funcs/domainsGet.ts +++ b/client-sdks/platform/typescript/src/funcs/domainsGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/domains/{id}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/domainsList.ts b/client-sdks/platform/typescript/src/funcs/domainsList.ts index 352de6b74..1c36528bf 100644 --- a/client-sdks/platform/typescript/src/funcs/domainsList.ts +++ b/client-sdks/platform/typescript/src/funcs/domainsList.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -133,7 +134,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/domainsRefresh.ts b/client-sdks/platform/typescript/src/funcs/domainsRefresh.ts index 88fab9817..8fa6dfb10 100644 --- a/client-sdks/platform/typescript/src/funcs/domainsRefresh.ts +++ b/client-sdks/platform/typescript/src/funcs/domainsRefresh.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/domains/{id}/refresh")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["403", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/eventsGet.ts b/client-sdks/platform/typescript/src/funcs/eventsGet.ts index 977fbe409..f456469aa 100644 --- a/client-sdks/platform/typescript/src/funcs/eventsGet.ts +++ b/client-sdks/platform/typescript/src/funcs/eventsGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/events/{id}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/eventsList.ts b/client-sdks/platform/typescript/src/funcs/eventsList.ts index 9eb623291..a011fc18d 100644 --- a/client-sdks/platform/typescript/src/funcs/eventsList.ts +++ b/client-sdks/platform/typescript/src/funcs/eventsList.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersCancelSetup.ts b/client-sdks/platform/typescript/src/funcs/managersCancelSetup.ts index 391d86593..4bb2011bf 100644 --- a/client-sdks/platform/typescript/src/funcs/managersCancelSetup.ts +++ b/client-sdks/platform/typescript/src/funcs/managersCancelSetup.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -91,7 +92,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/cancel-setup")(pathParams); const query = encodeFormQuery({ @@ -139,7 +139,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersCreate.ts b/client-sdks/platform/typescript/src/funcs/managersCreate.ts index 56b94ee67..2b8f05d1a 100644 --- a/client-sdks/platform/typescript/src/funcs/managersCreate.ts +++ b/client-sdks/platform/typescript/src/funcs/managersCreate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersDelete.ts b/client-sdks/platform/typescript/src/funcs/managersDelete.ts index 7eb37a567..d37e4c6a6 100644 --- a/client-sdks/platform/typescript/src/funcs/managersDelete.ts +++ b/client-sdks/platform/typescript/src/funcs/managersDelete.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -91,7 +92,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}")(pathParams); const query = encodeFormQuery({ @@ -139,7 +139,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersGenerateManagerToken.ts b/client-sdks/platform/typescript/src/funcs/managersGenerateManagerToken.ts index 45ee42d61..b800968e7 100644 --- a/client-sdks/platform/typescript/src/funcs/managersGenerateManagerToken.ts +++ b/client-sdks/platform/typescript/src/funcs/managersGenerateManagerToken.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -95,7 +96,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/token")(pathParams); const query = encodeFormQuery({ @@ -144,7 +144,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersGet.ts b/client-sdks/platform/typescript/src/funcs/managersGet.ts index 21d8914bf..37167fc3a 100644 --- a/client-sdks/platform/typescript/src/funcs/managersGet.ts +++ b/client-sdks/platform/typescript/src/funcs/managersGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersGetDeployment.ts b/client-sdks/platform/typescript/src/funcs/managersGetDeployment.ts index ff23c4079..46c960dd6 100644 --- a/client-sdks/platform/typescript/src/funcs/managersGetDeployment.ts +++ b/client-sdks/platform/typescript/src/funcs/managersGetDeployment.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -93,7 +94,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/deployment")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersGetDomainBinding.ts b/client-sdks/platform/typescript/src/funcs/managersGetDomainBinding.ts index 48b8747c9..500c7a1c7 100644 --- a/client-sdks/platform/typescript/src/funcs/managersGetDomainBinding.ts +++ b/client-sdks/platform/typescript/src/funcs/managersGetDomainBinding.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -93,7 +94,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/domain-binding")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersGetManagementConfig.ts b/client-sdks/platform/typescript/src/funcs/managersGetManagementConfig.ts index fdaf8c9aa..55eeed602 100644 --- a/client-sdks/platform/typescript/src/funcs/managersGetManagementConfig.ts +++ b/client-sdks/platform/typescript/src/funcs/managersGetManagementConfig.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/management-config")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersList.ts b/client-sdks/platform/typescript/src/funcs/managersList.ts index d75b93565..166185ffa 100644 --- a/client-sdks/platform/typescript/src/funcs/managersList.ts +++ b/client-sdks/platform/typescript/src/funcs/managersList.ts @@ -5,6 +5,7 @@ import * as z from "zod/v4"; import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersListEvents.ts b/client-sdks/platform/typescript/src/funcs/managersListEvents.ts index 8dbe70bd7..896bb6f85 100644 --- a/client-sdks/platform/typescript/src/funcs/managersListEvents.ts +++ b/client-sdks/platform/typescript/src/funcs/managersListEvents.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -91,7 +92,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/events")(pathParams); const query = encodeFormQuery({ @@ -139,7 +139,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersProvision.ts b/client-sdks/platform/typescript/src/funcs/managersProvision.ts index 56fd24c8d..874ee1c33 100644 --- a/client-sdks/platform/typescript/src/funcs/managersProvision.ts +++ b/client-sdks/platform/typescript/src/funcs/managersProvision.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -91,7 +92,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/provision")(pathParams); const query = encodeFormQuery({ @@ -139,7 +139,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersReportHeartbeat.ts b/client-sdks/platform/typescript/src/funcs/managersReportHeartbeat.ts index cdc8c3497..b751290d4 100644 --- a/client-sdks/platform/typescript/src/funcs/managersReportHeartbeat.ts +++ b/client-sdks/platform/typescript/src/funcs/managersReportHeartbeat.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -95,7 +96,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/heartbeat")(pathParams); const query = encodeFormQuery({ @@ -144,7 +144,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersResolveGcpOAuthProvider.ts b/client-sdks/platform/typescript/src/funcs/managersResolveGcpOAuthProvider.ts index 7c40cf684..48c501a61 100644 --- a/client-sdks/platform/typescript/src/funcs/managersResolveGcpOAuthProvider.ts +++ b/client-sdks/platform/typescript/src/funcs/managersResolveGcpOAuthProvider.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -99,7 +100,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/gcp-oauth-provider/resolve")( pathParams, ); @@ -150,7 +150,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["401", "403", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersRetry.ts b/client-sdks/platform/typescript/src/funcs/managersRetry.ts index 03bafd3dc..54ce7880f 100644 --- a/client-sdks/platform/typescript/src/funcs/managersRetry.ts +++ b/client-sdks/platform/typescript/src/funcs/managersRetry.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/retry")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersRetrySetup.ts b/client-sdks/platform/typescript/src/funcs/managersRetrySetup.ts index 230815ac9..d9386fcc9 100644 --- a/client-sdks/platform/typescript/src/funcs/managersRetrySetup.ts +++ b/client-sdks/platform/typescript/src/funcs/managersRetrySetup.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/setup-token")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersUpdate.ts b/client-sdks/platform/typescript/src/funcs/managersUpdate.ts index 795c2f1bb..3cd94e3b4 100644 --- a/client-sdks/platform/typescript/src/funcs/managersUpdate.ts +++ b/client-sdks/platform/typescript/src/funcs/managersUpdate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -93,7 +94,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/update")(pathParams); const query = encodeFormQuery({ @@ -142,7 +142,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/managersUpdateDomainBinding.ts b/client-sdks/platform/typescript/src/funcs/managersUpdateDomainBinding.ts index 6a9f1b94b..3b21dde26 100644 --- a/client-sdks/platform/typescript/src/funcs/managersUpdateDomainBinding.ts +++ b/client-sdks/platform/typescript/src/funcs/managersUpdateDomainBinding.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -95,7 +96,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/managers/{id}/domain-binding")(pathParams); const query = encodeFormQuery({ @@ -144,7 +144,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/packagesCancel.ts b/client-sdks/platform/typescript/src/funcs/packagesCancel.ts index 23e57a40c..2e3a81bb7 100644 --- a/client-sdks/platform/typescript/src/funcs/packagesCancel.ts +++ b/client-sdks/platform/typescript/src/funcs/packagesCancel.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/packages/{id}/cancel")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/packagesGet.ts b/client-sdks/platform/typescript/src/funcs/packagesGet.ts index e51463b4f..0c3250e70 100644 --- a/client-sdks/platform/typescript/src/funcs/packagesGet.ts +++ b/client-sdks/platform/typescript/src/funcs/packagesGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/packages/{id}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/packagesList.ts b/client-sdks/platform/typescript/src/funcs/packagesList.ts index cc0eb8047..4912ca2db 100644 --- a/client-sdks/platform/typescript/src/funcs/packagesList.ts +++ b/client-sdks/platform/typescript/src/funcs/packagesList.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -139,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/packagesRebuild.ts b/client-sdks/platform/typescript/src/funcs/packagesRebuild.ts index f8e261fb7..587d70a6e 100644 --- a/client-sdks/platform/typescript/src/funcs/packagesRebuild.ts +++ b/client-sdks/platform/typescript/src/funcs/packagesRebuild.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -134,7 +135,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/projectsCreate.ts b/client-sdks/platform/typescript/src/funcs/projectsCreate.ts index ac9d49631..1fe866c58 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsCreate.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsCreate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -134,7 +135,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "401", "403", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/projectsCreateFromTemplate.ts b/client-sdks/platform/typescript/src/funcs/projectsCreateFromTemplate.ts index e972283f1..974bebbb9 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsCreateFromTemplate.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsCreateFromTemplate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -135,7 +136,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "409", "4XX", "500", "503", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/projectsDelete.ts b/client-sdks/platform/typescript/src/funcs/projectsDelete.ts index 9c3797d73..16ed9a08f 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsDelete.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsDelete.ts @@ -5,6 +5,7 @@ import * as z from "zod/v4"; import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/projects/{idOrName}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/projectsGet.ts b/client-sdks/platform/typescript/src/funcs/projectsGet.ts index ce1689521..d2798deee 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsGet.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/projects/{idOrName}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/projectsGetActiveRelease.ts b/client-sdks/platform/typescript/src/funcs/projectsGetActiveRelease.ts index ead8e6b01..db62fddb9 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsGetActiveRelease.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsGetActiveRelease.ts @@ -5,6 +5,7 @@ import * as z from "zod/v4"; import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -93,7 +94,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/projects/{idOrName}/active-release")(pathParams); const query = encodeFormQuery({ @@ -142,7 +142,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/projectsGetDeploymentPortalDomain.ts b/client-sdks/platform/typescript/src/funcs/projectsGetDeploymentPortalDomain.ts index d1029a912..14b4c7844 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsGetDeploymentPortalDomain.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsGetDeploymentPortalDomain.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -95,7 +96,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/projects/{idOrName}/deployment-portal-domain")( pathParams, ); @@ -145,7 +145,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/projectsGetGcpOAuthProvider.ts b/client-sdks/platform/typescript/src/funcs/projectsGetGcpOAuthProvider.ts index 60bfcb744..bebba0938 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsGetGcpOAuthProvider.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsGetGcpOAuthProvider.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -93,7 +94,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/projects/{idOrName}/gcp-oauth-provider")( pathParams, ); @@ -143,7 +143,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/projectsGetTemplateUrls.ts b/client-sdks/platform/typescript/src/funcs/projectsGetTemplateUrls.ts index a6bde43ed..309966bbc 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsGetTemplateUrls.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsGetTemplateUrls.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/projects/{idOrName}/template-urls")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/projectsList.ts b/client-sdks/platform/typescript/src/funcs/projectsList.ts index 9759c4fbe..1124284be 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsList.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsList.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/projectsUpdate.ts b/client-sdks/platform/typescript/src/funcs/projectsUpdate.ts index 9389fe2a5..c7acbba05 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsUpdate.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsUpdate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/projects/{idOrName}")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/projectsUpdateGcpOAuthProvider.ts b/client-sdks/platform/typescript/src/funcs/projectsUpdateGcpOAuthProvider.ts index fd46ae522..73f7a51d4 100644 --- a/client-sdks/platform/typescript/src/funcs/projectsUpdateGcpOAuthProvider.ts +++ b/client-sdks/platform/typescript/src/funcs/projectsUpdateGcpOAuthProvider.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -97,7 +98,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/projects/{idOrName}/gcp-oauth-provider")( pathParams, ); @@ -148,7 +148,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/releasesCreate.ts b/client-sdks/platform/typescript/src/funcs/releasesCreate.ts index 96fb8d498..8677d61b3 100644 --- a/client-sdks/platform/typescript/src/funcs/releasesCreate.ts +++ b/client-sdks/platform/typescript/src/funcs/releasesCreate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/releasesGet.ts b/client-sdks/platform/typescript/src/funcs/releasesGet.ts index 93b01e23c..ed45b1521 100644 --- a/client-sdks/platform/typescript/src/funcs/releasesGet.ts +++ b/client-sdks/platform/typescript/src/funcs/releasesGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/releases/{id}")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/releasesList.ts b/client-sdks/platform/typescript/src/funcs/releasesList.ts index 945fb175c..eae3bc939 100644 --- a/client-sdks/platform/typescript/src/funcs/releasesList.ts +++ b/client-sdks/platform/typescript/src/funcs/releasesList.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -142,7 +143,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/releasesListAuthors.ts b/client-sdks/platform/typescript/src/funcs/releasesListAuthors.ts index 268891730..a2c8301f4 100644 --- a/client-sdks/platform/typescript/src/funcs/releasesListAuthors.ts +++ b/client-sdks/platform/typescript/src/funcs/releasesListAuthors.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -138,7 +139,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/releasesListBranches.ts b/client-sdks/platform/typescript/src/funcs/releasesListBranches.ts index 1b94e03cf..ec29f3d0b 100644 --- a/client-sdks/platform/typescript/src/funcs/releasesListBranches.ts +++ b/client-sdks/platform/typescript/src/funcs/releasesListBranches.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -138,7 +139,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/resolveResolve.ts b/client-sdks/platform/typescript/src/funcs/resolveResolve.ts index 215c08f3b..d04609fc9 100644 --- a/client-sdks/platform/typescript/src/funcs/resolveResolve.ts +++ b/client-sdks/platform/typescript/src/funcs/resolveResolve.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -138,7 +139,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "503", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/resourcesGetDeploymentDetail.ts b/client-sdks/platform/typescript/src/funcs/resourcesGetDeploymentDetail.ts index 682ef006a..160d90e51 100644 --- a/client-sdks/platform/typescript/src/funcs/resourcesGetDeploymentDetail.ts +++ b/client-sdks/platform/typescript/src/funcs/resourcesGetDeploymentDetail.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -97,7 +98,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc( "/v1/resources/{area}/deployments/{deploymentId}/{resourceId}", )(pathParams); @@ -148,7 +148,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/resourcesListDeployments.ts b/client-sdks/platform/typescript/src/funcs/resourcesListDeployments.ts index 5cf546825..005a1e406 100644 --- a/client-sdks/platform/typescript/src/funcs/resourcesListDeployments.ts +++ b/client-sdks/platform/typescript/src/funcs/resourcesListDeployments.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -93,7 +94,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/resources/{area}/{resourceId}/deployments")( pathParams, ); @@ -146,7 +146,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/resourcesListOverview.ts b/client-sdks/platform/typescript/src/funcs/resourcesListOverview.ts index bd0af0059..ce72b89b6 100644 --- a/client-sdks/platform/typescript/src/funcs/resourcesListOverview.ts +++ b/client-sdks/platform/typescript/src/funcs/resourcesListOverview.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -89,7 +90,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/resources/{area}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/syncAcquire.ts b/client-sdks/platform/typescript/src/funcs/syncAcquire.ts index 6f5239fdd..3e0476658 100644 --- a/client-sdks/platform/typescript/src/funcs/syncAcquire.ts +++ b/client-sdks/platform/typescript/src/funcs/syncAcquire.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -137,7 +138,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/syncList.ts b/client-sdks/platform/typescript/src/funcs/syncList.ts index c9b4a1540..7d580ae4b 100644 --- a/client-sdks/platform/typescript/src/funcs/syncList.ts +++ b/client-sdks/platform/typescript/src/funcs/syncList.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -135,7 +136,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/syncReconcile.ts b/client-sdks/platform/typescript/src/funcs/syncReconcile.ts index 78715f4d8..ed500b9ea 100644 --- a/client-sdks/platform/typescript/src/funcs/syncReconcile.ts +++ b/client-sdks/platform/typescript/src/funcs/syncReconcile.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -136,7 +137,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/syncRelease.ts b/client-sdks/platform/typescript/src/funcs/syncRelease.ts index c4c595b98..0f9fc3d91 100644 --- a/client-sdks/platform/typescript/src/funcs/syncRelease.ts +++ b/client-sdks/platform/typescript/src/funcs/syncRelease.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -135,7 +136,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/userCompleteProfileSetup.ts b/client-sdks/platform/typescript/src/funcs/userCompleteProfileSetup.ts index a687f130b..d3e3961d3 100644 --- a/client-sdks/platform/typescript/src/funcs/userCompleteProfileSetup.ts +++ b/client-sdks/platform/typescript/src/funcs/userCompleteProfileSetup.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -131,7 +132,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["401", "422", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/userCreateWorkspace.ts b/client-sdks/platform/typescript/src/funcs/userCreateWorkspace.ts index fdbf70e7a..5751dc06f 100644 --- a/client-sdks/platform/typescript/src/funcs/userCreateWorkspace.ts +++ b/client-sdks/platform/typescript/src/funcs/userCreateWorkspace.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -132,7 +133,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "401", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/userGetProfile.ts b/client-sdks/platform/typescript/src/funcs/userGetProfile.ts index 4d3e6d72d..2e764cccb 100644 --- a/client-sdks/platform/typescript/src/funcs/userGetProfile.ts +++ b/client-sdks/platform/typescript/src/funcs/userGetProfile.ts @@ -3,6 +3,7 @@ */ import { AlienCore } from "../core.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { RequestOptions } from "../lib/sdks.js"; @@ -110,7 +111,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["401", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/userListGitNamespaceRepositories.ts b/client-sdks/platform/typescript/src/funcs/userListGitNamespaceRepositories.ts index 85bc01501..33e8e3e73 100644 --- a/client-sdks/platform/typescript/src/funcs/userListGitNamespaceRepositories.ts +++ b/client-sdks/platform/typescript/src/funcs/userListGitNamespaceRepositories.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -94,7 +95,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/user/git-namespaces/{id}/repositories")( pathParams, ); @@ -144,7 +144,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["401", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/userListGitNamespaces.ts b/client-sdks/platform/typescript/src/funcs/userListGitNamespaces.ts index e6ad75387..afb39d0de 100644 --- a/client-sdks/platform/typescript/src/funcs/userListGitNamespaces.ts +++ b/client-sdks/platform/typescript/src/funcs/userListGitNamespaces.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -135,7 +136,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["401", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/userListMemberships.ts b/client-sdks/platform/typescript/src/funcs/userListMemberships.ts index f0a1d609b..d2b3a50f1 100644 --- a/client-sdks/platform/typescript/src/funcs/userListMemberships.ts +++ b/client-sdks/platform/typescript/src/funcs/userListMemberships.ts @@ -3,6 +3,7 @@ */ import { AlienCore } from "../core.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { RequestOptions } from "../lib/sdks.js"; @@ -110,7 +111,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["401", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/userSyncGitNamespaces.ts b/client-sdks/platform/typescript/src/funcs/userSyncGitNamespaces.ts index 2d436604e..1061db8ce 100644 --- a/client-sdks/platform/typescript/src/funcs/userSyncGitNamespaces.ts +++ b/client-sdks/platform/typescript/src/funcs/userSyncGitNamespaces.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -133,7 +134,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["401", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/userUpdateProfile.ts b/client-sdks/platform/typescript/src/funcs/userUpdateProfile.ts index 961681cb1..a1bc1c678 100644 --- a/client-sdks/platform/typescript/src/funcs/userUpdateProfile.ts +++ b/client-sdks/platform/typescript/src/funcs/userUpdateProfile.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeJSON } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -134,7 +135,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["401", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/workspacesAddMember.ts b/client-sdks/platform/typescript/src/funcs/workspacesAddMember.ts index 14a736512..7b6793dba 100644 --- a/client-sdks/platform/typescript/src/funcs/workspacesAddMember.ts +++ b/client-sdks/platform/typescript/src/funcs/workspacesAddMember.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/workspaces/{id}/members")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "409", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/workspacesDelete.ts b/client-sdks/platform/typescript/src/funcs/workspacesDelete.ts index 11a6f24c6..1923dc12d 100644 --- a/client-sdks/platform/typescript/src/funcs/workspacesDelete.ts +++ b/client-sdks/platform/typescript/src/funcs/workspacesDelete.ts @@ -5,6 +5,7 @@ import * as z from "zod/v4"; import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/workspaces/{id}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/workspacesDismissOnboarding.ts b/client-sdks/platform/typescript/src/funcs/workspacesDismissOnboarding.ts index 1415902a7..8c4657d69 100644 --- a/client-sdks/platform/typescript/src/funcs/workspacesDismissOnboarding.ts +++ b/client-sdks/platform/typescript/src/funcs/workspacesDismissOnboarding.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -93,7 +94,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/workspaces/{id}/dismiss-onboarding")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/workspacesGet.ts b/client-sdks/platform/typescript/src/funcs/workspacesGet.ts index a1dd5004d..1c94b4bb3 100644 --- a/client-sdks/platform/typescript/src/funcs/workspacesGet.ts +++ b/client-sdks/platform/typescript/src/funcs/workspacesGet.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/workspaces/{id}")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/workspacesList.ts b/client-sdks/platform/typescript/src/funcs/workspacesList.ts index 105e58ecd..453d54f46 100644 --- a/client-sdks/platform/typescript/src/funcs/workspacesList.ts +++ b/client-sdks/platform/typescript/src/funcs/workspacesList.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -136,7 +137,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/workspacesListMembers.ts b/client-sdks/platform/typescript/src/funcs/workspacesListMembers.ts index ca4ff464f..c314424ba 100644 --- a/client-sdks/platform/typescript/src/funcs/workspacesListMembers.ts +++ b/client-sdks/platform/typescript/src/funcs/workspacesListMembers.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/workspaces/{id}/members")(pathParams); const query = encodeFormQuery({ @@ -140,7 +140,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/workspacesRemoveMember.ts b/client-sdks/platform/typescript/src/funcs/workspacesRemoveMember.ts index fa57e2652..aea7ee5c0 100644 --- a/client-sdks/platform/typescript/src/funcs/workspacesRemoveMember.ts +++ b/client-sdks/platform/typescript/src/funcs/workspacesRemoveMember.ts @@ -5,6 +5,7 @@ import * as z from "zod/v4"; import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -97,7 +98,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/workspaces/{id}/members/{userId}")(pathParams); const query = encodeFormQuery({ @@ -145,7 +145,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/workspacesUpdate.ts b/client-sdks/platform/typescript/src/funcs/workspacesUpdate.ts index 973fdba84..70ef1ac5a 100644 --- a/client-sdks/platform/typescript/src/funcs/workspacesUpdate.ts +++ b/client-sdks/platform/typescript/src/funcs/workspacesUpdate.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -92,7 +93,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/workspaces/{id}")(pathParams); const query = encodeFormQuery({ @@ -141,7 +141,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/funcs/workspacesUpdateMember.ts b/client-sdks/platform/typescript/src/funcs/workspacesUpdateMember.ts index 5e980b707..54ba3d3b8 100644 --- a/client-sdks/platform/typescript/src/funcs/workspacesUpdateMember.ts +++ b/client-sdks/platform/typescript/src/funcs/workspacesUpdateMember.ts @@ -4,6 +4,7 @@ import { AlienCore } from "../core.js"; import { encodeFormQuery, encodeJSON, encodeSimple } from "../lib/encodings.js"; +import { matchStatusCode } from "../lib/http.js"; import * as M from "../lib/matchers.js"; import { compactMap } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; @@ -97,7 +98,6 @@ async function $do( charEncoding: "percent", }), }; - const path = pathToFunc("/v1/workspaces/{id}/members/{userId}")(pathParams); const query = encodeFormQuery({ @@ -146,7 +146,8 @@ async function $do( const doResult = await client._do(req, { context, - errorCodes: ["400", "404", "4XX", "500", "5XX"], + isErrorStatusCode: (statusCode: number) => + matchStatusCode({ status: statusCode } as Response, ["4XX", "5XX"]), retryConfig: context.retryConfig, retryCodes: context.retryCodes, }); diff --git a/client-sdks/platform/typescript/src/lib/config.ts b/client-sdks/platform/typescript/src/lib/config.ts index 2878234cc..94ea76e21 100644 --- a/client-sdks/platform/typescript/src/lib/config.ts +++ b/client-sdks/platform/typescript/src/lib/config.ts @@ -61,8 +61,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null { export const SDK_METADATA = { language: "typescript", openapiDocVersion: "1.0.0", - sdkVersion: "1.0.185", - genVersion: "2.788.15", + sdkVersion: "1.1.0", + genVersion: "2.881.17", userAgent: - "speakeasy-sdk/typescript 1.0.185 2.788.15 1.0.0 @alienplatform/platform-api", + "speakeasy-sdk/typescript 1.1.0 2.881.17 1.0.0 @alienplatform/platform-api", } as const; diff --git a/client-sdks/platform/typescript/src/lib/encodings.ts b/client-sdks/platform/typescript/src/lib/encodings.ts index 31cd37339..2791d25bc 100644 --- a/client-sdks/platform/typescript/src/lib/encodings.ts +++ b/client-sdks/platform/typescript/src/lib/encodings.ts @@ -479,6 +479,23 @@ export const encodeSpaceDelimitedQuery = queryEncoder(encodeSpaceDelimited); export const encodePipeDelimitedQuery = queryEncoder(encodePipeDelimited); export const encodeDeepObjectQuery = queryEncoder(encodeDeepObject); +function isBlobLike(val: unknown): val is Blob { + if (val instanceof Blob) { + return true; + } + + if (typeof val !== "object" || val == null || !(Symbol.toStringTag in val)) { + return false; + } + + const tag = val[Symbol.toStringTag]; + if (tag !== "Blob" && tag !== "File") { + return false; + } + + return "stream" in val && typeof val.stream === "function"; +} + export function appendForm( fd: FormData, key: string, @@ -487,11 +504,22 @@ export function appendForm( ): void { if (value == null) { return; - } else if (value instanceof Blob && fileName) { - fd.append(key, value, fileName); - } else if (value instanceof Blob) { - fd.append(key, value); + } else if (isBlobLike(value)) { + if (fileName) { + fd.append(key, value as Blob, fileName); + } else { + fd.append(key, value as Blob); + } } else { fd.append(key, String(value)); } } + +export async function normalizeBlob( + value: Pick, +): Promise { + if (value instanceof Blob) { + return value; + } + return new Blob([await value.arrayBuffer()], { type: value.type }); +} diff --git a/client-sdks/platform/typescript/src/lib/files.ts b/client-sdks/platform/typescript/src/lib/files.ts index 0344cd046..6ca6b37d3 100644 --- a/client-sdks/platform/typescript/src/lib/files.ts +++ b/client-sdks/platform/typescript/src/lib/files.ts @@ -80,3 +80,25 @@ export function getContentTypeFromFileName(fileName: string): string | null { return mimeTypes[ext] || null; } + +/** + * Creates a Blob from file content with the given MIME type. + * + * Node.js Buffers are Uint8Array subclasses that may share a pooled + * ArrayBuffer (byteOffset > 0, byteLength < buffer.byteLength). Passing + * such a Buffer directly to `new Blob([buf])` can include the entire + * underlying pool on some runtimes, producing a Blob with extra bytes + * that corrupts multipart uploads. + * + * Copying into a standalone Uint8Array ensures the Blob receives only the + * intended bytes regardless of runtime behaviour. + */ +export function bytesToBlob( + content: Uint8Array | ArrayBuffer | Blob | string, + contentType: string, +): Blob { + if (content instanceof Uint8Array) { + return new Blob([new Uint8Array(content)], { type: contentType }); + } + return new Blob([content as BlobPart], { type: contentType }); +} diff --git a/client-sdks/platform/typescript/src/lib/matchers.ts b/client-sdks/platform/typescript/src/lib/matchers.ts index 62c6cfb1b..ed8da7591 100644 --- a/client-sdks/platform/typescript/src/lib/matchers.ts +++ b/client-sdks/platform/typescript/src/lib/matchers.ts @@ -251,8 +251,9 @@ export function match( raw = body; break; default: - encoding satisfies never; - throw new Error(`Unsupported response type: ${encoding}`); + throw new Error( + `Unsupported response type: ${encoding satisfies never}`, + ); } if (matcher.enc === "fail") { diff --git a/client-sdks/platform/typescript/src/lib/sdks.ts b/client-sdks/platform/typescript/src/lib/sdks.ts index 49094e7cd..7559ddfbb 100644 --- a/client-sdks/platform/typescript/src/lib/sdks.ts +++ b/client-sdks/platform/typescript/src/lib/sdks.ts @@ -22,7 +22,6 @@ import { isConnectionError, isTimeoutError, matchContentType, - matchStatusCode, } from "./http.js"; import { Logger } from "./logger.js"; import { retry, RetryConfig } from "./retries.js"; @@ -127,13 +126,15 @@ export class ClientSDK { if (!base) { return ERR(new InvalidRequestError("No base URL provided for operation")); } - const reqURL = new URL(base); - const inputURL = new URL(path, reqURL); - + const baseURL = new URL(base); + let reqURL: URL; if (path) { - reqURL.pathname += reqURL.pathname.endsWith("/") ? "" : "/"; - reqURL.pathname += inputURL.pathname.replace(/^\/+/, ""); + baseURL.pathname = baseURL.pathname.replace(/\/+$/, "") + "/"; + reqURL = new URL(path, baseURL); + } else { + reqURL = baseURL; } + reqURL.hash = ""; let finalQuery = query || ""; @@ -231,7 +232,7 @@ export class ClientSDK { request: Request, options: { context: HookContext; - errorCodes: number | string | (number | string)[]; + isErrorStatusCode: (statusCode: number) => boolean; retryConfig: RetryConfig; retryCodes: string[]; }, @@ -244,7 +245,7 @@ export class ClientSDK { | UnexpectedClientError > > { - const { context, errorCodes } = options; + const { context, isErrorStatusCode } = options; return retry( async () => { @@ -256,7 +257,7 @@ export class ClientSDK { let response = await this.#httpClient.request(req); try { - if (matchStatusCode(response, errorCodes)) { + if (isErrorStatusCode(response.status)) { const result = await this.#hooks.afterError( context, response, @@ -307,9 +308,9 @@ export class ClientSDK { } } -const jsonLikeContentTypeRE = /(application|text)\/.*?\+*json.*/; +const jsonLikeContentTypeRE = /^(application|text)\/([^+]+\+)*json.*/; const jsonlLikeContentTypeRE = - /(application|text)\/(.*?\+*\bjsonl\b.*|.*?\+*\bx-ndjson\b.*)/; + /^(application|text)\/([^+]+\+)*(jsonl|x-ndjson)\b.*/; async function logRequest(logger: Logger | undefined, req: Request) { if (!logger) { return; @@ -380,8 +381,6 @@ async function logResponse( break; case matchContentType(res, "application/jsonl") || jsonlLikeContentTypeRE.test(ct): - logger.log(await res.clone().text()); - break; case matchContentType(res, "text/event-stream"): logger.log(`<${contentType}>`); break; diff --git a/client-sdks/platform/typescript/src/lib/security.ts b/client-sdks/platform/typescript/src/lib/security.ts index 8d81329b1..19f72037a 100644 --- a/client-sdks/platform/typescript/src/lib/security.ts +++ b/client-sdks/platform/typescript/src/lib/security.ts @@ -198,8 +198,7 @@ export function resolveSecurity( applyBearer(state, spec); break; default: - spec satisfies never; - throw SecurityError.unrecognizedType(type); + throw SecurityError.unrecognizedType((spec satisfies never, type)); } }); @@ -241,8 +240,9 @@ function applyBearer( export function resolveGlobalSecurity( security: Partial | null | undefined, + allowedFields?: number[], ): SecurityState | null { - return resolveSecurity( + let inputs: SecurityInput[][] = [ [ { fieldName: "Authorization", @@ -250,7 +250,18 @@ export function resolveGlobalSecurity( value: security?.apiKey ?? env().ALIEN_API_KEY, }, ], - ); + ]; + + if (allowedFields) { + inputs = allowedFields.map((i) => { + if (i < 0 || i >= inputs.length) { + throw new RangeError(`invalid allowedFields index ${i}`); + } + return inputs[i]!; + }); + } + + return resolveSecurity(...inputs); } export async function extractSecurity< diff --git a/client-sdks/platform/typescript/src/lib/url.ts b/client-sdks/platform/typescript/src/lib/url.ts index f3a8de6c0..79e7ce660 100644 --- a/client-sdks/platform/typescript/src/lib/url.ts +++ b/client-sdks/platform/typescript/src/lib/url.ts @@ -13,21 +13,23 @@ export function pathToFunc( const paramRE = /\{([a-zA-Z0-9_][a-zA-Z0-9_-]*?)\}/g; return function buildURLPath(params: Record = {}): string { - return pathPattern.replace(paramRE, function (_, placeholder) { - if (!hasOwn.call(params, placeholder)) { - throw new Error(`Parameter '${placeholder}' is required`); - } + return pathPattern + .replace(paramRE, function (_, placeholder) { + if (!hasOwn.call(params, placeholder)) { + throw new Error(`Parameter '${placeholder}' is required`); + } - const value = params[placeholder]; - if (typeof value !== "string" && typeof value !== "number") { - throw new Error( - `Parameter '${placeholder}' must be a string or number`, - ); - } + const value = params[placeholder]; + if (typeof value !== "string" && typeof value !== "number") { + throw new Error( + `Parameter '${placeholder}' must be a string or number`, + ); + } - return options?.charEncoding === "percent" - ? encodeURIComponent(`${value}`) - : `${value}`; - }); + return options?.charEncoding === "percent" + ? encodeURIComponent(`${value}`) + : `${value}`; + }) + .replace(/^\/+/, ""); }; } diff --git a/client-sdks/platform/typescript/src/models/collectionissue26.ts b/client-sdks/platform/typescript/src/models/collectionissue26.ts new file mode 100644 index 000000000..5297f6675 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/collectionissue26.ts @@ -0,0 +1,4195 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; +import { + DataAzureContainerRegistry, + DataAzureContainerRegistry$Outbound, + DataAzureContainerRegistry$outboundSchema, + DataGcpArtifactRegistry, + DataGcpArtifactRegistry$Outbound, + DataGcpArtifactRegistry$outboundSchema, + DataLocal10, + DataLocal10$Outbound, + DataLocal10$outboundSchema, + HeartbeatStatus46, + HeartbeatStatus46$Outbound, + HeartbeatStatus46$outboundSchema, + Repository, + Repository$Outbound, + Repository$outboundSchema, +} from "./heartbeatstatus46.js"; + +export type DataAwsEcr = { + pullRoleArn?: string | null | undefined; + pushRoleArn?: string | null | undefined; + region: string; + registryId: string; + registryUri: string; + repositories: Array; + repositoriesTruncated: boolean; + repositoryCount: number; + repositoryPrefix: string; + status: HeartbeatStatus46; + backend: "awsEcr"; +}; + +export type SyncReconcileRequestDataUnion12 = + | DataAwsEcr + | DataGcpArtifactRegistry + | DataAzureContainerRegistry + | DataLocal10; + +export type DataArtifactRegistry = { + data: + | DataAwsEcr + | DataGcpArtifactRegistry + | DataAzureContainerRegistry + | DataLocal10; + resourceType: "artifact-registry"; +}; + +export const Reason45 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason45 = ClosedEnum; + +export const CollectionIssueSeverity45 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity45 = ClosedEnum< + typeof CollectionIssueSeverity45 +>; + +export type CollectionIssue45 = { + message: string; + reason: Reason45; + severity: CollectionIssueSeverity45; + source: string; +}; + +export const Health45 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health45 = ClosedEnum; + +export const StatusLifecycle45 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle45 = ClosedEnum; + +export type HeartbeatStatus45 = { + collectionIssues: Array; + health: Health45; + lifecycle: StatusLifecycle45; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureManagedIdentity2 = { + ficName?: string | null | undefined; + roleAssignmentIds: Array; + roleDefinitionId?: string | null | undefined; + status: HeartbeatStatus45; + tenantId?: string | null | undefined; + uamiClientId?: string | null | undefined; + uamiPrincipalId?: string | null | undefined; + uamiResourceId?: string | null | undefined; + backend: "azureManagedIdentity"; +}; + +export const Reason44 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason44 = ClosedEnum; + +export const CollectionIssueSeverity44 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity44 = ClosedEnum< + typeof CollectionIssueSeverity44 +>; + +export type CollectionIssue44 = { + message: string; + reason: Reason44; + severity: CollectionIssueSeverity44; + source: string; +}; + +export const Health44 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health44 = ClosedEnum; + +export const StatusLifecycle44 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle44 = ClosedEnum; + +export type HeartbeatStatus44 = { + collectionIssues: Array; + health: Health44; + lifecycle: StatusLifecycle44; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpServiceAccount2 = { + impersonationGranted: boolean; + roleBound: boolean; + serviceAccountEmail?: string | null | undefined; + serviceAccountUniqueId?: string | null | undefined; + status: HeartbeatStatus44; + backend: "gcpServiceAccount"; +}; + +export const Reason43 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason43 = ClosedEnum; + +export const CollectionIssueSeverity43 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity43 = ClosedEnum< + typeof CollectionIssueSeverity43 +>; + +export type CollectionIssue43 = { + message: string; + reason: Reason43; + severity: CollectionIssueSeverity43; + source: string; +}; + +export const Health43 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health43 = ClosedEnum; + +export const StatusLifecycle43 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle43 = ClosedEnum; + +export type HeartbeatStatus43 = { + collectionIssues: Array; + health: Health43; + lifecycle: StatusLifecycle43; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsIamRole2 = { + managementPermissionsApplied: boolean; + roleArn?: string | null | undefined; + roleName?: string | null | undefined; + status: HeartbeatStatus43; + backend: "awsIamRole"; +}; + +export type SyncReconcileRequestDataUnion11 = + | DataAwsIamRole2 + | DataGcpServiceAccount2 + | DataAzureManagedIdentity2; + +export type DataRemoteStackManagement = { + data: DataAwsIamRole2 | DataGcpServiceAccount2 | DataAzureManagedIdentity2; + resourceType: "remote-stack-management"; +}; + +export const Reason42 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason42 = ClosedEnum; + +export const CollectionIssueSeverity42 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity42 = ClosedEnum< + typeof CollectionIssueSeverity42 +>; + +export type CollectionIssue42 = { + message: string; + reason: Reason42; + severity: CollectionIssueSeverity42; + source: string; +}; + +export const Health42 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health42 = ClosedEnum; + +export const StatusLifecycle42 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle42 = ClosedEnum; + +export type HeartbeatStatus42 = { + collectionIssues: Array; + health: Health42; + lifecycle: StatusLifecycle42; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureVnet = { + applicationGatewaySubnetName?: string | null | undefined; + cidrBlock?: string | null | undefined; + isByoVnet: boolean; + lastByoVnetVerificationErrorCode?: string | null | undefined; + location?: string | null | undefined; + natGatewayId?: string | null | undefined; + nsgId?: string | null | undefined; + privateSubnetName?: string | null | undefined; + publicIpId?: string | null | undefined; + publicSubnetName?: string | null | undefined; + resourceGroup?: string | null | undefined; + status: HeartbeatStatus42; + vnetName?: string | null | undefined; + vnetResourceId?: string | null | undefined; + backend: "azureVnet"; +}; + +export const Reason41 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason41 = ClosedEnum; + +export const CollectionIssueSeverity41 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity41 = ClosedEnum< + typeof CollectionIssueSeverity41 +>; + +export type CollectionIssue41 = { + message: string; + reason: Reason41; + severity: CollectionIssueSeverity41; + source: string; +}; + +export const Health41 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health41 = ClosedEnum; + +export const StatusLifecycle41 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle41 = ClosedEnum; + +export type HeartbeatStatus41 = { + collectionIssues: Array; + health: Health41; + lifecycle: StatusLifecycle41; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpVpc = { + cidrBlock?: string | null | undefined; + cloudNatName?: string | null | undefined; + firewallName?: string | null | undefined; + isByoVpc: boolean; + networkName?: string | null | undefined; + networkSelfLink?: string | null | undefined; + region?: string | null | undefined; + routerName?: string | null | undefined; + status: HeartbeatStatus41; + subnetworkName?: string | null | undefined; + subnetworkSelfLink?: string | null | undefined; + backend: "gcpVpc"; +}; + +export const Reason40 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason40 = ClosedEnum; + +export const CollectionIssueSeverity40 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity40 = ClosedEnum< + typeof CollectionIssueSeverity40 +>; + +export type CollectionIssue40 = { + message: string; + reason: Reason40; + severity: CollectionIssueSeverity40; + source: string; +}; + +export const Health40 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health40 = ClosedEnum; + +export const StatusLifecycle40 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle40 = ClosedEnum; + +export type HeartbeatStatus40 = { + collectionIssues: Array; + health: Health40; + lifecycle: StatusLifecycle40; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsVpc = { + availabilityZones: Array; + cidrBlock?: string | null | undefined; + internetGatewayId?: string | null | undefined; + isByoVpc: boolean; + natGatewayId?: string | null | undefined; + privateSubnetIds: Array; + publicSubnetIds: Array; + routeTableCount: number; + securityGroupId?: string | null | undefined; + status: HeartbeatStatus40; + vpcId?: string | null | undefined; + vpcState?: string | null | undefined; + backend: "awsVpc"; +}; + +export type SyncReconcileRequestDataUnion10 = + | DataAwsVpc + | DataGcpVpc + | DataAzureVnet; + +export type DataNetwork = { + data: DataAwsVpc | DataGcpVpc | DataAzureVnet; + resourceType: "network"; +}; + +export const Reason39 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason39 = ClosedEnum; + +export const CollectionIssueSeverity39 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity39 = ClosedEnum< + typeof CollectionIssueSeverity39 +>; + +export type CollectionIssue39 = { + message: string; + reason: Reason39; + severity: CollectionIssueSeverity39; + source: string; +}; + +export const Health39 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health39 = ClosedEnum; + +export const StatusLifecycle39 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle39 = ClosedEnum; + +export type HeartbeatStatus39 = { + collectionIssues: Array; + health: Health39; + lifecycle: StatusLifecycle39; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal9 = { + configured: boolean; + identity: string; + status: HeartbeatStatus39; + backend: "local"; +}; + +export const Reason38 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason38 = ClosedEnum; + +export const CollectionIssueSeverity38 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity38 = ClosedEnum< + typeof CollectionIssueSeverity38 +>; + +export type CollectionIssue38 = { + message: string; + reason: Reason38; + severity: CollectionIssueSeverity38; + source: string; +}; + +export const Health38 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health38 = ClosedEnum; + +export const StatusLifecycle38 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle38 = ClosedEnum; + +export type HeartbeatStatus38 = { + collectionIssues: Array; + health: Health38; + lifecycle: StatusLifecycle38; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureManagedIdentity1 = { + clientId?: string | null | undefined; + customRoleDefinitionCount: number; + customRoleDefinitionIds: Array; + isolationScope?: string | null | undefined; + location: string; + managedTagCount: number; + name: string; + principalId?: string | null | undefined; + resourceGroup: string; + resourceId: string; + roleAssignmentCount: number; + roleAssignmentIds: Array; + stackPermissionsApplied: boolean; + status: HeartbeatStatus38; + tenantId?: string | null | undefined; + type?: string | null | undefined; + backend: "azureManagedIdentity"; +}; + +export const Reason37 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason37 = ClosedEnum; + +export const CollectionIssueSeverity37 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity37 = ClosedEnum< + typeof CollectionIssueSeverity37 +>; + +export type CollectionIssue37 = { + message: string; + reason: Reason37; + severity: CollectionIssueSeverity37; + source: string; +}; + +export const Health37 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health37 = ClosedEnum; + +export const StatusLifecycle37 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle37 = ClosedEnum; + +export type HeartbeatStatus37 = { + collectionIssues: Array; + health: Health37; + lifecycle: StatusLifecycle37; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpServiceAccount1 = { + description?: string | null | undefined; + disabled?: boolean | null | undefined; + displayName?: string | null | undefined; + email: string; + etag?: string | null | undefined; + name?: string | null | undefined; + oauth2ClientId?: string | null | undefined; + projectBindingCount: number; + projectId?: string | null | undefined; + projectRoles: Array; + serviceAccountBindingCount: number; + serviceAccountRoles: Array; + status: HeartbeatStatus37; + uniqueId?: string | null | undefined; + backend: "gcpServiceAccount"; +}; + +export const Reason36 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason36 = ClosedEnum; + +export const CollectionIssueSeverity36 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity36 = ClosedEnum< + typeof CollectionIssueSeverity36 +>; + +export type CollectionIssue36 = { + message: string; + reason: Reason36; + severity: CollectionIssueSeverity36; + source: string; +}; + +export const Health36 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health36 = ClosedEnum; + +export const StatusLifecycle36 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle36 = ClosedEnum; + +export type HeartbeatStatus36 = { + collectionIssues: Array; + health: Health36; + lifecycle: StatusLifecycle36; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsIamRole1 = { + assumeRolePolicyPresent: boolean; + attachedPolicyCount: number; + attachedPolicyNames: Array; + createDate: string; + description?: string | null | undefined; + inlinePolicyCount: number; + inlinePolicyNames: Array; + lastUsedDate?: string | null | undefined; + lastUsedRegion?: string | null | undefined; + managedTagCount: number; + maxSessionDuration?: number | null | undefined; + path: string; + permissionsBoundaryArn?: string | null | undefined; + permissionsBoundaryType?: string | null | undefined; + roleArn: string; + roleId: string; + roleName: string; + stackPermissionsApplied: boolean; + status: HeartbeatStatus36; + tagCount: number; + backend: "awsIamRole"; +}; + +export type SyncReconcileRequestDataUnion9 = + | DataAwsIamRole1 + | DataGcpServiceAccount1 + | DataAzureManagedIdentity1 + | DataLocal9; + +export type DataServiceAccount = { + data: + | DataAwsIamRole1 + | DataGcpServiceAccount1 + | DataAzureManagedIdentity1 + | DataLocal9; + resourceType: "service-account"; +}; + +export const Reason35 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason35 = ClosedEnum; + +export const CollectionIssueSeverity35 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity35 = ClosedEnum< + typeof CollectionIssueSeverity35 +>; + +export type CollectionIssue35 = { + message: string; + reason: Reason35; + severity: CollectionIssueSeverity35; + source: string; +}; + +export const Health35 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health35 = ClosedEnum; + +export const StatusLifecycle35 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle35 = ClosedEnum; + +export type HeartbeatStatus35 = { + collectionIssues: Array; + health: Health35; + lifecycle: StatusLifecycle35; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal8 = { + isDirectory?: boolean | null | undefined; + modifiedAt?: Date | null | undefined; + path: string; + pathExists: boolean; + readonly?: boolean | null | undefined; + secretMetadataListed: boolean; + status: HeartbeatStatus35; + backend: "local"; +}; + +export const Reason34 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason34 = ClosedEnum; + +export const CollectionIssueSeverity34 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity34 = ClosedEnum< + typeof CollectionIssueSeverity34 +>; + +export type CollectionIssue34 = { + message: string; + reason: Reason34; + severity: CollectionIssueSeverity34; + source: string; +}; + +export const Health34 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health34 = ClosedEnum; + +export const StatusLifecycle34 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle34 = ClosedEnum; + +export type HeartbeatStatus34 = { + collectionIssues: Array; + health: Health34; + lifecycle: StatusLifecycle34; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataKubernetesSecret = { + namespace: string; + prefix: string; + secretMetadataListed: boolean; + status: HeartbeatStatus34; + backend: "kubernetesSecret"; +}; + +export const Reason33 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason33 = ClosedEnum; + +export const CollectionIssueSeverity33 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity33 = ClosedEnum< + typeof CollectionIssueSeverity33 +>; + +export type CollectionIssue33 = { + message: string; + reason: Reason33; + severity: CollectionIssueSeverity33; + source: string; +}; + +export const Health33 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health33 = ClosedEnum; + +export const StatusLifecycle33 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle33 = ClosedEnum; + +export type HeartbeatStatus33 = { + collectionIssues: Array; + health: Health33; + lifecycle: StatusLifecycle33; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureKeyVault = { + accessPolicyCount: number; + location?: string | null | undefined; + name: string; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess: string; + purgeProtectionEnabled?: boolean | null | undefined; + rbacAuthorizationEnabled: boolean; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + secretMetadataListed: boolean; + skuFamily?: string | null | undefined; + skuName?: string | null | undefined; + softDeleteEnabled: boolean; + softDeleteRetentionDays: number; + status: HeartbeatStatus33; + vaultUri?: string | null | undefined; + backend: "azureKeyVault"; +}; + +export const Reason32 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason32 = ClosedEnum; + +export const CollectionIssueSeverity32 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity32 = ClosedEnum< + typeof CollectionIssueSeverity32 +>; + +export type CollectionIssue32 = { + message: string; + reason: Reason32; + severity: CollectionIssueSeverity32; + source: string; +}; + +export const Health32 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health32 = ClosedEnum; + +export const StatusLifecycle32 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle32 = ClosedEnum; + +export type HeartbeatStatus32 = { + collectionIssues: Array; + health: Health32; + lifecycle: StatusLifecycle32; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpSecretManager = { + location: string; + prefix: string; + projectId: string; + secretMetadataListed: boolean; + status: HeartbeatStatus32; + backend: "gcpSecretManager"; +}; + +export const Reason31 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason31 = ClosedEnum; + +export const CollectionIssueSeverity31 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity31 = ClosedEnum< + typeof CollectionIssueSeverity31 +>; + +export type CollectionIssue31 = { + message: string; + reason: Reason31; + severity: CollectionIssueSeverity31; + source: string; +}; + +export const Health31 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health31 = ClosedEnum; + +export const StatusLifecycle31 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle31 = ClosedEnum; + +export type HeartbeatStatus31 = { + collectionIssues: Array; + health: Health31; + lifecycle: StatusLifecycle31; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsParameterStore = { + accountId: string; + hasMoreParameters?: boolean | null | undefined; + latestModifiedAt?: Date | null | undefined; + parameterMetadataSampled: boolean; + prefix: string; + region: string; + sampledAdvancedTierCount?: number | null | undefined; + sampledKmsKeyMetadataPresentCount?: number | null | undefined; + sampledParameterCount?: number | null | undefined; + sampledSecureStringCount?: number | null | undefined; + sampledStringCount?: number | null | undefined; + sampledStringListCount?: number | null | undefined; + status: HeartbeatStatus31; + backend: "awsParameterStore"; +}; + +export type SyncReconcileRequestDataUnion8 = + | DataAwsParameterStore + | DataGcpSecretManager + | DataAzureKeyVault + | DataKubernetesSecret + | DataLocal8; + +export type DataVault = { + data: + | DataAwsParameterStore + | DataGcpSecretManager + | DataAzureKeyVault + | DataKubernetesSecret + | DataLocal8; + resourceType: "vault"; +}; + +export const Reason30 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason30 = ClosedEnum; + +export const CollectionIssueSeverity30 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity30 = ClosedEnum< + typeof CollectionIssueSeverity30 +>; + +export type CollectionIssue30 = { + message: string; + reason: Reason30; + severity: CollectionIssueSeverity30; + source: string; +}; + +export const Health30 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health30 = ClosedEnum; + +export const StatusLifecycle30 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle30 = ClosedEnum; + +export type HeartbeatStatus30 = { + collectionIssues: Array; + health: Health30; + lifecycle: StatusLifecycle30; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal7 = { + cloudMetadataSupported: boolean; + isDirectory?: boolean | null | undefined; + name: string; + path: string; + pathExists: boolean; + status: HeartbeatStatus30; + backend: "local"; +}; + +export const Reason29 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason29 = ClosedEnum; + +export const CollectionIssueSeverity29 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity29 = ClosedEnum< + typeof CollectionIssueSeverity29 +>; + +export type CollectionIssue29 = { + message: string; + reason: Reason29; + severity: CollectionIssueSeverity29; + source: string; +}; + +export const Health29 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health29 = ClosedEnum; + +export const StatusLifecycle29 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle29 = ClosedEnum; + +export type HeartbeatStatus29 = { + collectionIssues: Array; + health: Health29; + lifecycle: StatusLifecycle29; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureTable = { + endpoint?: string | null | undefined; + resourceGroup?: string | null | undefined; + signedIdentifierCount?: number | null | undefined; + status: HeartbeatStatus29; + storageAccountKind?: string | null | undefined; + storageAccountLocation?: string | null | undefined; + storageAccountName: string; + storageAccountPrimaryStatus?: string | null | undefined; + storageAccountProvisioningState?: string | null | undefined; + storageAccountResourceId?: string | null | undefined; + tableExists: boolean; + tableName: string; + backend: "azureTable"; +}; + +export const Reason28 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason28 = ClosedEnum; + +export const CollectionIssueSeverity28 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity28 = ClosedEnum< + typeof CollectionIssueSeverity28 +>; + +export type CollectionIssue28 = { + message: string; + reason: Reason28; + severity: CollectionIssueSeverity28; + source: string; +}; + +export const Health28 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health28 = ClosedEnum; + +export const StatusLifecycle28 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle28 = ClosedEnum; + +export type HeartbeatStatus28 = { + collectionIssues: Array; + health: Health28; + lifecycle: StatusLifecycle28; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpFirestore = { + appEngineIntegrationMode?: string | null | undefined; + cmekEnabled: boolean; + concurrencyMode?: string | null | undefined; + createTime?: string | null | undefined; + databaseEdition?: string | null | undefined; + databaseName: string; + databaseType?: string | null | undefined; + deleteProtectionState?: string | null | undefined; + deleteTime?: string | null | undefined; + earliestVersionTime?: string | null | undefined; + endpoint?: string | null | undefined; + locationId?: string | null | undefined; + pointInTimeRecoveryEnablement?: string | null | undefined; + projectId?: string | null | undefined; + sourceInfoPresent: boolean; + status: HeartbeatStatus28; + updateTime?: string | null | undefined; + versionRetentionPeriod?: string | null | undefined; + backend: "gcpFirestore"; +}; + +export type KeySchema = { + attributeName: string; + keyType: string; +}; + +export const Reason27 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason27 = ClosedEnum; + +export const CollectionIssueSeverity27 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity27 = ClosedEnum< + typeof CollectionIssueSeverity27 +>; + +export type CollectionIssue27 = { + message: string; + reason: Reason27; + severity: CollectionIssueSeverity27; + source: string; +}; + +export const Health27 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health27 = ClosedEnum; + +export const StatusLifecycle27 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle27 = ClosedEnum; + +export type HeartbeatStatus27 = { + collectionIssues: Array; + health: Health27; + lifecycle: StatusLifecycle27; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsDynamoDb = { + billingMode?: string | null | undefined; + deletionProtectionEnabled?: boolean | null | undefined; + globalSecondaryIndexCount?: number | null | undefined; + itemCount?: number | null | undefined; + keySchema: Array; + localSecondaryIndexCount?: number | null | undefined; + name: string; + region?: string | null | undefined; + replicaCount?: number | null | undefined; + restoreInProgress?: boolean | null | undefined; + sseStatus?: string | null | undefined; + sseType?: string | null | undefined; + status: HeartbeatStatus27; + streamEnabled?: boolean | null | undefined; + streamViewType?: string | null | undefined; + tableArn?: string | null | undefined; + tableClass?: string | null | undefined; + tableSizeBytes?: number | null | undefined; + tableStatus?: string | null | undefined; + ttlAttributeName?: string | null | undefined; + ttlStatus?: string | null | undefined; + backend: "awsDynamoDb"; +}; + +export type SyncReconcileRequestDataUnion7 = + | DataAwsDynamoDb + | DataGcpFirestore + | DataAzureTable + | DataLocal7; + +export type DataKv = { + data: DataAwsDynamoDb | DataGcpFirestore | DataAzureTable | DataLocal7; + resourceType: "kv"; +}; + +export const Reason26 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason26 = ClosedEnum; + +export const CollectionIssueSeverity26 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity26 = ClosedEnum< + typeof CollectionIssueSeverity26 +>; + +export type CollectionIssue26 = { + message: string; + reason: Reason26; + severity: CollectionIssueSeverity26; + source: string; +}; + +/** @internal */ +export type DataAwsEcr$Outbound = { + pullRoleArn?: string | null | undefined; + pushRoleArn?: string | null | undefined; + region: string; + registryId: string; + registryUri: string; + repositories: Array; + repositoriesTruncated: boolean; + repositoryCount: number; + repositoryPrefix: string; + status: HeartbeatStatus46$Outbound; + backend: "awsEcr"; +}; + +/** @internal */ +export const DataAwsEcr$outboundSchema: z.ZodType< + DataAwsEcr$Outbound, + DataAwsEcr +> = z.object({ + pullRoleArn: z.nullable(z.string()).optional(), + pushRoleArn: z.nullable(z.string()).optional(), + region: z.string(), + registryId: z.string(), + registryUri: z.string(), + repositories: z.array(Repository$outboundSchema), + repositoriesTruncated: z.boolean(), + repositoryCount: z.int(), + repositoryPrefix: z.string(), + status: HeartbeatStatus46$outboundSchema, + backend: z.literal("awsEcr"), +}); + +export function dataAwsEcrToJSON(dataAwsEcr: DataAwsEcr): string { + return JSON.stringify(DataAwsEcr$outboundSchema.parse(dataAwsEcr)); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion12$Outbound = + | DataAwsEcr$Outbound + | DataGcpArtifactRegistry$Outbound + | DataAzureContainerRegistry$Outbound + | DataLocal10$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion12$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion12$Outbound, + SyncReconcileRequestDataUnion12 +> = z.union([ + z.lazy(() => DataAwsEcr$outboundSchema), + DataGcpArtifactRegistry$outboundSchema, + DataAzureContainerRegistry$outboundSchema, + DataLocal10$outboundSchema, +]); + +export function syncReconcileRequestDataUnion12ToJSON( + syncReconcileRequestDataUnion12: SyncReconcileRequestDataUnion12, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion12$outboundSchema.parse( + syncReconcileRequestDataUnion12, + ), + ); +} + +/** @internal */ +export type DataArtifactRegistry$Outbound = { + data: + | DataAwsEcr$Outbound + | DataGcpArtifactRegistry$Outbound + | DataAzureContainerRegistry$Outbound + | DataLocal10$Outbound; + resourceType: "artifact-registry"; +}; + +/** @internal */ +export const DataArtifactRegistry$outboundSchema: z.ZodType< + DataArtifactRegistry$Outbound, + DataArtifactRegistry +> = z.object({ + data: z.union([ + z.lazy(() => DataAwsEcr$outboundSchema), + DataGcpArtifactRegistry$outboundSchema, + DataAzureContainerRegistry$outboundSchema, + DataLocal10$outboundSchema, + ]), + resourceType: z.literal("artifact-registry"), +}); + +export function dataArtifactRegistryToJSON( + dataArtifactRegistry: DataArtifactRegistry, +): string { + return JSON.stringify( + DataArtifactRegistry$outboundSchema.parse(dataArtifactRegistry), + ); +} + +/** @internal */ +export const Reason45$outboundSchema: z.ZodEnum = z.enum( + Reason45, +); + +/** @internal */ +export const CollectionIssueSeverity45$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity45 +> = z.enum(CollectionIssueSeverity45); + +/** @internal */ +export type CollectionIssue45$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue45$outboundSchema: z.ZodType< + CollectionIssue45$Outbound, + CollectionIssue45 +> = z.object({ + message: z.string(), + reason: Reason45$outboundSchema, + severity: CollectionIssueSeverity45$outboundSchema, + source: z.string(), +}); + +export function collectionIssue45ToJSON( + collectionIssue45: CollectionIssue45, +): string { + return JSON.stringify( + CollectionIssue45$outboundSchema.parse(collectionIssue45), + ); +} + +/** @internal */ +export const Health45$outboundSchema: z.ZodEnum = z.enum( + Health45, +); + +/** @internal */ +export const StatusLifecycle45$outboundSchema: z.ZodEnum< + typeof StatusLifecycle45 +> = z.enum(StatusLifecycle45); + +/** @internal */ +export type HeartbeatStatus45$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus45$outboundSchema: z.ZodType< + HeartbeatStatus45$Outbound, + HeartbeatStatus45 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue45$outboundSchema)), + health: Health45$outboundSchema, + lifecycle: StatusLifecycle45$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus45ToJSON( + heartbeatStatus45: HeartbeatStatus45, +): string { + return JSON.stringify( + HeartbeatStatus45$outboundSchema.parse(heartbeatStatus45), + ); +} + +/** @internal */ +export type DataAzureManagedIdentity2$Outbound = { + ficName?: string | null | undefined; + roleAssignmentIds: Array; + roleDefinitionId?: string | null | undefined; + status: HeartbeatStatus45$Outbound; + tenantId?: string | null | undefined; + uamiClientId?: string | null | undefined; + uamiPrincipalId?: string | null | undefined; + uamiResourceId?: string | null | undefined; + backend: "azureManagedIdentity"; +}; + +/** @internal */ +export const DataAzureManagedIdentity2$outboundSchema: z.ZodType< + DataAzureManagedIdentity2$Outbound, + DataAzureManagedIdentity2 +> = z.object({ + ficName: z.nullable(z.string()).optional(), + roleAssignmentIds: z.array(z.string()), + roleDefinitionId: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus45$outboundSchema), + tenantId: z.nullable(z.string()).optional(), + uamiClientId: z.nullable(z.string()).optional(), + uamiPrincipalId: z.nullable(z.string()).optional(), + uamiResourceId: z.nullable(z.string()).optional(), + backend: z.literal("azureManagedIdentity"), +}); + +export function dataAzureManagedIdentity2ToJSON( + dataAzureManagedIdentity2: DataAzureManagedIdentity2, +): string { + return JSON.stringify( + DataAzureManagedIdentity2$outboundSchema.parse(dataAzureManagedIdentity2), + ); +} + +/** @internal */ +export const Reason44$outboundSchema: z.ZodEnum = z.enum( + Reason44, +); + +/** @internal */ +export const CollectionIssueSeverity44$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity44 +> = z.enum(CollectionIssueSeverity44); + +/** @internal */ +export type CollectionIssue44$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue44$outboundSchema: z.ZodType< + CollectionIssue44$Outbound, + CollectionIssue44 +> = z.object({ + message: z.string(), + reason: Reason44$outboundSchema, + severity: CollectionIssueSeverity44$outboundSchema, + source: z.string(), +}); + +export function collectionIssue44ToJSON( + collectionIssue44: CollectionIssue44, +): string { + return JSON.stringify( + CollectionIssue44$outboundSchema.parse(collectionIssue44), + ); +} + +/** @internal */ +export const Health44$outboundSchema: z.ZodEnum = z.enum( + Health44, +); + +/** @internal */ +export const StatusLifecycle44$outboundSchema: z.ZodEnum< + typeof StatusLifecycle44 +> = z.enum(StatusLifecycle44); + +/** @internal */ +export type HeartbeatStatus44$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus44$outboundSchema: z.ZodType< + HeartbeatStatus44$Outbound, + HeartbeatStatus44 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue44$outboundSchema)), + health: Health44$outboundSchema, + lifecycle: StatusLifecycle44$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus44ToJSON( + heartbeatStatus44: HeartbeatStatus44, +): string { + return JSON.stringify( + HeartbeatStatus44$outboundSchema.parse(heartbeatStatus44), + ); +} + +/** @internal */ +export type DataGcpServiceAccount2$Outbound = { + impersonationGranted: boolean; + roleBound: boolean; + serviceAccountEmail?: string | null | undefined; + serviceAccountUniqueId?: string | null | undefined; + status: HeartbeatStatus44$Outbound; + backend: "gcpServiceAccount"; +}; + +/** @internal */ +export const DataGcpServiceAccount2$outboundSchema: z.ZodType< + DataGcpServiceAccount2$Outbound, + DataGcpServiceAccount2 +> = z.object({ + impersonationGranted: z.boolean(), + roleBound: z.boolean(), + serviceAccountEmail: z.nullable(z.string()).optional(), + serviceAccountUniqueId: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus44$outboundSchema), + backend: z.literal("gcpServiceAccount"), +}); + +export function dataGcpServiceAccount2ToJSON( + dataGcpServiceAccount2: DataGcpServiceAccount2, +): string { + return JSON.stringify( + DataGcpServiceAccount2$outboundSchema.parse(dataGcpServiceAccount2), + ); +} + +/** @internal */ +export const Reason43$outboundSchema: z.ZodEnum = z.enum( + Reason43, +); + +/** @internal */ +export const CollectionIssueSeverity43$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity43 +> = z.enum(CollectionIssueSeverity43); + +/** @internal */ +export type CollectionIssue43$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue43$outboundSchema: z.ZodType< + CollectionIssue43$Outbound, + CollectionIssue43 +> = z.object({ + message: z.string(), + reason: Reason43$outboundSchema, + severity: CollectionIssueSeverity43$outboundSchema, + source: z.string(), +}); + +export function collectionIssue43ToJSON( + collectionIssue43: CollectionIssue43, +): string { + return JSON.stringify( + CollectionIssue43$outboundSchema.parse(collectionIssue43), + ); +} + +/** @internal */ +export const Health43$outboundSchema: z.ZodEnum = z.enum( + Health43, +); + +/** @internal */ +export const StatusLifecycle43$outboundSchema: z.ZodEnum< + typeof StatusLifecycle43 +> = z.enum(StatusLifecycle43); + +/** @internal */ +export type HeartbeatStatus43$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus43$outboundSchema: z.ZodType< + HeartbeatStatus43$Outbound, + HeartbeatStatus43 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue43$outboundSchema)), + health: Health43$outboundSchema, + lifecycle: StatusLifecycle43$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus43ToJSON( + heartbeatStatus43: HeartbeatStatus43, +): string { + return JSON.stringify( + HeartbeatStatus43$outboundSchema.parse(heartbeatStatus43), + ); +} + +/** @internal */ +export type DataAwsIamRole2$Outbound = { + managementPermissionsApplied: boolean; + roleArn?: string | null | undefined; + roleName?: string | null | undefined; + status: HeartbeatStatus43$Outbound; + backend: "awsIamRole"; +}; + +/** @internal */ +export const DataAwsIamRole2$outboundSchema: z.ZodType< + DataAwsIamRole2$Outbound, + DataAwsIamRole2 +> = z.object({ + managementPermissionsApplied: z.boolean(), + roleArn: z.nullable(z.string()).optional(), + roleName: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus43$outboundSchema), + backend: z.literal("awsIamRole"), +}); + +export function dataAwsIamRole2ToJSON( + dataAwsIamRole2: DataAwsIamRole2, +): string { + return JSON.stringify(DataAwsIamRole2$outboundSchema.parse(dataAwsIamRole2)); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion11$Outbound = + | DataAwsIamRole2$Outbound + | DataGcpServiceAccount2$Outbound + | DataAzureManagedIdentity2$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion11$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion11$Outbound, + SyncReconcileRequestDataUnion11 +> = z.union([ + z.lazy(() => DataAwsIamRole2$outboundSchema), + z.lazy(() => DataGcpServiceAccount2$outboundSchema), + z.lazy(() => DataAzureManagedIdentity2$outboundSchema), +]); + +export function syncReconcileRequestDataUnion11ToJSON( + syncReconcileRequestDataUnion11: SyncReconcileRequestDataUnion11, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion11$outboundSchema.parse( + syncReconcileRequestDataUnion11, + ), + ); +} + +/** @internal */ +export type DataRemoteStackManagement$Outbound = { + data: + | DataAwsIamRole2$Outbound + | DataGcpServiceAccount2$Outbound + | DataAzureManagedIdentity2$Outbound; + resourceType: "remote-stack-management"; +}; + +/** @internal */ +export const DataRemoteStackManagement$outboundSchema: z.ZodType< + DataRemoteStackManagement$Outbound, + DataRemoteStackManagement +> = z.object({ + data: z.union([ + z.lazy(() => DataAwsIamRole2$outboundSchema), + z.lazy(() => DataGcpServiceAccount2$outboundSchema), + z.lazy(() => DataAzureManagedIdentity2$outboundSchema), + ]), + resourceType: z.literal("remote-stack-management"), +}); + +export function dataRemoteStackManagementToJSON( + dataRemoteStackManagement: DataRemoteStackManagement, +): string { + return JSON.stringify( + DataRemoteStackManagement$outboundSchema.parse(dataRemoteStackManagement), + ); +} + +/** @internal */ +export const Reason42$outboundSchema: z.ZodEnum = z.enum( + Reason42, +); + +/** @internal */ +export const CollectionIssueSeverity42$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity42 +> = z.enum(CollectionIssueSeverity42); + +/** @internal */ +export type CollectionIssue42$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue42$outboundSchema: z.ZodType< + CollectionIssue42$Outbound, + CollectionIssue42 +> = z.object({ + message: z.string(), + reason: Reason42$outboundSchema, + severity: CollectionIssueSeverity42$outboundSchema, + source: z.string(), +}); + +export function collectionIssue42ToJSON( + collectionIssue42: CollectionIssue42, +): string { + return JSON.stringify( + CollectionIssue42$outboundSchema.parse(collectionIssue42), + ); +} + +/** @internal */ +export const Health42$outboundSchema: z.ZodEnum = z.enum( + Health42, +); + +/** @internal */ +export const StatusLifecycle42$outboundSchema: z.ZodEnum< + typeof StatusLifecycle42 +> = z.enum(StatusLifecycle42); + +/** @internal */ +export type HeartbeatStatus42$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus42$outboundSchema: z.ZodType< + HeartbeatStatus42$Outbound, + HeartbeatStatus42 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue42$outboundSchema)), + health: Health42$outboundSchema, + lifecycle: StatusLifecycle42$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus42ToJSON( + heartbeatStatus42: HeartbeatStatus42, +): string { + return JSON.stringify( + HeartbeatStatus42$outboundSchema.parse(heartbeatStatus42), + ); +} + +/** @internal */ +export type DataAzureVnet$Outbound = { + applicationGatewaySubnetName?: string | null | undefined; + cidrBlock?: string | null | undefined; + isByoVnet: boolean; + lastByoVnetVerificationErrorCode?: string | null | undefined; + location?: string | null | undefined; + natGatewayId?: string | null | undefined; + nsgId?: string | null | undefined; + privateSubnetName?: string | null | undefined; + publicIpId?: string | null | undefined; + publicSubnetName?: string | null | undefined; + resourceGroup?: string | null | undefined; + status: HeartbeatStatus42$Outbound; + vnetName?: string | null | undefined; + vnetResourceId?: string | null | undefined; + backend: "azureVnet"; +}; + +/** @internal */ +export const DataAzureVnet$outboundSchema: z.ZodType< + DataAzureVnet$Outbound, + DataAzureVnet +> = z.object({ + applicationGatewaySubnetName: z.nullable(z.string()).optional(), + cidrBlock: z.nullable(z.string()).optional(), + isByoVnet: z.boolean(), + lastByoVnetVerificationErrorCode: z.nullable(z.string()).optional(), + location: z.nullable(z.string()).optional(), + natGatewayId: z.nullable(z.string()).optional(), + nsgId: z.nullable(z.string()).optional(), + privateSubnetName: z.nullable(z.string()).optional(), + publicIpId: z.nullable(z.string()).optional(), + publicSubnetName: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus42$outboundSchema), + vnetName: z.nullable(z.string()).optional(), + vnetResourceId: z.nullable(z.string()).optional(), + backend: z.literal("azureVnet"), +}); + +export function dataAzureVnetToJSON(dataAzureVnet: DataAzureVnet): string { + return JSON.stringify(DataAzureVnet$outboundSchema.parse(dataAzureVnet)); +} + +/** @internal */ +export const Reason41$outboundSchema: z.ZodEnum = z.enum( + Reason41, +); + +/** @internal */ +export const CollectionIssueSeverity41$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity41 +> = z.enum(CollectionIssueSeverity41); + +/** @internal */ +export type CollectionIssue41$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue41$outboundSchema: z.ZodType< + CollectionIssue41$Outbound, + CollectionIssue41 +> = z.object({ + message: z.string(), + reason: Reason41$outboundSchema, + severity: CollectionIssueSeverity41$outboundSchema, + source: z.string(), +}); + +export function collectionIssue41ToJSON( + collectionIssue41: CollectionIssue41, +): string { + return JSON.stringify( + CollectionIssue41$outboundSchema.parse(collectionIssue41), + ); +} + +/** @internal */ +export const Health41$outboundSchema: z.ZodEnum = z.enum( + Health41, +); + +/** @internal */ +export const StatusLifecycle41$outboundSchema: z.ZodEnum< + typeof StatusLifecycle41 +> = z.enum(StatusLifecycle41); + +/** @internal */ +export type HeartbeatStatus41$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus41$outboundSchema: z.ZodType< + HeartbeatStatus41$Outbound, + HeartbeatStatus41 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue41$outboundSchema)), + health: Health41$outboundSchema, + lifecycle: StatusLifecycle41$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus41ToJSON( + heartbeatStatus41: HeartbeatStatus41, +): string { + return JSON.stringify( + HeartbeatStatus41$outboundSchema.parse(heartbeatStatus41), + ); +} + +/** @internal */ +export type DataGcpVpc$Outbound = { + cidrBlock?: string | null | undefined; + cloudNatName?: string | null | undefined; + firewallName?: string | null | undefined; + isByoVpc: boolean; + networkName?: string | null | undefined; + networkSelfLink?: string | null | undefined; + region?: string | null | undefined; + routerName?: string | null | undefined; + status: HeartbeatStatus41$Outbound; + subnetworkName?: string | null | undefined; + subnetworkSelfLink?: string | null | undefined; + backend: "gcpVpc"; +}; + +/** @internal */ +export const DataGcpVpc$outboundSchema: z.ZodType< + DataGcpVpc$Outbound, + DataGcpVpc +> = z.object({ + cidrBlock: z.nullable(z.string()).optional(), + cloudNatName: z.nullable(z.string()).optional(), + firewallName: z.nullable(z.string()).optional(), + isByoVpc: z.boolean(), + networkName: z.nullable(z.string()).optional(), + networkSelfLink: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + routerName: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus41$outboundSchema), + subnetworkName: z.nullable(z.string()).optional(), + subnetworkSelfLink: z.nullable(z.string()).optional(), + backend: z.literal("gcpVpc"), +}); + +export function dataGcpVpcToJSON(dataGcpVpc: DataGcpVpc): string { + return JSON.stringify(DataGcpVpc$outboundSchema.parse(dataGcpVpc)); +} + +/** @internal */ +export const Reason40$outboundSchema: z.ZodEnum = z.enum( + Reason40, +); + +/** @internal */ +export const CollectionIssueSeverity40$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity40 +> = z.enum(CollectionIssueSeverity40); + +/** @internal */ +export type CollectionIssue40$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue40$outboundSchema: z.ZodType< + CollectionIssue40$Outbound, + CollectionIssue40 +> = z.object({ + message: z.string(), + reason: Reason40$outboundSchema, + severity: CollectionIssueSeverity40$outboundSchema, + source: z.string(), +}); + +export function collectionIssue40ToJSON( + collectionIssue40: CollectionIssue40, +): string { + return JSON.stringify( + CollectionIssue40$outboundSchema.parse(collectionIssue40), + ); +} + +/** @internal */ +export const Health40$outboundSchema: z.ZodEnum = z.enum( + Health40, +); + +/** @internal */ +export const StatusLifecycle40$outboundSchema: z.ZodEnum< + typeof StatusLifecycle40 +> = z.enum(StatusLifecycle40); + +/** @internal */ +export type HeartbeatStatus40$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus40$outboundSchema: z.ZodType< + HeartbeatStatus40$Outbound, + HeartbeatStatus40 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue40$outboundSchema)), + health: Health40$outboundSchema, + lifecycle: StatusLifecycle40$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus40ToJSON( + heartbeatStatus40: HeartbeatStatus40, +): string { + return JSON.stringify( + HeartbeatStatus40$outboundSchema.parse(heartbeatStatus40), + ); +} + +/** @internal */ +export type DataAwsVpc$Outbound = { + availabilityZones: Array; + cidrBlock?: string | null | undefined; + internetGatewayId?: string | null | undefined; + isByoVpc: boolean; + natGatewayId?: string | null | undefined; + privateSubnetIds: Array; + publicSubnetIds: Array; + routeTableCount: number; + securityGroupId?: string | null | undefined; + status: HeartbeatStatus40$Outbound; + vpcId?: string | null | undefined; + vpcState?: string | null | undefined; + backend: "awsVpc"; +}; + +/** @internal */ +export const DataAwsVpc$outboundSchema: z.ZodType< + DataAwsVpc$Outbound, + DataAwsVpc +> = z.object({ + availabilityZones: z.array(z.string()), + cidrBlock: z.nullable(z.string()).optional(), + internetGatewayId: z.nullable(z.string()).optional(), + isByoVpc: z.boolean(), + natGatewayId: z.nullable(z.string()).optional(), + privateSubnetIds: z.array(z.string()), + publicSubnetIds: z.array(z.string()), + routeTableCount: z.int(), + securityGroupId: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus40$outboundSchema), + vpcId: z.nullable(z.string()).optional(), + vpcState: z.nullable(z.string()).optional(), + backend: z.literal("awsVpc"), +}); + +export function dataAwsVpcToJSON(dataAwsVpc: DataAwsVpc): string { + return JSON.stringify(DataAwsVpc$outboundSchema.parse(dataAwsVpc)); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion10$Outbound = + | DataAwsVpc$Outbound + | DataGcpVpc$Outbound + | DataAzureVnet$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion10$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion10$Outbound, + SyncReconcileRequestDataUnion10 +> = z.union([ + z.lazy(() => DataAwsVpc$outboundSchema), + z.lazy(() => DataGcpVpc$outboundSchema), + z.lazy(() => DataAzureVnet$outboundSchema), +]); + +export function syncReconcileRequestDataUnion10ToJSON( + syncReconcileRequestDataUnion10: SyncReconcileRequestDataUnion10, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion10$outboundSchema.parse( + syncReconcileRequestDataUnion10, + ), + ); +} + +/** @internal */ +export type DataNetwork$Outbound = { + data: DataAwsVpc$Outbound | DataGcpVpc$Outbound | DataAzureVnet$Outbound; + resourceType: "network"; +}; + +/** @internal */ +export const DataNetwork$outboundSchema: z.ZodType< + DataNetwork$Outbound, + DataNetwork +> = z.object({ + data: z.union([ + z.lazy(() => DataAwsVpc$outboundSchema), + z.lazy(() => DataGcpVpc$outboundSchema), + z.lazy(() => DataAzureVnet$outboundSchema), + ]), + resourceType: z.literal("network"), +}); + +export function dataNetworkToJSON(dataNetwork: DataNetwork): string { + return JSON.stringify(DataNetwork$outboundSchema.parse(dataNetwork)); +} + +/** @internal */ +export const Reason39$outboundSchema: z.ZodEnum = z.enum( + Reason39, +); + +/** @internal */ +export const CollectionIssueSeverity39$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity39 +> = z.enum(CollectionIssueSeverity39); + +/** @internal */ +export type CollectionIssue39$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue39$outboundSchema: z.ZodType< + CollectionIssue39$Outbound, + CollectionIssue39 +> = z.object({ + message: z.string(), + reason: Reason39$outboundSchema, + severity: CollectionIssueSeverity39$outboundSchema, + source: z.string(), +}); + +export function collectionIssue39ToJSON( + collectionIssue39: CollectionIssue39, +): string { + return JSON.stringify( + CollectionIssue39$outboundSchema.parse(collectionIssue39), + ); +} + +/** @internal */ +export const Health39$outboundSchema: z.ZodEnum = z.enum( + Health39, +); + +/** @internal */ +export const StatusLifecycle39$outboundSchema: z.ZodEnum< + typeof StatusLifecycle39 +> = z.enum(StatusLifecycle39); + +/** @internal */ +export type HeartbeatStatus39$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus39$outboundSchema: z.ZodType< + HeartbeatStatus39$Outbound, + HeartbeatStatus39 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue39$outboundSchema)), + health: Health39$outboundSchema, + lifecycle: StatusLifecycle39$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus39ToJSON( + heartbeatStatus39: HeartbeatStatus39, +): string { + return JSON.stringify( + HeartbeatStatus39$outboundSchema.parse(heartbeatStatus39), + ); +} + +/** @internal */ +export type DataLocal9$Outbound = { + configured: boolean; + identity: string; + status: HeartbeatStatus39$Outbound; + backend: "local"; +}; + +/** @internal */ +export const DataLocal9$outboundSchema: z.ZodType< + DataLocal9$Outbound, + DataLocal9 +> = z.object({ + configured: z.boolean(), + identity: z.string(), + status: z.lazy(() => HeartbeatStatus39$outboundSchema), + backend: z.literal("local"), +}); + +export function dataLocal9ToJSON(dataLocal9: DataLocal9): string { + return JSON.stringify(DataLocal9$outboundSchema.parse(dataLocal9)); +} + +/** @internal */ +export const Reason38$outboundSchema: z.ZodEnum = z.enum( + Reason38, +); + +/** @internal */ +export const CollectionIssueSeverity38$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity38 +> = z.enum(CollectionIssueSeverity38); + +/** @internal */ +export type CollectionIssue38$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue38$outboundSchema: z.ZodType< + CollectionIssue38$Outbound, + CollectionIssue38 +> = z.object({ + message: z.string(), + reason: Reason38$outboundSchema, + severity: CollectionIssueSeverity38$outboundSchema, + source: z.string(), +}); + +export function collectionIssue38ToJSON( + collectionIssue38: CollectionIssue38, +): string { + return JSON.stringify( + CollectionIssue38$outboundSchema.parse(collectionIssue38), + ); +} + +/** @internal */ +export const Health38$outboundSchema: z.ZodEnum = z.enum( + Health38, +); + +/** @internal */ +export const StatusLifecycle38$outboundSchema: z.ZodEnum< + typeof StatusLifecycle38 +> = z.enum(StatusLifecycle38); + +/** @internal */ +export type HeartbeatStatus38$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus38$outboundSchema: z.ZodType< + HeartbeatStatus38$Outbound, + HeartbeatStatus38 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue38$outboundSchema)), + health: Health38$outboundSchema, + lifecycle: StatusLifecycle38$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus38ToJSON( + heartbeatStatus38: HeartbeatStatus38, +): string { + return JSON.stringify( + HeartbeatStatus38$outboundSchema.parse(heartbeatStatus38), + ); +} + +/** @internal */ +export type DataAzureManagedIdentity1$Outbound = { + clientId?: string | null | undefined; + customRoleDefinitionCount: number; + customRoleDefinitionIds: Array; + isolationScope?: string | null | undefined; + location: string; + managedTagCount: number; + name: string; + principalId?: string | null | undefined; + resourceGroup: string; + resourceId: string; + roleAssignmentCount: number; + roleAssignmentIds: Array; + stackPermissionsApplied: boolean; + status: HeartbeatStatus38$Outbound; + tenantId?: string | null | undefined; + type?: string | null | undefined; + backend: "azureManagedIdentity"; +}; + +/** @internal */ +export const DataAzureManagedIdentity1$outboundSchema: z.ZodType< + DataAzureManagedIdentity1$Outbound, + DataAzureManagedIdentity1 +> = z.object({ + clientId: z.nullable(z.string()).optional(), + customRoleDefinitionCount: z.int(), + customRoleDefinitionIds: z.array(z.string()), + isolationScope: z.nullable(z.string()).optional(), + location: z.string(), + managedTagCount: z.int(), + name: z.string(), + principalId: z.nullable(z.string()).optional(), + resourceGroup: z.string(), + resourceId: z.string(), + roleAssignmentCount: z.int(), + roleAssignmentIds: z.array(z.string()), + stackPermissionsApplied: z.boolean(), + status: z.lazy(() => HeartbeatStatus38$outboundSchema), + tenantId: z.nullable(z.string()).optional(), + type: z.nullable(z.string()).optional(), + backend: z.literal("azureManagedIdentity"), +}); + +export function dataAzureManagedIdentity1ToJSON( + dataAzureManagedIdentity1: DataAzureManagedIdentity1, +): string { + return JSON.stringify( + DataAzureManagedIdentity1$outboundSchema.parse(dataAzureManagedIdentity1), + ); +} + +/** @internal */ +export const Reason37$outboundSchema: z.ZodEnum = z.enum( + Reason37, +); + +/** @internal */ +export const CollectionIssueSeverity37$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity37 +> = z.enum(CollectionIssueSeverity37); + +/** @internal */ +export type CollectionIssue37$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue37$outboundSchema: z.ZodType< + CollectionIssue37$Outbound, + CollectionIssue37 +> = z.object({ + message: z.string(), + reason: Reason37$outboundSchema, + severity: CollectionIssueSeverity37$outboundSchema, + source: z.string(), +}); + +export function collectionIssue37ToJSON( + collectionIssue37: CollectionIssue37, +): string { + return JSON.stringify( + CollectionIssue37$outboundSchema.parse(collectionIssue37), + ); +} + +/** @internal */ +export const Health37$outboundSchema: z.ZodEnum = z.enum( + Health37, +); + +/** @internal */ +export const StatusLifecycle37$outboundSchema: z.ZodEnum< + typeof StatusLifecycle37 +> = z.enum(StatusLifecycle37); + +/** @internal */ +export type HeartbeatStatus37$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus37$outboundSchema: z.ZodType< + HeartbeatStatus37$Outbound, + HeartbeatStatus37 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue37$outboundSchema)), + health: Health37$outboundSchema, + lifecycle: StatusLifecycle37$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus37ToJSON( + heartbeatStatus37: HeartbeatStatus37, +): string { + return JSON.stringify( + HeartbeatStatus37$outboundSchema.parse(heartbeatStatus37), + ); +} + +/** @internal */ +export type DataGcpServiceAccount1$Outbound = { + description?: string | null | undefined; + disabled?: boolean | null | undefined; + displayName?: string | null | undefined; + email: string; + etag?: string | null | undefined; + name?: string | null | undefined; + oauth2ClientId?: string | null | undefined; + projectBindingCount: number; + projectId?: string | null | undefined; + projectRoles: Array; + serviceAccountBindingCount: number; + serviceAccountRoles: Array; + status: HeartbeatStatus37$Outbound; + uniqueId?: string | null | undefined; + backend: "gcpServiceAccount"; +}; + +/** @internal */ +export const DataGcpServiceAccount1$outboundSchema: z.ZodType< + DataGcpServiceAccount1$Outbound, + DataGcpServiceAccount1 +> = z.object({ + description: z.nullable(z.string()).optional(), + disabled: z.nullable(z.boolean()).optional(), + displayName: z.nullable(z.string()).optional(), + email: z.string(), + etag: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + oauth2ClientId: z.nullable(z.string()).optional(), + projectBindingCount: z.int(), + projectId: z.nullable(z.string()).optional(), + projectRoles: z.array(z.string()), + serviceAccountBindingCount: z.int(), + serviceAccountRoles: z.array(z.string()), + status: z.lazy(() => HeartbeatStatus37$outboundSchema), + uniqueId: z.nullable(z.string()).optional(), + backend: z.literal("gcpServiceAccount"), +}); + +export function dataGcpServiceAccount1ToJSON( + dataGcpServiceAccount1: DataGcpServiceAccount1, +): string { + return JSON.stringify( + DataGcpServiceAccount1$outboundSchema.parse(dataGcpServiceAccount1), + ); +} + +/** @internal */ +export const Reason36$outboundSchema: z.ZodEnum = z.enum( + Reason36, +); + +/** @internal */ +export const CollectionIssueSeverity36$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity36 +> = z.enum(CollectionIssueSeverity36); + +/** @internal */ +export type CollectionIssue36$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue36$outboundSchema: z.ZodType< + CollectionIssue36$Outbound, + CollectionIssue36 +> = z.object({ + message: z.string(), + reason: Reason36$outboundSchema, + severity: CollectionIssueSeverity36$outboundSchema, + source: z.string(), +}); + +export function collectionIssue36ToJSON( + collectionIssue36: CollectionIssue36, +): string { + return JSON.stringify( + CollectionIssue36$outboundSchema.parse(collectionIssue36), + ); +} + +/** @internal */ +export const Health36$outboundSchema: z.ZodEnum = z.enum( + Health36, +); + +/** @internal */ +export const StatusLifecycle36$outboundSchema: z.ZodEnum< + typeof StatusLifecycle36 +> = z.enum(StatusLifecycle36); + +/** @internal */ +export type HeartbeatStatus36$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus36$outboundSchema: z.ZodType< + HeartbeatStatus36$Outbound, + HeartbeatStatus36 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue36$outboundSchema)), + health: Health36$outboundSchema, + lifecycle: StatusLifecycle36$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus36ToJSON( + heartbeatStatus36: HeartbeatStatus36, +): string { + return JSON.stringify( + HeartbeatStatus36$outboundSchema.parse(heartbeatStatus36), + ); +} + +/** @internal */ +export type DataAwsIamRole1$Outbound = { + assumeRolePolicyPresent: boolean; + attachedPolicyCount: number; + attachedPolicyNames: Array; + createDate: string; + description?: string | null | undefined; + inlinePolicyCount: number; + inlinePolicyNames: Array; + lastUsedDate?: string | null | undefined; + lastUsedRegion?: string | null | undefined; + managedTagCount: number; + maxSessionDuration?: number | null | undefined; + path: string; + permissionsBoundaryArn?: string | null | undefined; + permissionsBoundaryType?: string | null | undefined; + roleArn: string; + roleId: string; + roleName: string; + stackPermissionsApplied: boolean; + status: HeartbeatStatus36$Outbound; + tagCount: number; + backend: "awsIamRole"; +}; + +/** @internal */ +export const DataAwsIamRole1$outboundSchema: z.ZodType< + DataAwsIamRole1$Outbound, + DataAwsIamRole1 +> = z.object({ + assumeRolePolicyPresent: z.boolean(), + attachedPolicyCount: z.int(), + attachedPolicyNames: z.array(z.string()), + createDate: z.string(), + description: z.nullable(z.string()).optional(), + inlinePolicyCount: z.int(), + inlinePolicyNames: z.array(z.string()), + lastUsedDate: z.nullable(z.string()).optional(), + lastUsedRegion: z.nullable(z.string()).optional(), + managedTagCount: z.int(), + maxSessionDuration: z.nullable(z.int()).optional(), + path: z.string(), + permissionsBoundaryArn: z.nullable(z.string()).optional(), + permissionsBoundaryType: z.nullable(z.string()).optional(), + roleArn: z.string(), + roleId: z.string(), + roleName: z.string(), + stackPermissionsApplied: z.boolean(), + status: z.lazy(() => HeartbeatStatus36$outboundSchema), + tagCount: z.int(), + backend: z.literal("awsIamRole"), +}); + +export function dataAwsIamRole1ToJSON( + dataAwsIamRole1: DataAwsIamRole1, +): string { + return JSON.stringify(DataAwsIamRole1$outboundSchema.parse(dataAwsIamRole1)); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion9$Outbound = + | DataAwsIamRole1$Outbound + | DataGcpServiceAccount1$Outbound + | DataAzureManagedIdentity1$Outbound + | DataLocal9$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion9$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion9$Outbound, + SyncReconcileRequestDataUnion9 +> = z.union([ + z.lazy(() => DataAwsIamRole1$outboundSchema), + z.lazy(() => DataGcpServiceAccount1$outboundSchema), + z.lazy(() => DataAzureManagedIdentity1$outboundSchema), + z.lazy(() => DataLocal9$outboundSchema), +]); + +export function syncReconcileRequestDataUnion9ToJSON( + syncReconcileRequestDataUnion9: SyncReconcileRequestDataUnion9, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion9$outboundSchema.parse( + syncReconcileRequestDataUnion9, + ), + ); +} + +/** @internal */ +export type DataServiceAccount$Outbound = { + data: + | DataAwsIamRole1$Outbound + | DataGcpServiceAccount1$Outbound + | DataAzureManagedIdentity1$Outbound + | DataLocal9$Outbound; + resourceType: "service-account"; +}; + +/** @internal */ +export const DataServiceAccount$outboundSchema: z.ZodType< + DataServiceAccount$Outbound, + DataServiceAccount +> = z.object({ + data: z.union([ + z.lazy(() => DataAwsIamRole1$outboundSchema), + z.lazy(() => DataGcpServiceAccount1$outboundSchema), + z.lazy(() => DataAzureManagedIdentity1$outboundSchema), + z.lazy(() => DataLocal9$outboundSchema), + ]), + resourceType: z.literal("service-account"), +}); + +export function dataServiceAccountToJSON( + dataServiceAccount: DataServiceAccount, +): string { + return JSON.stringify( + DataServiceAccount$outboundSchema.parse(dataServiceAccount), + ); +} + +/** @internal */ +export const Reason35$outboundSchema: z.ZodEnum = z.enum( + Reason35, +); + +/** @internal */ +export const CollectionIssueSeverity35$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity35 +> = z.enum(CollectionIssueSeverity35); + +/** @internal */ +export type CollectionIssue35$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue35$outboundSchema: z.ZodType< + CollectionIssue35$Outbound, + CollectionIssue35 +> = z.object({ + message: z.string(), + reason: Reason35$outboundSchema, + severity: CollectionIssueSeverity35$outboundSchema, + source: z.string(), +}); + +export function collectionIssue35ToJSON( + collectionIssue35: CollectionIssue35, +): string { + return JSON.stringify( + CollectionIssue35$outboundSchema.parse(collectionIssue35), + ); +} + +/** @internal */ +export const Health35$outboundSchema: z.ZodEnum = z.enum( + Health35, +); + +/** @internal */ +export const StatusLifecycle35$outboundSchema: z.ZodEnum< + typeof StatusLifecycle35 +> = z.enum(StatusLifecycle35); + +/** @internal */ +export type HeartbeatStatus35$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus35$outboundSchema: z.ZodType< + HeartbeatStatus35$Outbound, + HeartbeatStatus35 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue35$outboundSchema)), + health: Health35$outboundSchema, + lifecycle: StatusLifecycle35$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus35ToJSON( + heartbeatStatus35: HeartbeatStatus35, +): string { + return JSON.stringify( + HeartbeatStatus35$outboundSchema.parse(heartbeatStatus35), + ); +} + +/** @internal */ +export type DataLocal8$Outbound = { + isDirectory?: boolean | null | undefined; + modifiedAt?: string | null | undefined; + path: string; + pathExists: boolean; + readonly?: boolean | null | undefined; + secretMetadataListed: boolean; + status: HeartbeatStatus35$Outbound; + backend: "local"; +}; + +/** @internal */ +export const DataLocal8$outboundSchema: z.ZodType< + DataLocal8$Outbound, + DataLocal8 +> = z.object({ + isDirectory: z.nullable(z.boolean()).optional(), + modifiedAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), + path: z.string(), + pathExists: z.boolean(), + readonly: z.nullable(z.boolean()).optional(), + secretMetadataListed: z.boolean(), + status: z.lazy(() => HeartbeatStatus35$outboundSchema), + backend: z.literal("local"), +}); + +export function dataLocal8ToJSON(dataLocal8: DataLocal8): string { + return JSON.stringify(DataLocal8$outboundSchema.parse(dataLocal8)); +} + +/** @internal */ +export const Reason34$outboundSchema: z.ZodEnum = z.enum( + Reason34, +); + +/** @internal */ +export const CollectionIssueSeverity34$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity34 +> = z.enum(CollectionIssueSeverity34); + +/** @internal */ +export type CollectionIssue34$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue34$outboundSchema: z.ZodType< + CollectionIssue34$Outbound, + CollectionIssue34 +> = z.object({ + message: z.string(), + reason: Reason34$outboundSchema, + severity: CollectionIssueSeverity34$outboundSchema, + source: z.string(), +}); + +export function collectionIssue34ToJSON( + collectionIssue34: CollectionIssue34, +): string { + return JSON.stringify( + CollectionIssue34$outboundSchema.parse(collectionIssue34), + ); +} + +/** @internal */ +export const Health34$outboundSchema: z.ZodEnum = z.enum( + Health34, +); + +/** @internal */ +export const StatusLifecycle34$outboundSchema: z.ZodEnum< + typeof StatusLifecycle34 +> = z.enum(StatusLifecycle34); + +/** @internal */ +export type HeartbeatStatus34$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus34$outboundSchema: z.ZodType< + HeartbeatStatus34$Outbound, + HeartbeatStatus34 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue34$outboundSchema)), + health: Health34$outboundSchema, + lifecycle: StatusLifecycle34$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus34ToJSON( + heartbeatStatus34: HeartbeatStatus34, +): string { + return JSON.stringify( + HeartbeatStatus34$outboundSchema.parse(heartbeatStatus34), + ); +} + +/** @internal */ +export type DataKubernetesSecret$Outbound = { + namespace: string; + prefix: string; + secretMetadataListed: boolean; + status: HeartbeatStatus34$Outbound; + backend: "kubernetesSecret"; +}; + +/** @internal */ +export const DataKubernetesSecret$outboundSchema: z.ZodType< + DataKubernetesSecret$Outbound, + DataKubernetesSecret +> = z.object({ + namespace: z.string(), + prefix: z.string(), + secretMetadataListed: z.boolean(), + status: z.lazy(() => HeartbeatStatus34$outboundSchema), + backend: z.literal("kubernetesSecret"), +}); + +export function dataKubernetesSecretToJSON( + dataKubernetesSecret: DataKubernetesSecret, +): string { + return JSON.stringify( + DataKubernetesSecret$outboundSchema.parse(dataKubernetesSecret), + ); +} + +/** @internal */ +export const Reason33$outboundSchema: z.ZodEnum = z.enum( + Reason33, +); + +/** @internal */ +export const CollectionIssueSeverity33$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity33 +> = z.enum(CollectionIssueSeverity33); + +/** @internal */ +export type CollectionIssue33$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue33$outboundSchema: z.ZodType< + CollectionIssue33$Outbound, + CollectionIssue33 +> = z.object({ + message: z.string(), + reason: Reason33$outboundSchema, + severity: CollectionIssueSeverity33$outboundSchema, + source: z.string(), +}); + +export function collectionIssue33ToJSON( + collectionIssue33: CollectionIssue33, +): string { + return JSON.stringify( + CollectionIssue33$outboundSchema.parse(collectionIssue33), + ); +} + +/** @internal */ +export const Health33$outboundSchema: z.ZodEnum = z.enum( + Health33, +); + +/** @internal */ +export const StatusLifecycle33$outboundSchema: z.ZodEnum< + typeof StatusLifecycle33 +> = z.enum(StatusLifecycle33); + +/** @internal */ +export type HeartbeatStatus33$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus33$outboundSchema: z.ZodType< + HeartbeatStatus33$Outbound, + HeartbeatStatus33 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue33$outboundSchema)), + health: Health33$outboundSchema, + lifecycle: StatusLifecycle33$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus33ToJSON( + heartbeatStatus33: HeartbeatStatus33, +): string { + return JSON.stringify( + HeartbeatStatus33$outboundSchema.parse(heartbeatStatus33), + ); +} + +/** @internal */ +export type DataAzureKeyVault$Outbound = { + accessPolicyCount: number; + location?: string | null | undefined; + name: string; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess: string; + purgeProtectionEnabled?: boolean | null | undefined; + rbacAuthorizationEnabled: boolean; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + secretMetadataListed: boolean; + skuFamily?: string | null | undefined; + skuName?: string | null | undefined; + softDeleteEnabled: boolean; + softDeleteRetentionDays: number; + status: HeartbeatStatus33$Outbound; + vaultUri?: string | null | undefined; + backend: "azureKeyVault"; +}; + +/** @internal */ +export const DataAzureKeyVault$outboundSchema: z.ZodType< + DataAzureKeyVault$Outbound, + DataAzureKeyVault +> = z.object({ + accessPolicyCount: z.int(), + location: z.nullable(z.string()).optional(), + name: z.string(), + privateEndpointConnectionCount: z.int(), + provisioningState: z.nullable(z.string()).optional(), + publicNetworkAccess: z.string(), + purgeProtectionEnabled: z.nullable(z.boolean()).optional(), + rbacAuthorizationEnabled: z.boolean(), + resourceGroup: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + secretMetadataListed: z.boolean(), + skuFamily: z.nullable(z.string()).optional(), + skuName: z.nullable(z.string()).optional(), + softDeleteEnabled: z.boolean(), + softDeleteRetentionDays: z.int(), + status: z.lazy(() => HeartbeatStatus33$outboundSchema), + vaultUri: z.nullable(z.string()).optional(), + backend: z.literal("azureKeyVault"), +}); + +export function dataAzureKeyVaultToJSON( + dataAzureKeyVault: DataAzureKeyVault, +): string { + return JSON.stringify( + DataAzureKeyVault$outboundSchema.parse(dataAzureKeyVault), + ); +} + +/** @internal */ +export const Reason32$outboundSchema: z.ZodEnum = z.enum( + Reason32, +); + +/** @internal */ +export const CollectionIssueSeverity32$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity32 +> = z.enum(CollectionIssueSeverity32); + +/** @internal */ +export type CollectionIssue32$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue32$outboundSchema: z.ZodType< + CollectionIssue32$Outbound, + CollectionIssue32 +> = z.object({ + message: z.string(), + reason: Reason32$outboundSchema, + severity: CollectionIssueSeverity32$outboundSchema, + source: z.string(), +}); + +export function collectionIssue32ToJSON( + collectionIssue32: CollectionIssue32, +): string { + return JSON.stringify( + CollectionIssue32$outboundSchema.parse(collectionIssue32), + ); +} + +/** @internal */ +export const Health32$outboundSchema: z.ZodEnum = z.enum( + Health32, +); + +/** @internal */ +export const StatusLifecycle32$outboundSchema: z.ZodEnum< + typeof StatusLifecycle32 +> = z.enum(StatusLifecycle32); + +/** @internal */ +export type HeartbeatStatus32$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus32$outboundSchema: z.ZodType< + HeartbeatStatus32$Outbound, + HeartbeatStatus32 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue32$outboundSchema)), + health: Health32$outboundSchema, + lifecycle: StatusLifecycle32$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus32ToJSON( + heartbeatStatus32: HeartbeatStatus32, +): string { + return JSON.stringify( + HeartbeatStatus32$outboundSchema.parse(heartbeatStatus32), + ); +} + +/** @internal */ +export type DataGcpSecretManager$Outbound = { + location: string; + prefix: string; + projectId: string; + secretMetadataListed: boolean; + status: HeartbeatStatus32$Outbound; + backend: "gcpSecretManager"; +}; + +/** @internal */ +export const DataGcpSecretManager$outboundSchema: z.ZodType< + DataGcpSecretManager$Outbound, + DataGcpSecretManager +> = z.object({ + location: z.string(), + prefix: z.string(), + projectId: z.string(), + secretMetadataListed: z.boolean(), + status: z.lazy(() => HeartbeatStatus32$outboundSchema), + backend: z.literal("gcpSecretManager"), +}); + +export function dataGcpSecretManagerToJSON( + dataGcpSecretManager: DataGcpSecretManager, +): string { + return JSON.stringify( + DataGcpSecretManager$outboundSchema.parse(dataGcpSecretManager), + ); +} + +/** @internal */ +export const Reason31$outboundSchema: z.ZodEnum = z.enum( + Reason31, +); + +/** @internal */ +export const CollectionIssueSeverity31$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity31 +> = z.enum(CollectionIssueSeverity31); + +/** @internal */ +export type CollectionIssue31$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue31$outboundSchema: z.ZodType< + CollectionIssue31$Outbound, + CollectionIssue31 +> = z.object({ + message: z.string(), + reason: Reason31$outboundSchema, + severity: CollectionIssueSeverity31$outboundSchema, + source: z.string(), +}); + +export function collectionIssue31ToJSON( + collectionIssue31: CollectionIssue31, +): string { + return JSON.stringify( + CollectionIssue31$outboundSchema.parse(collectionIssue31), + ); +} + +/** @internal */ +export const Health31$outboundSchema: z.ZodEnum = z.enum( + Health31, +); + +/** @internal */ +export const StatusLifecycle31$outboundSchema: z.ZodEnum< + typeof StatusLifecycle31 +> = z.enum(StatusLifecycle31); + +/** @internal */ +export type HeartbeatStatus31$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus31$outboundSchema: z.ZodType< + HeartbeatStatus31$Outbound, + HeartbeatStatus31 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue31$outboundSchema)), + health: Health31$outboundSchema, + lifecycle: StatusLifecycle31$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus31ToJSON( + heartbeatStatus31: HeartbeatStatus31, +): string { + return JSON.stringify( + HeartbeatStatus31$outboundSchema.parse(heartbeatStatus31), + ); +} + +/** @internal */ +export type DataAwsParameterStore$Outbound = { + accountId: string; + hasMoreParameters?: boolean | null | undefined; + latestModifiedAt?: string | null | undefined; + parameterMetadataSampled: boolean; + prefix: string; + region: string; + sampledAdvancedTierCount?: number | null | undefined; + sampledKmsKeyMetadataPresentCount?: number | null | undefined; + sampledParameterCount?: number | null | undefined; + sampledSecureStringCount?: number | null | undefined; + sampledStringCount?: number | null | undefined; + sampledStringListCount?: number | null | undefined; + status: HeartbeatStatus31$Outbound; + backend: "awsParameterStore"; +}; + +/** @internal */ +export const DataAwsParameterStore$outboundSchema: z.ZodType< + DataAwsParameterStore$Outbound, + DataAwsParameterStore +> = z.object({ + accountId: z.string(), + hasMoreParameters: z.nullable(z.boolean()).optional(), + latestModifiedAt: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + parameterMetadataSampled: z.boolean(), + prefix: z.string(), + region: z.string(), + sampledAdvancedTierCount: z.nullable(z.int()).optional(), + sampledKmsKeyMetadataPresentCount: z.nullable(z.int()).optional(), + sampledParameterCount: z.nullable(z.int()).optional(), + sampledSecureStringCount: z.nullable(z.int()).optional(), + sampledStringCount: z.nullable(z.int()).optional(), + sampledStringListCount: z.nullable(z.int()).optional(), + status: z.lazy(() => HeartbeatStatus31$outboundSchema), + backend: z.literal("awsParameterStore"), +}); + +export function dataAwsParameterStoreToJSON( + dataAwsParameterStore: DataAwsParameterStore, +): string { + return JSON.stringify( + DataAwsParameterStore$outboundSchema.parse(dataAwsParameterStore), + ); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion8$Outbound = + | DataAwsParameterStore$Outbound + | DataGcpSecretManager$Outbound + | DataAzureKeyVault$Outbound + | DataKubernetesSecret$Outbound + | DataLocal8$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion8$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion8$Outbound, + SyncReconcileRequestDataUnion8 +> = z.union([ + z.lazy(() => DataAwsParameterStore$outboundSchema), + z.lazy(() => DataGcpSecretManager$outboundSchema), + z.lazy(() => DataAzureKeyVault$outboundSchema), + z.lazy(() => DataKubernetesSecret$outboundSchema), + z.lazy(() => DataLocal8$outboundSchema), +]); + +export function syncReconcileRequestDataUnion8ToJSON( + syncReconcileRequestDataUnion8: SyncReconcileRequestDataUnion8, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion8$outboundSchema.parse( + syncReconcileRequestDataUnion8, + ), + ); +} + +/** @internal */ +export type DataVault$Outbound = { + data: + | DataAwsParameterStore$Outbound + | DataGcpSecretManager$Outbound + | DataAzureKeyVault$Outbound + | DataKubernetesSecret$Outbound + | DataLocal8$Outbound; + resourceType: "vault"; +}; + +/** @internal */ +export const DataVault$outboundSchema: z.ZodType< + DataVault$Outbound, + DataVault +> = z.object({ + data: z.union([ + z.lazy(() => DataAwsParameterStore$outboundSchema), + z.lazy(() => DataGcpSecretManager$outboundSchema), + z.lazy(() => DataAzureKeyVault$outboundSchema), + z.lazy(() => DataKubernetesSecret$outboundSchema), + z.lazy(() => DataLocal8$outboundSchema), + ]), + resourceType: z.literal("vault"), +}); + +export function dataVaultToJSON(dataVault: DataVault): string { + return JSON.stringify(DataVault$outboundSchema.parse(dataVault)); +} + +/** @internal */ +export const Reason30$outboundSchema: z.ZodEnum = z.enum( + Reason30, +); + +/** @internal */ +export const CollectionIssueSeverity30$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity30 +> = z.enum(CollectionIssueSeverity30); + +/** @internal */ +export type CollectionIssue30$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue30$outboundSchema: z.ZodType< + CollectionIssue30$Outbound, + CollectionIssue30 +> = z.object({ + message: z.string(), + reason: Reason30$outboundSchema, + severity: CollectionIssueSeverity30$outboundSchema, + source: z.string(), +}); + +export function collectionIssue30ToJSON( + collectionIssue30: CollectionIssue30, +): string { + return JSON.stringify( + CollectionIssue30$outboundSchema.parse(collectionIssue30), + ); +} + +/** @internal */ +export const Health30$outboundSchema: z.ZodEnum = z.enum( + Health30, +); + +/** @internal */ +export const StatusLifecycle30$outboundSchema: z.ZodEnum< + typeof StatusLifecycle30 +> = z.enum(StatusLifecycle30); + +/** @internal */ +export type HeartbeatStatus30$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus30$outboundSchema: z.ZodType< + HeartbeatStatus30$Outbound, + HeartbeatStatus30 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue30$outboundSchema)), + health: Health30$outboundSchema, + lifecycle: StatusLifecycle30$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus30ToJSON( + heartbeatStatus30: HeartbeatStatus30, +): string { + return JSON.stringify( + HeartbeatStatus30$outboundSchema.parse(heartbeatStatus30), + ); +} + +/** @internal */ +export type DataLocal7$Outbound = { + cloudMetadataSupported: boolean; + isDirectory?: boolean | null | undefined; + name: string; + path: string; + pathExists: boolean; + status: HeartbeatStatus30$Outbound; + backend: "local"; +}; + +/** @internal */ +export const DataLocal7$outboundSchema: z.ZodType< + DataLocal7$Outbound, + DataLocal7 +> = z.object({ + cloudMetadataSupported: z.boolean(), + isDirectory: z.nullable(z.boolean()).optional(), + name: z.string(), + path: z.string(), + pathExists: z.boolean(), + status: z.lazy(() => HeartbeatStatus30$outboundSchema), + backend: z.literal("local"), +}); + +export function dataLocal7ToJSON(dataLocal7: DataLocal7): string { + return JSON.stringify(DataLocal7$outboundSchema.parse(dataLocal7)); +} + +/** @internal */ +export const Reason29$outboundSchema: z.ZodEnum = z.enum( + Reason29, +); + +/** @internal */ +export const CollectionIssueSeverity29$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity29 +> = z.enum(CollectionIssueSeverity29); + +/** @internal */ +export type CollectionIssue29$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue29$outboundSchema: z.ZodType< + CollectionIssue29$Outbound, + CollectionIssue29 +> = z.object({ + message: z.string(), + reason: Reason29$outboundSchema, + severity: CollectionIssueSeverity29$outboundSchema, + source: z.string(), +}); + +export function collectionIssue29ToJSON( + collectionIssue29: CollectionIssue29, +): string { + return JSON.stringify( + CollectionIssue29$outboundSchema.parse(collectionIssue29), + ); +} + +/** @internal */ +export const Health29$outboundSchema: z.ZodEnum = z.enum( + Health29, +); + +/** @internal */ +export const StatusLifecycle29$outboundSchema: z.ZodEnum< + typeof StatusLifecycle29 +> = z.enum(StatusLifecycle29); + +/** @internal */ +export type HeartbeatStatus29$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus29$outboundSchema: z.ZodType< + HeartbeatStatus29$Outbound, + HeartbeatStatus29 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue29$outboundSchema)), + health: Health29$outboundSchema, + lifecycle: StatusLifecycle29$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus29ToJSON( + heartbeatStatus29: HeartbeatStatus29, +): string { + return JSON.stringify( + HeartbeatStatus29$outboundSchema.parse(heartbeatStatus29), + ); +} + +/** @internal */ +export type DataAzureTable$Outbound = { + endpoint?: string | null | undefined; + resourceGroup?: string | null | undefined; + signedIdentifierCount?: number | null | undefined; + status: HeartbeatStatus29$Outbound; + storageAccountKind?: string | null | undefined; + storageAccountLocation?: string | null | undefined; + storageAccountName: string; + storageAccountPrimaryStatus?: string | null | undefined; + storageAccountProvisioningState?: string | null | undefined; + storageAccountResourceId?: string | null | undefined; + tableExists: boolean; + tableName: string; + backend: "azureTable"; +}; + +/** @internal */ +export const DataAzureTable$outboundSchema: z.ZodType< + DataAzureTable$Outbound, + DataAzureTable +> = z.object({ + endpoint: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + signedIdentifierCount: z.nullable(z.int()).optional(), + status: z.lazy(() => HeartbeatStatus29$outboundSchema), + storageAccountKind: z.nullable(z.string()).optional(), + storageAccountLocation: z.nullable(z.string()).optional(), + storageAccountName: z.string(), + storageAccountPrimaryStatus: z.nullable(z.string()).optional(), + storageAccountProvisioningState: z.nullable(z.string()).optional(), + storageAccountResourceId: z.nullable(z.string()).optional(), + tableExists: z.boolean(), + tableName: z.string(), + backend: z.literal("azureTable"), +}); + +export function dataAzureTableToJSON(dataAzureTable: DataAzureTable): string { + return JSON.stringify(DataAzureTable$outboundSchema.parse(dataAzureTable)); +} + +/** @internal */ +export const Reason28$outboundSchema: z.ZodEnum = z.enum( + Reason28, +); + +/** @internal */ +export const CollectionIssueSeverity28$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity28 +> = z.enum(CollectionIssueSeverity28); + +/** @internal */ +export type CollectionIssue28$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue28$outboundSchema: z.ZodType< + CollectionIssue28$Outbound, + CollectionIssue28 +> = z.object({ + message: z.string(), + reason: Reason28$outboundSchema, + severity: CollectionIssueSeverity28$outboundSchema, + source: z.string(), +}); + +export function collectionIssue28ToJSON( + collectionIssue28: CollectionIssue28, +): string { + return JSON.stringify( + CollectionIssue28$outboundSchema.parse(collectionIssue28), + ); +} + +/** @internal */ +export const Health28$outboundSchema: z.ZodEnum = z.enum( + Health28, +); + +/** @internal */ +export const StatusLifecycle28$outboundSchema: z.ZodEnum< + typeof StatusLifecycle28 +> = z.enum(StatusLifecycle28); + +/** @internal */ +export type HeartbeatStatus28$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus28$outboundSchema: z.ZodType< + HeartbeatStatus28$Outbound, + HeartbeatStatus28 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue28$outboundSchema)), + health: Health28$outboundSchema, + lifecycle: StatusLifecycle28$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus28ToJSON( + heartbeatStatus28: HeartbeatStatus28, +): string { + return JSON.stringify( + HeartbeatStatus28$outboundSchema.parse(heartbeatStatus28), + ); +} + +/** @internal */ +export type DataGcpFirestore$Outbound = { + appEngineIntegrationMode?: string | null | undefined; + cmekEnabled: boolean; + concurrencyMode?: string | null | undefined; + createTime?: string | null | undefined; + databaseEdition?: string | null | undefined; + databaseName: string; + databaseType?: string | null | undefined; + deleteProtectionState?: string | null | undefined; + deleteTime?: string | null | undefined; + earliestVersionTime?: string | null | undefined; + endpoint?: string | null | undefined; + locationId?: string | null | undefined; + pointInTimeRecoveryEnablement?: string | null | undefined; + projectId?: string | null | undefined; + sourceInfoPresent: boolean; + status: HeartbeatStatus28$Outbound; + updateTime?: string | null | undefined; + versionRetentionPeriod?: string | null | undefined; + backend: "gcpFirestore"; +}; + +/** @internal */ +export const DataGcpFirestore$outboundSchema: z.ZodType< + DataGcpFirestore$Outbound, + DataGcpFirestore +> = z.object({ + appEngineIntegrationMode: z.nullable(z.string()).optional(), + cmekEnabled: z.boolean(), + concurrencyMode: z.nullable(z.string()).optional(), + createTime: z.nullable(z.string()).optional(), + databaseEdition: z.nullable(z.string()).optional(), + databaseName: z.string(), + databaseType: z.nullable(z.string()).optional(), + deleteProtectionState: z.nullable(z.string()).optional(), + deleteTime: z.nullable(z.string()).optional(), + earliestVersionTime: z.nullable(z.string()).optional(), + endpoint: z.nullable(z.string()).optional(), + locationId: z.nullable(z.string()).optional(), + pointInTimeRecoveryEnablement: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + sourceInfoPresent: z.boolean(), + status: z.lazy(() => HeartbeatStatus28$outboundSchema), + updateTime: z.nullable(z.string()).optional(), + versionRetentionPeriod: z.nullable(z.string()).optional(), + backend: z.literal("gcpFirestore"), +}); + +export function dataGcpFirestoreToJSON( + dataGcpFirestore: DataGcpFirestore, +): string { + return JSON.stringify( + DataGcpFirestore$outboundSchema.parse(dataGcpFirestore), + ); +} + +/** @internal */ +export type KeySchema$Outbound = { + attributeName: string; + keyType: string; +}; + +/** @internal */ +export const KeySchema$outboundSchema: z.ZodType< + KeySchema$Outbound, + KeySchema +> = z.object({ + attributeName: z.string(), + keyType: z.string(), +}); + +export function keySchemaToJSON(keySchema: KeySchema): string { + return JSON.stringify(KeySchema$outboundSchema.parse(keySchema)); +} + +/** @internal */ +export const Reason27$outboundSchema: z.ZodEnum = z.enum( + Reason27, +); + +/** @internal */ +export const CollectionIssueSeverity27$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity27 +> = z.enum(CollectionIssueSeverity27); + +/** @internal */ +export type CollectionIssue27$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue27$outboundSchema: z.ZodType< + CollectionIssue27$Outbound, + CollectionIssue27 +> = z.object({ + message: z.string(), + reason: Reason27$outboundSchema, + severity: CollectionIssueSeverity27$outboundSchema, + source: z.string(), +}); + +export function collectionIssue27ToJSON( + collectionIssue27: CollectionIssue27, +): string { + return JSON.stringify( + CollectionIssue27$outboundSchema.parse(collectionIssue27), + ); +} + +/** @internal */ +export const Health27$outboundSchema: z.ZodEnum = z.enum( + Health27, +); + +/** @internal */ +export const StatusLifecycle27$outboundSchema: z.ZodEnum< + typeof StatusLifecycle27 +> = z.enum(StatusLifecycle27); + +/** @internal */ +export type HeartbeatStatus27$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus27$outboundSchema: z.ZodType< + HeartbeatStatus27$Outbound, + HeartbeatStatus27 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue27$outboundSchema)), + health: Health27$outboundSchema, + lifecycle: StatusLifecycle27$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus27ToJSON( + heartbeatStatus27: HeartbeatStatus27, +): string { + return JSON.stringify( + HeartbeatStatus27$outboundSchema.parse(heartbeatStatus27), + ); +} + +/** @internal */ +export type DataAwsDynamoDb$Outbound = { + billingMode?: string | null | undefined; + deletionProtectionEnabled?: boolean | null | undefined; + globalSecondaryIndexCount?: number | null | undefined; + itemCount?: number | null | undefined; + keySchema: Array; + localSecondaryIndexCount?: number | null | undefined; + name: string; + region?: string | null | undefined; + replicaCount?: number | null | undefined; + restoreInProgress?: boolean | null | undefined; + sseStatus?: string | null | undefined; + sseType?: string | null | undefined; + status: HeartbeatStatus27$Outbound; + streamEnabled?: boolean | null | undefined; + streamViewType?: string | null | undefined; + tableArn?: string | null | undefined; + tableClass?: string | null | undefined; + tableSizeBytes?: number | null | undefined; + tableStatus?: string | null | undefined; + ttlAttributeName?: string | null | undefined; + ttlStatus?: string | null | undefined; + backend: "awsDynamoDb"; +}; + +/** @internal */ +export const DataAwsDynamoDb$outboundSchema: z.ZodType< + DataAwsDynamoDb$Outbound, + DataAwsDynamoDb +> = z.object({ + billingMode: z.nullable(z.string()).optional(), + deletionProtectionEnabled: z.nullable(z.boolean()).optional(), + globalSecondaryIndexCount: z.nullable(z.int()).optional(), + itemCount: z.nullable(z.int()).optional(), + keySchema: z.array(z.lazy(() => KeySchema$outboundSchema)), + localSecondaryIndexCount: z.nullable(z.int()).optional(), + name: z.string(), + region: z.nullable(z.string()).optional(), + replicaCount: z.nullable(z.int()).optional(), + restoreInProgress: z.nullable(z.boolean()).optional(), + sseStatus: z.nullable(z.string()).optional(), + sseType: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus27$outboundSchema), + streamEnabled: z.nullable(z.boolean()).optional(), + streamViewType: z.nullable(z.string()).optional(), + tableArn: z.nullable(z.string()).optional(), + tableClass: z.nullable(z.string()).optional(), + tableSizeBytes: z.nullable(z.int()).optional(), + tableStatus: z.nullable(z.string()).optional(), + ttlAttributeName: z.nullable(z.string()).optional(), + ttlStatus: z.nullable(z.string()).optional(), + backend: z.literal("awsDynamoDb"), +}); + +export function dataAwsDynamoDbToJSON( + dataAwsDynamoDb: DataAwsDynamoDb, +): string { + return JSON.stringify(DataAwsDynamoDb$outboundSchema.parse(dataAwsDynamoDb)); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion7$Outbound = + | DataAwsDynamoDb$Outbound + | DataGcpFirestore$Outbound + | DataAzureTable$Outbound + | DataLocal7$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion7$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion7$Outbound, + SyncReconcileRequestDataUnion7 +> = z.union([ + z.lazy(() => DataAwsDynamoDb$outboundSchema), + z.lazy(() => DataGcpFirestore$outboundSchema), + z.lazy(() => DataAzureTable$outboundSchema), + z.lazy(() => DataLocal7$outboundSchema), +]); + +export function syncReconcileRequestDataUnion7ToJSON( + syncReconcileRequestDataUnion7: SyncReconcileRequestDataUnion7, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion7$outboundSchema.parse( + syncReconcileRequestDataUnion7, + ), + ); +} + +/** @internal */ +export type DataKv$Outbound = { + data: + | DataAwsDynamoDb$Outbound + | DataGcpFirestore$Outbound + | DataAzureTable$Outbound + | DataLocal7$Outbound; + resourceType: "kv"; +}; + +/** @internal */ +export const DataKv$outboundSchema: z.ZodType = z + .object({ + data: z.union([ + z.lazy(() => DataAwsDynamoDb$outboundSchema), + z.lazy(() => DataGcpFirestore$outboundSchema), + z.lazy(() => DataAzureTable$outboundSchema), + z.lazy(() => DataLocal7$outboundSchema), + ]), + resourceType: z.literal("kv"), + }); + +export function dataKvToJSON(dataKv: DataKv): string { + return JSON.stringify(DataKv$outboundSchema.parse(dataKv)); +} + +/** @internal */ +export const Reason26$outboundSchema: z.ZodEnum = z.enum( + Reason26, +); + +/** @internal */ +export const CollectionIssueSeverity26$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity26 +> = z.enum(CollectionIssueSeverity26); + +/** @internal */ +export type CollectionIssue26$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue26$outboundSchema: z.ZodType< + CollectionIssue26$Outbound, + CollectionIssue26 +> = z.object({ + message: z.string(), + reason: Reason26$outboundSchema, + severity: CollectionIssueSeverity26$outboundSchema, + source: z.string(), +}); + +export function collectionIssue26ToJSON( + collectionIssue26: CollectionIssue26, +): string { + return JSON.stringify( + CollectionIssue26$outboundSchema.parse(collectionIssue26), + ); +} diff --git a/client-sdks/platform/typescript/src/models/createfirstpartydeploymentsessionresponse.ts b/client-sdks/platform/typescript/src/models/createfirstpartydeploymentsessionresponse.ts new file mode 100644 index 000000000..72f95fbaf --- /dev/null +++ b/client-sdks/platform/typescript/src/models/createfirstpartydeploymentsessionresponse.ts @@ -0,0 +1,39 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type CreateFirstPartyDeploymentSessionResponse = { + /** + * The deployment-group session token + */ + token: string; +}; + +/** @internal */ +export const CreateFirstPartyDeploymentSessionResponse$inboundSchema: z.ZodType< + CreateFirstPartyDeploymentSessionResponse, + unknown +> = z.object({ + token: z.string(), +}); + +export function createFirstPartyDeploymentSessionResponseFromJSON( + jsonString: string, +): SafeParseResult< + CreateFirstPartyDeploymentSessionResponse, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateFirstPartyDeploymentSessionResponse$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateFirstPartyDeploymentSessionResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/createmanagerresponse.ts b/client-sdks/platform/typescript/src/models/createmanagerresponse.ts index 8916b53c1..bcffd5e07 100644 --- a/client-sdks/platform/typescript/src/models/createmanagerresponse.ts +++ b/client-sdks/platform/typescript/src/models/createmanagerresponse.ts @@ -8,288 +8,54 @@ import { safeParse } from "../lib/schemas.js"; import { ClosedEnum } from "../types/enums.js"; import { Result as SafeParseResult } from "../types/fp.js"; import { - DeploymentSetupPolicy, - DeploymentSetupPolicy$inboundSchema, -} from "./deploymentsetuppolicy.js"; -import { - EncryptedStackInputValue, - EncryptedStackInputValue$inboundSchema, -} from "./encryptedstackinputvalue.js"; + CreateManagerResponseCertificateUnion4, + CreateManagerResponseCertificateUnion4$inboundSchema, + CreateManagerResponseClusterUnion2, + CreateManagerResponseClusterUnion2$inboundSchema, + CreateManagerResponseComputeUnion2, + CreateManagerResponseComputeUnion2$inboundSchema, + CreateManagerResponseDeploymentModel2, + CreateManagerResponseDeploymentModel2$inboundSchema, + CreateManagerResponseDomainsUnion2, + CreateManagerResponseDomainsUnion2$inboundSchema, + CreateManagerResponseExternalBindings2, + CreateManagerResponseExternalBindings2$inboundSchema, + CreateManagerResponseHeartbeats2, + CreateManagerResponseHeartbeats2$inboundSchema, + CreateManagerResponseModeCustom2, + CreateManagerResponseModeCustom2$inboundSchema, + CreateManagerResponseRouteUnion4, + CreateManagerResponseRouteUnion4$inboundSchema, + CreateManagerResponseSetupConfig, + CreateManagerResponseSetupConfig$inboundSchema, + CreateManagerResponseSetupStatus, + CreateManagerResponseSetupStatus$inboundSchema, + CreateManagerResponseSetupTerraform, + CreateManagerResponseSetupTerraform$inboundSchema, +} from "./createmanagerresponserouteunion4.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; -export const CreateManagerResponseSetupStatus = { - Pending: "pending", -} as const; -export type CreateManagerResponseSetupStatus = ClosedEnum< - typeof CreateManagerResponseSetupStatus ->; - -export const CreateManagerResponseEnvironmentVariableType = { - Plain: "plain", - Secret: "secret", -} as const; -export type CreateManagerResponseEnvironmentVariableType = ClosedEnum< - typeof CreateManagerResponseEnvironmentVariableType ->; - -export type CreateManagerResponseEnvironmentVariable = { - name: string; - type: CreateManagerResponseEnvironmentVariableType; - targetResources: Array | null; -}; - -export type CreateManagerResponseSetupConfig = { - metadata: { [k: string]: any | null }; - policy: DeploymentSetupPolicy; - inputValues?: { [k: string]: EncryptedStackInputValue } | undefined; - environmentVariables: Array; -}; - -export type CreateManagerResponsePoolsAutoscale3 = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Maximum machine count. - */ - max: number; - /** - * Minimum machine count. - */ - min: number; - mode: "autoscale"; -}; - -export type CreateManagerResponsePoolsFixed3 = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Number of machines to run. - */ - machines: number; - mode: "fixed"; -}; - -/** - * User-selected deployment settings for one compute pool. - */ -export type CreateManagerResponsePoolsUnion3 = - | CreateManagerResponsePoolsFixed3 - | CreateManagerResponsePoolsAutoscale3; - -/** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. - */ -export type CreateManagerResponseCompute3 = { - /** - * Selected compute choices keyed by pool ID. - */ - pools?: { - [k: string]: - | CreateManagerResponsePoolsFixed3 - | CreateManagerResponsePoolsAutoscale3; - } | undefined; -}; - -export type CreateManagerResponseComputeUnion3 = - | CreateManagerResponseCompute3 - | any; - -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export const CreateManagerResponseDeploymentModel3 = { - Push: "push", - Pull: "pull", -} as const; -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export type CreateManagerResponseDeploymentModel3 = ClosedEnum< - typeof CreateManagerResponseDeploymentModel3 ->; - -export type CreateManagerResponseAws3 = { - certificateArn: string; -}; - -export type CreateManagerResponseAwsUnion3 = CreateManagerResponseAws3 | any; - -export type CreateManagerResponseAzure3 = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; -}; - -export type CreateManagerResponseAzureUnion3 = - | CreateManagerResponseAzure3 - | any; - -export type CreateManagerResponseGcp3 = { - certificateName: string; -}; - -export type CreateManagerResponseGcpUnion3 = CreateManagerResponseGcp3 | any; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type CreateManagerResponseTlsSecretRef3 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; -}; - -export type CreateManagerResponseDomainsKubernetes3 = { - /** - * Namespace-scoped Kubernetes TLS Secret reference. - */ - tlsSecretRef: CreateManagerResponseTlsSecretRef3; -}; - -export type CreateManagerResponseDomainsKubernetesUnion3 = - | CreateManagerResponseDomainsKubernetes3 - | any; - -/** - * Platform-specific certificate references for custom domains. - */ -export type CreateManagerResponseDomainsCertificate3 = { - aws?: CreateManagerResponseAws3 | any | null | undefined; - azure?: CreateManagerResponseAzure3 | any | null | undefined; - gcp?: CreateManagerResponseGcp3 | any | null | undefined; - kubernetes?: CreateManagerResponseDomainsKubernetes3 | any | null | undefined; -}; - -/** - * Custom domain configuration for a single resource. - */ -export type CreateManagerResponseCustomDomains3 = { +export type CreateManagerResponseExposureCustom2 = { /** - * Platform-specific certificate references for custom domains. + * Certificate publication or reference mode for Kubernetes public endpoints. */ - certificate: CreateManagerResponseDomainsCertificate3; + certificate: CreateManagerResponseCertificateUnion4; /** - * Fully qualified domain name to use. + * Hostname routed by the Kubernetes public endpoint. */ domain: string; -}; - -/** - * Domain configuration for the stack. - * - * @remarks - * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. - */ -export type CreateManagerResponseDomains3 = { - /** - * Custom domain configuration per resource ID. - */ - customDomains?: - | { [k: string]: CreateManagerResponseCustomDomains3 } - | null - | undefined; -}; - -export type CreateManagerResponseDomainsUnion3 = - | CreateManagerResponseDomains3 - | any; - -/** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ -export type CreateManagerResponseExternalBindings3 = {}; - -/** - * How heartbeat health checks are handled. - */ -export const CreateManagerResponseHeartbeats3 = { - Off: "off", - On: "on", -} as const; -/** - * How heartbeat health checks are handled. - */ -export type CreateManagerResponseHeartbeats3 = ClosedEnum< - typeof CreateManagerResponseHeartbeats3 ->; - -/** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. - */ -export type CreateManagerResponseCloud3 = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; -}; - -export type CreateManagerResponseCloudUnion3 = - | CreateManagerResponseCloud3 - | any; - -/** - * Ownership model for the Kubernetes cluster. - */ -export const CreateManagerResponseOwnership3 = { - Managed: "managed", - Existing: "existing", - External: "external", -} as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type CreateManagerResponseOwnership3 = ClosedEnum< - typeof CreateManagerResponseOwnership3 ->; - -/** - * Kubernetes cluster setup settings. - */ -export type CreateManagerResponseCluster3 = { - cloud?: CreateManagerResponseCloud3 | any | null | undefined; - /** - * Namespace where the Alien chart and application resources run. - */ - namespace?: string | null | undefined; + mode: CreateManagerResponseModeCustom2; /** - * Ownership model for the Kubernetes cluster. + * Kubernetes route API selected for public endpoints. */ - ownership: CreateManagerResponseOwnership3; + route: CreateManagerResponseRouteUnion4; }; -export type CreateManagerResponseClusterUnion3 = - | CreateManagerResponseCluster3 - | any; - -export type CreateManagerResponseCertificateNone6 = { +export type CreateManagerResponseCertificateNone3 = { mode: "none"; }; -export type CreateManagerResponseCertificateManagedTLSSecret6 = { +export type CreateManagerResponseCertificateManagedTLSSecret3 = { mode: "managedTlsSecret"; /** * Secret name template. Runtime may substitute resource/deployment tokens. @@ -297,7 +63,7 @@ export type CreateManagerResponseCertificateManagedTLSSecret6 = { secretNameTemplate: string; }; -export type CreateManagerResponseCertificateAwsAcmArn6 = { +export type CreateManagerResponseCertificateAwsAcmArn3 = { /** * Existing ACM certificate ARN. */ @@ -305,7 +71,7 @@ export type CreateManagerResponseCertificateAwsAcmArn6 = { mode: "awsAcmArn"; }; -export type CreateManagerResponseCertificateManagedAcmImport6 = { +export type CreateManagerResponseCertificateManagedAcmImport3 = { mode: "managedAcmImport"; /** * ACM region. Defaults to the deployment region when omitted. @@ -320,7 +86,7 @@ export type CreateManagerResponseCertificateManagedAcmImport6 = { /** * Namespace-scoped Kubernetes TLS Secret reference. */ -export type CreateManagerResponseCertificateTLSSecretRef6 = { +export type CreateManagerResponseCertificateTLSSecretRef3 = { /** * Secret namespace. Defaults to the release namespace when omitted. */ @@ -335,31 +101,31 @@ export type CreateManagerResponseCertificateTLSSecretRef6 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ -export type CreateManagerResponseCertificateUnion6 = - | CreateManagerResponseCertificateTLSSecretRef6 - | CreateManagerResponseCertificateManagedAcmImport6 - | CreateManagerResponseCertificateAwsAcmArn6 - | CreateManagerResponseCertificateManagedTLSSecret6 - | CreateManagerResponseCertificateNone6; - -export const CreateManagerResponseModeCustom3 = { - Custom: "custom", +export type CreateManagerResponseCertificateUnion3 = + | CreateManagerResponseCertificateTLSSecretRef3 + | CreateManagerResponseCertificateManagedAcmImport3 + | CreateManagerResponseCertificateAwsAcmArn3 + | CreateManagerResponseCertificateManagedTLSSecret3 + | CreateManagerResponseCertificateNone3; + +export const CreateManagerResponseModeGenerated2 = { + Generated: "generated", } as const; -export type CreateManagerResponseModeCustom3 = ClosedEnum< - typeof CreateManagerResponseModeCustom3 +export type CreateManagerResponseModeGenerated2 = ClosedEnum< + typeof CreateManagerResponseModeGenerated2 >; -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12 = +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum6 = { AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum6 = ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12 + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum6 >; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers12 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers6 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -374,37 +140,37 @@ export type CreateManagerResponseProviderAzureApplicationGatewayForContainers12 */ frontend: string; provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12; + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum6; }; -export const CreateManagerResponseProviderGkeGatewayEnum12 = { +export const CreateManagerResponseProviderGkeGatewayEnum6 = { GkeGateway: "gkeGateway", } as const; -export type CreateManagerResponseProviderGkeGatewayEnum12 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum12 +export type CreateManagerResponseProviderGkeGatewayEnum6 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum6 >; -export type CreateManagerResponseProviderGkeGateway12 = { - provider: CreateManagerResponseProviderGkeGatewayEnum12; +export type CreateManagerResponseProviderGkeGateway6 = { + provider: CreateManagerResponseProviderGkeGatewayEnum6; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const CreateManagerResponseProviderAwsAlbEnum12 = { +export const CreateManagerResponseProviderAwsAlbEnum6 = { AwsAlb: "awsAlb", } as const; -export type CreateManagerResponseProviderAwsAlbEnum12 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum12 +export type CreateManagerResponseProviderAwsAlbEnum6 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum6 >; -export type CreateManagerResponseProviderAwsAlb12 = { +export type CreateManagerResponseProviderAwsAlb6 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum12; + provider: CreateManagerResponseProviderAwsAlbEnum6; /** * Internet-facing or internal ALB scheme. */ @@ -419,16 +185,16 @@ export type CreateManagerResponseProviderAwsAlb12 = { targetType: string; }; -export type CreateManagerResponseProviderUnion12 = - | CreateManagerResponseProviderAwsAlb12 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers12 - | CreateManagerResponseProviderGkeGateway12 +export type CreateManagerResponseProviderUnion6 = + | CreateManagerResponseProviderAwsAlb6 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers6 + | CreateManagerResponseProviderGkeGateway6 | any; /** * Shared Gateway API route profile values. */ -export type CreateManagerResponseRouteGateway6 = { +export type CreateManagerResponseRouteGateway3 = { /** * Annotations applied to route objects. */ @@ -450,26 +216,26 @@ export type CreateManagerResponseRouteGateway6 = { */ listenerPort: number; provider?: - | CreateManagerResponseProviderAwsAlb12 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers12 - | CreateManagerResponseProviderGkeGateway12 + | CreateManagerResponseProviderAwsAlb6 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers6 + | CreateManagerResponseProviderGkeGateway6 | any | null | undefined; routeApi: "gateway"; }; -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11 = +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum5 = { AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum5 = ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11 + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum5 >; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers11 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers5 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -484,37 +250,37 @@ export type CreateManagerResponseProviderAzureApplicationGatewayForContainers11 */ frontend: string; provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11; + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum5; }; -export const CreateManagerResponseProviderGkeGatewayEnum11 = { +export const CreateManagerResponseProviderGkeGatewayEnum5 = { GkeGateway: "gkeGateway", } as const; -export type CreateManagerResponseProviderGkeGatewayEnum11 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum11 +export type CreateManagerResponseProviderGkeGatewayEnum5 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum5 >; -export type CreateManagerResponseProviderGkeGateway11 = { - provider: CreateManagerResponseProviderGkeGatewayEnum11; +export type CreateManagerResponseProviderGkeGateway5 = { + provider: CreateManagerResponseProviderGkeGatewayEnum5; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const CreateManagerResponseProviderAwsAlbEnum11 = { +export const CreateManagerResponseProviderAwsAlbEnum5 = { AwsAlb: "awsAlb", } as const; -export type CreateManagerResponseProviderAwsAlbEnum11 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum11 ->; +export type CreateManagerResponseProviderAwsAlbEnum5 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum5 +>; -export type CreateManagerResponseProviderAwsAlb11 = { +export type CreateManagerResponseProviderAwsAlb5 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum11; + provider: CreateManagerResponseProviderAwsAlbEnum5; /** * Internet-facing or internal ALB scheme. */ @@ -529,16 +295,16 @@ export type CreateManagerResponseProviderAwsAlb11 = { targetType: string; }; -export type CreateManagerResponseProviderUnion11 = - | CreateManagerResponseProviderAwsAlb11 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers11 - | CreateManagerResponseProviderGkeGateway11 +export type CreateManagerResponseProviderUnion5 = + | CreateManagerResponseProviderAwsAlb5 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers5 + | CreateManagerResponseProviderGkeGateway5 | any; /** * Shared Ingress route profile values. */ -export type CreateManagerResponseRouteIngress6 = { +export type CreateManagerResponseRouteIngress3 = { /** * Annotations applied to route objects. */ @@ -556,9 +322,9 @@ export type CreateManagerResponseRouteIngress6 = { */ labels?: { [k: string]: string } | undefined; provider?: - | CreateManagerResponseProviderAwsAlb11 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers11 - | CreateManagerResponseProviderGkeGateway11 + | CreateManagerResponseProviderAwsAlb5 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers5 + | CreateManagerResponseProviderGkeGateway5 | any | null | undefined; @@ -568,503 +334,193 @@ export type CreateManagerResponseRouteIngress6 = { /** * Kubernetes route API selected for public endpoints. */ -export type CreateManagerResponseRouteUnion6 = - | CreateManagerResponseRouteIngress6 - | CreateManagerResponseRouteGateway6; +export type CreateManagerResponseRouteUnion3 = + | CreateManagerResponseRouteIngress3 + | CreateManagerResponseRouteGateway3; -export type CreateManagerResponseExposureCustom3 = { +export type CreateManagerResponseExposureGenerated2 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ certificate: - | CreateManagerResponseCertificateTLSSecretRef6 - | CreateManagerResponseCertificateManagedAcmImport6 - | CreateManagerResponseCertificateAwsAcmArn6 - | CreateManagerResponseCertificateManagedTLSSecret6 - | CreateManagerResponseCertificateNone6; - /** - * Hostname routed by the Kubernetes public endpoint. - */ - domain: string; - mode: CreateManagerResponseModeCustom3; + | CreateManagerResponseCertificateTLSSecretRef3 + | CreateManagerResponseCertificateManagedAcmImport3 + | CreateManagerResponseCertificateAwsAcmArn3 + | CreateManagerResponseCertificateManagedTLSSecret3 + | CreateManagerResponseCertificateNone3; + mode: CreateManagerResponseModeGenerated2; /** * Kubernetes route API selected for public endpoints. */ route: - | CreateManagerResponseRouteIngress6 - | CreateManagerResponseRouteGateway6; -}; - -export type CreateManagerResponseCertificateNone5 = { - mode: "none"; + | CreateManagerResponseRouteIngress3 + | CreateManagerResponseRouteGateway3; }; -export type CreateManagerResponseCertificateManagedTLSSecret5 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; -}; +export const CreateManagerResponseModeDisabled2 = { + Disabled: "disabled", +} as const; +export type CreateManagerResponseModeDisabled2 = ClosedEnum< + typeof CreateManagerResponseModeDisabled2 +>; -export type CreateManagerResponseCertificateAwsAcmArn5 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; +export type CreateManagerResponseExposureDisabled2 = { + mode: CreateManagerResponseModeDisabled2; }; -export type CreateManagerResponseCertificateManagedAcmImport5 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; - /** - * Tags applied to runtime-imported ACM certificates. - */ - tags?: { [k: string]: string } | undefined; -}; +export type CreateManagerResponseExposureUnion2 = + | CreateManagerResponseExposureCustom2 + | CreateManagerResponseExposureGenerated2 + | CreateManagerResponseExposureDisabled2 + | any; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. */ -export type CreateManagerResponseCertificateTLSSecretRef5 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; - mode: "tlsSecretRef"; +export type CreateManagerResponseKubernetes2 = { + cluster?: CreateManagerResponseClusterUnion2 | null | undefined; + exposure?: + | CreateManagerResponseExposureCustom2 + | CreateManagerResponseExposureGenerated2 + | CreateManagerResponseExposureDisabled2 + | any + | null + | undefined; }; -/** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ -export type CreateManagerResponseCertificateUnion5 = - | CreateManagerResponseCertificateTLSSecretRef5 - | CreateManagerResponseCertificateManagedAcmImport5 - | CreateManagerResponseCertificateAwsAcmArn5 - | CreateManagerResponseCertificateManagedTLSSecret5 - | CreateManagerResponseCertificateNone5; - -export const CreateManagerResponseModeGenerated3 = { - Generated: "generated", -} as const; -export type CreateManagerResponseModeGenerated3 = ClosedEnum< - typeof CreateManagerResponseModeGenerated3 ->; - -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10 = - ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10 - >; - -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers10 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10; - }; +export type CreateManagerResponseKubernetesUnion2 = + | CreateManagerResponseKubernetes2 + | any; -export const CreateManagerResponseProviderGkeGatewayEnum10 = { - GkeGateway: "gkeGateway", +export const CreateManagerResponseTypeByoVnetAzure2 = { + ByoVnetAzure: "byo-vnet-azure", } as const; -export type CreateManagerResponseProviderGkeGatewayEnum10 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum10 +export type CreateManagerResponseTypeByoVnetAzure2 = ClosedEnum< + typeof CreateManagerResponseTypeByoVnetAzure2 >; -export type CreateManagerResponseProviderGkeGateway10 = { - provider: CreateManagerResponseProviderGkeGatewayEnum10; +export type CreateManagerResponseNetworkByoVnetAzure2 = { /** - * Optional static address name for the Gateway frontend. + * Name of the dedicated classic Application Gateway subnet within the VNet. */ - staticAddressName?: string | null | undefined; + applicationGatewaySubnetName?: string | null | undefined; + /** + * Name of the private subnet within the VNet + */ + privateSubnetName: string; + /** + * Name of the public subnet within the VNet + */ + publicSubnetName: string; + type: CreateManagerResponseTypeByoVnetAzure2; + /** + * The full resource ID of the existing VNet + */ + vnetResourceId: string; }; -export const CreateManagerResponseProviderAwsAlbEnum10 = { - AwsAlb: "awsAlb", +export const CreateManagerResponseTypeByoVpcGcp2 = { + ByoVpcGcp: "byo-vpc-gcp", } as const; -export type CreateManagerResponseProviderAwsAlbEnum10 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum10 +export type CreateManagerResponseTypeByoVpcGcp2 = ClosedEnum< + typeof CreateManagerResponseTypeByoVpcGcp2 >; -export type CreateManagerResponseProviderAwsAlb10 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum10; +export type CreateManagerResponseNetworkByoVpcGcp2 = { /** - * Internet-facing or internal ALB scheme. + * The name of the existing VPC network */ - scheme: string; + networkName: string; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * The region of the subnet */ - subnetIds?: Array | undefined; + region: string; /** - * ALB target type, usually `ip`. + * The name of the subnet to use */ - targetType: string; + subnetName: string; + type: CreateManagerResponseTypeByoVpcGcp2; }; -export type CreateManagerResponseProviderUnion10 = - | CreateManagerResponseProviderAwsAlb10 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers10 - | CreateManagerResponseProviderGkeGateway10 - | any; +export const CreateManagerResponseTypeByoVpcAws2 = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type CreateManagerResponseTypeByoVpcAws2 = ClosedEnum< + typeof CreateManagerResponseTypeByoVpcAws2 +>; -/** - * Shared Gateway API route profile values. - */ -export type CreateManagerResponseRouteGateway5 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; +export type CreateManagerResponseNetworkByoVpcAws2 = { /** - * Route controller identifier, for example a cloud Gateway controller. + * IDs of private subnets */ - controller?: string | null | undefined; + privateSubnetIds: Array; /** - * GatewayClass selected for generated Gateways. + * IDs of public subnets (required for public ingress) */ - gatewayClassName: string; + publicSubnetIds: Array; /** - * Labels applied to route objects. + * Optional security group IDs to use */ - labels?: { [k: string]: string } | undefined; + securityGroupIds?: Array | undefined; + type: CreateManagerResponseTypeByoVpcAws2; /** - * Listener port, usually 443. + * The ID of the existing VPC */ - listenerPort: number; - provider?: - | CreateManagerResponseProviderAwsAlb10 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers10 - | CreateManagerResponseProviderGkeGateway10 - | any - | null - | undefined; - routeApi: "gateway"; + vpcId: string; }; -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9 = - ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9 - >; - -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers9 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9; - }; - -export const CreateManagerResponseProviderGkeGatewayEnum9 = { - GkeGateway: "gkeGateway", +export const CreateManagerResponseTypeCreate2 = { + Create: "create", } as const; -export type CreateManagerResponseProviderGkeGatewayEnum9 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum9 +export type CreateManagerResponseTypeCreate2 = ClosedEnum< + typeof CreateManagerResponseTypeCreate2 >; -export type CreateManagerResponseProviderGkeGateway9 = { - provider: CreateManagerResponseProviderGkeGatewayEnum9; +export type CreateManagerResponseNetworkCreate2 = { /** - * Optional static address name for the Gateway frontend. + * Number of availability zones (default: 2). */ - staticAddressName?: string | null | undefined; + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: CreateManagerResponseTypeCreate2; }; -export const CreateManagerResponseProviderAwsAlbEnum9 = { - AwsAlb: "awsAlb", +export const CreateManagerResponseTypeUseDefault2 = { + UseDefault: "use-default", } as const; -export type CreateManagerResponseProviderAwsAlbEnum9 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum9 +export type CreateManagerResponseTypeUseDefault2 = ClosedEnum< + typeof CreateManagerResponseTypeUseDefault2 >; -export type CreateManagerResponseProviderAwsAlb9 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum9; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type CreateManagerResponseProviderUnion9 = - | CreateManagerResponseProviderAwsAlb9 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers9 - | CreateManagerResponseProviderGkeGateway9 - | any; - -/** - * Shared Ingress route profile values. - */ -export type CreateManagerResponseRouteIngress5 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - provider?: - | CreateManagerResponseProviderAwsAlb9 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers9 - | CreateManagerResponseProviderGkeGateway9 - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** - * Kubernetes route API selected for public endpoints. - */ -export type CreateManagerResponseRouteUnion5 = - | CreateManagerResponseRouteIngress5 - | CreateManagerResponseRouteGateway5; - -export type CreateManagerResponseExposureGenerated3 = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | CreateManagerResponseCertificateTLSSecretRef5 - | CreateManagerResponseCertificateManagedAcmImport5 - | CreateManagerResponseCertificateAwsAcmArn5 - | CreateManagerResponseCertificateManagedTLSSecret5 - | CreateManagerResponseCertificateNone5; - mode: CreateManagerResponseModeGenerated3; - /** - * Kubernetes route API selected for public endpoints. - */ - route: - | CreateManagerResponseRouteIngress5 - | CreateManagerResponseRouteGateway5; -}; - -export const CreateManagerResponseModeDisabled3 = { - Disabled: "disabled", -} as const; -export type CreateManagerResponseModeDisabled3 = ClosedEnum< - typeof CreateManagerResponseModeDisabled3 ->; - -export type CreateManagerResponseExposureDisabled3 = { - mode: CreateManagerResponseModeDisabled3; -}; - -export type CreateManagerResponseExposureUnion3 = - | CreateManagerResponseExposureCustom3 - | CreateManagerResponseExposureGenerated3 - | CreateManagerResponseExposureDisabled3 - | any; - -/** - * Kubernetes runtime substrate configuration. - * - * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. - */ -export type CreateManagerResponseKubernetes3 = { - cluster?: CreateManagerResponseCluster3 | any | null | undefined; - exposure?: - | CreateManagerResponseExposureCustom3 - | CreateManagerResponseExposureGenerated3 - | CreateManagerResponseExposureDisabled3 - | any - | null - | undefined; -}; - -export type CreateManagerResponseKubernetesUnion3 = - | CreateManagerResponseKubernetes3 - | any; - -export const CreateManagerResponseTypeByoVnetAzure3 = { - ByoVnetAzure: "byo-vnet-azure", -} as const; -export type CreateManagerResponseTypeByoVnetAzure3 = ClosedEnum< - typeof CreateManagerResponseTypeByoVnetAzure3 ->; - -export type CreateManagerResponseNetworkByoVnetAzure3 = { - /** - * Name of the dedicated classic Application Gateway subnet within the VNet. - */ - applicationGatewaySubnetName?: string | null | undefined; - /** - * Name of the private subnet within the VNet - */ - privateSubnetName: string; - /** - * Name of the public subnet within the VNet - */ - publicSubnetName: string; - type: CreateManagerResponseTypeByoVnetAzure3; - /** - * The full resource ID of the existing VNet - */ - vnetResourceId: string; -}; - -export const CreateManagerResponseTypeByoVpcGcp3 = { - ByoVpcGcp: "byo-vpc-gcp", -} as const; -export type CreateManagerResponseTypeByoVpcGcp3 = ClosedEnum< - typeof CreateManagerResponseTypeByoVpcGcp3 ->; - -export type CreateManagerResponseNetworkByoVpcGcp3 = { - /** - * The name of the existing VPC network - */ - networkName: string; - /** - * The region of the subnet - */ - region: string; - /** - * The name of the subnet to use - */ - subnetName: string; - type: CreateManagerResponseTypeByoVpcGcp3; -}; - -export const CreateManagerResponseTypeByoVpcAws3 = { - ByoVpcAws: "byo-vpc-aws", -} as const; -export type CreateManagerResponseTypeByoVpcAws3 = ClosedEnum< - typeof CreateManagerResponseTypeByoVpcAws3 ->; - -export type CreateManagerResponseNetworkByoVpcAws3 = { - /** - * IDs of private subnets - */ - privateSubnetIds: Array; - /** - * IDs of public subnets (required for public ingress) - */ - publicSubnetIds: Array; - /** - * Optional security group IDs to use - */ - securityGroupIds?: Array | undefined; - type: CreateManagerResponseTypeByoVpcAws3; - /** - * The ID of the existing VPC - */ - vpcId: string; -}; - -export const CreateManagerResponseTypeCreate3 = { - Create: "create", -} as const; -export type CreateManagerResponseTypeCreate3 = ClosedEnum< - typeof CreateManagerResponseTypeCreate3 ->; - -export type CreateManagerResponseNetworkCreate3 = { - /** - * Number of availability zones (default: 2). - */ - availabilityZones?: number | undefined; - /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). - */ - cidr?: string | null | undefined; - type: CreateManagerResponseTypeCreate3; -}; - -export const CreateManagerResponseTypeUseDefault3 = { - UseDefault: "use-default", -} as const; -export type CreateManagerResponseTypeUseDefault3 = ClosedEnum< - typeof CreateManagerResponseTypeUseDefault3 ->; - -export type CreateManagerResponseNetworkUseDefault3 = { - type: CreateManagerResponseTypeUseDefault3; +export type CreateManagerResponseNetworkUseDefault2 = { + type: CreateManagerResponseTypeUseDefault2; }; -export type CreateManagerResponseNetworkUnion3 = - | CreateManagerResponseNetworkByoVpcAws3 - | CreateManagerResponseNetworkByoVpcGcp3 - | CreateManagerResponseNetworkByoVnetAzure3 - | CreateManagerResponseNetworkUseDefault3 - | CreateManagerResponseNetworkCreate3 +export type CreateManagerResponseNetworkUnion2 = + | CreateManagerResponseNetworkByoVpcAws2 + | CreateManagerResponseNetworkByoVpcGcp2 + | CreateManagerResponseNetworkByoVnetAzure2 + | CreateManagerResponseNetworkUseDefault2 + | CreateManagerResponseNetworkCreate2 | any; /** * How telemetry (logs, metrics, traces) is handled. */ -export const CreateManagerResponseTelemetry3 = { +export const CreateManagerResponseTelemetry2 = { Off: "off", Auto: "auto", ApprovalRequired: "approval-required", @@ -1072,22 +528,22 @@ export const CreateManagerResponseTelemetry3 = { /** * How telemetry (logs, metrics, traces) is handled. */ -export type CreateManagerResponseTelemetry3 = ClosedEnum< - typeof CreateManagerResponseTelemetry3 +export type CreateManagerResponseTelemetry2 = ClosedEnum< + typeof CreateManagerResponseTelemetry2 >; /** * How updates are delivered to the deployment. */ -export const CreateManagerResponseUpdates3 = { +export const CreateManagerResponseUpdates2 = { Auto: "auto", ApprovalRequired: "approval-required", } as const; /** * How updates are delivered to the deployment. */ -export type CreateManagerResponseUpdates3 = ClosedEnum< - typeof CreateManagerResponseUpdates3 +export type CreateManagerResponseUpdates2 = ClosedEnum< + typeof CreateManagerResponseUpdates2 >; /** @@ -1102,13 +558,13 @@ export type CreateManagerResponseUpdates3 = ClosedEnum< * **Key distinction**: StackSettings is user-customizable, while ManagementConfig * is platform-derived (from the Manager's ServiceAccount). */ -export type CreateManagerResponseStackSettings3 = { - compute?: CreateManagerResponseCompute3 | any | null | undefined; +export type CreateManagerResponseStackSettings2 = { + compute?: CreateManagerResponseComputeUnion2 | null | undefined; /** * Deployment model: how updates are delivered to the remote environment. */ - deploymentModel?: CreateManagerResponseDeploymentModel3 | undefined; - domains?: CreateManagerResponseDomains3 | any | null | undefined; + deploymentModel?: CreateManagerResponseDeploymentModel2 | undefined; + domains?: CreateManagerResponseDomainsUnion2 | null | undefined; /** * External bindings for pre-existing infrastructure. * @@ -1117,42 +573,37 @@ export type CreateManagerResponseStackSettings3 = { * Environment, etc.) instead of having Alien provision them. * Required for Kubernetes platform, optional for cloud platforms. */ - externalBindings?: CreateManagerResponseExternalBindings3 | null | undefined; + externalBindings?: CreateManagerResponseExternalBindings2 | null | undefined; /** * How heartbeat health checks are handled. */ - heartbeats?: CreateManagerResponseHeartbeats3 | undefined; - kubernetes?: CreateManagerResponseKubernetes3 | any | null | undefined; + heartbeats?: CreateManagerResponseHeartbeats2 | undefined; + kubernetes?: CreateManagerResponseKubernetes2 | any | null | undefined; network?: - | CreateManagerResponseNetworkByoVpcAws3 - | CreateManagerResponseNetworkByoVpcGcp3 - | CreateManagerResponseNetworkByoVnetAzure3 - | CreateManagerResponseNetworkUseDefault3 - | CreateManagerResponseNetworkCreate3 + | CreateManagerResponseNetworkByoVpcAws2 + | CreateManagerResponseNetworkByoVpcGcp2 + | CreateManagerResponseNetworkByoVnetAzure2 + | CreateManagerResponseNetworkUseDefault2 + | CreateManagerResponseNetworkCreate2 | any | null | undefined; /** * How telemetry (logs, metrics, traces) is handled. */ - telemetry?: CreateManagerResponseTelemetry3 | undefined; + telemetry?: CreateManagerResponseTelemetry2 | undefined; /** * How updates are delivered to the deployment. */ - updates?: CreateManagerResponseUpdates3 | undefined; + updates?: CreateManagerResponseUpdates2 | undefined; }; -export type CreateManagerResponseSetupTerraform = { - method: "terraform"; +export type CreateManagerResponseSetupGoogleOauth = { + method: "google-oauth"; deploymentPortalUrl: string; managerUrl: string; - providerSource: string; - moduleSource: string; - moduleVersion?: string | undefined; - moduleInputs: { [k: string]: string }; - mainTf: string; - tfvars: string; - commands: string; + oauthStartUrl: string; + region: string; /** * User-customizable deployment settings specified at deploy time. * @@ -1165,10 +616,10 @@ export type CreateManagerResponseSetupTerraform = { * **Key distinction**: StackSettings is user-customizable, while ManagementConfig * is platform-derived (from the Manager's ServiceAccount). */ - stackSettings: CreateManagerResponseStackSettings3; + stackSettings: CreateManagerResponseStackSettings2; }; -export type CreateManagerResponsePoolsAutoscale2 = { +export type CreateManagerResponsePoolsAutoscale1 = { /** * Provider machine type selected for this deployment. */ @@ -1184,7 +635,7 @@ export type CreateManagerResponsePoolsAutoscale2 = { mode: "autoscale"; }; -export type CreateManagerResponsePoolsFixed2 = { +export type CreateManagerResponsePoolsFixed1 = { /** * Provider machine type selected for this deployment. */ @@ -1199,9 +650,9 @@ export type CreateManagerResponsePoolsFixed2 = { /** * User-selected deployment settings for one compute pool. */ -export type CreateManagerResponsePoolsUnion2 = - | CreateManagerResponsePoolsFixed2 - | CreateManagerResponsePoolsAutoscale2; +export type CreateManagerResponsePoolsUnion1 = + | CreateManagerResponsePoolsFixed1 + | CreateManagerResponsePoolsAutoscale1; /** * Deployment-time compute choices for Alien-managed compute pools. @@ -1212,60 +663,60 @@ export type CreateManagerResponsePoolsUnion2 = * object stores the concrete choices made for one deployment, such as the * provider machine type and selected machine counts. */ -export type CreateManagerResponseCompute2 = { +export type CreateManagerResponseCompute1 = { /** * Selected compute choices keyed by pool ID. */ pools?: { [k: string]: - | CreateManagerResponsePoolsFixed2 - | CreateManagerResponsePoolsAutoscale2; + | CreateManagerResponsePoolsFixed1 + | CreateManagerResponsePoolsAutoscale1; } | undefined; }; -export type CreateManagerResponseComputeUnion2 = - | CreateManagerResponseCompute2 +export type CreateManagerResponseComputeUnion1 = + | CreateManagerResponseCompute1 | any; /** * Deployment model: how updates are delivered to the remote environment. */ -export const CreateManagerResponseDeploymentModel2 = { +export const CreateManagerResponseDeploymentModel1 = { Push: "push", Pull: "pull", } as const; /** * Deployment model: how updates are delivered to the remote environment. */ -export type CreateManagerResponseDeploymentModel2 = ClosedEnum< - typeof CreateManagerResponseDeploymentModel2 +export type CreateManagerResponseDeploymentModel1 = ClosedEnum< + typeof CreateManagerResponseDeploymentModel1 >; -export type CreateManagerResponseAws2 = { +export type CreateManagerResponseAws1 = { certificateArn: string; }; -export type CreateManagerResponseAwsUnion2 = CreateManagerResponseAws2 | any; +export type CreateManagerResponseAwsUnion1 = CreateManagerResponseAws1 | any; -export type CreateManagerResponseAzure2 = { +export type CreateManagerResponseAzure1 = { keyVaultCertificateId: string; keyVaultResourceId?: string | null | undefined; }; -export type CreateManagerResponseAzureUnion2 = - | CreateManagerResponseAzure2 +export type CreateManagerResponseAzureUnion1 = + | CreateManagerResponseAzure1 | any; -export type CreateManagerResponseGcp2 = { +export type CreateManagerResponseGcp1 = { certificateName: string; }; -export type CreateManagerResponseGcpUnion2 = CreateManagerResponseGcp2 | any; +export type CreateManagerResponseGcpUnion1 = CreateManagerResponseGcp1 | any; /** * Namespace-scoped Kubernetes TLS Secret reference. */ -export type CreateManagerResponseTlsSecretRef2 = { +export type CreateManagerResponseTlsSecretRef1 = { /** * Secret namespace. Defaults to the release namespace when omitted. */ @@ -1276,35 +727,35 @@ export type CreateManagerResponseTlsSecretRef2 = { secretName: string; }; -export type CreateManagerResponseDomainsKubernetes2 = { +export type CreateManagerResponseDomainsKubernetes1 = { /** * Namespace-scoped Kubernetes TLS Secret reference. */ - tlsSecretRef: CreateManagerResponseTlsSecretRef2; + tlsSecretRef: CreateManagerResponseTlsSecretRef1; }; -export type CreateManagerResponseDomainsKubernetesUnion2 = - | CreateManagerResponseDomainsKubernetes2 +export type CreateManagerResponseDomainsKubernetesUnion1 = + | CreateManagerResponseDomainsKubernetes1 | any; /** * Platform-specific certificate references for custom domains. */ -export type CreateManagerResponseDomainsCertificate2 = { - aws?: CreateManagerResponseAws2 | any | null | undefined; - azure?: CreateManagerResponseAzure2 | any | null | undefined; - gcp?: CreateManagerResponseGcp2 | any | null | undefined; - kubernetes?: CreateManagerResponseDomainsKubernetes2 | any | null | undefined; +export type CreateManagerResponseDomainsCertificate1 = { + aws?: CreateManagerResponseAws1 | any | null | undefined; + azure?: CreateManagerResponseAzure1 | any | null | undefined; + gcp?: CreateManagerResponseGcp1 | any | null | undefined; + kubernetes?: CreateManagerResponseDomainsKubernetes1 | any | null | undefined; }; /** * Custom domain configuration for a single resource. */ -export type CreateManagerResponseCustomDomains2 = { +export type CreateManagerResponseCustomDomains1 = { /** * Platform-specific certificate references for custom domains. */ - certificate: CreateManagerResponseDomainsCertificate2; + certificate: CreateManagerResponseDomainsCertificate1; /** * Fully qualified domain name to use. */ @@ -1319,18 +770,18 @@ export type CreateManagerResponseCustomDomains2 = { * When `custom_domains` is set, the specified resources use customer-provided * domains and certificates. Otherwise, Alien auto-generates domains. */ -export type CreateManagerResponseDomains2 = { +export type CreateManagerResponseDomains1 = { /** * Custom domain configuration per resource ID. */ customDomains?: - | { [k: string]: CreateManagerResponseCustomDomains2 } + | { [k: string]: CreateManagerResponseCustomDomains1 } | null | undefined; }; -export type CreateManagerResponseDomainsUnion2 = - | CreateManagerResponseDomains2 +export type CreateManagerResponseDomainsUnion1 = + | CreateManagerResponseDomains1 | any; /** @@ -1341,26 +792,26 @@ export type CreateManagerResponseDomainsUnion2 = * Environment, etc.) instead of having Alien provision them. * Required for Kubernetes platform, optional for cloud platforms. */ -export type CreateManagerResponseExternalBindings2 = {}; +export type CreateManagerResponseExternalBindings1 = {}; /** * How heartbeat health checks are handled. */ -export const CreateManagerResponseHeartbeats2 = { +export const CreateManagerResponseHeartbeats1 = { Off: "off", On: "on", } as const; /** * How heartbeat health checks are handled. */ -export type CreateManagerResponseHeartbeats2 = ClosedEnum< - typeof CreateManagerResponseHeartbeats2 +export type CreateManagerResponseHeartbeats1 = ClosedEnum< + typeof CreateManagerResponseHeartbeats1 >; /** * Optional provider-specific identity for a cloud-backed Kubernetes cluster. */ -export type CreateManagerResponseCloud2 = { +export type CreateManagerResponseCloud1 = { accountId?: string | null | undefined; clusterId?: string | null | undefined; clusterName?: string | null | undefined; @@ -1370,14 +821,14 @@ export type CreateManagerResponseCloud2 = { subscriptionId?: string | null | undefined; }; -export type CreateManagerResponseCloudUnion2 = - | CreateManagerResponseCloud2 +export type CreateManagerResponseCloudUnion1 = + | CreateManagerResponseCloud1 | any; /** * Ownership model for the Kubernetes cluster. */ -export const CreateManagerResponseOwnership2 = { +export const CreateManagerResponseOwnership1 = { Managed: "managed", Existing: "existing", External: "external", @@ -1385,15 +836,15 @@ export const CreateManagerResponseOwnership2 = { /** * Ownership model for the Kubernetes cluster. */ -export type CreateManagerResponseOwnership2 = ClosedEnum< - typeof CreateManagerResponseOwnership2 +export type CreateManagerResponseOwnership1 = ClosedEnum< + typeof CreateManagerResponseOwnership1 >; /** * Kubernetes cluster setup settings. */ -export type CreateManagerResponseCluster2 = { - cloud?: CreateManagerResponseCloud2 | any | null | undefined; +export type CreateManagerResponseCluster1 = { + cloud?: CreateManagerResponseCloud1 | any | null | undefined; /** * Namespace where the Alien chart and application resources run. */ @@ -1401,18 +852,18 @@ export type CreateManagerResponseCluster2 = { /** * Ownership model for the Kubernetes cluster. */ - ownership: CreateManagerResponseOwnership2; + ownership: CreateManagerResponseOwnership1; }; -export type CreateManagerResponseClusterUnion2 = - | CreateManagerResponseCluster2 +export type CreateManagerResponseClusterUnion1 = + | CreateManagerResponseCluster1 | any; -export type CreateManagerResponseCertificateNone4 = { +export type CreateManagerResponseCertificateNone2 = { mode: "none"; }; -export type CreateManagerResponseCertificateManagedTLSSecret4 = { +export type CreateManagerResponseCertificateManagedTLSSecret2 = { mode: "managedTlsSecret"; /** * Secret name template. Runtime may substitute resource/deployment tokens. @@ -1420,7 +871,7 @@ export type CreateManagerResponseCertificateManagedTLSSecret4 = { secretNameTemplate: string; }; -export type CreateManagerResponseCertificateAwsAcmArn4 = { +export type CreateManagerResponseCertificateAwsAcmArn2 = { /** * Existing ACM certificate ARN. */ @@ -1428,7 +879,7 @@ export type CreateManagerResponseCertificateAwsAcmArn4 = { mode: "awsAcmArn"; }; -export type CreateManagerResponseCertificateManagedAcmImport4 = { +export type CreateManagerResponseCertificateManagedAcmImport2 = { mode: "managedAcmImport"; /** * ACM region. Defaults to the deployment region when omitted. @@ -1443,7 +894,7 @@ export type CreateManagerResponseCertificateManagedAcmImport4 = { /** * Namespace-scoped Kubernetes TLS Secret reference. */ -export type CreateManagerResponseCertificateTLSSecretRef4 = { +export type CreateManagerResponseCertificateTLSSecretRef2 = { /** * Secret namespace. Defaults to the release namespace when omitted. */ @@ -1458,31 +909,31 @@ export type CreateManagerResponseCertificateTLSSecretRef4 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ -export type CreateManagerResponseCertificateUnion4 = - | CreateManagerResponseCertificateTLSSecretRef4 - | CreateManagerResponseCertificateManagedAcmImport4 - | CreateManagerResponseCertificateAwsAcmArn4 - | CreateManagerResponseCertificateManagedTLSSecret4 - | CreateManagerResponseCertificateNone4; - -export const CreateManagerResponseModeCustom2 = { - Custom: "custom", -} as const; -export type CreateManagerResponseModeCustom2 = ClosedEnum< - typeof CreateManagerResponseModeCustom2 ->; +export type CreateManagerResponseCertificateUnion2 = + | CreateManagerResponseCertificateTLSSecretRef2 + | CreateManagerResponseCertificateManagedAcmImport2 + | CreateManagerResponseCertificateAwsAcmArn2 + | CreateManagerResponseCertificateManagedTLSSecret2 + | CreateManagerResponseCertificateNone2; + +export const CreateManagerResponseModeCustom1 = { + Custom: "custom", +} as const; +export type CreateManagerResponseModeCustom1 = ClosedEnum< + typeof CreateManagerResponseModeCustom1 +>; -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8 = +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum4 = { AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum4 = ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8 + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum4 >; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers8 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers4 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -1497,37 +948,37 @@ export type CreateManagerResponseProviderAzureApplicationGatewayForContainers8 = */ frontend: string; provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8; + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum4; }; -export const CreateManagerResponseProviderGkeGatewayEnum8 = { +export const CreateManagerResponseProviderGkeGatewayEnum4 = { GkeGateway: "gkeGateway", } as const; -export type CreateManagerResponseProviderGkeGatewayEnum8 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum8 +export type CreateManagerResponseProviderGkeGatewayEnum4 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum4 >; -export type CreateManagerResponseProviderGkeGateway8 = { - provider: CreateManagerResponseProviderGkeGatewayEnum8; +export type CreateManagerResponseProviderGkeGateway4 = { + provider: CreateManagerResponseProviderGkeGatewayEnum4; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const CreateManagerResponseProviderAwsAlbEnum8 = { +export const CreateManagerResponseProviderAwsAlbEnum4 = { AwsAlb: "awsAlb", } as const; -export type CreateManagerResponseProviderAwsAlbEnum8 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum8 +export type CreateManagerResponseProviderAwsAlbEnum4 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum4 >; -export type CreateManagerResponseProviderAwsAlb8 = { +export type CreateManagerResponseProviderAwsAlb4 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum8; + provider: CreateManagerResponseProviderAwsAlbEnum4; /** * Internet-facing or internal ALB scheme. */ @@ -1542,16 +993,16 @@ export type CreateManagerResponseProviderAwsAlb8 = { targetType: string; }; -export type CreateManagerResponseProviderUnion8 = - | CreateManagerResponseProviderAwsAlb8 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers8 - | CreateManagerResponseProviderGkeGateway8 +export type CreateManagerResponseProviderUnion4 = + | CreateManagerResponseProviderAwsAlb4 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers4 + | CreateManagerResponseProviderGkeGateway4 | any; /** * Shared Gateway API route profile values. */ -export type CreateManagerResponseRouteGateway4 = { +export type CreateManagerResponseRouteGateway2 = { /** * Annotations applied to route objects. */ @@ -1573,26 +1024,26 @@ export type CreateManagerResponseRouteGateway4 = { */ listenerPort: number; provider?: - | CreateManagerResponseProviderAwsAlb8 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers8 - | CreateManagerResponseProviderGkeGateway8 + | CreateManagerResponseProviderAwsAlb4 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers4 + | CreateManagerResponseProviderGkeGateway4 | any | null | undefined; routeApi: "gateway"; }; -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7 = +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum3 = { AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum3 = ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7 + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum3 >; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers7 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers3 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -1607,37 +1058,37 @@ export type CreateManagerResponseProviderAzureApplicationGatewayForContainers7 = */ frontend: string; provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7; + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum3; }; -export const CreateManagerResponseProviderGkeGatewayEnum7 = { +export const CreateManagerResponseProviderGkeGatewayEnum3 = { GkeGateway: "gkeGateway", } as const; -export type CreateManagerResponseProviderGkeGatewayEnum7 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum7 +export type CreateManagerResponseProviderGkeGatewayEnum3 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum3 >; -export type CreateManagerResponseProviderGkeGateway7 = { - provider: CreateManagerResponseProviderGkeGatewayEnum7; +export type CreateManagerResponseProviderGkeGateway3 = { + provider: CreateManagerResponseProviderGkeGatewayEnum3; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const CreateManagerResponseProviderAwsAlbEnum7 = { +export const CreateManagerResponseProviderAwsAlbEnum3 = { AwsAlb: "awsAlb", } as const; -export type CreateManagerResponseProviderAwsAlbEnum7 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum7 +export type CreateManagerResponseProviderAwsAlbEnum3 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum3 >; -export type CreateManagerResponseProviderAwsAlb7 = { +export type CreateManagerResponseProviderAwsAlb3 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum7; + provider: CreateManagerResponseProviderAwsAlbEnum3; /** * Internet-facing or internal ALB scheme. */ @@ -1652,16 +1103,16 @@ export type CreateManagerResponseProviderAwsAlb7 = { targetType: string; }; -export type CreateManagerResponseProviderUnion7 = - | CreateManagerResponseProviderAwsAlb7 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers7 - | CreateManagerResponseProviderGkeGateway7 +export type CreateManagerResponseProviderUnion3 = + | CreateManagerResponseProviderAwsAlb3 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers3 + | CreateManagerResponseProviderGkeGateway3 | any; /** * Shared Ingress route profile values. */ -export type CreateManagerResponseRouteIngress4 = { +export type CreateManagerResponseRouteIngress2 = { /** * Annotations applied to route objects. */ @@ -1679,9 +1130,9 @@ export type CreateManagerResponseRouteIngress4 = { */ labels?: { [k: string]: string } | undefined; provider?: - | CreateManagerResponseProviderAwsAlb7 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers7 - | CreateManagerResponseProviderGkeGateway7 + | CreateManagerResponseProviderAwsAlb3 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers3 + | CreateManagerResponseProviderGkeGateway3 | any | null | undefined; @@ -1691,38 +1142,38 @@ export type CreateManagerResponseRouteIngress4 = { /** * Kubernetes route API selected for public endpoints. */ -export type CreateManagerResponseRouteUnion4 = - | CreateManagerResponseRouteIngress4 - | CreateManagerResponseRouteGateway4; +export type CreateManagerResponseRouteUnion2 = + | CreateManagerResponseRouteIngress2 + | CreateManagerResponseRouteGateway2; -export type CreateManagerResponseExposureCustom2 = { +export type CreateManagerResponseExposureCustom1 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ certificate: - | CreateManagerResponseCertificateTLSSecretRef4 - | CreateManagerResponseCertificateManagedAcmImport4 - | CreateManagerResponseCertificateAwsAcmArn4 - | CreateManagerResponseCertificateManagedTLSSecret4 - | CreateManagerResponseCertificateNone4; + | CreateManagerResponseCertificateTLSSecretRef2 + | CreateManagerResponseCertificateManagedAcmImport2 + | CreateManagerResponseCertificateAwsAcmArn2 + | CreateManagerResponseCertificateManagedTLSSecret2 + | CreateManagerResponseCertificateNone2; /** * Hostname routed by the Kubernetes public endpoint. */ domain: string; - mode: CreateManagerResponseModeCustom2; + mode: CreateManagerResponseModeCustom1; /** * Kubernetes route API selected for public endpoints. */ route: - | CreateManagerResponseRouteIngress4 - | CreateManagerResponseRouteGateway4; + | CreateManagerResponseRouteIngress2 + | CreateManagerResponseRouteGateway2; }; -export type CreateManagerResponseCertificateNone3 = { +export type CreateManagerResponseCertificateNone1 = { mode: "none"; }; -export type CreateManagerResponseCertificateManagedTLSSecret3 = { +export type CreateManagerResponseCertificateManagedTLSSecret1 = { mode: "managedTlsSecret"; /** * Secret name template. Runtime may substitute resource/deployment tokens. @@ -1730,7 +1181,7 @@ export type CreateManagerResponseCertificateManagedTLSSecret3 = { secretNameTemplate: string; }; -export type CreateManagerResponseCertificateAwsAcmArn3 = { +export type CreateManagerResponseCertificateAwsAcmArn1 = { /** * Existing ACM certificate ARN. */ @@ -1738,7 +1189,7 @@ export type CreateManagerResponseCertificateAwsAcmArn3 = { mode: "awsAcmArn"; }; -export type CreateManagerResponseCertificateManagedAcmImport3 = { +export type CreateManagerResponseCertificateManagedAcmImport1 = { mode: "managedAcmImport"; /** * ACM region. Defaults to the deployment region when omitted. @@ -1753,7 +1204,7 @@ export type CreateManagerResponseCertificateManagedAcmImport3 = { /** * Namespace-scoped Kubernetes TLS Secret reference. */ -export type CreateManagerResponseCertificateTLSSecretRef3 = { +export type CreateManagerResponseCertificateTLSSecretRef1 = { /** * Secret namespace. Defaults to the release namespace when omitted. */ @@ -1768,31 +1219,31 @@ export type CreateManagerResponseCertificateTLSSecretRef3 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ -export type CreateManagerResponseCertificateUnion3 = - | CreateManagerResponseCertificateTLSSecretRef3 - | CreateManagerResponseCertificateManagedAcmImport3 - | CreateManagerResponseCertificateAwsAcmArn3 - | CreateManagerResponseCertificateManagedTLSSecret3 - | CreateManagerResponseCertificateNone3; +export type CreateManagerResponseCertificateUnion1 = + | CreateManagerResponseCertificateTLSSecretRef1 + | CreateManagerResponseCertificateManagedAcmImport1 + | CreateManagerResponseCertificateAwsAcmArn1 + | CreateManagerResponseCertificateManagedTLSSecret1 + | CreateManagerResponseCertificateNone1; -export const CreateManagerResponseModeGenerated2 = { +export const CreateManagerResponseModeGenerated1 = { Generated: "generated", } as const; -export type CreateManagerResponseModeGenerated2 = ClosedEnum< - typeof CreateManagerResponseModeGenerated2 +export type CreateManagerResponseModeGenerated1 = ClosedEnum< + typeof CreateManagerResponseModeGenerated1 >; -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum6 = +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum2 = { AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum6 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum2 = ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum6 + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum2 >; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers6 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers2 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -1807,37 +1258,37 @@ export type CreateManagerResponseProviderAzureApplicationGatewayForContainers6 = */ frontend: string; provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum6; + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum2; }; -export const CreateManagerResponseProviderGkeGatewayEnum6 = { +export const CreateManagerResponseProviderGkeGatewayEnum2 = { GkeGateway: "gkeGateway", } as const; -export type CreateManagerResponseProviderGkeGatewayEnum6 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum6 +export type CreateManagerResponseProviderGkeGatewayEnum2 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum2 >; -export type CreateManagerResponseProviderGkeGateway6 = { - provider: CreateManagerResponseProviderGkeGatewayEnum6; +export type CreateManagerResponseProviderGkeGateway2 = { + provider: CreateManagerResponseProviderGkeGatewayEnum2; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const CreateManagerResponseProviderAwsAlbEnum6 = { +export const CreateManagerResponseProviderAwsAlbEnum2 = { AwsAlb: "awsAlb", } as const; -export type CreateManagerResponseProviderAwsAlbEnum6 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum6 +export type CreateManagerResponseProviderAwsAlbEnum2 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum2 >; -export type CreateManagerResponseProviderAwsAlb6 = { +export type CreateManagerResponseProviderAwsAlb2 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum6; + provider: CreateManagerResponseProviderAwsAlbEnum2; /** * Internet-facing or internal ALB scheme. */ @@ -1852,16 +1303,16 @@ export type CreateManagerResponseProviderAwsAlb6 = { targetType: string; }; -export type CreateManagerResponseProviderUnion6 = - | CreateManagerResponseProviderAwsAlb6 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers6 - | CreateManagerResponseProviderGkeGateway6 +export type CreateManagerResponseProviderUnion2 = + | CreateManagerResponseProviderAwsAlb2 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers2 + | CreateManagerResponseProviderGkeGateway2 | any; /** * Shared Gateway API route profile values. */ -export type CreateManagerResponseRouteGateway3 = { +export type CreateManagerResponseRouteGateway1 = { /** * Annotations applied to route objects. */ @@ -1883,26 +1334,26 @@ export type CreateManagerResponseRouteGateway3 = { */ listenerPort: number; provider?: - | CreateManagerResponseProviderAwsAlb6 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers6 - | CreateManagerResponseProviderGkeGateway6 + | CreateManagerResponseProviderAwsAlb2 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers2 + | CreateManagerResponseProviderGkeGateway2 | any | null | undefined; routeApi: "gateway"; }; -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum5 = +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum1 = { AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum5 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum1 = ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum5 + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum1 >; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers5 = +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers1 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -1917,37 +1368,37 @@ export type CreateManagerResponseProviderAzureApplicationGatewayForContainers5 = */ frontend: string; provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum5; + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum1; }; -export const CreateManagerResponseProviderGkeGatewayEnum5 = { +export const CreateManagerResponseProviderGkeGatewayEnum1 = { GkeGateway: "gkeGateway", } as const; -export type CreateManagerResponseProviderGkeGatewayEnum5 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum5 +export type CreateManagerResponseProviderGkeGatewayEnum1 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum1 >; -export type CreateManagerResponseProviderGkeGateway5 = { - provider: CreateManagerResponseProviderGkeGatewayEnum5; +export type CreateManagerResponseProviderGkeGateway1 = { + provider: CreateManagerResponseProviderGkeGatewayEnum1; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const CreateManagerResponseProviderAwsAlbEnum5 = { +export const CreateManagerResponseProviderAwsAlbEnum1 = { AwsAlb: "awsAlb", } as const; -export type CreateManagerResponseProviderAwsAlbEnum5 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum5 +export type CreateManagerResponseProviderAwsAlbEnum1 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum1 >; -export type CreateManagerResponseProviderAwsAlb5 = { +export type CreateManagerResponseProviderAwsAlb1 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum5; + provider: CreateManagerResponseProviderAwsAlbEnum1; /** * Internet-facing or internal ALB scheme. */ @@ -1962,16 +1413,16 @@ export type CreateManagerResponseProviderAwsAlb5 = { targetType: string; }; -export type CreateManagerResponseProviderUnion5 = - | CreateManagerResponseProviderAwsAlb5 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers5 - | CreateManagerResponseProviderGkeGateway5 +export type CreateManagerResponseProviderUnion1 = + | CreateManagerResponseProviderAwsAlb1 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers1 + | CreateManagerResponseProviderGkeGateway1 | any; /** * Shared Ingress route profile values. */ -export type CreateManagerResponseRouteIngress3 = { +export type CreateManagerResponseRouteIngress1 = { /** * Annotations applied to route objects. */ @@ -1989,9 +1440,9 @@ export type CreateManagerResponseRouteIngress3 = { */ labels?: { [k: string]: string } | undefined; provider?: - | CreateManagerResponseProviderAwsAlb5 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers5 - | CreateManagerResponseProviderGkeGateway5 + | CreateManagerResponseProviderAwsAlb1 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers1 + | CreateManagerResponseProviderGkeGateway1 | any | null | undefined; @@ -2001,44 +1452,44 @@ export type CreateManagerResponseRouteIngress3 = { /** * Kubernetes route API selected for public endpoints. */ -export type CreateManagerResponseRouteUnion3 = - | CreateManagerResponseRouteIngress3 - | CreateManagerResponseRouteGateway3; +export type CreateManagerResponseRouteUnion1 = + | CreateManagerResponseRouteIngress1 + | CreateManagerResponseRouteGateway1; -export type CreateManagerResponseExposureGenerated2 = { +export type CreateManagerResponseExposureGenerated1 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ certificate: - | CreateManagerResponseCertificateTLSSecretRef3 - | CreateManagerResponseCertificateManagedAcmImport3 - | CreateManagerResponseCertificateAwsAcmArn3 - | CreateManagerResponseCertificateManagedTLSSecret3 - | CreateManagerResponseCertificateNone3; - mode: CreateManagerResponseModeGenerated2; + | CreateManagerResponseCertificateTLSSecretRef1 + | CreateManagerResponseCertificateManagedAcmImport1 + | CreateManagerResponseCertificateAwsAcmArn1 + | CreateManagerResponseCertificateManagedTLSSecret1 + | CreateManagerResponseCertificateNone1; + mode: CreateManagerResponseModeGenerated1; /** * Kubernetes route API selected for public endpoints. */ route: - | CreateManagerResponseRouteIngress3 - | CreateManagerResponseRouteGateway3; + | CreateManagerResponseRouteIngress1 + | CreateManagerResponseRouteGateway1; }; -export const CreateManagerResponseModeDisabled2 = { +export const CreateManagerResponseModeDisabled1 = { Disabled: "disabled", } as const; -export type CreateManagerResponseModeDisabled2 = ClosedEnum< - typeof CreateManagerResponseModeDisabled2 +export type CreateManagerResponseModeDisabled1 = ClosedEnum< + typeof CreateManagerResponseModeDisabled1 >; -export type CreateManagerResponseExposureDisabled2 = { - mode: CreateManagerResponseModeDisabled2; +export type CreateManagerResponseExposureDisabled1 = { + mode: CreateManagerResponseModeDisabled1; }; -export type CreateManagerResponseExposureUnion2 = - | CreateManagerResponseExposureCustom2 - | CreateManagerResponseExposureGenerated2 - | CreateManagerResponseExposureDisabled2 +export type CreateManagerResponseExposureUnion1 = + | CreateManagerResponseExposureCustom1 + | CreateManagerResponseExposureGenerated1 + | CreateManagerResponseExposureDisabled1 | any; /** @@ -2051,29 +1502,29 @@ export type CreateManagerResponseExposureUnion2 = * managed cluster and generic/on-prem Kubernetes defaults to an external * cluster. */ -export type CreateManagerResponseKubernetes2 = { - cluster?: CreateManagerResponseCluster2 | any | null | undefined; +export type CreateManagerResponseKubernetes1 = { + cluster?: CreateManagerResponseCluster1 | any | null | undefined; exposure?: - | CreateManagerResponseExposureCustom2 - | CreateManagerResponseExposureGenerated2 - | CreateManagerResponseExposureDisabled2 + | CreateManagerResponseExposureCustom1 + | CreateManagerResponseExposureGenerated1 + | CreateManagerResponseExposureDisabled1 | any | null | undefined; }; -export type CreateManagerResponseKubernetesUnion2 = - | CreateManagerResponseKubernetes2 +export type CreateManagerResponseKubernetesUnion1 = + | CreateManagerResponseKubernetes1 | any; -export const CreateManagerResponseTypeByoVnetAzure2 = { +export const CreateManagerResponseTypeByoVnetAzure1 = { ByoVnetAzure: "byo-vnet-azure", } as const; -export type CreateManagerResponseTypeByoVnetAzure2 = ClosedEnum< - typeof CreateManagerResponseTypeByoVnetAzure2 +export type CreateManagerResponseTypeByoVnetAzure1 = ClosedEnum< + typeof CreateManagerResponseTypeByoVnetAzure1 >; -export type CreateManagerResponseNetworkByoVnetAzure2 = { +export type CreateManagerResponseNetworkByoVnetAzure1 = { /** * Name of the dedicated classic Application Gateway subnet within the VNet. */ @@ -2086,21 +1537,21 @@ export type CreateManagerResponseNetworkByoVnetAzure2 = { * Name of the public subnet within the VNet */ publicSubnetName: string; - type: CreateManagerResponseTypeByoVnetAzure2; + type: CreateManagerResponseTypeByoVnetAzure1; /** * The full resource ID of the existing VNet */ vnetResourceId: string; }; -export const CreateManagerResponseTypeByoVpcGcp2 = { +export const CreateManagerResponseTypeByoVpcGcp1 = { ByoVpcGcp: "byo-vpc-gcp", } as const; -export type CreateManagerResponseTypeByoVpcGcp2 = ClosedEnum< - typeof CreateManagerResponseTypeByoVpcGcp2 +export type CreateManagerResponseTypeByoVpcGcp1 = ClosedEnum< + typeof CreateManagerResponseTypeByoVpcGcp1 >; -export type CreateManagerResponseNetworkByoVpcGcp2 = { +export type CreateManagerResponseNetworkByoVpcGcp1 = { /** * The name of the existing VPC network */ @@ -2113,17 +1564,17 @@ export type CreateManagerResponseNetworkByoVpcGcp2 = { * The name of the subnet to use */ subnetName: string; - type: CreateManagerResponseTypeByoVpcGcp2; + type: CreateManagerResponseTypeByoVpcGcp1; }; -export const CreateManagerResponseTypeByoVpcAws2 = { +export const CreateManagerResponseTypeByoVpcAws1 = { ByoVpcAws: "byo-vpc-aws", } as const; -export type CreateManagerResponseTypeByoVpcAws2 = ClosedEnum< - typeof CreateManagerResponseTypeByoVpcAws2 +export type CreateManagerResponseTypeByoVpcAws1 = ClosedEnum< + typeof CreateManagerResponseTypeByoVpcAws1 >; -export type CreateManagerResponseNetworkByoVpcAws2 = { +export type CreateManagerResponseNetworkByoVpcAws1 = { /** * IDs of private subnets */ @@ -2136,4217 +1587,184 @@ export type CreateManagerResponseNetworkByoVpcAws2 = { * Optional security group IDs to use */ securityGroupIds?: Array | undefined; - type: CreateManagerResponseTypeByoVpcAws2; + type: CreateManagerResponseTypeByoVpcAws1; /** * The ID of the existing VPC - */ - vpcId: string; -}; - -export const CreateManagerResponseTypeCreate2 = { - Create: "create", -} as const; -export type CreateManagerResponseTypeCreate2 = ClosedEnum< - typeof CreateManagerResponseTypeCreate2 ->; - -export type CreateManagerResponseNetworkCreate2 = { - /** - * Number of availability zones (default: 2). - */ - availabilityZones?: number | undefined; - /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). - */ - cidr?: string | null | undefined; - type: CreateManagerResponseTypeCreate2; -}; - -export const CreateManagerResponseTypeUseDefault2 = { - UseDefault: "use-default", -} as const; -export type CreateManagerResponseTypeUseDefault2 = ClosedEnum< - typeof CreateManagerResponseTypeUseDefault2 ->; - -export type CreateManagerResponseNetworkUseDefault2 = { - type: CreateManagerResponseTypeUseDefault2; -}; - -export type CreateManagerResponseNetworkUnion2 = - | CreateManagerResponseNetworkByoVpcAws2 - | CreateManagerResponseNetworkByoVpcGcp2 - | CreateManagerResponseNetworkByoVnetAzure2 - | CreateManagerResponseNetworkUseDefault2 - | CreateManagerResponseNetworkCreate2 - | any; - -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export const CreateManagerResponseTelemetry2 = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export type CreateManagerResponseTelemetry2 = ClosedEnum< - typeof CreateManagerResponseTelemetry2 ->; - -/** - * How updates are delivered to the deployment. - */ -export const CreateManagerResponseUpdates2 = { - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How updates are delivered to the deployment. - */ -export type CreateManagerResponseUpdates2 = ClosedEnum< - typeof CreateManagerResponseUpdates2 ->; - -/** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ -export type CreateManagerResponseStackSettings2 = { - compute?: CreateManagerResponseCompute2 | any | null | undefined; - /** - * Deployment model: how updates are delivered to the remote environment. - */ - deploymentModel?: CreateManagerResponseDeploymentModel2 | undefined; - domains?: CreateManagerResponseDomains2 | any | null | undefined; - /** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ - externalBindings?: CreateManagerResponseExternalBindings2 | null | undefined; - /** - * How heartbeat health checks are handled. - */ - heartbeats?: CreateManagerResponseHeartbeats2 | undefined; - kubernetes?: CreateManagerResponseKubernetes2 | any | null | undefined; - network?: - | CreateManagerResponseNetworkByoVpcAws2 - | CreateManagerResponseNetworkByoVpcGcp2 - | CreateManagerResponseNetworkByoVnetAzure2 - | CreateManagerResponseNetworkUseDefault2 - | CreateManagerResponseNetworkCreate2 - | any - | null - | undefined; - /** - * How telemetry (logs, metrics, traces) is handled. - */ - telemetry?: CreateManagerResponseTelemetry2 | undefined; - /** - * How updates are delivered to the deployment. - */ - updates?: CreateManagerResponseUpdates2 | undefined; -}; - -export type CreateManagerResponseSetupGoogleOauth = { - method: "google-oauth"; - deploymentPortalUrl: string; - managerUrl: string; - oauthStartUrl: string; - region: string; - /** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ - stackSettings: CreateManagerResponseStackSettings2; -}; - -export type CreateManagerResponsePoolsAutoscale1 = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Maximum machine count. - */ - max: number; - /** - * Minimum machine count. - */ - min: number; - mode: "autoscale"; -}; - -export type CreateManagerResponsePoolsFixed1 = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Number of machines to run. - */ - machines: number; - mode: "fixed"; -}; - -/** - * User-selected deployment settings for one compute pool. - */ -export type CreateManagerResponsePoolsUnion1 = - | CreateManagerResponsePoolsFixed1 - | CreateManagerResponsePoolsAutoscale1; - -/** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. - */ -export type CreateManagerResponseCompute1 = { - /** - * Selected compute choices keyed by pool ID. - */ - pools?: { - [k: string]: - | CreateManagerResponsePoolsFixed1 - | CreateManagerResponsePoolsAutoscale1; - } | undefined; -}; - -export type CreateManagerResponseComputeUnion1 = - | CreateManagerResponseCompute1 - | any; - -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export const CreateManagerResponseDeploymentModel1 = { - Push: "push", - Pull: "pull", -} as const; -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export type CreateManagerResponseDeploymentModel1 = ClosedEnum< - typeof CreateManagerResponseDeploymentModel1 ->; - -export type CreateManagerResponseAws1 = { - certificateArn: string; -}; - -export type CreateManagerResponseAwsUnion1 = CreateManagerResponseAws1 | any; - -export type CreateManagerResponseAzure1 = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; -}; - -export type CreateManagerResponseAzureUnion1 = - | CreateManagerResponseAzure1 - | any; - -export type CreateManagerResponseGcp1 = { - certificateName: string; -}; - -export type CreateManagerResponseGcpUnion1 = CreateManagerResponseGcp1 | any; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type CreateManagerResponseTlsSecretRef1 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; -}; - -export type CreateManagerResponseDomainsKubernetes1 = { - /** - * Namespace-scoped Kubernetes TLS Secret reference. - */ - tlsSecretRef: CreateManagerResponseTlsSecretRef1; -}; - -export type CreateManagerResponseDomainsKubernetesUnion1 = - | CreateManagerResponseDomainsKubernetes1 - | any; - -/** - * Platform-specific certificate references for custom domains. - */ -export type CreateManagerResponseDomainsCertificate1 = { - aws?: CreateManagerResponseAws1 | any | null | undefined; - azure?: CreateManagerResponseAzure1 | any | null | undefined; - gcp?: CreateManagerResponseGcp1 | any | null | undefined; - kubernetes?: CreateManagerResponseDomainsKubernetes1 | any | null | undefined; -}; - -/** - * Custom domain configuration for a single resource. - */ -export type CreateManagerResponseCustomDomains1 = { - /** - * Platform-specific certificate references for custom domains. - */ - certificate: CreateManagerResponseDomainsCertificate1; - /** - * Fully qualified domain name to use. - */ - domain: string; -}; - -/** - * Domain configuration for the stack. - * - * @remarks - * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. - */ -export type CreateManagerResponseDomains1 = { - /** - * Custom domain configuration per resource ID. - */ - customDomains?: - | { [k: string]: CreateManagerResponseCustomDomains1 } - | null - | undefined; -}; - -export type CreateManagerResponseDomainsUnion1 = - | CreateManagerResponseDomains1 - | any; - -/** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ -export type CreateManagerResponseExternalBindings1 = {}; - -/** - * How heartbeat health checks are handled. - */ -export const CreateManagerResponseHeartbeats1 = { - Off: "off", - On: "on", -} as const; -/** - * How heartbeat health checks are handled. - */ -export type CreateManagerResponseHeartbeats1 = ClosedEnum< - typeof CreateManagerResponseHeartbeats1 ->; - -/** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. - */ -export type CreateManagerResponseCloud1 = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; -}; - -export type CreateManagerResponseCloudUnion1 = - | CreateManagerResponseCloud1 - | any; - -/** - * Ownership model for the Kubernetes cluster. - */ -export const CreateManagerResponseOwnership1 = { - Managed: "managed", - Existing: "existing", - External: "external", -} as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type CreateManagerResponseOwnership1 = ClosedEnum< - typeof CreateManagerResponseOwnership1 ->; - -/** - * Kubernetes cluster setup settings. - */ -export type CreateManagerResponseCluster1 = { - cloud?: CreateManagerResponseCloud1 | any | null | undefined; - /** - * Namespace where the Alien chart and application resources run. - */ - namespace?: string | null | undefined; - /** - * Ownership model for the Kubernetes cluster. - */ - ownership: CreateManagerResponseOwnership1; -}; - -export type CreateManagerResponseClusterUnion1 = - | CreateManagerResponseCluster1 - | any; - -export type CreateManagerResponseCertificateNone2 = { - mode: "none"; -}; - -export type CreateManagerResponseCertificateManagedTLSSecret2 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; -}; - -export type CreateManagerResponseCertificateAwsAcmArn2 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; -}; - -export type CreateManagerResponseCertificateManagedAcmImport2 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; - /** - * Tags applied to runtime-imported ACM certificates. - */ - tags?: { [k: string]: string } | undefined; -}; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type CreateManagerResponseCertificateTLSSecretRef2 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; - mode: "tlsSecretRef"; -}; - -/** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ -export type CreateManagerResponseCertificateUnion2 = - | CreateManagerResponseCertificateTLSSecretRef2 - | CreateManagerResponseCertificateManagedAcmImport2 - | CreateManagerResponseCertificateAwsAcmArn2 - | CreateManagerResponseCertificateManagedTLSSecret2 - | CreateManagerResponseCertificateNone2; - -export const CreateManagerResponseModeCustom1 = { - Custom: "custom", -} as const; -export type CreateManagerResponseModeCustom1 = ClosedEnum< - typeof CreateManagerResponseModeCustom1 ->; - -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum4 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum4 = - ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum4 - >; - -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers4 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum4; - }; - -export const CreateManagerResponseProviderGkeGatewayEnum4 = { - GkeGateway: "gkeGateway", -} as const; -export type CreateManagerResponseProviderGkeGatewayEnum4 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum4 ->; - -export type CreateManagerResponseProviderGkeGateway4 = { - provider: CreateManagerResponseProviderGkeGatewayEnum4; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const CreateManagerResponseProviderAwsAlbEnum4 = { - AwsAlb: "awsAlb", -} as const; -export type CreateManagerResponseProviderAwsAlbEnum4 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum4 ->; - -export type CreateManagerResponseProviderAwsAlb4 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum4; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type CreateManagerResponseProviderUnion4 = - | CreateManagerResponseProviderAwsAlb4 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers4 - | CreateManagerResponseProviderGkeGateway4 - | any; - -/** - * Shared Gateway API route profile values. - */ -export type CreateManagerResponseRouteGateway2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - /** - * Listener port, usually 443. - */ - listenerPort: number; - provider?: - | CreateManagerResponseProviderAwsAlb4 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers4 - | CreateManagerResponseProviderGkeGateway4 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum3 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum3 = - ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum3 - >; - -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers3 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum3; - }; - -export const CreateManagerResponseProviderGkeGatewayEnum3 = { - GkeGateway: "gkeGateway", -} as const; -export type CreateManagerResponseProviderGkeGatewayEnum3 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum3 ->; - -export type CreateManagerResponseProviderGkeGateway3 = { - provider: CreateManagerResponseProviderGkeGatewayEnum3; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const CreateManagerResponseProviderAwsAlbEnum3 = { - AwsAlb: "awsAlb", -} as const; -export type CreateManagerResponseProviderAwsAlbEnum3 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum3 ->; - -export type CreateManagerResponseProviderAwsAlb3 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum3; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type CreateManagerResponseProviderUnion3 = - | CreateManagerResponseProviderAwsAlb3 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers3 - | CreateManagerResponseProviderGkeGateway3 - | any; - -/** - * Shared Ingress route profile values. - */ -export type CreateManagerResponseRouteIngress2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - provider?: - | CreateManagerResponseProviderAwsAlb3 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers3 - | CreateManagerResponseProviderGkeGateway3 - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** - * Kubernetes route API selected for public endpoints. - */ -export type CreateManagerResponseRouteUnion2 = - | CreateManagerResponseRouteIngress2 - | CreateManagerResponseRouteGateway2; - -export type CreateManagerResponseExposureCustom1 = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | CreateManagerResponseCertificateTLSSecretRef2 - | CreateManagerResponseCertificateManagedAcmImport2 - | CreateManagerResponseCertificateAwsAcmArn2 - | CreateManagerResponseCertificateManagedTLSSecret2 - | CreateManagerResponseCertificateNone2; - /** - * Hostname routed by the Kubernetes public endpoint. - */ - domain: string; - mode: CreateManagerResponseModeCustom1; - /** - * Kubernetes route API selected for public endpoints. - */ - route: - | CreateManagerResponseRouteIngress2 - | CreateManagerResponseRouteGateway2; -}; - -export type CreateManagerResponseCertificateNone1 = { - mode: "none"; -}; - -export type CreateManagerResponseCertificateManagedTLSSecret1 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; -}; - -export type CreateManagerResponseCertificateAwsAcmArn1 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; -}; - -export type CreateManagerResponseCertificateManagedAcmImport1 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; - /** - * Tags applied to runtime-imported ACM certificates. - */ - tags?: { [k: string]: string } | undefined; -}; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type CreateManagerResponseCertificateTLSSecretRef1 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; - mode: "tlsSecretRef"; -}; - -/** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ -export type CreateManagerResponseCertificateUnion1 = - | CreateManagerResponseCertificateTLSSecretRef1 - | CreateManagerResponseCertificateManagedAcmImport1 - | CreateManagerResponseCertificateAwsAcmArn1 - | CreateManagerResponseCertificateManagedTLSSecret1 - | CreateManagerResponseCertificateNone1; - -export const CreateManagerResponseModeGenerated1 = { - Generated: "generated", -} as const; -export type CreateManagerResponseModeGenerated1 = ClosedEnum< - typeof CreateManagerResponseModeGenerated1 ->; - -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum2 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum2 = - ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum2 - >; - -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers2 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum2; - }; - -export const CreateManagerResponseProviderGkeGatewayEnum2 = { - GkeGateway: "gkeGateway", -} as const; -export type CreateManagerResponseProviderGkeGatewayEnum2 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum2 ->; - -export type CreateManagerResponseProviderGkeGateway2 = { - provider: CreateManagerResponseProviderGkeGatewayEnum2; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const CreateManagerResponseProviderAwsAlbEnum2 = { - AwsAlb: "awsAlb", -} as const; -export type CreateManagerResponseProviderAwsAlbEnum2 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum2 ->; - -export type CreateManagerResponseProviderAwsAlb2 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum2; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type CreateManagerResponseProviderUnion2 = - | CreateManagerResponseProviderAwsAlb2 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers2 - | CreateManagerResponseProviderGkeGateway2 - | any; - -/** - * Shared Gateway API route profile values. - */ -export type CreateManagerResponseRouteGateway1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - /** - * Listener port, usually 443. - */ - listenerPort: number; - provider?: - | CreateManagerResponseProviderAwsAlb2 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers2 - | CreateManagerResponseProviderGkeGateway2 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum1 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum1 = - ClosedEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum1 - >; - -export type CreateManagerResponseProviderAzureApplicationGatewayForContainers1 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum1; - }; - -export const CreateManagerResponseProviderGkeGatewayEnum1 = { - GkeGateway: "gkeGateway", -} as const; -export type CreateManagerResponseProviderGkeGatewayEnum1 = ClosedEnum< - typeof CreateManagerResponseProviderGkeGatewayEnum1 ->; - -export type CreateManagerResponseProviderGkeGateway1 = { - provider: CreateManagerResponseProviderGkeGatewayEnum1; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const CreateManagerResponseProviderAwsAlbEnum1 = { - AwsAlb: "awsAlb", -} as const; -export type CreateManagerResponseProviderAwsAlbEnum1 = ClosedEnum< - typeof CreateManagerResponseProviderAwsAlbEnum1 ->; - -export type CreateManagerResponseProviderAwsAlb1 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: CreateManagerResponseProviderAwsAlbEnum1; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type CreateManagerResponseProviderUnion1 = - | CreateManagerResponseProviderAwsAlb1 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers1 - | CreateManagerResponseProviderGkeGateway1 - | any; - -/** - * Shared Ingress route profile values. - */ -export type CreateManagerResponseRouteIngress1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - provider?: - | CreateManagerResponseProviderAwsAlb1 - | CreateManagerResponseProviderAzureApplicationGatewayForContainers1 - | CreateManagerResponseProviderGkeGateway1 - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** - * Kubernetes route API selected for public endpoints. - */ -export type CreateManagerResponseRouteUnion1 = - | CreateManagerResponseRouteIngress1 - | CreateManagerResponseRouteGateway1; - -export type CreateManagerResponseExposureGenerated1 = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | CreateManagerResponseCertificateTLSSecretRef1 - | CreateManagerResponseCertificateManagedAcmImport1 - | CreateManagerResponseCertificateAwsAcmArn1 - | CreateManagerResponseCertificateManagedTLSSecret1 - | CreateManagerResponseCertificateNone1; - mode: CreateManagerResponseModeGenerated1; - /** - * Kubernetes route API selected for public endpoints. - */ - route: - | CreateManagerResponseRouteIngress1 - | CreateManagerResponseRouteGateway1; -}; - -export const CreateManagerResponseModeDisabled1 = { - Disabled: "disabled", -} as const; -export type CreateManagerResponseModeDisabled1 = ClosedEnum< - typeof CreateManagerResponseModeDisabled1 ->; - -export type CreateManagerResponseExposureDisabled1 = { - mode: CreateManagerResponseModeDisabled1; -}; - -export type CreateManagerResponseExposureUnion1 = - | CreateManagerResponseExposureCustom1 - | CreateManagerResponseExposureGenerated1 - | CreateManagerResponseExposureDisabled1 - | any; - -/** - * Kubernetes runtime substrate configuration. - * - * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. - */ -export type CreateManagerResponseKubernetes1 = { - cluster?: CreateManagerResponseCluster1 | any | null | undefined; - exposure?: - | CreateManagerResponseExposureCustom1 - | CreateManagerResponseExposureGenerated1 - | CreateManagerResponseExposureDisabled1 - | any - | null - | undefined; -}; - -export type CreateManagerResponseKubernetesUnion1 = - | CreateManagerResponseKubernetes1 - | any; - -export const CreateManagerResponseTypeByoVnetAzure1 = { - ByoVnetAzure: "byo-vnet-azure", -} as const; -export type CreateManagerResponseTypeByoVnetAzure1 = ClosedEnum< - typeof CreateManagerResponseTypeByoVnetAzure1 ->; - -export type CreateManagerResponseNetworkByoVnetAzure1 = { - /** - * Name of the dedicated classic Application Gateway subnet within the VNet. - */ - applicationGatewaySubnetName?: string | null | undefined; - /** - * Name of the private subnet within the VNet - */ - privateSubnetName: string; - /** - * Name of the public subnet within the VNet - */ - publicSubnetName: string; - type: CreateManagerResponseTypeByoVnetAzure1; - /** - * The full resource ID of the existing VNet - */ - vnetResourceId: string; -}; - -export const CreateManagerResponseTypeByoVpcGcp1 = { - ByoVpcGcp: "byo-vpc-gcp", -} as const; -export type CreateManagerResponseTypeByoVpcGcp1 = ClosedEnum< - typeof CreateManagerResponseTypeByoVpcGcp1 ->; - -export type CreateManagerResponseNetworkByoVpcGcp1 = { - /** - * The name of the existing VPC network - */ - networkName: string; - /** - * The region of the subnet - */ - region: string; - /** - * The name of the subnet to use - */ - subnetName: string; - type: CreateManagerResponseTypeByoVpcGcp1; -}; - -export const CreateManagerResponseTypeByoVpcAws1 = { - ByoVpcAws: "byo-vpc-aws", -} as const; -export type CreateManagerResponseTypeByoVpcAws1 = ClosedEnum< - typeof CreateManagerResponseTypeByoVpcAws1 ->; - -export type CreateManagerResponseNetworkByoVpcAws1 = { - /** - * IDs of private subnets - */ - privateSubnetIds: Array; - /** - * IDs of public subnets (required for public ingress) - */ - publicSubnetIds: Array; - /** - * Optional security group IDs to use - */ - securityGroupIds?: Array | undefined; - type: CreateManagerResponseTypeByoVpcAws1; - /** - * The ID of the existing VPC - */ - vpcId: string; -}; - -export const CreateManagerResponseTypeCreate1 = { - Create: "create", -} as const; -export type CreateManagerResponseTypeCreate1 = ClosedEnum< - typeof CreateManagerResponseTypeCreate1 ->; - -export type CreateManagerResponseNetworkCreate1 = { - /** - * Number of availability zones (default: 2). - */ - availabilityZones?: number | undefined; - /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). - */ - cidr?: string | null | undefined; - type: CreateManagerResponseTypeCreate1; -}; - -export const CreateManagerResponseTypeUseDefault1 = { - UseDefault: "use-default", -} as const; -export type CreateManagerResponseTypeUseDefault1 = ClosedEnum< - typeof CreateManagerResponseTypeUseDefault1 ->; - -export type CreateManagerResponseNetworkUseDefault1 = { - type: CreateManagerResponseTypeUseDefault1; -}; - -export type CreateManagerResponseNetworkUnion1 = - | CreateManagerResponseNetworkByoVpcAws1 - | CreateManagerResponseNetworkByoVpcGcp1 - | CreateManagerResponseNetworkByoVnetAzure1 - | CreateManagerResponseNetworkUseDefault1 - | CreateManagerResponseNetworkCreate1 - | any; - -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export const CreateManagerResponseTelemetry1 = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export type CreateManagerResponseTelemetry1 = ClosedEnum< - typeof CreateManagerResponseTelemetry1 ->; - -/** - * How updates are delivered to the deployment. - */ -export const CreateManagerResponseUpdates1 = { - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How updates are delivered to the deployment. - */ -export type CreateManagerResponseUpdates1 = ClosedEnum< - typeof CreateManagerResponseUpdates1 ->; - -/** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ -export type CreateManagerResponseStackSettings1 = { - compute?: CreateManagerResponseCompute1 | any | null | undefined; - /** - * Deployment model: how updates are delivered to the remote environment. - */ - deploymentModel?: CreateManagerResponseDeploymentModel1 | undefined; - domains?: CreateManagerResponseDomains1 | any | null | undefined; - /** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ - externalBindings?: CreateManagerResponseExternalBindings1 | null | undefined; - /** - * How heartbeat health checks are handled. - */ - heartbeats?: CreateManagerResponseHeartbeats1 | undefined; - kubernetes?: CreateManagerResponseKubernetes1 | any | null | undefined; - network?: - | CreateManagerResponseNetworkByoVpcAws1 - | CreateManagerResponseNetworkByoVpcGcp1 - | CreateManagerResponseNetworkByoVnetAzure1 - | CreateManagerResponseNetworkUseDefault1 - | CreateManagerResponseNetworkCreate1 - | any - | null - | undefined; - /** - * How telemetry (logs, metrics, traces) is handled. - */ - telemetry?: CreateManagerResponseTelemetry1 | undefined; - /** - * How updates are delivered to the deployment. - */ - updates?: CreateManagerResponseUpdates1 | undefined; -}; - -export type CreateManagerResponseSetupCloudformation = { - method: "cloudformation"; - deploymentPortalUrl: string; - launchUrl: string; - templateUrl: string; - stackName: string; - region: string; - /** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ - stackSettings: CreateManagerResponseStackSettings1; -}; - -export type CreateManagerResponseSetupUnion = - | CreateManagerResponseSetupCloudformation - | CreateManagerResponseSetupGoogleOauth - | CreateManagerResponseSetupTerraform; - -export type CreateManagerResponse = { - managerId: string; - setupStatus: CreateManagerResponseSetupStatus; - setupToken: string; - setupTokenId: string; - deploymentLink: string; - setupConfig: CreateManagerResponseSetupConfig; - setup: - | CreateManagerResponseSetupCloudformation - | CreateManagerResponseSetupGoogleOauth - | CreateManagerResponseSetupTerraform; -}; - -/** @internal */ -export const CreateManagerResponseSetupStatus$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseSetupStatus -> = z.enum(CreateManagerResponseSetupStatus); - -/** @internal */ -export const CreateManagerResponseEnvironmentVariableType$inboundSchema: - z.ZodEnum = z.enum( - CreateManagerResponseEnvironmentVariableType, - ); - -/** @internal */ -export const CreateManagerResponseEnvironmentVariable$inboundSchema: z.ZodType< - CreateManagerResponseEnvironmentVariable, - unknown -> = z.object({ - name: z.string(), - type: CreateManagerResponseEnvironmentVariableType$inboundSchema, - targetResources: z.nullable(z.array(z.string())), -}); - -export function createManagerResponseEnvironmentVariableFromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseEnvironmentVariable, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseEnvironmentVariable$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseEnvironmentVariable' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseSetupConfig$inboundSchema: z.ZodType< - CreateManagerResponseSetupConfig, - unknown -> = z.object({ - metadata: z.record(z.string(), z.nullable(z.any())), - policy: DeploymentSetupPolicy$inboundSchema, - inputValues: z.record(z.string(), EncryptedStackInputValue$inboundSchema) - .optional(), - environmentVariables: z.array( - z.lazy(() => CreateManagerResponseEnvironmentVariable$inboundSchema), - ), -}); - -export function createManagerResponseSetupConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseSetupConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseSetupConfig' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponsePoolsAutoscale3$inboundSchema: z.ZodType< - CreateManagerResponsePoolsAutoscale3, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); - -export function createManagerResponsePoolsAutoscale3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponsePoolsAutoscale3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponsePoolsAutoscale3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponsePoolsFixed3$inboundSchema: z.ZodType< - CreateManagerResponsePoolsFixed3, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); - -export function createManagerResponsePoolsFixed3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponsePoolsFixed3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponsePoolsFixed3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponsePoolsUnion3$inboundSchema: z.ZodType< - CreateManagerResponsePoolsUnion3, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponsePoolsFixed3$inboundSchema), - z.lazy(() => CreateManagerResponsePoolsAutoscale3$inboundSchema), -]); - -export function createManagerResponsePoolsUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponsePoolsUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponsePoolsUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCompute3$inboundSchema: z.ZodType< - CreateManagerResponseCompute3, - unknown -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => CreateManagerResponsePoolsFixed3$inboundSchema), - z.lazy(() => CreateManagerResponsePoolsAutoscale3$inboundSchema), - ]), - ).optional(), -}); - -export function createManagerResponseCompute3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseCompute3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCompute3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseComputeUnion3$inboundSchema: z.ZodType< - CreateManagerResponseComputeUnion3, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseCompute3$inboundSchema), - z.any(), -]); - -export function createManagerResponseComputeUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseComputeUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseComputeUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDeploymentModel3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseDeploymentModel3 -> = z.enum(CreateManagerResponseDeploymentModel3); - -/** @internal */ -export const CreateManagerResponseAws3$inboundSchema: z.ZodType< - CreateManagerResponseAws3, - unknown -> = z.object({ - certificateArn: z.string(), -}); - -export function createManagerResponseAws3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseAws3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseAws3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseAwsUnion3$inboundSchema: z.ZodType< - CreateManagerResponseAwsUnion3, - unknown -> = z.union([z.lazy(() => CreateManagerResponseAws3$inboundSchema), z.any()]); - -export function createManagerResponseAwsUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseAwsUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseAwsUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseAzure3$inboundSchema: z.ZodType< - CreateManagerResponseAzure3, - unknown -> = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), -}); - -export function createManagerResponseAzure3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseAzure3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseAzure3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseAzureUnion3$inboundSchema: z.ZodType< - CreateManagerResponseAzureUnion3, - unknown -> = z.union([z.lazy(() => CreateManagerResponseAzure3$inboundSchema), z.any()]); - -export function createManagerResponseAzureUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseAzureUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseAzureUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseGcp3$inboundSchema: z.ZodType< - CreateManagerResponseGcp3, - unknown -> = z.object({ - certificateName: z.string(), -}); - -export function createManagerResponseGcp3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseGcp3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseGcp3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseGcpUnion3$inboundSchema: z.ZodType< - CreateManagerResponseGcpUnion3, - unknown -> = z.union([z.lazy(() => CreateManagerResponseGcp3$inboundSchema), z.any()]); - -export function createManagerResponseGcpUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseGcpUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseGcpUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseTlsSecretRef3$inboundSchema: z.ZodType< - CreateManagerResponseTlsSecretRef3, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), -}); - -export function createManagerResponseTlsSecretRef3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseTlsSecretRef3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseTlsSecretRef3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDomainsKubernetes3$inboundSchema: z.ZodType< - CreateManagerResponseDomainsKubernetes3, - unknown -> = z.object({ - tlsSecretRef: z.lazy(() => CreateManagerResponseTlsSecretRef3$inboundSchema), -}); - -export function createManagerResponseDomainsKubernetes3FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseDomainsKubernetes3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseDomainsKubernetes3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseDomainsKubernetes3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDomainsKubernetesUnion3$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => CreateManagerResponseDomainsKubernetes3$inboundSchema), - z.any(), - ]); - -export function createManagerResponseDomainsKubernetesUnion3FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseDomainsKubernetesUnion3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseDomainsKubernetesUnion3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseDomainsKubernetesUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDomainsCertificate3$inboundSchema: z.ZodType< - CreateManagerResponseDomainsCertificate3, - unknown -> = z.object({ - aws: z.nullable( - z.union([z.lazy(() => CreateManagerResponseAws3$inboundSchema), z.any()]), - ).optional(), - azure: z.nullable( - z.union([z.lazy(() => CreateManagerResponseAzure3$inboundSchema), z.any()]), - ).optional(), - gcp: z.nullable( - z.union([z.lazy(() => CreateManagerResponseGcp3$inboundSchema), z.any()]), - ).optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseDomainsKubernetes3$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function createManagerResponseDomainsCertificate3FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseDomainsCertificate3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseDomainsCertificate3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseDomainsCertificate3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCustomDomains3$inboundSchema: z.ZodType< - CreateManagerResponseCustomDomains3, - unknown -> = z.object({ - certificate: z.lazy(() => - CreateManagerResponseDomainsCertificate3$inboundSchema - ), - domain: z.string(), -}); - -export function createManagerResponseCustomDomains3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCustomDomains3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCustomDomains3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDomains3$inboundSchema: z.ZodType< - CreateManagerResponseDomains3, - unknown -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => CreateManagerResponseCustomDomains3$inboundSchema), - ), - ).optional(), -}); - -export function createManagerResponseDomains3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseDomains3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseDomains3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDomainsUnion3$inboundSchema: z.ZodType< - CreateManagerResponseDomainsUnion3, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseDomains3$inboundSchema), - z.any(), -]); - -export function createManagerResponseDomainsUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseDomainsUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseDomainsUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseExternalBindings3$inboundSchema: z.ZodType< - CreateManagerResponseExternalBindings3, - unknown -> = z.object({}); - -export function createManagerResponseExternalBindings3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseExternalBindings3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseExternalBindings3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseHeartbeats3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseHeartbeats3 -> = z.enum(CreateManagerResponseHeartbeats3); - -/** @internal */ -export const CreateManagerResponseCloud3$inboundSchema: z.ZodType< - CreateManagerResponseCloud3, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); - -export function createManagerResponseCloud3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseCloud3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCloud3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCloudUnion3$inboundSchema: z.ZodType< - CreateManagerResponseCloudUnion3, - unknown -> = z.union([z.lazy(() => CreateManagerResponseCloud3$inboundSchema), z.any()]); - -export function createManagerResponseCloudUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseCloudUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCloudUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseOwnership3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseOwnership3 -> = z.enum(CreateManagerResponseOwnership3); - -/** @internal */ -export const CreateManagerResponseCluster3$inboundSchema: z.ZodType< - CreateManagerResponseCluster3, - unknown -> = z.object({ - cloud: z.nullable( - z.union([z.lazy(() => CreateManagerResponseCloud3$inboundSchema), z.any()]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: CreateManagerResponseOwnership3$inboundSchema, -}); - -export function createManagerResponseCluster3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseCluster3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCluster3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseClusterUnion3$inboundSchema: z.ZodType< - CreateManagerResponseClusterUnion3, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseCluster3$inboundSchema), - z.any(), -]); - -export function createManagerResponseClusterUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseClusterUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseClusterUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateNone6$inboundSchema: z.ZodType< - CreateManagerResponseCertificateNone6, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function createManagerResponseCertificateNone6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateNone6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCertificateNone6' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateManagedTLSSecret6$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function createManagerResponseCertificateManagedTLSSecret6FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateManagedTLSSecret6, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateManagedTLSSecret6$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateManagedTLSSecret6' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateAwsAcmArn6$inboundSchema: - z.ZodType = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), - }); - -export function createManagerResponseCertificateAwsAcmArn6FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateAwsAcmArn6, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateAwsAcmArn6$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateAwsAcmArn6' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateManagedAcmImport6$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function createManagerResponseCertificateManagedAcmImport6FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateManagedAcmImport6, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateManagedAcmImport6$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateManagedAcmImport6' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateTLSSecretRef6$inboundSchema: - z.ZodType = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function createManagerResponseCertificateTLSSecretRef6FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateTLSSecretRef6, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateTLSSecretRef6$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateTLSSecretRef6' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateUnion6$inboundSchema: z.ZodType< - CreateManagerResponseCertificateUnion6, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseCertificateTLSSecretRef6$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateManagedAcmImport6$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateAwsAcmArn6$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateManagedTLSSecret6$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateNone6$inboundSchema), -]); - -export function createManagerResponseCertificateUnion6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateUnion6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCertificateUnion6' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseModeCustom3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseModeCustom3 -> = z.enum(CreateManagerResponseModeCustom3); - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12$inboundSchema: - z.ZodEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12 - > = z.enum( - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12, - ); - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainers12$inboundSchema: - z.ZodType< - CreateManagerResponseProviderAzureApplicationGatewayForContainers12, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12$inboundSchema, - }); - -export function createManagerResponseProviderAzureApplicationGatewayForContainers12FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderAzureApplicationGatewayForContainers12, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAzureApplicationGatewayForContainers12$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers12' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderGkeGatewayEnum12$inboundSchema: - z.ZodEnum = z.enum( - CreateManagerResponseProviderGkeGatewayEnum12, - ); - -/** @internal */ -export const CreateManagerResponseProviderGkeGateway12$inboundSchema: z.ZodType< - CreateManagerResponseProviderGkeGateway12, - unknown -> = z.object({ - provider: CreateManagerResponseProviderGkeGatewayEnum12$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function createManagerResponseProviderGkeGateway12FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderGkeGateway12, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderGkeGateway12$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseProviderGkeGateway12' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderAwsAlbEnum12$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseProviderAwsAlbEnum12 -> = z.enum(CreateManagerResponseProviderAwsAlbEnum12); - -/** @internal */ -export const CreateManagerResponseProviderAwsAlb12$inboundSchema: z.ZodType< - CreateManagerResponseProviderAwsAlb12, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: CreateManagerResponseProviderAwsAlbEnum12$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function createManagerResponseProviderAwsAlb12FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAwsAlb12$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAwsAlb12' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderUnion12$inboundSchema: z.ZodType< - CreateManagerResponseProviderUnion12, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb12$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers12$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway12$inboundSchema), - z.any(), -]); - -export function createManagerResponseProviderUnion12FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderUnion12$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderUnion12' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseRouteGateway6$inboundSchema: z.ZodType< - CreateManagerResponseRouteGateway6, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb12$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers12$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway12$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function createManagerResponseRouteGateway6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseRouteGateway6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseRouteGateway6' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11$inboundSchema: - z.ZodEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11 - > = z.enum( - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11, - ); - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainers11$inboundSchema: - z.ZodType< - CreateManagerResponseProviderAzureApplicationGatewayForContainers11, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11$inboundSchema, - }); - -export function createManagerResponseProviderAzureApplicationGatewayForContainers11FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderAzureApplicationGatewayForContainers11, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAzureApplicationGatewayForContainers11$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers11' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderGkeGatewayEnum11$inboundSchema: - z.ZodEnum = z.enum( - CreateManagerResponseProviderGkeGatewayEnum11, - ); - -/** @internal */ -export const CreateManagerResponseProviderGkeGateway11$inboundSchema: z.ZodType< - CreateManagerResponseProviderGkeGateway11, - unknown -> = z.object({ - provider: CreateManagerResponseProviderGkeGatewayEnum11$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function createManagerResponseProviderGkeGateway11FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderGkeGateway11, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderGkeGateway11$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseProviderGkeGateway11' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderAwsAlbEnum11$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseProviderAwsAlbEnum11 -> = z.enum(CreateManagerResponseProviderAwsAlbEnum11); - -/** @internal */ -export const CreateManagerResponseProviderAwsAlb11$inboundSchema: z.ZodType< - CreateManagerResponseProviderAwsAlb11, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: CreateManagerResponseProviderAwsAlbEnum11$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function createManagerResponseProviderAwsAlb11FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAwsAlb11$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAwsAlb11' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderUnion11$inboundSchema: z.ZodType< - CreateManagerResponseProviderUnion11, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb11$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers11$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway11$inboundSchema), - z.any(), -]); - -export function createManagerResponseProviderUnion11FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderUnion11$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderUnion11' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseRouteIngress6$inboundSchema: z.ZodType< - CreateManagerResponseRouteIngress6, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb11$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers11$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway11$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function createManagerResponseRouteIngress6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseRouteIngress6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseRouteIngress6' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseRouteUnion6$inboundSchema: z.ZodType< - CreateManagerResponseRouteUnion6, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseRouteIngress6$inboundSchema), - z.lazy(() => CreateManagerResponseRouteGateway6$inboundSchema), -]); - -export function createManagerResponseRouteUnion6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseRouteUnion6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseRouteUnion6' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseExposureCustom3$inboundSchema: z.ZodType< - CreateManagerResponseExposureCustom3, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => CreateManagerResponseCertificateTLSSecretRef6$inboundSchema), - z.lazy(() => - CreateManagerResponseCertificateManagedAcmImport6$inboundSchema - ), - z.lazy(() => CreateManagerResponseCertificateAwsAcmArn6$inboundSchema), - z.lazy(() => - CreateManagerResponseCertificateManagedTLSSecret6$inboundSchema - ), - z.lazy(() => CreateManagerResponseCertificateNone6$inboundSchema), - ]), - domain: z.string(), - mode: CreateManagerResponseModeCustom3$inboundSchema, - route: z.union([ - z.lazy(() => CreateManagerResponseRouteIngress6$inboundSchema), - z.lazy(() => CreateManagerResponseRouteGateway6$inboundSchema), - ]), -}); - -export function createManagerResponseExposureCustom3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseExposureCustom3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseExposureCustom3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateNone5$inboundSchema: z.ZodType< - CreateManagerResponseCertificateNone5, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function createManagerResponseCertificateNone5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateNone5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCertificateNone5' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateManagedTLSSecret5$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function createManagerResponseCertificateManagedTLSSecret5FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateManagedTLSSecret5, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateManagedTLSSecret5$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateManagedTLSSecret5' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateAwsAcmArn5$inboundSchema: - z.ZodType = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), - }); - -export function createManagerResponseCertificateAwsAcmArn5FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateAwsAcmArn5, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateAwsAcmArn5$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateAwsAcmArn5' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateManagedAcmImport5$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function createManagerResponseCertificateManagedAcmImport5FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateManagedAcmImport5, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateManagedAcmImport5$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateManagedAcmImport5' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateTLSSecretRef5$inboundSchema: - z.ZodType = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function createManagerResponseCertificateTLSSecretRef5FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateTLSSecretRef5, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateTLSSecretRef5$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateTLSSecretRef5' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateUnion5$inboundSchema: z.ZodType< - CreateManagerResponseCertificateUnion5, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseCertificateTLSSecretRef5$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateManagedAcmImport5$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateAwsAcmArn5$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateManagedTLSSecret5$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateNone5$inboundSchema), -]); - -export function createManagerResponseCertificateUnion5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateUnion5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCertificateUnion5' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseModeGenerated3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseModeGenerated3 -> = z.enum(CreateManagerResponseModeGenerated3); - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10$inboundSchema: - z.ZodEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10 - > = z.enum( - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10, - ); - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainers10$inboundSchema: - z.ZodType< - CreateManagerResponseProviderAzureApplicationGatewayForContainers10, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10$inboundSchema, - }); - -export function createManagerResponseProviderAzureApplicationGatewayForContainers10FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderAzureApplicationGatewayForContainers10, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAzureApplicationGatewayForContainers10$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers10' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderGkeGatewayEnum10$inboundSchema: - z.ZodEnum = z.enum( - CreateManagerResponseProviderGkeGatewayEnum10, - ); - -/** @internal */ -export const CreateManagerResponseProviderGkeGateway10$inboundSchema: z.ZodType< - CreateManagerResponseProviderGkeGateway10, - unknown -> = z.object({ - provider: CreateManagerResponseProviderGkeGatewayEnum10$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function createManagerResponseProviderGkeGateway10FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderGkeGateway10, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderGkeGateway10$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseProviderGkeGateway10' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderAwsAlbEnum10$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseProviderAwsAlbEnum10 -> = z.enum(CreateManagerResponseProviderAwsAlbEnum10); - -/** @internal */ -export const CreateManagerResponseProviderAwsAlb10$inboundSchema: z.ZodType< - CreateManagerResponseProviderAwsAlb10, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: CreateManagerResponseProviderAwsAlbEnum10$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function createManagerResponseProviderAwsAlb10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAwsAlb10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAwsAlb10' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderUnion10$inboundSchema: z.ZodType< - CreateManagerResponseProviderUnion10, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb10$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers10$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway10$inboundSchema), - z.any(), -]); - -export function createManagerResponseProviderUnion10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderUnion10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderUnion10' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseRouteGateway5$inboundSchema: z.ZodType< - CreateManagerResponseRouteGateway5, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb10$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers10$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway10$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function createManagerResponseRouteGateway5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseRouteGateway5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseRouteGateway5' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9$inboundSchema: - z.ZodEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9 - > = z.enum( - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9, - ); - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainers9$inboundSchema: - z.ZodType< - CreateManagerResponseProviderAzureApplicationGatewayForContainers9, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9$inboundSchema, - }); - -export function createManagerResponseProviderAzureApplicationGatewayForContainers9FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderAzureApplicationGatewayForContainers9, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAzureApplicationGatewayForContainers9$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers9' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderGkeGatewayEnum9$inboundSchema: - z.ZodEnum = z.enum( - CreateManagerResponseProviderGkeGatewayEnum9, - ); - -/** @internal */ -export const CreateManagerResponseProviderGkeGateway9$inboundSchema: z.ZodType< - CreateManagerResponseProviderGkeGateway9, - unknown -> = z.object({ - provider: CreateManagerResponseProviderGkeGatewayEnum9$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function createManagerResponseProviderGkeGateway9FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderGkeGateway9, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderGkeGateway9$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseProviderGkeGateway9' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderAwsAlbEnum9$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseProviderAwsAlbEnum9 -> = z.enum(CreateManagerResponseProviderAwsAlbEnum9); - -/** @internal */ -export const CreateManagerResponseProviderAwsAlb9$inboundSchema: z.ZodType< - CreateManagerResponseProviderAwsAlb9, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: CreateManagerResponseProviderAwsAlbEnum9$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function createManagerResponseProviderAwsAlb9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAwsAlb9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAwsAlb9' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderUnion9$inboundSchema: z.ZodType< - CreateManagerResponseProviderUnion9, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb9$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers9$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway9$inboundSchema), - z.any(), -]); - -export function createManagerResponseProviderUnion9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderUnion9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderUnion9' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseRouteIngress5$inboundSchema: z.ZodType< - CreateManagerResponseRouteIngress5, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb9$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers9$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway9$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function createManagerResponseRouteIngress5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseRouteIngress5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseRouteIngress5' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseRouteUnion5$inboundSchema: z.ZodType< - CreateManagerResponseRouteUnion5, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseRouteIngress5$inboundSchema), - z.lazy(() => CreateManagerResponseRouteGateway5$inboundSchema), -]); - -export function createManagerResponseRouteUnion5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseRouteUnion5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseRouteUnion5' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseExposureGenerated3$inboundSchema: z.ZodType< - CreateManagerResponseExposureGenerated3, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => CreateManagerResponseCertificateTLSSecretRef5$inboundSchema), - z.lazy(() => - CreateManagerResponseCertificateManagedAcmImport5$inboundSchema - ), - z.lazy(() => CreateManagerResponseCertificateAwsAcmArn5$inboundSchema), - z.lazy(() => - CreateManagerResponseCertificateManagedTLSSecret5$inboundSchema - ), - z.lazy(() => CreateManagerResponseCertificateNone5$inboundSchema), - ]), - mode: CreateManagerResponseModeGenerated3$inboundSchema, - route: z.union([ - z.lazy(() => CreateManagerResponseRouteIngress5$inboundSchema), - z.lazy(() => CreateManagerResponseRouteGateway5$inboundSchema), - ]), -}); - -export function createManagerResponseExposureGenerated3FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseExposureGenerated3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseExposureGenerated3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseExposureGenerated3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseModeDisabled3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseModeDisabled3 -> = z.enum(CreateManagerResponseModeDisabled3); - -/** @internal */ -export const CreateManagerResponseExposureDisabled3$inboundSchema: z.ZodType< - CreateManagerResponseExposureDisabled3, - unknown -> = z.object({ - mode: CreateManagerResponseModeDisabled3$inboundSchema, -}); - -export function createManagerResponseExposureDisabled3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseExposureDisabled3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseExposureDisabled3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseExposureUnion3$inboundSchema: z.ZodType< - CreateManagerResponseExposureUnion3, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseExposureCustom3$inboundSchema), - z.lazy(() => CreateManagerResponseExposureGenerated3$inboundSchema), - z.lazy(() => CreateManagerResponseExposureDisabled3$inboundSchema), - z.any(), -]); - -export function createManagerResponseExposureUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseExposureUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseExposureUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseKubernetes3$inboundSchema: z.ZodType< - CreateManagerResponseKubernetes3, - unknown -> = z.object({ - cluster: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseCluster3$inboundSchema), - z.any(), - ]), - ).optional(), - exposure: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseExposureCustom3$inboundSchema), - z.lazy(() => CreateManagerResponseExposureGenerated3$inboundSchema), - z.lazy(() => CreateManagerResponseExposureDisabled3$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function createManagerResponseKubernetes3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseKubernetes3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseKubernetes3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseKubernetesUnion3$inboundSchema: z.ZodType< - CreateManagerResponseKubernetesUnion3, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseKubernetes3$inboundSchema), - z.any(), -]); - -export function createManagerResponseKubernetesUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseKubernetesUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseKubernetesUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseTypeByoVnetAzure3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseTypeByoVnetAzure3 -> = z.enum(CreateManagerResponseTypeByoVnetAzure3); - -/** @internal */ -export const CreateManagerResponseNetworkByoVnetAzure3$inboundSchema: z.ZodType< - CreateManagerResponseNetworkByoVnetAzure3, - unknown -> = z.object({ - application_gateway_subnet_name: z.nullable(z.string()).optional(), - private_subnet_name: z.string(), - public_subnet_name: z.string(), - type: CreateManagerResponseTypeByoVnetAzure3$inboundSchema, - vnet_resource_id: z.string(), -}).transform((v) => { - return remap$(v, { - "application_gateway_subnet_name": "applicationGatewaySubnetName", - "private_subnet_name": "privateSubnetName", - "public_subnet_name": "publicSubnetName", - "vnet_resource_id": "vnetResourceId", - }); -}); - -export function createManagerResponseNetworkByoVnetAzure3FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseNetworkByoVnetAzure3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseNetworkByoVnetAzure3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseNetworkByoVnetAzure3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseTypeByoVpcGcp3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseTypeByoVpcGcp3 -> = z.enum(CreateManagerResponseTypeByoVpcGcp3); - -/** @internal */ -export const CreateManagerResponseNetworkByoVpcGcp3$inboundSchema: z.ZodType< - CreateManagerResponseNetworkByoVpcGcp3, - unknown -> = z.object({ - network_name: z.string(), - region: z.string(), - subnet_name: z.string(), - type: CreateManagerResponseTypeByoVpcGcp3$inboundSchema, -}).transform((v) => { - return remap$(v, { - "network_name": "networkName", - "subnet_name": "subnetName", - }); -}); - -export function createManagerResponseNetworkByoVpcGcp3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseNetworkByoVpcGcp3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseNetworkByoVpcGcp3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseTypeByoVpcAws3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseTypeByoVpcAws3 -> = z.enum(CreateManagerResponseTypeByoVpcAws3); - -/** @internal */ -export const CreateManagerResponseNetworkByoVpcAws3$inboundSchema: z.ZodType< - CreateManagerResponseNetworkByoVpcAws3, - unknown -> = z.object({ - private_subnet_ids: z.array(z.string()), - public_subnet_ids: z.array(z.string()), - security_group_ids: z.array(z.string()).optional(), - type: CreateManagerResponseTypeByoVpcAws3$inboundSchema, - vpc_id: z.string(), -}).transform((v) => { - return remap$(v, { - "private_subnet_ids": "privateSubnetIds", - "public_subnet_ids": "publicSubnetIds", - "security_group_ids": "securityGroupIds", - "vpc_id": "vpcId", - }); -}); - -export function createManagerResponseNetworkByoVpcAws3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseNetworkByoVpcAws3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseNetworkByoVpcAws3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseTypeCreate3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseTypeCreate3 -> = z.enum(CreateManagerResponseTypeCreate3); - -/** @internal */ -export const CreateManagerResponseNetworkCreate3$inboundSchema: z.ZodType< - CreateManagerResponseNetworkCreate3, - unknown -> = z.object({ - availability_zones: z.int().optional(), - cidr: z.nullable(z.string()).optional(), - type: CreateManagerResponseTypeCreate3$inboundSchema, -}).transform((v) => { - return remap$(v, { - "availability_zones": "availabilityZones", - }); -}); - -export function createManagerResponseNetworkCreate3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseNetworkCreate3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseNetworkCreate3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseTypeUseDefault3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseTypeUseDefault3 -> = z.enum(CreateManagerResponseTypeUseDefault3); - -/** @internal */ -export const CreateManagerResponseNetworkUseDefault3$inboundSchema: z.ZodType< - CreateManagerResponseNetworkUseDefault3, - unknown -> = z.object({ - type: CreateManagerResponseTypeUseDefault3$inboundSchema, -}); - -export function createManagerResponseNetworkUseDefault3FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseNetworkUseDefault3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseNetworkUseDefault3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseNetworkUseDefault3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseNetworkUnion3$inboundSchema: z.ZodType< - CreateManagerResponseNetworkUnion3, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseNetworkByoVpcAws3$inboundSchema), - z.lazy(() => CreateManagerResponseNetworkByoVpcGcp3$inboundSchema), - z.lazy(() => CreateManagerResponseNetworkByoVnetAzure3$inboundSchema), - z.lazy(() => CreateManagerResponseNetworkUseDefault3$inboundSchema), - z.lazy(() => CreateManagerResponseNetworkCreate3$inboundSchema), - z.any(), -]); - -export function createManagerResponseNetworkUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseNetworkUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseNetworkUnion3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseTelemetry3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseTelemetry3 -> = z.enum(CreateManagerResponseTelemetry3); - -/** @internal */ -export const CreateManagerResponseUpdates3$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseUpdates3 -> = z.enum(CreateManagerResponseUpdates3); - -/** @internal */ -export const CreateManagerResponseStackSettings3$inboundSchema: z.ZodType< - CreateManagerResponseStackSettings3, - unknown -> = z.object({ - compute: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseCompute3$inboundSchema), - z.any(), - ]), - ).optional(), - deploymentModel: CreateManagerResponseDeploymentModel3$inboundSchema - .optional(), - domains: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseDomains3$inboundSchema), - z.any(), - ]), - ).optional(), - externalBindings: z.nullable( - z.lazy(() => CreateManagerResponseExternalBindings3$inboundSchema), - ).optional(), - heartbeats: CreateManagerResponseHeartbeats3$inboundSchema.optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseKubernetes3$inboundSchema), - z.any(), - ]), - ).optional(), - network: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseNetworkByoVpcAws3$inboundSchema), - z.lazy(() => CreateManagerResponseNetworkByoVpcGcp3$inboundSchema), - z.lazy(() => CreateManagerResponseNetworkByoVnetAzure3$inboundSchema), - z.lazy(() => CreateManagerResponseNetworkUseDefault3$inboundSchema), - z.lazy(() => CreateManagerResponseNetworkCreate3$inboundSchema), - z.any(), - ]), - ).optional(), - telemetry: CreateManagerResponseTelemetry3$inboundSchema.optional(), - updates: CreateManagerResponseUpdates3$inboundSchema.optional(), -}); - -export function createManagerResponseStackSettings3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseStackSettings3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseStackSettings3' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseSetupTerraform$inboundSchema: z.ZodType< - CreateManagerResponseSetupTerraform, - unknown -> = z.object({ - method: z.literal("terraform"), - deploymentPortalUrl: z.string(), - managerUrl: z.string(), - providerSource: z.string(), - moduleSource: z.string(), - moduleVersion: z.string().optional(), - moduleInputs: z.record(z.string(), z.string()), - mainTf: z.string(), - tfvars: z.string(), - commands: z.string(), - stackSettings: z.lazy(() => - CreateManagerResponseStackSettings3$inboundSchema - ), -}); - -export function createManagerResponseSetupTerraformFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseSetupTerraform$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseSetupTerraform' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponsePoolsAutoscale2$inboundSchema: z.ZodType< - CreateManagerResponsePoolsAutoscale2, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); - -export function createManagerResponsePoolsAutoscale2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponsePoolsAutoscale2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponsePoolsAutoscale2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponsePoolsFixed2$inboundSchema: z.ZodType< - CreateManagerResponsePoolsFixed2, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); - -export function createManagerResponsePoolsFixed2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponsePoolsFixed2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponsePoolsFixed2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponsePoolsUnion2$inboundSchema: z.ZodType< - CreateManagerResponsePoolsUnion2, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponsePoolsFixed2$inboundSchema), - z.lazy(() => CreateManagerResponsePoolsAutoscale2$inboundSchema), -]); - -export function createManagerResponsePoolsUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponsePoolsUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponsePoolsUnion2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCompute2$inboundSchema: z.ZodType< - CreateManagerResponseCompute2, - unknown -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => CreateManagerResponsePoolsFixed2$inboundSchema), - z.lazy(() => CreateManagerResponsePoolsAutoscale2$inboundSchema), - ]), - ).optional(), -}); - -export function createManagerResponseCompute2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseCompute2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCompute2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseComputeUnion2$inboundSchema: z.ZodType< - CreateManagerResponseComputeUnion2, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseCompute2$inboundSchema), - z.any(), -]); - -export function createManagerResponseComputeUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseComputeUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseComputeUnion2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDeploymentModel2$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseDeploymentModel2 -> = z.enum(CreateManagerResponseDeploymentModel2); - -/** @internal */ -export const CreateManagerResponseAws2$inboundSchema: z.ZodType< - CreateManagerResponseAws2, - unknown -> = z.object({ - certificateArn: z.string(), -}); - -export function createManagerResponseAws2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseAws2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseAws2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseAwsUnion2$inboundSchema: z.ZodType< - CreateManagerResponseAwsUnion2, - unknown -> = z.union([z.lazy(() => CreateManagerResponseAws2$inboundSchema), z.any()]); - -export function createManagerResponseAwsUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseAwsUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseAwsUnion2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseAzure2$inboundSchema: z.ZodType< - CreateManagerResponseAzure2, - unknown -> = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), -}); - -export function createManagerResponseAzure2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseAzure2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseAzure2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseAzureUnion2$inboundSchema: z.ZodType< - CreateManagerResponseAzureUnion2, - unknown -> = z.union([z.lazy(() => CreateManagerResponseAzure2$inboundSchema), z.any()]); - -export function createManagerResponseAzureUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseAzureUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseAzureUnion2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseGcp2$inboundSchema: z.ZodType< - CreateManagerResponseGcp2, - unknown -> = z.object({ - certificateName: z.string(), -}); - -export function createManagerResponseGcp2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseGcp2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseGcp2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseGcpUnion2$inboundSchema: z.ZodType< - CreateManagerResponseGcpUnion2, - unknown -> = z.union([z.lazy(() => CreateManagerResponseGcp2$inboundSchema), z.any()]); - -export function createManagerResponseGcpUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseGcpUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseGcpUnion2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseTlsSecretRef2$inboundSchema: z.ZodType< - CreateManagerResponseTlsSecretRef2, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), -}); - -export function createManagerResponseTlsSecretRef2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseTlsSecretRef2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseTlsSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDomainsKubernetes2$inboundSchema: z.ZodType< - CreateManagerResponseDomainsKubernetes2, - unknown -> = z.object({ - tlsSecretRef: z.lazy(() => CreateManagerResponseTlsSecretRef2$inboundSchema), -}); - -export function createManagerResponseDomainsKubernetes2FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseDomainsKubernetes2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseDomainsKubernetes2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseDomainsKubernetes2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDomainsKubernetesUnion2$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => CreateManagerResponseDomainsKubernetes2$inboundSchema), - z.any(), - ]); - -export function createManagerResponseDomainsKubernetesUnion2FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseDomainsKubernetesUnion2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseDomainsKubernetesUnion2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseDomainsKubernetesUnion2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDomainsCertificate2$inboundSchema: z.ZodType< - CreateManagerResponseDomainsCertificate2, - unknown -> = z.object({ - aws: z.nullable( - z.union([z.lazy(() => CreateManagerResponseAws2$inboundSchema), z.any()]), - ).optional(), - azure: z.nullable( - z.union([z.lazy(() => CreateManagerResponseAzure2$inboundSchema), z.any()]), - ).optional(), - gcp: z.nullable( - z.union([z.lazy(() => CreateManagerResponseGcp2$inboundSchema), z.any()]), - ).optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseDomainsKubernetes2$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function createManagerResponseDomainsCertificate2FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseDomainsCertificate2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseDomainsCertificate2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseDomainsCertificate2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCustomDomains2$inboundSchema: z.ZodType< - CreateManagerResponseCustomDomains2, - unknown -> = z.object({ - certificate: z.lazy(() => - CreateManagerResponseDomainsCertificate2$inboundSchema - ), - domain: z.string(), -}); - -export function createManagerResponseCustomDomains2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCustomDomains2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCustomDomains2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDomains2$inboundSchema: z.ZodType< - CreateManagerResponseDomains2, - unknown -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => CreateManagerResponseCustomDomains2$inboundSchema), - ), - ).optional(), -}); - -export function createManagerResponseDomains2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseDomains2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseDomains2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseDomainsUnion2$inboundSchema: z.ZodType< - CreateManagerResponseDomainsUnion2, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseDomains2$inboundSchema), - z.any(), -]); - -export function createManagerResponseDomainsUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseDomainsUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseDomainsUnion2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseExternalBindings2$inboundSchema: z.ZodType< - CreateManagerResponseExternalBindings2, - unknown -> = z.object({}); - -export function createManagerResponseExternalBindings2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseExternalBindings2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseExternalBindings2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseHeartbeats2$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseHeartbeats2 -> = z.enum(CreateManagerResponseHeartbeats2); - -/** @internal */ -export const CreateManagerResponseCloud2$inboundSchema: z.ZodType< - CreateManagerResponseCloud2, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); - -export function createManagerResponseCloud2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseCloud2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCloud2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCloudUnion2$inboundSchema: z.ZodType< - CreateManagerResponseCloudUnion2, - unknown -> = z.union([z.lazy(() => CreateManagerResponseCloud2$inboundSchema), z.any()]); - -export function createManagerResponseCloudUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseCloudUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCloudUnion2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseOwnership2$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseOwnership2 -> = z.enum(CreateManagerResponseOwnership2); - -/** @internal */ -export const CreateManagerResponseCluster2$inboundSchema: z.ZodType< - CreateManagerResponseCluster2, - unknown -> = z.object({ - cloud: z.nullable( - z.union([z.lazy(() => CreateManagerResponseCloud2$inboundSchema), z.any()]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: CreateManagerResponseOwnership2$inboundSchema, -}); - -export function createManagerResponseCluster2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseCluster2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCluster2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseClusterUnion2$inboundSchema: z.ZodType< - CreateManagerResponseClusterUnion2, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseCluster2$inboundSchema), - z.any(), -]); - -export function createManagerResponseClusterUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseClusterUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseClusterUnion2' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateNone4$inboundSchema: z.ZodType< - CreateManagerResponseCertificateNone4, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function createManagerResponseCertificateNone4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateNone4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCertificateNone4' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateManagedTLSSecret4$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function createManagerResponseCertificateManagedTLSSecret4FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateManagedTLSSecret4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateManagedTLSSecret4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateManagedTLSSecret4' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateAwsAcmArn4$inboundSchema: - z.ZodType = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), - }); - -export function createManagerResponseCertificateAwsAcmArn4FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateAwsAcmArn4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateAwsAcmArn4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateAwsAcmArn4' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateManagedAcmImport4$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function createManagerResponseCertificateManagedAcmImport4FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateManagedAcmImport4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateManagedAcmImport4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateManagedAcmImport4' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateTLSSecretRef4$inboundSchema: - z.ZodType = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function createManagerResponseCertificateTLSSecretRef4FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseCertificateTLSSecretRef4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateTLSSecretRef4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseCertificateTLSSecretRef4' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseCertificateUnion4$inboundSchema: z.ZodType< - CreateManagerResponseCertificateUnion4, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseCertificateTLSSecretRef4$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateManagedAcmImport4$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateAwsAcmArn4$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateManagedTLSSecret4$inboundSchema), - z.lazy(() => CreateManagerResponseCertificateNone4$inboundSchema), -]); - -export function createManagerResponseCertificateUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseCertificateUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseCertificateUnion4' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseModeCustom2$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseModeCustom2 -> = z.enum(CreateManagerResponseModeCustom2); - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8$inboundSchema: - z.ZodEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8 - > = z.enum( - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8, - ); - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainers8$inboundSchema: - z.ZodType< - CreateManagerResponseProviderAzureApplicationGatewayForContainers8, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8$inboundSchema, - }); - -export function createManagerResponseProviderAzureApplicationGatewayForContainers8FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderAzureApplicationGatewayForContainers8, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAzureApplicationGatewayForContainers8$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers8' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderGkeGatewayEnum8$inboundSchema: - z.ZodEnum = z.enum( - CreateManagerResponseProviderGkeGatewayEnum8, - ); - -/** @internal */ -export const CreateManagerResponseProviderGkeGateway8$inboundSchema: z.ZodType< - CreateManagerResponseProviderGkeGateway8, - unknown -> = z.object({ - provider: CreateManagerResponseProviderGkeGatewayEnum8$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function createManagerResponseProviderGkeGateway8FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderGkeGateway8, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderGkeGateway8$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseProviderGkeGateway8' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderAwsAlbEnum8$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseProviderAwsAlbEnum8 -> = z.enum(CreateManagerResponseProviderAwsAlbEnum8); - -/** @internal */ -export const CreateManagerResponseProviderAwsAlb8$inboundSchema: z.ZodType< - CreateManagerResponseProviderAwsAlb8, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: CreateManagerResponseProviderAwsAlbEnum8$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function createManagerResponseProviderAwsAlb8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAwsAlb8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAwsAlb8' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderUnion8$inboundSchema: z.ZodType< - CreateManagerResponseProviderUnion8, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb8$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers8$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway8$inboundSchema), - z.any(), -]); - -export function createManagerResponseProviderUnion8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderUnion8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderUnion8' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseRouteGateway4$inboundSchema: z.ZodType< - CreateManagerResponseRouteGateway4, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb8$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers8$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway8$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function createManagerResponseRouteGateway4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseRouteGateway4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseRouteGateway4' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7$inboundSchema: - z.ZodEnum< - typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7 - > = z.enum( - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7, - ); - -/** @internal */ -export const CreateManagerResponseProviderAzureApplicationGatewayForContainers7$inboundSchema: - z.ZodType< - CreateManagerResponseProviderAzureApplicationGatewayForContainers7, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7$inboundSchema, - }); - -export function createManagerResponseProviderAzureApplicationGatewayForContainers7FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderAzureApplicationGatewayForContainers7, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAzureApplicationGatewayForContainers7$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers7' from JSON`, - ); -} - -/** @internal */ -export const CreateManagerResponseProviderGkeGatewayEnum7$inboundSchema: - z.ZodEnum = z.enum( - CreateManagerResponseProviderGkeGatewayEnum7, - ); + */ + vpcId: string; +}; -/** @internal */ -export const CreateManagerResponseProviderGkeGateway7$inboundSchema: z.ZodType< - CreateManagerResponseProviderGkeGateway7, - unknown -> = z.object({ - provider: CreateManagerResponseProviderGkeGatewayEnum7$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); +export const CreateManagerResponseTypeCreate1 = { + Create: "create", +} as const; +export type CreateManagerResponseTypeCreate1 = ClosedEnum< + typeof CreateManagerResponseTypeCreate1 +>; -export function createManagerResponseProviderGkeGateway7FromJSON( - jsonString: string, -): SafeParseResult< - CreateManagerResponseProviderGkeGateway7, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderGkeGateway7$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'CreateManagerResponseProviderGkeGateway7' from JSON`, - ); -} +export type CreateManagerResponseNetworkCreate1 = { + /** + * Number of availability zones (default: 2). + */ + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: CreateManagerResponseTypeCreate1; +}; -/** @internal */ -export const CreateManagerResponseProviderAwsAlbEnum7$inboundSchema: z.ZodEnum< - typeof CreateManagerResponseProviderAwsAlbEnum7 -> = z.enum(CreateManagerResponseProviderAwsAlbEnum7); +export const CreateManagerResponseTypeUseDefault1 = { + UseDefault: "use-default", +} as const; +export type CreateManagerResponseTypeUseDefault1 = ClosedEnum< + typeof CreateManagerResponseTypeUseDefault1 +>; -/** @internal */ -export const CreateManagerResponseProviderAwsAlb7$inboundSchema: z.ZodType< - CreateManagerResponseProviderAwsAlb7, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: CreateManagerResponseProviderAwsAlbEnum7$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export type CreateManagerResponseNetworkUseDefault1 = { + type: CreateManagerResponseTypeUseDefault1; +}; -export function createManagerResponseProviderAwsAlb7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderAwsAlb7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderAwsAlb7' from JSON`, - ); -} +export type CreateManagerResponseNetworkUnion1 = + | CreateManagerResponseNetworkByoVpcAws1 + | CreateManagerResponseNetworkByoVpcGcp1 + | CreateManagerResponseNetworkByoVnetAzure1 + | CreateManagerResponseNetworkUseDefault1 + | CreateManagerResponseNetworkCreate1 + | any; -/** @internal */ -export const CreateManagerResponseProviderUnion7$inboundSchema: z.ZodType< - CreateManagerResponseProviderUnion7, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb7$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers7$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway7$inboundSchema), - z.any(), -]); +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export const CreateManagerResponseTelemetry1 = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export type CreateManagerResponseTelemetry1 = ClosedEnum< + typeof CreateManagerResponseTelemetry1 +>; -export function createManagerResponseProviderUnion7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseProviderUnion7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseProviderUnion7' from JSON`, - ); -} +/** + * How updates are delivered to the deployment. + */ +export const CreateManagerResponseUpdates1 = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How updates are delivered to the deployment. + */ +export type CreateManagerResponseUpdates1 = ClosedEnum< + typeof CreateManagerResponseUpdates1 +>; -/** @internal */ -export const CreateManagerResponseRouteIngress4$inboundSchema: z.ZodType< - CreateManagerResponseRouteIngress4, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseProviderAwsAlb7$inboundSchema), - z.lazy(() => - CreateManagerResponseProviderAzureApplicationGatewayForContainers7$inboundSchema - ), - z.lazy(() => CreateManagerResponseProviderGkeGateway7$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); +/** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ +export type CreateManagerResponseStackSettings1 = { + compute?: CreateManagerResponseCompute1 | any | null | undefined; + /** + * Deployment model: how updates are delivered to the remote environment. + */ + deploymentModel?: CreateManagerResponseDeploymentModel1 | undefined; + domains?: CreateManagerResponseDomains1 | any | null | undefined; + /** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ + externalBindings?: CreateManagerResponseExternalBindings1 | null | undefined; + /** + * How heartbeat health checks are handled. + */ + heartbeats?: CreateManagerResponseHeartbeats1 | undefined; + kubernetes?: CreateManagerResponseKubernetes1 | any | null | undefined; + network?: + | CreateManagerResponseNetworkByoVpcAws1 + | CreateManagerResponseNetworkByoVpcGcp1 + | CreateManagerResponseNetworkByoVnetAzure1 + | CreateManagerResponseNetworkUseDefault1 + | CreateManagerResponseNetworkCreate1 + | any + | null + | undefined; + /** + * How telemetry (logs, metrics, traces) is handled. + */ + telemetry?: CreateManagerResponseTelemetry1 | undefined; + /** + * How updates are delivered to the deployment. + */ + updates?: CreateManagerResponseUpdates1 | undefined; +}; -export function createManagerResponseRouteIngress4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - CreateManagerResponseRouteIngress4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseRouteIngress4' from JSON`, - ); -} +export type CreateManagerResponseSetupCloudformation = { + method: "cloudformation"; + deploymentPortalUrl: string; + launchUrl: string; + templateUrl: string; + stackName: string; + region: string; + /** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ + stackSettings: CreateManagerResponseStackSettings1; +}; -/** @internal */ -export const CreateManagerResponseRouteUnion4$inboundSchema: z.ZodType< - CreateManagerResponseRouteUnion4, - unknown -> = z.union([ - z.lazy(() => CreateManagerResponseRouteIngress4$inboundSchema), - z.lazy(() => CreateManagerResponseRouteGateway4$inboundSchema), -]); +export type CreateManagerResponseSetupUnion = + | CreateManagerResponseSetupCloudformation + | CreateManagerResponseSetupGoogleOauth + | CreateManagerResponseSetupTerraform; -export function createManagerResponseRouteUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CreateManagerResponseRouteUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CreateManagerResponseRouteUnion4' from JSON`, - ); -} +export type CreateManagerResponse = { + managerId: string; + setupStatus: CreateManagerResponseSetupStatus; + setupToken: string; + setupTokenId: string; + deploymentLink: string; + setupConfig: CreateManagerResponseSetupConfig; + setup: + | CreateManagerResponseSetupCloudformation + | CreateManagerResponseSetupGoogleOauth + | CreateManagerResponseSetupTerraform; +}; /** @internal */ export const CreateManagerResponseExposureCustom2$inboundSchema: z.ZodType< CreateManagerResponseExposureCustom2, unknown > = z.object({ - certificate: z.union([ - z.lazy(() => CreateManagerResponseCertificateTLSSecretRef4$inboundSchema), - z.lazy(() => - CreateManagerResponseCertificateManagedAcmImport4$inboundSchema - ), - z.lazy(() => CreateManagerResponseCertificateAwsAcmArn4$inboundSchema), - z.lazy(() => - CreateManagerResponseCertificateManagedTLSSecret4$inboundSchema - ), - z.lazy(() => CreateManagerResponseCertificateNone4$inboundSchema), - ]), + certificate: CreateManagerResponseCertificateUnion4$inboundSchema, domain: z.string(), mode: CreateManagerResponseModeCustom2$inboundSchema, - route: z.union([ - z.lazy(() => CreateManagerResponseRouteIngress4$inboundSchema), - z.lazy(() => CreateManagerResponseRouteGateway4$inboundSchema), - ]), + route: CreateManagerResponseRouteUnion4$inboundSchema, }); export function createManagerResponseExposureCustom2FromJSON( @@ -6917,12 +2335,8 @@ export const CreateManagerResponseKubernetes2$inboundSchema: z.ZodType< CreateManagerResponseKubernetes2, unknown > = z.object({ - cluster: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseCluster2$inboundSchema), - z.any(), - ]), - ).optional(), + cluster: z.nullable(CreateManagerResponseClusterUnion2$inboundSchema) + .optional(), exposure: z.nullable( z.union([ z.lazy(() => CreateManagerResponseExposureCustom2$inboundSchema), @@ -7168,22 +2582,14 @@ export const CreateManagerResponseStackSettings2$inboundSchema: z.ZodType< CreateManagerResponseStackSettings2, unknown > = z.object({ - compute: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseCompute2$inboundSchema), - z.any(), - ]), - ).optional(), + compute: z.nullable(CreateManagerResponseComputeUnion2$inboundSchema) + .optional(), deploymentModel: CreateManagerResponseDeploymentModel2$inboundSchema .optional(), - domains: z.nullable( - z.union([ - z.lazy(() => CreateManagerResponseDomains2$inboundSchema), - z.any(), - ]), - ).optional(), + domains: z.nullable(CreateManagerResponseDomainsUnion2$inboundSchema) + .optional(), externalBindings: z.nullable( - z.lazy(() => CreateManagerResponseExternalBindings2$inboundSchema), + CreateManagerResponseExternalBindings2$inboundSchema, ).optional(), heartbeats: CreateManagerResponseHeartbeats2$inboundSchema.optional(), kubernetes: z.nullable( @@ -9133,7 +4539,7 @@ export const CreateManagerResponseSetupUnion$inboundSchema: z.ZodType< > = z.union([ z.lazy(() => CreateManagerResponseSetupCloudformation$inboundSchema), z.lazy(() => CreateManagerResponseSetupGoogleOauth$inboundSchema), - z.lazy(() => CreateManagerResponseSetupTerraform$inboundSchema), + CreateManagerResponseSetupTerraform$inboundSchema, ]); export function createManagerResponseSetupUnionFromJSON( @@ -9156,11 +4562,11 @@ export const CreateManagerResponse$inboundSchema: z.ZodType< setupToken: z.string(), setupTokenId: z.string(), deploymentLink: z.string(), - setupConfig: z.lazy(() => CreateManagerResponseSetupConfig$inboundSchema), + setupConfig: CreateManagerResponseSetupConfig$inboundSchema, setup: z.union([ z.lazy(() => CreateManagerResponseSetupCloudformation$inboundSchema), z.lazy(() => CreateManagerResponseSetupGoogleOauth$inboundSchema), - z.lazy(() => CreateManagerResponseSetupTerraform$inboundSchema), + CreateManagerResponseSetupTerraform$inboundSchema, ]), }); diff --git a/client-sdks/platform/typescript/src/models/createmanagerresponserouteunion4.ts b/client-sdks/platform/typescript/src/models/createmanagerresponserouteunion4.ts new file mode 100644 index 000000000..e15553724 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/createmanagerresponserouteunion4.ts @@ -0,0 +1,4598 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { + DeploymentSetupPolicy, + DeploymentSetupPolicy$inboundSchema, +} from "./deploymentsetuppolicy.js"; +import { + EncryptedStackInputValue, + EncryptedStackInputValue$inboundSchema, +} from "./encryptedstackinputvalue.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const CreateManagerResponseSetupStatus = { + Pending: "pending", +} as const; +export type CreateManagerResponseSetupStatus = ClosedEnum< + typeof CreateManagerResponseSetupStatus +>; + +export const CreateManagerResponseEnvironmentVariableType = { + Plain: "plain", + Secret: "secret", +} as const; +export type CreateManagerResponseEnvironmentVariableType = ClosedEnum< + typeof CreateManagerResponseEnvironmentVariableType +>; + +export type CreateManagerResponseEnvironmentVariable = { + name: string; + type: CreateManagerResponseEnvironmentVariableType; + targetResources: Array | null; +}; + +export type CreateManagerResponseSetupConfig = { + metadata: { [k: string]: any | null }; + policy: DeploymentSetupPolicy; + inputValues?: { [k: string]: EncryptedStackInputValue } | undefined; + environmentVariables: Array; +}; + +export type CreateManagerResponsePoolsAutoscale3 = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Maximum machine count. + */ + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; +}; + +export type CreateManagerResponsePoolsFixed3 = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Number of machines to run. + */ + machines: number; + mode: "fixed"; +}; + +/** + * User-selected deployment settings for one compute pool. + */ +export type CreateManagerResponsePoolsUnion3 = + | CreateManagerResponsePoolsFixed3 + | CreateManagerResponsePoolsAutoscale3; + +/** + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. + */ +export type CreateManagerResponseCompute3 = { + /** + * Selected compute choices keyed by pool ID. + */ + pools?: { + [k: string]: + | CreateManagerResponsePoolsFixed3 + | CreateManagerResponsePoolsAutoscale3; + } | undefined; +}; + +export type CreateManagerResponseComputeUnion3 = + | CreateManagerResponseCompute3 + | any; + +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export const CreateManagerResponseDeploymentModel3 = { + Push: "push", + Pull: "pull", +} as const; +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export type CreateManagerResponseDeploymentModel3 = ClosedEnum< + typeof CreateManagerResponseDeploymentModel3 +>; + +export type CreateManagerResponseAws3 = { + certificateArn: string; +}; + +export type CreateManagerResponseAwsUnion3 = CreateManagerResponseAws3 | any; + +export type CreateManagerResponseAzure3 = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +export type CreateManagerResponseAzureUnion3 = + | CreateManagerResponseAzure3 + | any; + +export type CreateManagerResponseGcp3 = { + certificateName: string; +}; + +export type CreateManagerResponseGcpUnion3 = CreateManagerResponseGcp3 | any; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type CreateManagerResponseTlsSecretRef3 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; +}; + +export type CreateManagerResponseDomainsKubernetes3 = { + /** + * Namespace-scoped Kubernetes TLS Secret reference. + */ + tlsSecretRef: CreateManagerResponseTlsSecretRef3; +}; + +export type CreateManagerResponseDomainsKubernetesUnion3 = + | CreateManagerResponseDomainsKubernetes3 + | any; + +/** + * Platform-specific certificate references for custom domains. + */ +export type CreateManagerResponseDomainsCertificate3 = { + aws?: CreateManagerResponseAws3 | any | null | undefined; + azure?: CreateManagerResponseAzure3 | any | null | undefined; + gcp?: CreateManagerResponseGcp3 | any | null | undefined; + kubernetes?: CreateManagerResponseDomainsKubernetes3 | any | null | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type CreateManagerResponseCustomDomains3 = { + /** + * Platform-specific certificate references for custom domains. + */ + certificate: CreateManagerResponseDomainsCertificate3; + /** + * Fully qualified domain name to use. + */ + domain: string; +}; + +/** + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. + */ +export type CreateManagerResponseDomains3 = { + /** + * Custom domain configuration per resource ID. + */ + customDomains?: + | { [k: string]: CreateManagerResponseCustomDomains3 } + | null + | undefined; +}; + +export type CreateManagerResponseDomainsUnion3 = + | CreateManagerResponseDomains3 + | any; + +/** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ +export type CreateManagerResponseExternalBindings3 = {}; + +/** + * How heartbeat health checks are handled. + */ +export const CreateManagerResponseHeartbeats3 = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type CreateManagerResponseHeartbeats3 = ClosedEnum< + typeof CreateManagerResponseHeartbeats3 +>; + +/** + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + */ +export type CreateManagerResponseCloud3 = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +export type CreateManagerResponseCloudUnion3 = + | CreateManagerResponseCloud3 + | any; + +/** + * Ownership model for the Kubernetes cluster. + */ +export const CreateManagerResponseOwnership3 = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type CreateManagerResponseOwnership3 = ClosedEnum< + typeof CreateManagerResponseOwnership3 +>; + +/** + * Kubernetes cluster setup settings. + */ +export type CreateManagerResponseCluster3 = { + cloud?: CreateManagerResponseCloud3 | any | null | undefined; + /** + * Namespace where the Alien chart and application resources run. + */ + namespace?: string | null | undefined; + /** + * Ownership model for the Kubernetes cluster. + */ + ownership: CreateManagerResponseOwnership3; +}; + +export type CreateManagerResponseClusterUnion3 = + | CreateManagerResponseCluster3 + | any; + +export type CreateManagerResponseCertificateNone6 = { + mode: "none"; +}; + +export type CreateManagerResponseCertificateManagedTLSSecret6 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type CreateManagerResponseCertificateAwsAcmArn6 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type CreateManagerResponseCertificateManagedAcmImport6 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type CreateManagerResponseCertificateTLSSecretRef6 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type CreateManagerResponseCertificateUnion6 = + | CreateManagerResponseCertificateTLSSecretRef6 + | CreateManagerResponseCertificateManagedAcmImport6 + | CreateManagerResponseCertificateAwsAcmArn6 + | CreateManagerResponseCertificateManagedTLSSecret6 + | CreateManagerResponseCertificateNone6; + +export const CreateManagerResponseModeCustom3 = { + Custom: "custom", +} as const; +export type CreateManagerResponseModeCustom3 = ClosedEnum< + typeof CreateManagerResponseModeCustom3 +>; + +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12 = + ClosedEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12 + >; + +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers12 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12; + }; + +export const CreateManagerResponseProviderGkeGatewayEnum12 = { + GkeGateway: "gkeGateway", +} as const; +export type CreateManagerResponseProviderGkeGatewayEnum12 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum12 +>; + +export type CreateManagerResponseProviderGkeGateway12 = { + provider: CreateManagerResponseProviderGkeGatewayEnum12; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const CreateManagerResponseProviderAwsAlbEnum12 = { + AwsAlb: "awsAlb", +} as const; +export type CreateManagerResponseProviderAwsAlbEnum12 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum12 +>; + +export type CreateManagerResponseProviderAwsAlb12 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: CreateManagerResponseProviderAwsAlbEnum12; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type CreateManagerResponseProviderUnion12 = + | CreateManagerResponseProviderAwsAlb12 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers12 + | CreateManagerResponseProviderGkeGateway12 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type CreateManagerResponseRouteGateway6 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | CreateManagerResponseProviderAwsAlb12 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers12 + | CreateManagerResponseProviderGkeGateway12 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11 = + ClosedEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11 + >; + +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers11 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11; + }; + +export const CreateManagerResponseProviderGkeGatewayEnum11 = { + GkeGateway: "gkeGateway", +} as const; +export type CreateManagerResponseProviderGkeGatewayEnum11 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum11 +>; + +export type CreateManagerResponseProviderGkeGateway11 = { + provider: CreateManagerResponseProviderGkeGatewayEnum11; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const CreateManagerResponseProviderAwsAlbEnum11 = { + AwsAlb: "awsAlb", +} as const; +export type CreateManagerResponseProviderAwsAlbEnum11 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum11 +>; + +export type CreateManagerResponseProviderAwsAlb11 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: CreateManagerResponseProviderAwsAlbEnum11; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type CreateManagerResponseProviderUnion11 = + | CreateManagerResponseProviderAwsAlb11 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers11 + | CreateManagerResponseProviderGkeGateway11 + | any; + +/** + * Shared Ingress route profile values. + */ +export type CreateManagerResponseRouteIngress6 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | CreateManagerResponseProviderAwsAlb11 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers11 + | CreateManagerResponseProviderGkeGateway11 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type CreateManagerResponseRouteUnion6 = + | CreateManagerResponseRouteIngress6 + | CreateManagerResponseRouteGateway6; + +export type CreateManagerResponseExposureCustom3 = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | CreateManagerResponseCertificateTLSSecretRef6 + | CreateManagerResponseCertificateManagedAcmImport6 + | CreateManagerResponseCertificateAwsAcmArn6 + | CreateManagerResponseCertificateManagedTLSSecret6 + | CreateManagerResponseCertificateNone6; + /** + * Hostname routed by the Kubernetes public endpoint. + */ + domain: string; + mode: CreateManagerResponseModeCustom3; + /** + * Kubernetes route API selected for public endpoints. + */ + route: + | CreateManagerResponseRouteIngress6 + | CreateManagerResponseRouteGateway6; +}; + +export type CreateManagerResponseCertificateNone5 = { + mode: "none"; +}; + +export type CreateManagerResponseCertificateManagedTLSSecret5 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type CreateManagerResponseCertificateAwsAcmArn5 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type CreateManagerResponseCertificateManagedAcmImport5 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type CreateManagerResponseCertificateTLSSecretRef5 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type CreateManagerResponseCertificateUnion5 = + | CreateManagerResponseCertificateTLSSecretRef5 + | CreateManagerResponseCertificateManagedAcmImport5 + | CreateManagerResponseCertificateAwsAcmArn5 + | CreateManagerResponseCertificateManagedTLSSecret5 + | CreateManagerResponseCertificateNone5; + +export const CreateManagerResponseModeGenerated3 = { + Generated: "generated", +} as const; +export type CreateManagerResponseModeGenerated3 = ClosedEnum< + typeof CreateManagerResponseModeGenerated3 +>; + +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10 = + ClosedEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10 + >; + +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers10 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10; + }; + +export const CreateManagerResponseProviderGkeGatewayEnum10 = { + GkeGateway: "gkeGateway", +} as const; +export type CreateManagerResponseProviderGkeGatewayEnum10 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum10 +>; + +export type CreateManagerResponseProviderGkeGateway10 = { + provider: CreateManagerResponseProviderGkeGatewayEnum10; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const CreateManagerResponseProviderAwsAlbEnum10 = { + AwsAlb: "awsAlb", +} as const; +export type CreateManagerResponseProviderAwsAlbEnum10 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum10 +>; + +export type CreateManagerResponseProviderAwsAlb10 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: CreateManagerResponseProviderAwsAlbEnum10; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type CreateManagerResponseProviderUnion10 = + | CreateManagerResponseProviderAwsAlb10 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers10 + | CreateManagerResponseProviderGkeGateway10 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type CreateManagerResponseRouteGateway5 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | CreateManagerResponseProviderAwsAlb10 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers10 + | CreateManagerResponseProviderGkeGateway10 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9 = + ClosedEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9 + >; + +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers9 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9; + }; + +export const CreateManagerResponseProviderGkeGatewayEnum9 = { + GkeGateway: "gkeGateway", +} as const; +export type CreateManagerResponseProviderGkeGatewayEnum9 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum9 +>; + +export type CreateManagerResponseProviderGkeGateway9 = { + provider: CreateManagerResponseProviderGkeGatewayEnum9; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const CreateManagerResponseProviderAwsAlbEnum9 = { + AwsAlb: "awsAlb", +} as const; +export type CreateManagerResponseProviderAwsAlbEnum9 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum9 +>; + +export type CreateManagerResponseProviderAwsAlb9 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: CreateManagerResponseProviderAwsAlbEnum9; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type CreateManagerResponseProviderUnion9 = + | CreateManagerResponseProviderAwsAlb9 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers9 + | CreateManagerResponseProviderGkeGateway9 + | any; + +/** + * Shared Ingress route profile values. + */ +export type CreateManagerResponseRouteIngress5 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | CreateManagerResponseProviderAwsAlb9 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers9 + | CreateManagerResponseProviderGkeGateway9 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type CreateManagerResponseRouteUnion5 = + | CreateManagerResponseRouteIngress5 + | CreateManagerResponseRouteGateway5; + +export type CreateManagerResponseExposureGenerated3 = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | CreateManagerResponseCertificateTLSSecretRef5 + | CreateManagerResponseCertificateManagedAcmImport5 + | CreateManagerResponseCertificateAwsAcmArn5 + | CreateManagerResponseCertificateManagedTLSSecret5 + | CreateManagerResponseCertificateNone5; + mode: CreateManagerResponseModeGenerated3; + /** + * Kubernetes route API selected for public endpoints. + */ + route: + | CreateManagerResponseRouteIngress5 + | CreateManagerResponseRouteGateway5; +}; + +export const CreateManagerResponseModeDisabled3 = { + Disabled: "disabled", +} as const; +export type CreateManagerResponseModeDisabled3 = ClosedEnum< + typeof CreateManagerResponseModeDisabled3 +>; + +export type CreateManagerResponseExposureDisabled3 = { + mode: CreateManagerResponseModeDisabled3; +}; + +export type CreateManagerResponseExposureUnion3 = + | CreateManagerResponseExposureCustom3 + | CreateManagerResponseExposureGenerated3 + | CreateManagerResponseExposureDisabled3 + | any; + +/** + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. + */ +export type CreateManagerResponseKubernetes3 = { + cluster?: CreateManagerResponseCluster3 | any | null | undefined; + exposure?: + | CreateManagerResponseExposureCustom3 + | CreateManagerResponseExposureGenerated3 + | CreateManagerResponseExposureDisabled3 + | any + | null + | undefined; +}; + +export type CreateManagerResponseKubernetesUnion3 = + | CreateManagerResponseKubernetes3 + | any; + +export const CreateManagerResponseTypeByoVnetAzure3 = { + ByoVnetAzure: "byo-vnet-azure", +} as const; +export type CreateManagerResponseTypeByoVnetAzure3 = ClosedEnum< + typeof CreateManagerResponseTypeByoVnetAzure3 +>; + +export type CreateManagerResponseNetworkByoVnetAzure3 = { + /** + * Name of the dedicated classic Application Gateway subnet within the VNet. + */ + applicationGatewaySubnetName?: string | null | undefined; + /** + * Name of the private subnet within the VNet + */ + privateSubnetName: string; + /** + * Name of the public subnet within the VNet + */ + publicSubnetName: string; + type: CreateManagerResponseTypeByoVnetAzure3; + /** + * The full resource ID of the existing VNet + */ + vnetResourceId: string; +}; + +export const CreateManagerResponseTypeByoVpcGcp3 = { + ByoVpcGcp: "byo-vpc-gcp", +} as const; +export type CreateManagerResponseTypeByoVpcGcp3 = ClosedEnum< + typeof CreateManagerResponseTypeByoVpcGcp3 +>; + +export type CreateManagerResponseNetworkByoVpcGcp3 = { + /** + * The name of the existing VPC network + */ + networkName: string; + /** + * The region of the subnet + */ + region: string; + /** + * The name of the subnet to use + */ + subnetName: string; + type: CreateManagerResponseTypeByoVpcGcp3; +}; + +export const CreateManagerResponseTypeByoVpcAws3 = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type CreateManagerResponseTypeByoVpcAws3 = ClosedEnum< + typeof CreateManagerResponseTypeByoVpcAws3 +>; + +export type CreateManagerResponseNetworkByoVpcAws3 = { + /** + * IDs of private subnets + */ + privateSubnetIds: Array; + /** + * IDs of public subnets (required for public ingress) + */ + publicSubnetIds: Array; + /** + * Optional security group IDs to use + */ + securityGroupIds?: Array | undefined; + type: CreateManagerResponseTypeByoVpcAws3; + /** + * The ID of the existing VPC + */ + vpcId: string; +}; + +export const CreateManagerResponseTypeCreate3 = { + Create: "create", +} as const; +export type CreateManagerResponseTypeCreate3 = ClosedEnum< + typeof CreateManagerResponseTypeCreate3 +>; + +export type CreateManagerResponseNetworkCreate3 = { + /** + * Number of availability zones (default: 2). + */ + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: CreateManagerResponseTypeCreate3; +}; + +export const CreateManagerResponseTypeUseDefault3 = { + UseDefault: "use-default", +} as const; +export type CreateManagerResponseTypeUseDefault3 = ClosedEnum< + typeof CreateManagerResponseTypeUseDefault3 +>; + +export type CreateManagerResponseNetworkUseDefault3 = { + type: CreateManagerResponseTypeUseDefault3; +}; + +export type CreateManagerResponseNetworkUnion3 = + | CreateManagerResponseNetworkByoVpcAws3 + | CreateManagerResponseNetworkByoVpcGcp3 + | CreateManagerResponseNetworkByoVnetAzure3 + | CreateManagerResponseNetworkUseDefault3 + | CreateManagerResponseNetworkCreate3 + | any; + +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export const CreateManagerResponseTelemetry3 = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export type CreateManagerResponseTelemetry3 = ClosedEnum< + typeof CreateManagerResponseTelemetry3 +>; + +/** + * How updates are delivered to the deployment. + */ +export const CreateManagerResponseUpdates3 = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How updates are delivered to the deployment. + */ +export type CreateManagerResponseUpdates3 = ClosedEnum< + typeof CreateManagerResponseUpdates3 +>; + +/** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ +export type CreateManagerResponseStackSettings3 = { + compute?: CreateManagerResponseCompute3 | any | null | undefined; + /** + * Deployment model: how updates are delivered to the remote environment. + */ + deploymentModel?: CreateManagerResponseDeploymentModel3 | undefined; + domains?: CreateManagerResponseDomains3 | any | null | undefined; + /** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ + externalBindings?: CreateManagerResponseExternalBindings3 | null | undefined; + /** + * How heartbeat health checks are handled. + */ + heartbeats?: CreateManagerResponseHeartbeats3 | undefined; + kubernetes?: CreateManagerResponseKubernetes3 | any | null | undefined; + network?: + | CreateManagerResponseNetworkByoVpcAws3 + | CreateManagerResponseNetworkByoVpcGcp3 + | CreateManagerResponseNetworkByoVnetAzure3 + | CreateManagerResponseNetworkUseDefault3 + | CreateManagerResponseNetworkCreate3 + | any + | null + | undefined; + /** + * How telemetry (logs, metrics, traces) is handled. + */ + telemetry?: CreateManagerResponseTelemetry3 | undefined; + /** + * How updates are delivered to the deployment. + */ + updates?: CreateManagerResponseUpdates3 | undefined; +}; + +export type CreateManagerResponseSetupTerraform = { + method: "terraform"; + deploymentPortalUrl: string; + managerUrl: string; + providerSource: string; + moduleSource: string; + moduleVersion?: string | undefined; + moduleInputs: { [k: string]: string }; + mainTf: string; + tfvars: string; + commands: string; + /** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ + stackSettings: CreateManagerResponseStackSettings3; +}; + +export type CreateManagerResponsePoolsAutoscale2 = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Maximum machine count. + */ + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; +}; + +export type CreateManagerResponsePoolsFixed2 = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Number of machines to run. + */ + machines: number; + mode: "fixed"; +}; + +/** + * User-selected deployment settings for one compute pool. + */ +export type CreateManagerResponsePoolsUnion2 = + | CreateManagerResponsePoolsFixed2 + | CreateManagerResponsePoolsAutoscale2; + +/** + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. + */ +export type CreateManagerResponseCompute2 = { + /** + * Selected compute choices keyed by pool ID. + */ + pools?: { + [k: string]: + | CreateManagerResponsePoolsFixed2 + | CreateManagerResponsePoolsAutoscale2; + } | undefined; +}; + +export type CreateManagerResponseComputeUnion2 = + | CreateManagerResponseCompute2 + | any; + +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export const CreateManagerResponseDeploymentModel2 = { + Push: "push", + Pull: "pull", +} as const; +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export type CreateManagerResponseDeploymentModel2 = ClosedEnum< + typeof CreateManagerResponseDeploymentModel2 +>; + +export type CreateManagerResponseAws2 = { + certificateArn: string; +}; + +export type CreateManagerResponseAwsUnion2 = CreateManagerResponseAws2 | any; + +export type CreateManagerResponseAzure2 = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +export type CreateManagerResponseAzureUnion2 = + | CreateManagerResponseAzure2 + | any; + +export type CreateManagerResponseGcp2 = { + certificateName: string; +}; + +export type CreateManagerResponseGcpUnion2 = CreateManagerResponseGcp2 | any; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type CreateManagerResponseTlsSecretRef2 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; +}; + +export type CreateManagerResponseDomainsKubernetes2 = { + /** + * Namespace-scoped Kubernetes TLS Secret reference. + */ + tlsSecretRef: CreateManagerResponseTlsSecretRef2; +}; + +export type CreateManagerResponseDomainsKubernetesUnion2 = + | CreateManagerResponseDomainsKubernetes2 + | any; + +/** + * Platform-specific certificate references for custom domains. + */ +export type CreateManagerResponseDomainsCertificate2 = { + aws?: CreateManagerResponseAws2 | any | null | undefined; + azure?: CreateManagerResponseAzure2 | any | null | undefined; + gcp?: CreateManagerResponseGcp2 | any | null | undefined; + kubernetes?: CreateManagerResponseDomainsKubernetes2 | any | null | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type CreateManagerResponseCustomDomains2 = { + /** + * Platform-specific certificate references for custom domains. + */ + certificate: CreateManagerResponseDomainsCertificate2; + /** + * Fully qualified domain name to use. + */ + domain: string; +}; + +/** + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. + */ +export type CreateManagerResponseDomains2 = { + /** + * Custom domain configuration per resource ID. + */ + customDomains?: + | { [k: string]: CreateManagerResponseCustomDomains2 } + | null + | undefined; +}; + +export type CreateManagerResponseDomainsUnion2 = + | CreateManagerResponseDomains2 + | any; + +/** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ +export type CreateManagerResponseExternalBindings2 = {}; + +/** + * How heartbeat health checks are handled. + */ +export const CreateManagerResponseHeartbeats2 = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type CreateManagerResponseHeartbeats2 = ClosedEnum< + typeof CreateManagerResponseHeartbeats2 +>; + +/** + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + */ +export type CreateManagerResponseCloud2 = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +export type CreateManagerResponseCloudUnion2 = + | CreateManagerResponseCloud2 + | any; + +/** + * Ownership model for the Kubernetes cluster. + */ +export const CreateManagerResponseOwnership2 = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type CreateManagerResponseOwnership2 = ClosedEnum< + typeof CreateManagerResponseOwnership2 +>; + +/** + * Kubernetes cluster setup settings. + */ +export type CreateManagerResponseCluster2 = { + cloud?: CreateManagerResponseCloud2 | any | null | undefined; + /** + * Namespace where the Alien chart and application resources run. + */ + namespace?: string | null | undefined; + /** + * Ownership model for the Kubernetes cluster. + */ + ownership: CreateManagerResponseOwnership2; +}; + +export type CreateManagerResponseClusterUnion2 = + | CreateManagerResponseCluster2 + | any; + +export type CreateManagerResponseCertificateNone4 = { + mode: "none"; +}; + +export type CreateManagerResponseCertificateManagedTLSSecret4 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type CreateManagerResponseCertificateAwsAcmArn4 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type CreateManagerResponseCertificateManagedAcmImport4 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type CreateManagerResponseCertificateTLSSecretRef4 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type CreateManagerResponseCertificateUnion4 = + | CreateManagerResponseCertificateTLSSecretRef4 + | CreateManagerResponseCertificateManagedAcmImport4 + | CreateManagerResponseCertificateAwsAcmArn4 + | CreateManagerResponseCertificateManagedTLSSecret4 + | CreateManagerResponseCertificateNone4; + +export const CreateManagerResponseModeCustom2 = { + Custom: "custom", +} as const; +export type CreateManagerResponseModeCustom2 = ClosedEnum< + typeof CreateManagerResponseModeCustom2 +>; + +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8 = + ClosedEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8 + >; + +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers8 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8; + }; + +export const CreateManagerResponseProviderGkeGatewayEnum8 = { + GkeGateway: "gkeGateway", +} as const; +export type CreateManagerResponseProviderGkeGatewayEnum8 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum8 +>; + +export type CreateManagerResponseProviderGkeGateway8 = { + provider: CreateManagerResponseProviderGkeGatewayEnum8; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const CreateManagerResponseProviderAwsAlbEnum8 = { + AwsAlb: "awsAlb", +} as const; +export type CreateManagerResponseProviderAwsAlbEnum8 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum8 +>; + +export type CreateManagerResponseProviderAwsAlb8 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: CreateManagerResponseProviderAwsAlbEnum8; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type CreateManagerResponseProviderUnion8 = + | CreateManagerResponseProviderAwsAlb8 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers8 + | CreateManagerResponseProviderGkeGateway8 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type CreateManagerResponseRouteGateway4 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | CreateManagerResponseProviderAwsAlb8 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers8 + | CreateManagerResponseProviderGkeGateway8 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7 = + ClosedEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7 + >; + +export type CreateManagerResponseProviderAzureApplicationGatewayForContainers7 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7; + }; + +export const CreateManagerResponseProviderGkeGatewayEnum7 = { + GkeGateway: "gkeGateway", +} as const; +export type CreateManagerResponseProviderGkeGatewayEnum7 = ClosedEnum< + typeof CreateManagerResponseProviderGkeGatewayEnum7 +>; + +export type CreateManagerResponseProviderGkeGateway7 = { + provider: CreateManagerResponseProviderGkeGatewayEnum7; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const CreateManagerResponseProviderAwsAlbEnum7 = { + AwsAlb: "awsAlb", +} as const; +export type CreateManagerResponseProviderAwsAlbEnum7 = ClosedEnum< + typeof CreateManagerResponseProviderAwsAlbEnum7 +>; + +export type CreateManagerResponseProviderAwsAlb7 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: CreateManagerResponseProviderAwsAlbEnum7; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type CreateManagerResponseProviderUnion7 = + | CreateManagerResponseProviderAwsAlb7 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers7 + | CreateManagerResponseProviderGkeGateway7 + | any; + +/** + * Shared Ingress route profile values. + */ +export type CreateManagerResponseRouteIngress4 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | CreateManagerResponseProviderAwsAlb7 + | CreateManagerResponseProviderAzureApplicationGatewayForContainers7 + | CreateManagerResponseProviderGkeGateway7 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type CreateManagerResponseRouteUnion4 = + | CreateManagerResponseRouteIngress4 + | CreateManagerResponseRouteGateway4; + +/** @internal */ +export const CreateManagerResponseSetupStatus$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseSetupStatus +> = z.enum(CreateManagerResponseSetupStatus); + +/** @internal */ +export const CreateManagerResponseEnvironmentVariableType$inboundSchema: + z.ZodEnum = z.enum( + CreateManagerResponseEnvironmentVariableType, + ); + +/** @internal */ +export const CreateManagerResponseEnvironmentVariable$inboundSchema: z.ZodType< + CreateManagerResponseEnvironmentVariable, + unknown +> = z.object({ + name: z.string(), + type: CreateManagerResponseEnvironmentVariableType$inboundSchema, + targetResources: z.nullable(z.array(z.string())), +}); + +export function createManagerResponseEnvironmentVariableFromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseEnvironmentVariable, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseEnvironmentVariable$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseEnvironmentVariable' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseSetupConfig$inboundSchema: z.ZodType< + CreateManagerResponseSetupConfig, + unknown +> = z.object({ + metadata: z.record(z.string(), z.nullable(z.any())), + policy: DeploymentSetupPolicy$inboundSchema, + inputValues: z.record(z.string(), EncryptedStackInputValue$inboundSchema) + .optional(), + environmentVariables: z.array( + z.lazy(() => CreateManagerResponseEnvironmentVariable$inboundSchema), + ), +}); + +export function createManagerResponseSetupConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseSetupConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseSetupConfig' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponsePoolsAutoscale3$inboundSchema: z.ZodType< + CreateManagerResponsePoolsAutoscale3, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}); + +export function createManagerResponsePoolsAutoscale3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponsePoolsAutoscale3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponsePoolsAutoscale3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponsePoolsFixed3$inboundSchema: z.ZodType< + CreateManagerResponsePoolsFixed3, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}); + +export function createManagerResponsePoolsFixed3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponsePoolsFixed3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponsePoolsFixed3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponsePoolsUnion3$inboundSchema: z.ZodType< + CreateManagerResponsePoolsUnion3, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponsePoolsFixed3$inboundSchema), + z.lazy(() => CreateManagerResponsePoolsAutoscale3$inboundSchema), +]); + +export function createManagerResponsePoolsUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponsePoolsUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponsePoolsUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCompute3$inboundSchema: z.ZodType< + CreateManagerResponseCompute3, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => CreateManagerResponsePoolsFixed3$inboundSchema), + z.lazy(() => CreateManagerResponsePoolsAutoscale3$inboundSchema), + ]), + ).optional(), +}); + +export function createManagerResponseCompute3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseCompute3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCompute3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseComputeUnion3$inboundSchema: z.ZodType< + CreateManagerResponseComputeUnion3, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseCompute3$inboundSchema), + z.any(), +]); + +export function createManagerResponseComputeUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseComputeUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseComputeUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDeploymentModel3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseDeploymentModel3 +> = z.enum(CreateManagerResponseDeploymentModel3); + +/** @internal */ +export const CreateManagerResponseAws3$inboundSchema: z.ZodType< + CreateManagerResponseAws3, + unknown +> = z.object({ + certificateArn: z.string(), +}); + +export function createManagerResponseAws3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseAws3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseAws3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseAwsUnion3$inboundSchema: z.ZodType< + CreateManagerResponseAwsUnion3, + unknown +> = z.union([z.lazy(() => CreateManagerResponseAws3$inboundSchema), z.any()]); + +export function createManagerResponseAwsUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseAwsUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseAwsUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseAzure3$inboundSchema: z.ZodType< + CreateManagerResponseAzure3, + unknown +> = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), +}); + +export function createManagerResponseAzure3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseAzure3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseAzure3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseAzureUnion3$inboundSchema: z.ZodType< + CreateManagerResponseAzureUnion3, + unknown +> = z.union([z.lazy(() => CreateManagerResponseAzure3$inboundSchema), z.any()]); + +export function createManagerResponseAzureUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseAzureUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseAzureUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseGcp3$inboundSchema: z.ZodType< + CreateManagerResponseGcp3, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function createManagerResponseGcp3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseGcp3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseGcp3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseGcpUnion3$inboundSchema: z.ZodType< + CreateManagerResponseGcpUnion3, + unknown +> = z.union([z.lazy(() => CreateManagerResponseGcp3$inboundSchema), z.any()]); + +export function createManagerResponseGcpUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseGcpUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseGcpUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseTlsSecretRef3$inboundSchema: z.ZodType< + CreateManagerResponseTlsSecretRef3, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function createManagerResponseTlsSecretRef3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseTlsSecretRef3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseTlsSecretRef3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDomainsKubernetes3$inboundSchema: z.ZodType< + CreateManagerResponseDomainsKubernetes3, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => CreateManagerResponseTlsSecretRef3$inboundSchema), +}); + +export function createManagerResponseDomainsKubernetes3FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseDomainsKubernetes3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseDomainsKubernetes3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseDomainsKubernetes3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDomainsKubernetesUnion3$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => CreateManagerResponseDomainsKubernetes3$inboundSchema), + z.any(), + ]); + +export function createManagerResponseDomainsKubernetesUnion3FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseDomainsKubernetesUnion3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseDomainsKubernetesUnion3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseDomainsKubernetesUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDomainsCertificate3$inboundSchema: z.ZodType< + CreateManagerResponseDomainsCertificate3, + unknown +> = z.object({ + aws: z.nullable( + z.union([z.lazy(() => CreateManagerResponseAws3$inboundSchema), z.any()]), + ).optional(), + azure: z.nullable( + z.union([z.lazy(() => CreateManagerResponseAzure3$inboundSchema), z.any()]), + ).optional(), + gcp: z.nullable( + z.union([z.lazy(() => CreateManagerResponseGcp3$inboundSchema), z.any()]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseDomainsKubernetes3$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function createManagerResponseDomainsCertificate3FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseDomainsCertificate3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseDomainsCertificate3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseDomainsCertificate3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCustomDomains3$inboundSchema: z.ZodType< + CreateManagerResponseCustomDomains3, + unknown +> = z.object({ + certificate: z.lazy(() => + CreateManagerResponseDomainsCertificate3$inboundSchema + ), + domain: z.string(), +}); + +export function createManagerResponseCustomDomains3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCustomDomains3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCustomDomains3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDomains3$inboundSchema: z.ZodType< + CreateManagerResponseDomains3, + unknown +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => CreateManagerResponseCustomDomains3$inboundSchema), + ), + ).optional(), +}); + +export function createManagerResponseDomains3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseDomains3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseDomains3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDomainsUnion3$inboundSchema: z.ZodType< + CreateManagerResponseDomainsUnion3, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseDomains3$inboundSchema), + z.any(), +]); + +export function createManagerResponseDomainsUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseDomainsUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseDomainsUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseExternalBindings3$inboundSchema: z.ZodType< + CreateManagerResponseExternalBindings3, + unknown +> = z.object({}); + +export function createManagerResponseExternalBindings3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseExternalBindings3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseExternalBindings3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseHeartbeats3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseHeartbeats3 +> = z.enum(CreateManagerResponseHeartbeats3); + +/** @internal */ +export const CreateManagerResponseCloud3$inboundSchema: z.ZodType< + CreateManagerResponseCloud3, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function createManagerResponseCloud3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseCloud3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCloud3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCloudUnion3$inboundSchema: z.ZodType< + CreateManagerResponseCloudUnion3, + unknown +> = z.union([z.lazy(() => CreateManagerResponseCloud3$inboundSchema), z.any()]); + +export function createManagerResponseCloudUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseCloudUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCloudUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseOwnership3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseOwnership3 +> = z.enum(CreateManagerResponseOwnership3); + +/** @internal */ +export const CreateManagerResponseCluster3$inboundSchema: z.ZodType< + CreateManagerResponseCluster3, + unknown +> = z.object({ + cloud: z.nullable( + z.union([z.lazy(() => CreateManagerResponseCloud3$inboundSchema), z.any()]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: CreateManagerResponseOwnership3$inboundSchema, +}); + +export function createManagerResponseCluster3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseCluster3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCluster3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseClusterUnion3$inboundSchema: z.ZodType< + CreateManagerResponseClusterUnion3, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseCluster3$inboundSchema), + z.any(), +]); + +export function createManagerResponseClusterUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseClusterUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseClusterUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateNone6$inboundSchema: z.ZodType< + CreateManagerResponseCertificateNone6, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function createManagerResponseCertificateNone6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateNone6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCertificateNone6' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateManagedTLSSecret6$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function createManagerResponseCertificateManagedTLSSecret6FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateManagedTLSSecret6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateManagedTLSSecret6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateManagedTLSSecret6' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateAwsAcmArn6$inboundSchema: + z.ZodType = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function createManagerResponseCertificateAwsAcmArn6FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateAwsAcmArn6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateAwsAcmArn6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateAwsAcmArn6' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateManagedAcmImport6$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function createManagerResponseCertificateManagedAcmImport6FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateManagedAcmImport6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateManagedAcmImport6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateManagedAcmImport6' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateTLSSecretRef6$inboundSchema: + z.ZodType = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function createManagerResponseCertificateTLSSecretRef6FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateTLSSecretRef6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateTLSSecretRef6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateTLSSecretRef6' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateUnion6$inboundSchema: z.ZodType< + CreateManagerResponseCertificateUnion6, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseCertificateTLSSecretRef6$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateManagedAcmImport6$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateAwsAcmArn6$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateManagedTLSSecret6$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateNone6$inboundSchema), +]); + +export function createManagerResponseCertificateUnion6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateUnion6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCertificateUnion6' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseModeCustom3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseModeCustom3 +> = z.enum(CreateManagerResponseModeCustom3); + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12$inboundSchema: + z.ZodEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12 + > = z.enum( + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12, + ); + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainers12$inboundSchema: + z.ZodType< + CreateManagerResponseProviderAzureApplicationGatewayForContainers12, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum12$inboundSchema, + }); + +export function createManagerResponseProviderAzureApplicationGatewayForContainers12FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderAzureApplicationGatewayForContainers12, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAzureApplicationGatewayForContainers12$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers12' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderGkeGatewayEnum12$inboundSchema: + z.ZodEnum = z.enum( + CreateManagerResponseProviderGkeGatewayEnum12, + ); + +/** @internal */ +export const CreateManagerResponseProviderGkeGateway12$inboundSchema: z.ZodType< + CreateManagerResponseProviderGkeGateway12, + unknown +> = z.object({ + provider: CreateManagerResponseProviderGkeGatewayEnum12$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function createManagerResponseProviderGkeGateway12FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderGkeGateway12, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderGkeGateway12$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseProviderGkeGateway12' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderAwsAlbEnum12$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseProviderAwsAlbEnum12 +> = z.enum(CreateManagerResponseProviderAwsAlbEnum12); + +/** @internal */ +export const CreateManagerResponseProviderAwsAlb12$inboundSchema: z.ZodType< + CreateManagerResponseProviderAwsAlb12, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: CreateManagerResponseProviderAwsAlbEnum12$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function createManagerResponseProviderAwsAlb12FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAwsAlb12$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAwsAlb12' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderUnion12$inboundSchema: z.ZodType< + CreateManagerResponseProviderUnion12, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb12$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers12$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway12$inboundSchema), + z.any(), +]); + +export function createManagerResponseProviderUnion12FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderUnion12$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderUnion12' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseRouteGateway6$inboundSchema: z.ZodType< + CreateManagerResponseRouteGateway6, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb12$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers12$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway12$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function createManagerResponseRouteGateway6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseRouteGateway6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseRouteGateway6' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11$inboundSchema: + z.ZodEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11 + > = z.enum( + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11, + ); + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainers11$inboundSchema: + z.ZodType< + CreateManagerResponseProviderAzureApplicationGatewayForContainers11, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum11$inboundSchema, + }); + +export function createManagerResponseProviderAzureApplicationGatewayForContainers11FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderAzureApplicationGatewayForContainers11, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAzureApplicationGatewayForContainers11$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers11' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderGkeGatewayEnum11$inboundSchema: + z.ZodEnum = z.enum( + CreateManagerResponseProviderGkeGatewayEnum11, + ); + +/** @internal */ +export const CreateManagerResponseProviderGkeGateway11$inboundSchema: z.ZodType< + CreateManagerResponseProviderGkeGateway11, + unknown +> = z.object({ + provider: CreateManagerResponseProviderGkeGatewayEnum11$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function createManagerResponseProviderGkeGateway11FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderGkeGateway11, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderGkeGateway11$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseProviderGkeGateway11' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderAwsAlbEnum11$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseProviderAwsAlbEnum11 +> = z.enum(CreateManagerResponseProviderAwsAlbEnum11); + +/** @internal */ +export const CreateManagerResponseProviderAwsAlb11$inboundSchema: z.ZodType< + CreateManagerResponseProviderAwsAlb11, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: CreateManagerResponseProviderAwsAlbEnum11$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function createManagerResponseProviderAwsAlb11FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAwsAlb11$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAwsAlb11' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderUnion11$inboundSchema: z.ZodType< + CreateManagerResponseProviderUnion11, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb11$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers11$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway11$inboundSchema), + z.any(), +]); + +export function createManagerResponseProviderUnion11FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderUnion11$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderUnion11' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseRouteIngress6$inboundSchema: z.ZodType< + CreateManagerResponseRouteIngress6, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb11$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers11$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway11$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function createManagerResponseRouteIngress6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseRouteIngress6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseRouteIngress6' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseRouteUnion6$inboundSchema: z.ZodType< + CreateManagerResponseRouteUnion6, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseRouteIngress6$inboundSchema), + z.lazy(() => CreateManagerResponseRouteGateway6$inboundSchema), +]); + +export function createManagerResponseRouteUnion6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseRouteUnion6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseRouteUnion6' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseExposureCustom3$inboundSchema: z.ZodType< + CreateManagerResponseExposureCustom3, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => CreateManagerResponseCertificateTLSSecretRef6$inboundSchema), + z.lazy(() => + CreateManagerResponseCertificateManagedAcmImport6$inboundSchema + ), + z.lazy(() => CreateManagerResponseCertificateAwsAcmArn6$inboundSchema), + z.lazy(() => + CreateManagerResponseCertificateManagedTLSSecret6$inboundSchema + ), + z.lazy(() => CreateManagerResponseCertificateNone6$inboundSchema), + ]), + domain: z.string(), + mode: CreateManagerResponseModeCustom3$inboundSchema, + route: z.union([ + z.lazy(() => CreateManagerResponseRouteIngress6$inboundSchema), + z.lazy(() => CreateManagerResponseRouteGateway6$inboundSchema), + ]), +}); + +export function createManagerResponseExposureCustom3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseExposureCustom3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseExposureCustom3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateNone5$inboundSchema: z.ZodType< + CreateManagerResponseCertificateNone5, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function createManagerResponseCertificateNone5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateNone5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCertificateNone5' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateManagedTLSSecret5$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function createManagerResponseCertificateManagedTLSSecret5FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateManagedTLSSecret5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateManagedTLSSecret5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateManagedTLSSecret5' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateAwsAcmArn5$inboundSchema: + z.ZodType = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function createManagerResponseCertificateAwsAcmArn5FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateAwsAcmArn5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateAwsAcmArn5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateAwsAcmArn5' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateManagedAcmImport5$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function createManagerResponseCertificateManagedAcmImport5FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateManagedAcmImport5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateManagedAcmImport5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateManagedAcmImport5' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateTLSSecretRef5$inboundSchema: + z.ZodType = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function createManagerResponseCertificateTLSSecretRef5FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateTLSSecretRef5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateTLSSecretRef5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateTLSSecretRef5' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateUnion5$inboundSchema: z.ZodType< + CreateManagerResponseCertificateUnion5, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseCertificateTLSSecretRef5$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateManagedAcmImport5$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateAwsAcmArn5$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateManagedTLSSecret5$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateNone5$inboundSchema), +]); + +export function createManagerResponseCertificateUnion5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateUnion5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCertificateUnion5' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseModeGenerated3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseModeGenerated3 +> = z.enum(CreateManagerResponseModeGenerated3); + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10$inboundSchema: + z.ZodEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10 + > = z.enum( + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10, + ); + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainers10$inboundSchema: + z.ZodType< + CreateManagerResponseProviderAzureApplicationGatewayForContainers10, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum10$inboundSchema, + }); + +export function createManagerResponseProviderAzureApplicationGatewayForContainers10FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderAzureApplicationGatewayForContainers10, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAzureApplicationGatewayForContainers10$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers10' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderGkeGatewayEnum10$inboundSchema: + z.ZodEnum = z.enum( + CreateManagerResponseProviderGkeGatewayEnum10, + ); + +/** @internal */ +export const CreateManagerResponseProviderGkeGateway10$inboundSchema: z.ZodType< + CreateManagerResponseProviderGkeGateway10, + unknown +> = z.object({ + provider: CreateManagerResponseProviderGkeGatewayEnum10$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function createManagerResponseProviderGkeGateway10FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderGkeGateway10, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderGkeGateway10$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseProviderGkeGateway10' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderAwsAlbEnum10$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseProviderAwsAlbEnum10 +> = z.enum(CreateManagerResponseProviderAwsAlbEnum10); + +/** @internal */ +export const CreateManagerResponseProviderAwsAlb10$inboundSchema: z.ZodType< + CreateManagerResponseProviderAwsAlb10, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: CreateManagerResponseProviderAwsAlbEnum10$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function createManagerResponseProviderAwsAlb10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAwsAlb10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAwsAlb10' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderUnion10$inboundSchema: z.ZodType< + CreateManagerResponseProviderUnion10, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb10$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers10$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway10$inboundSchema), + z.any(), +]); + +export function createManagerResponseProviderUnion10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderUnion10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderUnion10' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseRouteGateway5$inboundSchema: z.ZodType< + CreateManagerResponseRouteGateway5, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb10$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers10$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway10$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function createManagerResponseRouteGateway5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseRouteGateway5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseRouteGateway5' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9$inboundSchema: + z.ZodEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9 + > = z.enum( + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9, + ); + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainers9$inboundSchema: + z.ZodType< + CreateManagerResponseProviderAzureApplicationGatewayForContainers9, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum9$inboundSchema, + }); + +export function createManagerResponseProviderAzureApplicationGatewayForContainers9FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderAzureApplicationGatewayForContainers9, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAzureApplicationGatewayForContainers9$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers9' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderGkeGatewayEnum9$inboundSchema: + z.ZodEnum = z.enum( + CreateManagerResponseProviderGkeGatewayEnum9, + ); + +/** @internal */ +export const CreateManagerResponseProviderGkeGateway9$inboundSchema: z.ZodType< + CreateManagerResponseProviderGkeGateway9, + unknown +> = z.object({ + provider: CreateManagerResponseProviderGkeGatewayEnum9$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function createManagerResponseProviderGkeGateway9FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderGkeGateway9, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderGkeGateway9$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseProviderGkeGateway9' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderAwsAlbEnum9$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseProviderAwsAlbEnum9 +> = z.enum(CreateManagerResponseProviderAwsAlbEnum9); + +/** @internal */ +export const CreateManagerResponseProviderAwsAlb9$inboundSchema: z.ZodType< + CreateManagerResponseProviderAwsAlb9, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: CreateManagerResponseProviderAwsAlbEnum9$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function createManagerResponseProviderAwsAlb9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAwsAlb9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAwsAlb9' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderUnion9$inboundSchema: z.ZodType< + CreateManagerResponseProviderUnion9, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb9$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers9$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway9$inboundSchema), + z.any(), +]); + +export function createManagerResponseProviderUnion9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderUnion9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderUnion9' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseRouteIngress5$inboundSchema: z.ZodType< + CreateManagerResponseRouteIngress5, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb9$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers9$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway9$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function createManagerResponseRouteIngress5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseRouteIngress5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseRouteIngress5' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseRouteUnion5$inboundSchema: z.ZodType< + CreateManagerResponseRouteUnion5, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseRouteIngress5$inboundSchema), + z.lazy(() => CreateManagerResponseRouteGateway5$inboundSchema), +]); + +export function createManagerResponseRouteUnion5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseRouteUnion5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseRouteUnion5' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseExposureGenerated3$inboundSchema: z.ZodType< + CreateManagerResponseExposureGenerated3, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => CreateManagerResponseCertificateTLSSecretRef5$inboundSchema), + z.lazy(() => + CreateManagerResponseCertificateManagedAcmImport5$inboundSchema + ), + z.lazy(() => CreateManagerResponseCertificateAwsAcmArn5$inboundSchema), + z.lazy(() => + CreateManagerResponseCertificateManagedTLSSecret5$inboundSchema + ), + z.lazy(() => CreateManagerResponseCertificateNone5$inboundSchema), + ]), + mode: CreateManagerResponseModeGenerated3$inboundSchema, + route: z.union([ + z.lazy(() => CreateManagerResponseRouteIngress5$inboundSchema), + z.lazy(() => CreateManagerResponseRouteGateway5$inboundSchema), + ]), +}); + +export function createManagerResponseExposureGenerated3FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseExposureGenerated3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseExposureGenerated3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseExposureGenerated3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseModeDisabled3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseModeDisabled3 +> = z.enum(CreateManagerResponseModeDisabled3); + +/** @internal */ +export const CreateManagerResponseExposureDisabled3$inboundSchema: z.ZodType< + CreateManagerResponseExposureDisabled3, + unknown +> = z.object({ + mode: CreateManagerResponseModeDisabled3$inboundSchema, +}); + +export function createManagerResponseExposureDisabled3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseExposureDisabled3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseExposureDisabled3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseExposureUnion3$inboundSchema: z.ZodType< + CreateManagerResponseExposureUnion3, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseExposureCustom3$inboundSchema), + z.lazy(() => CreateManagerResponseExposureGenerated3$inboundSchema), + z.lazy(() => CreateManagerResponseExposureDisabled3$inboundSchema), + z.any(), +]); + +export function createManagerResponseExposureUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseExposureUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseExposureUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseKubernetes3$inboundSchema: z.ZodType< + CreateManagerResponseKubernetes3, + unknown +> = z.object({ + cluster: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseCluster3$inboundSchema), + z.any(), + ]), + ).optional(), + exposure: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseExposureCustom3$inboundSchema), + z.lazy(() => CreateManagerResponseExposureGenerated3$inboundSchema), + z.lazy(() => CreateManagerResponseExposureDisabled3$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function createManagerResponseKubernetes3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseKubernetes3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseKubernetes3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseKubernetesUnion3$inboundSchema: z.ZodType< + CreateManagerResponseKubernetesUnion3, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseKubernetes3$inboundSchema), + z.any(), +]); + +export function createManagerResponseKubernetesUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseKubernetesUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseKubernetesUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseTypeByoVnetAzure3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseTypeByoVnetAzure3 +> = z.enum(CreateManagerResponseTypeByoVnetAzure3); + +/** @internal */ +export const CreateManagerResponseNetworkByoVnetAzure3$inboundSchema: z.ZodType< + CreateManagerResponseNetworkByoVnetAzure3, + unknown +> = z.object({ + application_gateway_subnet_name: z.nullable(z.string()).optional(), + private_subnet_name: z.string(), + public_subnet_name: z.string(), + type: CreateManagerResponseTypeByoVnetAzure3$inboundSchema, + vnet_resource_id: z.string(), +}).transform((v) => { + return remap$(v, { + "application_gateway_subnet_name": "applicationGatewaySubnetName", + "private_subnet_name": "privateSubnetName", + "public_subnet_name": "publicSubnetName", + "vnet_resource_id": "vnetResourceId", + }); +}); + +export function createManagerResponseNetworkByoVnetAzure3FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseNetworkByoVnetAzure3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseNetworkByoVnetAzure3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseNetworkByoVnetAzure3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseTypeByoVpcGcp3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseTypeByoVpcGcp3 +> = z.enum(CreateManagerResponseTypeByoVpcGcp3); + +/** @internal */ +export const CreateManagerResponseNetworkByoVpcGcp3$inboundSchema: z.ZodType< + CreateManagerResponseNetworkByoVpcGcp3, + unknown +> = z.object({ + network_name: z.string(), + region: z.string(), + subnet_name: z.string(), + type: CreateManagerResponseTypeByoVpcGcp3$inboundSchema, +}).transform((v) => { + return remap$(v, { + "network_name": "networkName", + "subnet_name": "subnetName", + }); +}); + +export function createManagerResponseNetworkByoVpcGcp3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseNetworkByoVpcGcp3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseNetworkByoVpcGcp3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseTypeByoVpcAws3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseTypeByoVpcAws3 +> = z.enum(CreateManagerResponseTypeByoVpcAws3); + +/** @internal */ +export const CreateManagerResponseNetworkByoVpcAws3$inboundSchema: z.ZodType< + CreateManagerResponseNetworkByoVpcAws3, + unknown +> = z.object({ + private_subnet_ids: z.array(z.string()), + public_subnet_ids: z.array(z.string()), + security_group_ids: z.array(z.string()).optional(), + type: CreateManagerResponseTypeByoVpcAws3$inboundSchema, + vpc_id: z.string(), +}).transform((v) => { + return remap$(v, { + "private_subnet_ids": "privateSubnetIds", + "public_subnet_ids": "publicSubnetIds", + "security_group_ids": "securityGroupIds", + "vpc_id": "vpcId", + }); +}); + +export function createManagerResponseNetworkByoVpcAws3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseNetworkByoVpcAws3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseNetworkByoVpcAws3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseTypeCreate3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseTypeCreate3 +> = z.enum(CreateManagerResponseTypeCreate3); + +/** @internal */ +export const CreateManagerResponseNetworkCreate3$inboundSchema: z.ZodType< + CreateManagerResponseNetworkCreate3, + unknown +> = z.object({ + availability_zones: z.int().optional(), + cidr: z.nullable(z.string()).optional(), + type: CreateManagerResponseTypeCreate3$inboundSchema, +}).transform((v) => { + return remap$(v, { + "availability_zones": "availabilityZones", + }); +}); + +export function createManagerResponseNetworkCreate3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseNetworkCreate3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseNetworkCreate3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseTypeUseDefault3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseTypeUseDefault3 +> = z.enum(CreateManagerResponseTypeUseDefault3); + +/** @internal */ +export const CreateManagerResponseNetworkUseDefault3$inboundSchema: z.ZodType< + CreateManagerResponseNetworkUseDefault3, + unknown +> = z.object({ + type: CreateManagerResponseTypeUseDefault3$inboundSchema, +}); + +export function createManagerResponseNetworkUseDefault3FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseNetworkUseDefault3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseNetworkUseDefault3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseNetworkUseDefault3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseNetworkUnion3$inboundSchema: z.ZodType< + CreateManagerResponseNetworkUnion3, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseNetworkByoVpcAws3$inboundSchema), + z.lazy(() => CreateManagerResponseNetworkByoVpcGcp3$inboundSchema), + z.lazy(() => CreateManagerResponseNetworkByoVnetAzure3$inboundSchema), + z.lazy(() => CreateManagerResponseNetworkUseDefault3$inboundSchema), + z.lazy(() => CreateManagerResponseNetworkCreate3$inboundSchema), + z.any(), +]); + +export function createManagerResponseNetworkUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseNetworkUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseNetworkUnion3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseTelemetry3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseTelemetry3 +> = z.enum(CreateManagerResponseTelemetry3); + +/** @internal */ +export const CreateManagerResponseUpdates3$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseUpdates3 +> = z.enum(CreateManagerResponseUpdates3); + +/** @internal */ +export const CreateManagerResponseStackSettings3$inboundSchema: z.ZodType< + CreateManagerResponseStackSettings3, + unknown +> = z.object({ + compute: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseCompute3$inboundSchema), + z.any(), + ]), + ).optional(), + deploymentModel: CreateManagerResponseDeploymentModel3$inboundSchema + .optional(), + domains: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseDomains3$inboundSchema), + z.any(), + ]), + ).optional(), + externalBindings: z.nullable( + z.lazy(() => CreateManagerResponseExternalBindings3$inboundSchema), + ).optional(), + heartbeats: CreateManagerResponseHeartbeats3$inboundSchema.optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseKubernetes3$inboundSchema), + z.any(), + ]), + ).optional(), + network: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseNetworkByoVpcAws3$inboundSchema), + z.lazy(() => CreateManagerResponseNetworkByoVpcGcp3$inboundSchema), + z.lazy(() => CreateManagerResponseNetworkByoVnetAzure3$inboundSchema), + z.lazy(() => CreateManagerResponseNetworkUseDefault3$inboundSchema), + z.lazy(() => CreateManagerResponseNetworkCreate3$inboundSchema), + z.any(), + ]), + ).optional(), + telemetry: CreateManagerResponseTelemetry3$inboundSchema.optional(), + updates: CreateManagerResponseUpdates3$inboundSchema.optional(), +}); + +export function createManagerResponseStackSettings3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseStackSettings3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseStackSettings3' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseSetupTerraform$inboundSchema: z.ZodType< + CreateManagerResponseSetupTerraform, + unknown +> = z.object({ + method: z.literal("terraform"), + deploymentPortalUrl: z.string(), + managerUrl: z.string(), + providerSource: z.string(), + moduleSource: z.string(), + moduleVersion: z.string().optional(), + moduleInputs: z.record(z.string(), z.string()), + mainTf: z.string(), + tfvars: z.string(), + commands: z.string(), + stackSettings: z.lazy(() => + CreateManagerResponseStackSettings3$inboundSchema + ), +}); + +export function createManagerResponseSetupTerraformFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseSetupTerraform$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseSetupTerraform' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponsePoolsAutoscale2$inboundSchema: z.ZodType< + CreateManagerResponsePoolsAutoscale2, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}); + +export function createManagerResponsePoolsAutoscale2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponsePoolsAutoscale2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponsePoolsAutoscale2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponsePoolsFixed2$inboundSchema: z.ZodType< + CreateManagerResponsePoolsFixed2, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}); + +export function createManagerResponsePoolsFixed2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponsePoolsFixed2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponsePoolsFixed2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponsePoolsUnion2$inboundSchema: z.ZodType< + CreateManagerResponsePoolsUnion2, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponsePoolsFixed2$inboundSchema), + z.lazy(() => CreateManagerResponsePoolsAutoscale2$inboundSchema), +]); + +export function createManagerResponsePoolsUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponsePoolsUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponsePoolsUnion2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCompute2$inboundSchema: z.ZodType< + CreateManagerResponseCompute2, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => CreateManagerResponsePoolsFixed2$inboundSchema), + z.lazy(() => CreateManagerResponsePoolsAutoscale2$inboundSchema), + ]), + ).optional(), +}); + +export function createManagerResponseCompute2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseCompute2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCompute2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseComputeUnion2$inboundSchema: z.ZodType< + CreateManagerResponseComputeUnion2, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseCompute2$inboundSchema), + z.any(), +]); + +export function createManagerResponseComputeUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseComputeUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseComputeUnion2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDeploymentModel2$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseDeploymentModel2 +> = z.enum(CreateManagerResponseDeploymentModel2); + +/** @internal */ +export const CreateManagerResponseAws2$inboundSchema: z.ZodType< + CreateManagerResponseAws2, + unknown +> = z.object({ + certificateArn: z.string(), +}); + +export function createManagerResponseAws2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseAws2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseAws2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseAwsUnion2$inboundSchema: z.ZodType< + CreateManagerResponseAwsUnion2, + unknown +> = z.union([z.lazy(() => CreateManagerResponseAws2$inboundSchema), z.any()]); + +export function createManagerResponseAwsUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseAwsUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseAwsUnion2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseAzure2$inboundSchema: z.ZodType< + CreateManagerResponseAzure2, + unknown +> = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), +}); + +export function createManagerResponseAzure2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseAzure2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseAzure2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseAzureUnion2$inboundSchema: z.ZodType< + CreateManagerResponseAzureUnion2, + unknown +> = z.union([z.lazy(() => CreateManagerResponseAzure2$inboundSchema), z.any()]); + +export function createManagerResponseAzureUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseAzureUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseAzureUnion2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseGcp2$inboundSchema: z.ZodType< + CreateManagerResponseGcp2, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function createManagerResponseGcp2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseGcp2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseGcp2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseGcpUnion2$inboundSchema: z.ZodType< + CreateManagerResponseGcpUnion2, + unknown +> = z.union([z.lazy(() => CreateManagerResponseGcp2$inboundSchema), z.any()]); + +export function createManagerResponseGcpUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseGcpUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseGcpUnion2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseTlsSecretRef2$inboundSchema: z.ZodType< + CreateManagerResponseTlsSecretRef2, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function createManagerResponseTlsSecretRef2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseTlsSecretRef2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseTlsSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDomainsKubernetes2$inboundSchema: z.ZodType< + CreateManagerResponseDomainsKubernetes2, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => CreateManagerResponseTlsSecretRef2$inboundSchema), +}); + +export function createManagerResponseDomainsKubernetes2FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseDomainsKubernetes2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseDomainsKubernetes2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseDomainsKubernetes2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDomainsKubernetesUnion2$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => CreateManagerResponseDomainsKubernetes2$inboundSchema), + z.any(), + ]); + +export function createManagerResponseDomainsKubernetesUnion2FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseDomainsKubernetesUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseDomainsKubernetesUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseDomainsKubernetesUnion2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDomainsCertificate2$inboundSchema: z.ZodType< + CreateManagerResponseDomainsCertificate2, + unknown +> = z.object({ + aws: z.nullable( + z.union([z.lazy(() => CreateManagerResponseAws2$inboundSchema), z.any()]), + ).optional(), + azure: z.nullable( + z.union([z.lazy(() => CreateManagerResponseAzure2$inboundSchema), z.any()]), + ).optional(), + gcp: z.nullable( + z.union([z.lazy(() => CreateManagerResponseGcp2$inboundSchema), z.any()]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseDomainsKubernetes2$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function createManagerResponseDomainsCertificate2FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseDomainsCertificate2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseDomainsCertificate2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseDomainsCertificate2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCustomDomains2$inboundSchema: z.ZodType< + CreateManagerResponseCustomDomains2, + unknown +> = z.object({ + certificate: z.lazy(() => + CreateManagerResponseDomainsCertificate2$inboundSchema + ), + domain: z.string(), +}); + +export function createManagerResponseCustomDomains2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCustomDomains2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCustomDomains2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDomains2$inboundSchema: z.ZodType< + CreateManagerResponseDomains2, + unknown +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => CreateManagerResponseCustomDomains2$inboundSchema), + ), + ).optional(), +}); + +export function createManagerResponseDomains2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseDomains2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseDomains2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseDomainsUnion2$inboundSchema: z.ZodType< + CreateManagerResponseDomainsUnion2, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseDomains2$inboundSchema), + z.any(), +]); + +export function createManagerResponseDomainsUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseDomainsUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseDomainsUnion2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseExternalBindings2$inboundSchema: z.ZodType< + CreateManagerResponseExternalBindings2, + unknown +> = z.object({}); + +export function createManagerResponseExternalBindings2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseExternalBindings2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseExternalBindings2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseHeartbeats2$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseHeartbeats2 +> = z.enum(CreateManagerResponseHeartbeats2); + +/** @internal */ +export const CreateManagerResponseCloud2$inboundSchema: z.ZodType< + CreateManagerResponseCloud2, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function createManagerResponseCloud2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseCloud2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCloud2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCloudUnion2$inboundSchema: z.ZodType< + CreateManagerResponseCloudUnion2, + unknown +> = z.union([z.lazy(() => CreateManagerResponseCloud2$inboundSchema), z.any()]); + +export function createManagerResponseCloudUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseCloudUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCloudUnion2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseOwnership2$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseOwnership2 +> = z.enum(CreateManagerResponseOwnership2); + +/** @internal */ +export const CreateManagerResponseCluster2$inboundSchema: z.ZodType< + CreateManagerResponseCluster2, + unknown +> = z.object({ + cloud: z.nullable( + z.union([z.lazy(() => CreateManagerResponseCloud2$inboundSchema), z.any()]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: CreateManagerResponseOwnership2$inboundSchema, +}); + +export function createManagerResponseCluster2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseCluster2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCluster2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseClusterUnion2$inboundSchema: z.ZodType< + CreateManagerResponseClusterUnion2, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseCluster2$inboundSchema), + z.any(), +]); + +export function createManagerResponseClusterUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseClusterUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseClusterUnion2' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateNone4$inboundSchema: z.ZodType< + CreateManagerResponseCertificateNone4, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function createManagerResponseCertificateNone4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateNone4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCertificateNone4' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateManagedTLSSecret4$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function createManagerResponseCertificateManagedTLSSecret4FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateManagedTLSSecret4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateManagedTLSSecret4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateManagedTLSSecret4' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateAwsAcmArn4$inboundSchema: + z.ZodType = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function createManagerResponseCertificateAwsAcmArn4FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateAwsAcmArn4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateAwsAcmArn4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateAwsAcmArn4' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateManagedAcmImport4$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function createManagerResponseCertificateManagedAcmImport4FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateManagedAcmImport4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateManagedAcmImport4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateManagedAcmImport4' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateTLSSecretRef4$inboundSchema: + z.ZodType = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function createManagerResponseCertificateTLSSecretRef4FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseCertificateTLSSecretRef4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateTLSSecretRef4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseCertificateTLSSecretRef4' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseCertificateUnion4$inboundSchema: z.ZodType< + CreateManagerResponseCertificateUnion4, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseCertificateTLSSecretRef4$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateManagedAcmImport4$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateAwsAcmArn4$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateManagedTLSSecret4$inboundSchema), + z.lazy(() => CreateManagerResponseCertificateNone4$inboundSchema), +]); + +export function createManagerResponseCertificateUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseCertificateUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseCertificateUnion4' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseModeCustom2$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseModeCustom2 +> = z.enum(CreateManagerResponseModeCustom2); + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8$inboundSchema: + z.ZodEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8 + > = z.enum( + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8, + ); + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainers8$inboundSchema: + z.ZodType< + CreateManagerResponseProviderAzureApplicationGatewayForContainers8, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum8$inboundSchema, + }); + +export function createManagerResponseProviderAzureApplicationGatewayForContainers8FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderAzureApplicationGatewayForContainers8, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAzureApplicationGatewayForContainers8$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers8' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderGkeGatewayEnum8$inboundSchema: + z.ZodEnum = z.enum( + CreateManagerResponseProviderGkeGatewayEnum8, + ); + +/** @internal */ +export const CreateManagerResponseProviderGkeGateway8$inboundSchema: z.ZodType< + CreateManagerResponseProviderGkeGateway8, + unknown +> = z.object({ + provider: CreateManagerResponseProviderGkeGatewayEnum8$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function createManagerResponseProviderGkeGateway8FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderGkeGateway8, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderGkeGateway8$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseProviderGkeGateway8' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderAwsAlbEnum8$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseProviderAwsAlbEnum8 +> = z.enum(CreateManagerResponseProviderAwsAlbEnum8); + +/** @internal */ +export const CreateManagerResponseProviderAwsAlb8$inboundSchema: z.ZodType< + CreateManagerResponseProviderAwsAlb8, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: CreateManagerResponseProviderAwsAlbEnum8$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function createManagerResponseProviderAwsAlb8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAwsAlb8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAwsAlb8' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderUnion8$inboundSchema: z.ZodType< + CreateManagerResponseProviderUnion8, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb8$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers8$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway8$inboundSchema), + z.any(), +]); + +export function createManagerResponseProviderUnion8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderUnion8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderUnion8' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseRouteGateway4$inboundSchema: z.ZodType< + CreateManagerResponseRouteGateway4, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb8$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers8$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway8$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function createManagerResponseRouteGateway4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseRouteGateway4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseRouteGateway4' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7$inboundSchema: + z.ZodEnum< + typeof CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7 + > = z.enum( + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7, + ); + +/** @internal */ +export const CreateManagerResponseProviderAzureApplicationGatewayForContainers7$inboundSchema: + z.ZodType< + CreateManagerResponseProviderAzureApplicationGatewayForContainers7, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + CreateManagerResponseProviderAzureApplicationGatewayForContainersEnum7$inboundSchema, + }); + +export function createManagerResponseProviderAzureApplicationGatewayForContainers7FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderAzureApplicationGatewayForContainers7, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAzureApplicationGatewayForContainers7$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAzureApplicationGatewayForContainers7' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderGkeGatewayEnum7$inboundSchema: + z.ZodEnum = z.enum( + CreateManagerResponseProviderGkeGatewayEnum7, + ); + +/** @internal */ +export const CreateManagerResponseProviderGkeGateway7$inboundSchema: z.ZodType< + CreateManagerResponseProviderGkeGateway7, + unknown +> = z.object({ + provider: CreateManagerResponseProviderGkeGatewayEnum7$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function createManagerResponseProviderGkeGateway7FromJSON( + jsonString: string, +): SafeParseResult< + CreateManagerResponseProviderGkeGateway7, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderGkeGateway7$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'CreateManagerResponseProviderGkeGateway7' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderAwsAlbEnum7$inboundSchema: z.ZodEnum< + typeof CreateManagerResponseProviderAwsAlbEnum7 +> = z.enum(CreateManagerResponseProviderAwsAlbEnum7); + +/** @internal */ +export const CreateManagerResponseProviderAwsAlb7$inboundSchema: z.ZodType< + CreateManagerResponseProviderAwsAlb7, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: CreateManagerResponseProviderAwsAlbEnum7$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function createManagerResponseProviderAwsAlb7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderAwsAlb7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderAwsAlb7' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseProviderUnion7$inboundSchema: z.ZodType< + CreateManagerResponseProviderUnion7, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb7$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers7$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway7$inboundSchema), + z.any(), +]); + +export function createManagerResponseProviderUnion7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseProviderUnion7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseProviderUnion7' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseRouteIngress4$inboundSchema: z.ZodType< + CreateManagerResponseRouteIngress4, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => CreateManagerResponseProviderAwsAlb7$inboundSchema), + z.lazy(() => + CreateManagerResponseProviderAzureApplicationGatewayForContainers7$inboundSchema + ), + z.lazy(() => CreateManagerResponseProviderGkeGateway7$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function createManagerResponseRouteIngress4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + CreateManagerResponseRouteIngress4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseRouteIngress4' from JSON`, + ); +} + +/** @internal */ +export const CreateManagerResponseRouteUnion4$inboundSchema: z.ZodType< + CreateManagerResponseRouteUnion4, + unknown +> = z.union([ + z.lazy(() => CreateManagerResponseRouteIngress4$inboundSchema), + z.lazy(() => CreateManagerResponseRouteGateway4$inboundSchema), +]); + +export function createManagerResponseRouteUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CreateManagerResponseRouteUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CreateManagerResponseRouteUnion4' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/datagcpcloudstorage.ts b/client-sdks/platform/typescript/src/models/datagcpcloudstorage.ts new file mode 100644 index 000000000..40629a97d --- /dev/null +++ b/client-sdks/platform/typescript/src/models/datagcpcloudstorage.ts @@ -0,0 +1,4037 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; +import { + CpuUnion4, + CpuUnion4$Outbound, + CpuUnion4$outboundSchema, + DataLocal3, + DataLocal3$Outbound, + DataLocal3$outboundSchema, + MemoryUnion4, + MemoryUnion4$Outbound, + MemoryUnion4$outboundSchema, + SyncReconcileRequestEvent4, + SyncReconcileRequestEvent4$Outbound, + SyncReconcileRequestEvent4$outboundSchema, +} from "./memoryunion4.js"; + +export const CpuPodUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuPodUnit2 = ClosedEnum; + +export type CpuPod2 = { + unit: CpuPodUnit2; + value: number; +}; + +export type PodCpuUnion2 = CpuPod2 | any; + +export const MemoryPodUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryPodUnit2 = ClosedEnum; + +export type MemoryPod2 = { + unit: MemoryPodUnit2; + value: number; +}; + +export type PodMemoryUnion2 = MemoryPod2 | any; + +export type OwnerReference2 = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +export type Pod2 = { + cpu?: CpuPod2 | any | null | undefined; + memory?: MemoryPod2 | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas3 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const Reason11 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason11 = ClosedEnum; + +export const CollectionIssueSeverity11 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity11 = ClosedEnum< + typeof CollectionIssueSeverity11 +>; + +export type CollectionIssue11 = { + message: string; + reason: Reason11; + severity: CollectionIssueSeverity11; + source: string; +}; + +export const Health11 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health11 = ClosedEnum; + +export const StatusLifecycle11 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle11 = ClosedEnum; + +export type HeartbeatStatus11 = { + collectionIssues: Array; + health: Health11; + lifecycle: StatusLifecycle11; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type WorkloadCondition2 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export type Workload2 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion2 = Workload2 | any; + +export const WorkloadKind2 = { + Deployment: "deployment", + StatefulSet: "statefulSet", + DaemonSet: "daemonSet", + ReplicaSet: "replicaSet", + Pod: "pod", +} as const; +export type WorkloadKind2 = ClosedEnum; + +export type DataKubernetes2 = { + cpu?: CpuUnion4 | null | undefined; + events: Array; + memory?: MemoryUnion4 | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas3; + restarts?: number | null | undefined; + status: HeartbeatStatus11; + workload?: Workload2 | any | null | undefined; + workloadKind: WorkloadKind2; + backend: "kubernetes"; +}; + +export const CpuUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit3 = ClosedEnum; + +export type Cpu3 = { + unit: CpuUnit3; + value: number; +}; + +export type CpuUnion3 = Cpu3 | any; + +export type InvolvedObject2 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion2 = InvolvedObject2 | any; + +export type SyncReconcileRequestSource2 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion2 = SyncReconcileRequestSource2 | any; + +export type SyncReconcileRequestEvent3 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject2 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource2 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit3 = ClosedEnum; + +export type Memory3 = { + unit: MemoryUnit3; + value: number; +}; + +export type MemoryUnion3 = Memory3 | any; + +export const CpuReplicaUnitUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuReplicaUnitUnit = ClosedEnum; + +export type CpuReplicaUnit = { + unit: CpuReplicaUnitUnit; + value: number; +}; + +export type ReplicaUnitCpuUnion = CpuReplicaUnit | any; + +export const MemoryReplicaUnitUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryReplicaUnitUnit = ClosedEnum; + +export type MemoryReplicaUnit = { + unit: MemoryReplicaUnitUnit; + value: number; +}; + +export type ReplicaUnitMemoryUnion = MemoryReplicaUnit | any; + +export type ReplicaUnit = { + cpu?: CpuReplicaUnit | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryReplicaUnit | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas2 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const SchedulingMode = { + Replicated: "replicated", + Stateful: "stateful", + Daemon: "daemon", +} as const; +export type SchedulingMode = ClosedEnum; + +export const Reason10 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason10 = ClosedEnum; + +export const CollectionIssueSeverity10 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity10 = ClosedEnum< + typeof CollectionIssueSeverity10 +>; + +export type CollectionIssue10 = { + message: string; + reason: Reason10; + severity: CollectionIssueSeverity10; + source: string; +}; + +export const Health10 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health10 = ClosedEnum; + +export const StatusLifecycle10 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle10 = ClosedEnum; + +export type HeartbeatStatus10 = { + collectionIssues: Array; + health: Health10; + lifecycle: StatusLifecycle10; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataHorizonPlatform = { + attentionCount: number; + containerId: string; + cpu?: Cpu3 | any | null | undefined; + events: Array; + image?: string | null | undefined; + memory?: Memory3 | any | null | undefined; + replicaUnits: Array; + replicas: Replicas2; + schedulingMode: SchedulingMode; + status: HeartbeatStatus10; + backend: "horizonPlatform"; +}; + +export type SyncReconcileRequestDataUnion3 = + | DataHorizonPlatform + | DataKubernetes2 + | DataLocal3; + +export type DataContainer = { + data: DataHorizonPlatform | DataKubernetes2 | DataLocal3; + resourceType: "container"; +}; + +export const CpuUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit2 = ClosedEnum; + +export type Cpu2 = { + unit: CpuUnit2; + value: number; +}; + +export type CpuUnion2 = Cpu2 | any; + +export const EventSeverity1 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type EventSeverity1 = ClosedEnum; + +export type SyncReconcileRequestSubject1 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +export type SyncReconcileRequestSubjectUnion1 = + | SyncReconcileRequestSubject1 + | any; + +export type SyncReconcileRequestEvent2 = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: EventSeverity1; + subject?: SyncReconcileRequestSubject1 | any | null | undefined; + timestamp: Date; +}; + +export const MemoryUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit2 = ClosedEnum; + +export type Memory2 = { + unit: MemoryUnit2; + value: number; +}; + +export type MemoryUnion2 = Memory2 | any; + +export const ProcessCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ProcessCpuUnit = ClosedEnum; + +export type ProcessCpu = { + unit: ProcessCpuUnit; + value: number; +}; + +export type ProcessCpuUnion = ProcessCpu | any; + +export const ProcessKind = { + Container: "container", + Process: "process", + Daemon: "daemon", +} as const; +export type ProcessKind = ClosedEnum; + +export const ProcessMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ProcessMemoryUnit = ClosedEnum; + +export type ProcessMemory = { + unit: ProcessMemoryUnit; + value: number; +}; + +export type ProcessMemoryUnion = ProcessMemory | any; + +export type Process = { + cpu?: ProcessCpu | any | null | undefined; + kind: ProcessKind; + memory?: ProcessMemory | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +export type ProcessUnion = Process | any; + +export const Reason9 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason9 = ClosedEnum; + +export const CollectionIssueSeverity9 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity9 = ClosedEnum< + typeof CollectionIssueSeverity9 +>; + +export type CollectionIssue9 = { + message: string; + reason: Reason9; + severity: CollectionIssueSeverity9; + source: string; +}; + +export const Health9 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health9 = ClosedEnum; + +export const StatusLifecycle9 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle9 = ClosedEnum; + +export type HeartbeatStatus9 = { + collectionIssues: Array; + health: Health9; + lifecycle: StatusLifecycle9; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal2 = { + commandSupported: boolean; + cpu?: Cpu2 | any | null | undefined; + events: Array; + imagePathPresent: boolean; + memory?: Memory2 | any | null | undefined; + pid?: number | null | undefined; + process?: Process | any | null | undefined; + readinessProbeOk?: boolean | null | undefined; + status: HeartbeatStatus9; + triggerCount: number; + backend: "local"; +}; + +export const CpuUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit1 = ClosedEnum; + +export type Cpu1 = { + unit: CpuUnit1; + value: number; +}; + +export type CpuUnion1 = Cpu1 | any; + +export type InvolvedObject1 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion1 = InvolvedObject1 | any; + +export type SyncReconcileRequestSource1 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion1 = SyncReconcileRequestSource1 | any; + +export type SyncReconcileRequestEvent1 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject1 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource1 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit1 = ClosedEnum; + +export type Memory1 = { + unit: MemoryUnit1; + value: number; +}; + +export type MemoryUnion1 = Memory1 | any; + +export const CpuPodUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuPodUnit1 = ClosedEnum; + +export type CpuPod1 = { + unit: CpuPodUnit1; + value: number; +}; + +export type PodCpuUnion1 = CpuPod1 | any; + +export const MemoryPodUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryPodUnit1 = ClosedEnum; + +export type MemoryPod1 = { + unit: MemoryPodUnit1; + value: number; +}; + +export type PodMemoryUnion1 = MemoryPod1 | any; + +export type OwnerReference1 = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +export type Pod1 = { + cpu?: CpuPod1 | any | null | undefined; + memory?: MemoryPod1 | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas1 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const Reason8 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason8 = ClosedEnum; + +export const CollectionIssueSeverity8 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity8 = ClosedEnum< + typeof CollectionIssueSeverity8 +>; + +export type CollectionIssue8 = { + message: string; + reason: Reason8; + severity: CollectionIssueSeverity8; + source: string; +}; + +export const Health8 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health8 = ClosedEnum; + +export const StatusLifecycle8 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle8 = ClosedEnum; + +export type HeartbeatStatus8 = { + collectionIssues: Array; + health: Health8; + lifecycle: StatusLifecycle8; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type WorkloadCondition1 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export type Workload1 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion1 = Workload1 | any; + +export const WorkloadKind1 = { + Deployment: "deployment", + StatefulSet: "statefulSet", + DaemonSet: "daemonSet", + ReplicaSet: "replicaSet", + Pod: "pod", +} as const; +export type WorkloadKind1 = ClosedEnum; + +export type DataKubernetes1 = { + cpu?: Cpu1 | any | null | undefined; + events: Array; + memory?: Memory1 | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas1; + restarts?: number | null | undefined; + status: HeartbeatStatus8; + triggerCount: number; + workload?: Workload1 | any | null | undefined; + workloadKind: WorkloadKind1; + backend: "kubernetes"; +}; + +export const Reason7 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason7 = ClosedEnum; + +export const CollectionIssueSeverity7 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity7 = ClosedEnum< + typeof CollectionIssueSeverity7 +>; + +export type CollectionIssue7 = { + message: string; + reason: Reason7; + severity: CollectionIssueSeverity7; + source: string; +}; + +export const Health7 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health7 = ClosedEnum; + +export const StatusLifecycle7 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle7 = ClosedEnum; + +export type HeartbeatStatus7 = { + collectionIssues: Array; + health: Health7; + lifecycle: StatusLifecycle7; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureContainerApps1 = { + appName: string; + cpu?: number | null | undefined; + environmentName?: string | null | undefined; + ingressFqdn?: string | null | undefined; + maxReplicas?: number | null | undefined; + memory?: string | null | undefined; + minReplicas?: number | null | undefined; + provisioningState?: string | null | undefined; + revision?: string | null | undefined; + runningStatus?: string | null | undefined; + status: HeartbeatStatus7; + backend: "azureContainerApps"; +}; + +export const Reason6 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason6 = ClosedEnum; + +export const CollectionIssueSeverity6 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity6 = ClosedEnum< + typeof CollectionIssueSeverity6 +>; + +export type CollectionIssue6 = { + message: string; + reason: Reason6; + severity: CollectionIssueSeverity6; + source: string; +}; + +export const Health6 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health6 = ClosedEnum; + +export const StatusLifecycle6 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle6 = ClosedEnum; + +export type HeartbeatStatus6 = { + collectionIssues: Array; + health: Health6; + lifecycle: StatusLifecycle6; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpCloudRun = { + containerImage?: string | null | undefined; + cpuLimit?: string | null | undefined; + generation?: number | null | undefined; + latestCreatedRevision?: string | null | undefined; + latestReadyRevision?: string | null | undefined; + maxInstanceCount?: number | null | undefined; + memoryLimit?: string | null | undefined; + minInstanceCount?: number | null | undefined; + observedGeneration?: number | null | undefined; + region?: string | null | undefined; + service: string; + status: HeartbeatStatus6; + trafficCount: number; + uri?: string | null | undefined; + urls: Array; + backend: "gcpCloudRun"; +}; + +export const Reason5 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason5 = ClosedEnum; + +export const CollectionIssueSeverity5 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity5 = ClosedEnum< + typeof CollectionIssueSeverity5 +>; + +export type CollectionIssue5 = { + message: string; + reason: Reason5; + severity: CollectionIssueSeverity5; + source: string; +}; + +export const Health5 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health5 = ClosedEnum; + +export const StatusLifecycle5 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle5 = ClosedEnum; + +export type HeartbeatStatus5 = { + collectionIssues: Array; + health: Health5; + lifecycle: StatusLifecycle5; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsLambda = { + codeSha256?: string | null | undefined; + functionName: string; + functionUrlAuthType?: string | null | undefined; + functionUrlCorsPresent: boolean; + lastModified?: string | null | undefined; + lastUpdateStatus?: string | null | undefined; + lastUpdateStatusReason?: string | null | undefined; + lastUpdateStatusReasonCode?: string | null | undefined; + layerCount: number; + memorySizeMb?: number | null | undefined; + packageType?: string | null | undefined; + revisionId?: string | null | undefined; + runtime?: string | null | undefined; + state?: string | null | undefined; + stateReason?: string | null | undefined; + stateReasonCode?: string | null | undefined; + status: HeartbeatStatus5; + timeoutSeconds?: number | null | undefined; + triggerCount: number; + version?: string | null | undefined; + backend: "awsLambda"; +}; + +export type SyncReconcileRequestDataUnion2 = + | DataAwsLambda + | DataGcpCloudRun + | DataAzureContainerApps1 + | DataKubernetes1 + | DataLocal2; + +export type DataWorker = { + data: + | DataAwsLambda + | DataGcpCloudRun + | DataAzureContainerApps1 + | DataKubernetes1 + | DataLocal2; + resourceType: "worker"; +}; + +export const Reason4 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason4 = ClosedEnum; + +export const CollectionIssueSeverity4 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity4 = ClosedEnum< + typeof CollectionIssueSeverity4 +>; + +export type CollectionIssue4 = { + message: string; + reason: Reason4; + severity: CollectionIssueSeverity4; + source: string; +}; + +export const Health4 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health4 = ClosedEnum; + +export const StatusLifecycle4 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle4 = ClosedEnum; + +export type HeartbeatStatus4 = { + collectionIssues: Array; + health: Health4; + lifecycle: StatusLifecycle4; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal1 = { + isDirectory?: boolean | null | undefined; + modifiedAt?: Date | null | undefined; + path: string; + pathExists: boolean; + readonly?: boolean | null | undefined; + status: HeartbeatStatus4; + backend: "local"; +}; + +export const Reason3 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason3 = ClosedEnum; + +export const CollectionIssueSeverity3 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity3 = ClosedEnum< + typeof CollectionIssueSeverity3 +>; + +export type CollectionIssue3 = { + message: string; + reason: Reason3; + severity: CollectionIssueSeverity3; + source: string; +}; + +export const Health3 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health3 = ClosedEnum; + +export const StatusLifecycle3 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle3 = ClosedEnum; + +export type HeartbeatStatus3 = { + collectionIssues: Array; + health: Health3; + lifecycle: StatusLifecycle3; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureBlob = { + accessTier?: string | null | undefined; + accountKind?: string | null | undefined; + allowBlobPublicAccess?: boolean | null | undefined; + blobDeleteRetentionDays?: number | null | undefined; + blobDeleteRetentionEnabled?: boolean | null | undefined; + blobEncryptionEnabled?: boolean | null | undefined; + blobVersioningEnabled?: boolean | null | undefined; + changeFeedEnabled?: boolean | null | undefined; + changeFeedRetentionDays?: number | null | undefined; + containerDeleteRetentionDays?: number | null | undefined; + containerDeleteRetentionEnabled?: boolean | null | undefined; + containerPublicAccess?: string | null | undefined; + encryptionKeySource?: string | null | undefined; + fileEncryptionEnabled?: boolean | null | undefined; + location?: string | null | undefined; + name: string; + primaryLocation?: string | null | undefined; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + queueEncryptionEnabled?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + secondaryLocation?: string | null | undefined; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: HeartbeatStatus3; + statusOfPrimary?: string | null | undefined; + statusOfSecondary?: string | null | undefined; + storageAccountName?: string | null | undefined; + tableEncryptionEnabled?: boolean | null | undefined; + backend: "azureBlob"; +}; + +export const Reason2 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason2 = ClosedEnum; + +export const CollectionIssueSeverity2 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity2 = ClosedEnum< + typeof CollectionIssueSeverity2 +>; + +export type CollectionIssue2 = { + message: string; + reason: Reason2; + severity: CollectionIssueSeverity2; + source: string; +}; + +export const Health2 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health2 = ClosedEnum; + +export const StatusLifecycle2 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle2 = ClosedEnum; + +export type HeartbeatStatus2 = { + collectionIssues: Array; + health: Health2; + lifecycle: StatusLifecycle2; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpCloudStorage = { + bucketId?: string | null | undefined; + defaultKmsKeyName?: string | null | undefined; + encryptionConfigPresent: boolean; + lifecyclePresent: boolean; + lifecycleRuleCount?: number | null | undefined; + location?: string | null | undefined; + locationType?: string | null | undefined; + name: string; + publicAccessPrevention?: string | null | undefined; + retentionPeriod?: string | null | undefined; + retentionPolicyEffectiveTime?: string | null | undefined; + retentionPolicyIsLocked?: boolean | null | undefined; + softDeleteEffectiveTime?: string | null | undefined; + softDeleteRetentionDurationSeconds?: string | null | undefined; + status: HeartbeatStatus2; + storageClass?: string | null | undefined; + uniformBucketLevelAccessEnabled?: boolean | null | undefined; + uniformBucketLevelAccessLockedTime?: string | null | undefined; + versioningEnabled?: boolean | null | undefined; + backend: "gcpCloudStorage"; +}; + +/** @internal */ +export const CpuPodUnit2$outboundSchema: z.ZodEnum = z.enum( + CpuPodUnit2, +); + +/** @internal */ +export type CpuPod2$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const CpuPod2$outboundSchema: z.ZodType = z + .object({ + unit: CpuPodUnit2$outboundSchema, + value: z.number(), + }); + +export function cpuPod2ToJSON(cpuPod2: CpuPod2): string { + return JSON.stringify(CpuPod2$outboundSchema.parse(cpuPod2)); +} + +/** @internal */ +export type PodCpuUnion2$Outbound = CpuPod2$Outbound | any; + +/** @internal */ +export const PodCpuUnion2$outboundSchema: z.ZodType< + PodCpuUnion2$Outbound, + PodCpuUnion2 +> = z.union([z.lazy(() => CpuPod2$outboundSchema), z.any()]); + +export function podCpuUnion2ToJSON(podCpuUnion2: PodCpuUnion2): string { + return JSON.stringify(PodCpuUnion2$outboundSchema.parse(podCpuUnion2)); +} + +/** @internal */ +export const MemoryPodUnit2$outboundSchema: z.ZodEnum = z + .enum(MemoryPodUnit2); + +/** @internal */ +export type MemoryPod2$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const MemoryPod2$outboundSchema: z.ZodType< + MemoryPod2$Outbound, + MemoryPod2 +> = z.object({ + unit: MemoryPodUnit2$outboundSchema, + value: z.number(), +}); + +export function memoryPod2ToJSON(memoryPod2: MemoryPod2): string { + return JSON.stringify(MemoryPod2$outboundSchema.parse(memoryPod2)); +} + +/** @internal */ +export type PodMemoryUnion2$Outbound = MemoryPod2$Outbound | any; + +/** @internal */ +export const PodMemoryUnion2$outboundSchema: z.ZodType< + PodMemoryUnion2$Outbound, + PodMemoryUnion2 +> = z.union([z.lazy(() => MemoryPod2$outboundSchema), z.any()]); + +export function podMemoryUnion2ToJSON( + podMemoryUnion2: PodMemoryUnion2, +): string { + return JSON.stringify(PodMemoryUnion2$outboundSchema.parse(podMemoryUnion2)); +} + +/** @internal */ +export type OwnerReference2$Outbound = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +/** @internal */ +export const OwnerReference2$outboundSchema: z.ZodType< + OwnerReference2$Outbound, + OwnerReference2 +> = z.object({ + controller: z.boolean(), + kind: z.string(), + name: z.string(), + uid: z.string(), +}); + +export function ownerReference2ToJSON( + ownerReference2: OwnerReference2, +): string { + return JSON.stringify(OwnerReference2$outboundSchema.parse(ownerReference2)); +} + +/** @internal */ +export type Pod2$Outbound = { + cpu?: CpuPod2$Outbound | any | null | undefined; + memory?: MemoryPod2$Outbound | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +/** @internal */ +export const Pod2$outboundSchema: z.ZodType = z.object({ + cpu: z.nullable(z.union([z.lazy(() => CpuPod2$outboundSchema), z.any()])) + .optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryPod2$outboundSchema), z.any()]), + ).optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + ownerReferences: z.array(z.lazy(() => OwnerReference2$outboundSchema)), + phase: z.nullable(z.string()).optional(), + podIp: z.nullable(z.string()).optional(), + ready: z.boolean(), + restartCount: z.int(), + terminatedReason: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function pod2ToJSON(pod2: Pod2): string { + return JSON.stringify(Pod2$outboundSchema.parse(pod2)); +} + +/** @internal */ +export type Replicas3$Outbound = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +/** @internal */ +export const Replicas3$outboundSchema: z.ZodType< + Replicas3$Outbound, + Replicas3 +> = z.object({ + available: z.nullable(z.int()).optional(), + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + misscheduled: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + updated: z.nullable(z.int()).optional(), +}); + +export function replicas3ToJSON(replicas3: Replicas3): string { + return JSON.stringify(Replicas3$outboundSchema.parse(replicas3)); +} + +/** @internal */ +export const Reason11$outboundSchema: z.ZodEnum = z.enum( + Reason11, +); + +/** @internal */ +export const CollectionIssueSeverity11$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity11 +> = z.enum(CollectionIssueSeverity11); + +/** @internal */ +export type CollectionIssue11$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue11$outboundSchema: z.ZodType< + CollectionIssue11$Outbound, + CollectionIssue11 +> = z.object({ + message: z.string(), + reason: Reason11$outboundSchema, + severity: CollectionIssueSeverity11$outboundSchema, + source: z.string(), +}); + +export function collectionIssue11ToJSON( + collectionIssue11: CollectionIssue11, +): string { + return JSON.stringify( + CollectionIssue11$outboundSchema.parse(collectionIssue11), + ); +} + +/** @internal */ +export const Health11$outboundSchema: z.ZodEnum = z.enum( + Health11, +); + +/** @internal */ +export const StatusLifecycle11$outboundSchema: z.ZodEnum< + typeof StatusLifecycle11 +> = z.enum(StatusLifecycle11); + +/** @internal */ +export type HeartbeatStatus11$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus11$outboundSchema: z.ZodType< + HeartbeatStatus11$Outbound, + HeartbeatStatus11 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue11$outboundSchema)), + health: Health11$outboundSchema, + lifecycle: StatusLifecycle11$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus11ToJSON( + heartbeatStatus11: HeartbeatStatus11, +): string { + return JSON.stringify( + HeartbeatStatus11$outboundSchema.parse(heartbeatStatus11), + ); +} + +/** @internal */ +export type WorkloadCondition2$Outbound = { + lastTransitionTime?: string | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +/** @internal */ +export const WorkloadCondition2$outboundSchema: z.ZodType< + WorkloadCondition2$Outbound, + WorkloadCondition2 +> = z.object({ + lastTransitionTime: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.nullable(z.string()).optional(), + reason: z.nullable(z.string()).optional(), + status: z.string(), + type: z.string(), +}); + +export function workloadCondition2ToJSON( + workloadCondition2: WorkloadCondition2, +): string { + return JSON.stringify( + WorkloadCondition2$outboundSchema.parse(workloadCondition2), + ); +} + +/** @internal */ +export type Workload2$Outbound = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +/** @internal */ +export const Workload2$outboundSchema: z.ZodType< + Workload2$Outbound, + Workload2 +> = z.object({ + availableReplicas: z.nullable(z.int()).optional(), + conditions: z.array(z.lazy(() => WorkloadCondition2$outboundSchema)), + desiredGeneration: z.nullable(z.int()).optional(), + desiredReplicas: z.nullable(z.int()).optional(), + observedGeneration: z.nullable(z.int()).optional(), + readyReplicas: z.nullable(z.int()).optional(), + rolloutReason: z.nullable(z.string()).optional(), + updatedReplicas: z.nullable(z.int()).optional(), +}); + +export function workload2ToJSON(workload2: Workload2): string { + return JSON.stringify(Workload2$outboundSchema.parse(workload2)); +} + +/** @internal */ +export type WorkloadUnion2$Outbound = Workload2$Outbound | any; + +/** @internal */ +export const WorkloadUnion2$outboundSchema: z.ZodType< + WorkloadUnion2$Outbound, + WorkloadUnion2 +> = z.union([z.lazy(() => Workload2$outboundSchema), z.any()]); + +export function workloadUnion2ToJSON(workloadUnion2: WorkloadUnion2): string { + return JSON.stringify(WorkloadUnion2$outboundSchema.parse(workloadUnion2)); +} + +/** @internal */ +export const WorkloadKind2$outboundSchema: z.ZodEnum = z + .enum(WorkloadKind2); + +/** @internal */ +export type DataKubernetes2$Outbound = { + cpu?: CpuUnion4$Outbound | null | undefined; + events: Array; + memory?: MemoryUnion4$Outbound | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas3$Outbound; + restarts?: number | null | undefined; + status: HeartbeatStatus11$Outbound; + workload?: Workload2$Outbound | any | null | undefined; + workloadKind: string; + backend: "kubernetes"; +}; + +/** @internal */ +export const DataKubernetes2$outboundSchema: z.ZodType< + DataKubernetes2$Outbound, + DataKubernetes2 +> = z.object({ + cpu: z.nullable(CpuUnion4$outboundSchema).optional(), + events: z.array(SyncReconcileRequestEvent4$outboundSchema), + memory: z.nullable(MemoryUnion4$outboundSchema).optional(), + name: z.string(), + namespace: z.string(), + pods: z.array(z.lazy(() => Pod2$outboundSchema)), + replicas: z.lazy(() => Replicas3$outboundSchema), + restarts: z.nullable(z.int()).optional(), + status: z.lazy(() => HeartbeatStatus11$outboundSchema), + workload: z.nullable( + z.union([z.lazy(() => Workload2$outboundSchema), z.any()]), + ).optional(), + workloadKind: WorkloadKind2$outboundSchema, + backend: z.literal("kubernetes"), +}); + +export function dataKubernetes2ToJSON( + dataKubernetes2: DataKubernetes2, +): string { + return JSON.stringify(DataKubernetes2$outboundSchema.parse(dataKubernetes2)); +} + +/** @internal */ +export const CpuUnit3$outboundSchema: z.ZodEnum = z.enum( + CpuUnit3, +); + +/** @internal */ +export type Cpu3$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Cpu3$outboundSchema: z.ZodType = z.object({ + unit: CpuUnit3$outboundSchema, + value: z.number(), +}); + +export function cpu3ToJSON(cpu3: Cpu3): string { + return JSON.stringify(Cpu3$outboundSchema.parse(cpu3)); +} + +/** @internal */ +export type CpuUnion3$Outbound = Cpu3$Outbound | any; + +/** @internal */ +export const CpuUnion3$outboundSchema: z.ZodType< + CpuUnion3$Outbound, + CpuUnion3 +> = z.union([z.lazy(() => Cpu3$outboundSchema), z.any()]); + +export function cpuUnion3ToJSON(cpuUnion3: CpuUnion3): string { + return JSON.stringify(CpuUnion3$outboundSchema.parse(cpuUnion3)); +} + +/** @internal */ +export type InvolvedObject2$Outbound = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +/** @internal */ +export const InvolvedObject2$outboundSchema: z.ZodType< + InvolvedObject2$Outbound, + InvolvedObject2 +> = z.object({ + details: z.nullable(z.any()).optional(), + id: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + replicaId: z.nullable(z.string()).optional(), +}); + +export function involvedObject2ToJSON( + involvedObject2: InvolvedObject2, +): string { + return JSON.stringify(InvolvedObject2$outboundSchema.parse(involvedObject2)); +} + +/** @internal */ +export type InvolvedObjectUnion2$Outbound = InvolvedObject2$Outbound | any; + +/** @internal */ +export const InvolvedObjectUnion2$outboundSchema: z.ZodType< + InvolvedObjectUnion2$Outbound, + InvolvedObjectUnion2 +> = z.union([z.lazy(() => InvolvedObject2$outboundSchema), z.any()]); + +export function involvedObjectUnion2ToJSON( + involvedObjectUnion2: InvolvedObjectUnion2, +): string { + return JSON.stringify( + InvolvedObjectUnion2$outboundSchema.parse(involvedObjectUnion2), + ); +} + +/** @internal */ +export type SyncReconcileRequestSource2$Outbound = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSource2$outboundSchema: z.ZodType< + SyncReconcileRequestSource2$Outbound, + SyncReconcileRequestSource2 +> = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSource2ToJSON( + syncReconcileRequestSource2: SyncReconcileRequestSource2, +): string { + return JSON.stringify( + SyncReconcileRequestSource2$outboundSchema.parse( + syncReconcileRequestSource2, + ), + ); +} + +/** @internal */ +export type SourceUnion2$Outbound = SyncReconcileRequestSource2$Outbound | any; + +/** @internal */ +export const SourceUnion2$outboundSchema: z.ZodType< + SourceUnion2$Outbound, + SourceUnion2 +> = z.union([ + z.lazy(() => SyncReconcileRequestSource2$outboundSchema), + z.any(), +]); + +export function sourceUnion2ToJSON(sourceUnion2: SourceUnion2): string { + return JSON.stringify(SourceUnion2$outboundSchema.parse(sourceUnion2)); +} + +/** @internal */ +export type SyncReconcileRequestEvent3$Outbound = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: string | null | undefined; + firstTimestamp?: string | null | undefined; + involvedObject?: InvolvedObject2$Outbound | any | null | undefined; + lastTimestamp?: string | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource2$Outbound | any | null | undefined; + type?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestEvent3$outboundSchema: z.ZodType< + SyncReconcileRequestEvent3$Outbound, + SyncReconcileRequestEvent3 +> = z.object({ + count: z.nullable(z.int()).optional(), + details: z.nullable(z.any()).optional(), + eventId: z.nullable(z.string()).optional(), + eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), + firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject2$outboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSource2$outboundSchema), + z.any(), + ]), + ).optional(), + type: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestEvent3ToJSON( + syncReconcileRequestEvent3: SyncReconcileRequestEvent3, +): string { + return JSON.stringify( + SyncReconcileRequestEvent3$outboundSchema.parse(syncReconcileRequestEvent3), + ); +} + +/** @internal */ +export const MemoryUnit3$outboundSchema: z.ZodEnum = z.enum( + MemoryUnit3, +); + +/** @internal */ +export type Memory3$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Memory3$outboundSchema: z.ZodType = z + .object({ + unit: MemoryUnit3$outboundSchema, + value: z.number(), + }); + +export function memory3ToJSON(memory3: Memory3): string { + return JSON.stringify(Memory3$outboundSchema.parse(memory3)); +} + +/** @internal */ +export type MemoryUnion3$Outbound = Memory3$Outbound | any; + +/** @internal */ +export const MemoryUnion3$outboundSchema: z.ZodType< + MemoryUnion3$Outbound, + MemoryUnion3 +> = z.union([z.lazy(() => Memory3$outboundSchema), z.any()]); + +export function memoryUnion3ToJSON(memoryUnion3: MemoryUnion3): string { + return JSON.stringify(MemoryUnion3$outboundSchema.parse(memoryUnion3)); +} + +/** @internal */ +export const CpuReplicaUnitUnit$outboundSchema: z.ZodEnum< + typeof CpuReplicaUnitUnit +> = z.enum(CpuReplicaUnitUnit); + +/** @internal */ +export type CpuReplicaUnit$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const CpuReplicaUnit$outboundSchema: z.ZodType< + CpuReplicaUnit$Outbound, + CpuReplicaUnit +> = z.object({ + unit: CpuReplicaUnitUnit$outboundSchema, + value: z.number(), +}); + +export function cpuReplicaUnitToJSON(cpuReplicaUnit: CpuReplicaUnit): string { + return JSON.stringify(CpuReplicaUnit$outboundSchema.parse(cpuReplicaUnit)); +} + +/** @internal */ +export type ReplicaUnitCpuUnion$Outbound = CpuReplicaUnit$Outbound | any; + +/** @internal */ +export const ReplicaUnitCpuUnion$outboundSchema: z.ZodType< + ReplicaUnitCpuUnion$Outbound, + ReplicaUnitCpuUnion +> = z.union([z.lazy(() => CpuReplicaUnit$outboundSchema), z.any()]); + +export function replicaUnitCpuUnionToJSON( + replicaUnitCpuUnion: ReplicaUnitCpuUnion, +): string { + return JSON.stringify( + ReplicaUnitCpuUnion$outboundSchema.parse(replicaUnitCpuUnion), + ); +} + +/** @internal */ +export const MemoryReplicaUnitUnit$outboundSchema: z.ZodEnum< + typeof MemoryReplicaUnitUnit +> = z.enum(MemoryReplicaUnitUnit); + +/** @internal */ +export type MemoryReplicaUnit$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const MemoryReplicaUnit$outboundSchema: z.ZodType< + MemoryReplicaUnit$Outbound, + MemoryReplicaUnit +> = z.object({ + unit: MemoryReplicaUnitUnit$outboundSchema, + value: z.number(), +}); + +export function memoryReplicaUnitToJSON( + memoryReplicaUnit: MemoryReplicaUnit, +): string { + return JSON.stringify( + MemoryReplicaUnit$outboundSchema.parse(memoryReplicaUnit), + ); +} + +/** @internal */ +export type ReplicaUnitMemoryUnion$Outbound = MemoryReplicaUnit$Outbound | any; + +/** @internal */ +export const ReplicaUnitMemoryUnion$outboundSchema: z.ZodType< + ReplicaUnitMemoryUnion$Outbound, + ReplicaUnitMemoryUnion +> = z.union([z.lazy(() => MemoryReplicaUnit$outboundSchema), z.any()]); + +export function replicaUnitMemoryUnionToJSON( + replicaUnitMemoryUnion: ReplicaUnitMemoryUnion, +): string { + return JSON.stringify( + ReplicaUnitMemoryUnion$outboundSchema.parse(replicaUnitMemoryUnion), + ); +} + +/** @internal */ +export type ReplicaUnit$Outbound = { + cpu?: CpuReplicaUnit$Outbound | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryReplicaUnit$Outbound | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +/** @internal */ +export const ReplicaUnit$outboundSchema: z.ZodType< + ReplicaUnit$Outbound, + ReplicaUnit +> = z.object({ + cpu: z.nullable( + z.union([z.lazy(() => CpuReplicaUnit$outboundSchema), z.any()]), + ).optional(), + ip: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryReplicaUnit$outboundSchema), z.any()]), + ).optional(), + message: z.nullable(z.string()).optional(), + metricsHealthy: z.nullable(z.boolean()).optional(), + metricsLastUpdated: z.nullable(z.string()).optional(), + metricsStatus: z.nullable(z.string()).optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + phase: z.nullable(z.string()).optional(), + ready: z.boolean(), + reason: z.nullable(z.string()).optional(), + replicaId: z.string(), + restartCount: z.nullable(z.int()).optional(), + status: z.nullable(z.string()).optional(), + terminatedReason: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function replicaUnitToJSON(replicaUnit: ReplicaUnit): string { + return JSON.stringify(ReplicaUnit$outboundSchema.parse(replicaUnit)); +} + +/** @internal */ +export type Replicas2$Outbound = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +/** @internal */ +export const Replicas2$outboundSchema: z.ZodType< + Replicas2$Outbound, + Replicas2 +> = z.object({ + available: z.nullable(z.int()).optional(), + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + misscheduled: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + updated: z.nullable(z.int()).optional(), +}); + +export function replicas2ToJSON(replicas2: Replicas2): string { + return JSON.stringify(Replicas2$outboundSchema.parse(replicas2)); +} + +/** @internal */ +export const SchedulingMode$outboundSchema: z.ZodEnum = z + .enum(SchedulingMode); + +/** @internal */ +export const Reason10$outboundSchema: z.ZodEnum = z.enum( + Reason10, +); + +/** @internal */ +export const CollectionIssueSeverity10$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity10 +> = z.enum(CollectionIssueSeverity10); + +/** @internal */ +export type CollectionIssue10$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue10$outboundSchema: z.ZodType< + CollectionIssue10$Outbound, + CollectionIssue10 +> = z.object({ + message: z.string(), + reason: Reason10$outboundSchema, + severity: CollectionIssueSeverity10$outboundSchema, + source: z.string(), +}); + +export function collectionIssue10ToJSON( + collectionIssue10: CollectionIssue10, +): string { + return JSON.stringify( + CollectionIssue10$outboundSchema.parse(collectionIssue10), + ); +} + +/** @internal */ +export const Health10$outboundSchema: z.ZodEnum = z.enum( + Health10, +); + +/** @internal */ +export const StatusLifecycle10$outboundSchema: z.ZodEnum< + typeof StatusLifecycle10 +> = z.enum(StatusLifecycle10); + +/** @internal */ +export type HeartbeatStatus10$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus10$outboundSchema: z.ZodType< + HeartbeatStatus10$Outbound, + HeartbeatStatus10 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue10$outboundSchema)), + health: Health10$outboundSchema, + lifecycle: StatusLifecycle10$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus10ToJSON( + heartbeatStatus10: HeartbeatStatus10, +): string { + return JSON.stringify( + HeartbeatStatus10$outboundSchema.parse(heartbeatStatus10), + ); +} + +/** @internal */ +export type DataHorizonPlatform$Outbound = { + attentionCount: number; + containerId: string; + cpu?: Cpu3$Outbound | any | null | undefined; + events: Array; + image?: string | null | undefined; + memory?: Memory3$Outbound | any | null | undefined; + replicaUnits: Array; + replicas: Replicas2$Outbound; + schedulingMode: string; + status: HeartbeatStatus10$Outbound; + backend: "horizonPlatform"; +}; + +/** @internal */ +export const DataHorizonPlatform$outboundSchema: z.ZodType< + DataHorizonPlatform$Outbound, + DataHorizonPlatform +> = z.object({ + attentionCount: z.int(), + containerId: z.string(), + cpu: z.nullable(z.union([z.lazy(() => Cpu3$outboundSchema), z.any()])) + .optional(), + events: z.array(z.lazy(() => SyncReconcileRequestEvent3$outboundSchema)), + image: z.nullable(z.string()).optional(), + memory: z.nullable(z.union([z.lazy(() => Memory3$outboundSchema), z.any()])) + .optional(), + replicaUnits: z.array(z.lazy(() => ReplicaUnit$outboundSchema)), + replicas: z.lazy(() => Replicas2$outboundSchema), + schedulingMode: SchedulingMode$outboundSchema, + status: z.lazy(() => HeartbeatStatus10$outboundSchema), + backend: z.literal("horizonPlatform"), +}); + +export function dataHorizonPlatformToJSON( + dataHorizonPlatform: DataHorizonPlatform, +): string { + return JSON.stringify( + DataHorizonPlatform$outboundSchema.parse(dataHorizonPlatform), + ); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion3$Outbound = + | DataHorizonPlatform$Outbound + | DataKubernetes2$Outbound + | DataLocal3$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion3$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion3$Outbound, + SyncReconcileRequestDataUnion3 +> = z.union([ + z.lazy(() => DataHorizonPlatform$outboundSchema), + z.lazy(() => DataKubernetes2$outboundSchema), + DataLocal3$outboundSchema, +]); + +export function syncReconcileRequestDataUnion3ToJSON( + syncReconcileRequestDataUnion3: SyncReconcileRequestDataUnion3, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion3$outboundSchema.parse( + syncReconcileRequestDataUnion3, + ), + ); +} + +/** @internal */ +export type DataContainer$Outbound = { + data: + | DataHorizonPlatform$Outbound + | DataKubernetes2$Outbound + | DataLocal3$Outbound; + resourceType: "container"; +}; + +/** @internal */ +export const DataContainer$outboundSchema: z.ZodType< + DataContainer$Outbound, + DataContainer +> = z.object({ + data: z.union([ + z.lazy(() => DataHorizonPlatform$outboundSchema), + z.lazy(() => DataKubernetes2$outboundSchema), + DataLocal3$outboundSchema, + ]), + resourceType: z.literal("container"), +}); + +export function dataContainerToJSON(dataContainer: DataContainer): string { + return JSON.stringify(DataContainer$outboundSchema.parse(dataContainer)); +} + +/** @internal */ +export const CpuUnit2$outboundSchema: z.ZodEnum = z.enum( + CpuUnit2, +); + +/** @internal */ +export type Cpu2$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Cpu2$outboundSchema: z.ZodType = z.object({ + unit: CpuUnit2$outboundSchema, + value: z.number(), +}); + +export function cpu2ToJSON(cpu2: Cpu2): string { + return JSON.stringify(Cpu2$outboundSchema.parse(cpu2)); +} + +/** @internal */ +export type CpuUnion2$Outbound = Cpu2$Outbound | any; + +/** @internal */ +export const CpuUnion2$outboundSchema: z.ZodType< + CpuUnion2$Outbound, + CpuUnion2 +> = z.union([z.lazy(() => Cpu2$outboundSchema), z.any()]); + +export function cpuUnion2ToJSON(cpuUnion2: CpuUnion2): string { + return JSON.stringify(CpuUnion2$outboundSchema.parse(cpuUnion2)); +} + +/** @internal */ +export const EventSeverity1$outboundSchema: z.ZodEnum = z + .enum(EventSeverity1); + +/** @internal */ +export type SyncReconcileRequestSubject1$Outbound = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSubject1$outboundSchema: z.ZodType< + SyncReconcileRequestSubject1$Outbound, + SyncReconcileRequestSubject1 +> = z.object({ + id: z.nullable(z.string()).optional(), + kind: z.string(), + name: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSubject1ToJSON( + syncReconcileRequestSubject1: SyncReconcileRequestSubject1, +): string { + return JSON.stringify( + SyncReconcileRequestSubject1$outboundSchema.parse( + syncReconcileRequestSubject1, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestSubjectUnion1$Outbound = + | SyncReconcileRequestSubject1$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestSubjectUnion1$outboundSchema: z.ZodType< + SyncReconcileRequestSubjectUnion1$Outbound, + SyncReconcileRequestSubjectUnion1 +> = z.union([ + z.lazy(() => SyncReconcileRequestSubject1$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestSubjectUnion1ToJSON( + syncReconcileRequestSubjectUnion1: SyncReconcileRequestSubjectUnion1, +): string { + return JSON.stringify( + SyncReconcileRequestSubjectUnion1$outboundSchema.parse( + syncReconcileRequestSubjectUnion1, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestEvent2$Outbound = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: string; + subject?: SyncReconcileRequestSubject1$Outbound | any | null | undefined; + timestamp: string; +}; + +/** @internal */ +export const SyncReconcileRequestEvent2$outboundSchema: z.ZodType< + SyncReconcileRequestEvent2$Outbound, + SyncReconcileRequestEvent2 +> = z.object({ + kind: z.string(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + severity: EventSeverity1$outboundSchema, + subject: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSubject1$outboundSchema), + z.any(), + ]), + ).optional(), + timestamp: z.date().transform(v => v.toISOString()), +}); + +export function syncReconcileRequestEvent2ToJSON( + syncReconcileRequestEvent2: SyncReconcileRequestEvent2, +): string { + return JSON.stringify( + SyncReconcileRequestEvent2$outboundSchema.parse(syncReconcileRequestEvent2), + ); +} + +/** @internal */ +export const MemoryUnit2$outboundSchema: z.ZodEnum = z.enum( + MemoryUnit2, +); + +/** @internal */ +export type Memory2$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Memory2$outboundSchema: z.ZodType = z + .object({ + unit: MemoryUnit2$outboundSchema, + value: z.number(), + }); + +export function memory2ToJSON(memory2: Memory2): string { + return JSON.stringify(Memory2$outboundSchema.parse(memory2)); +} + +/** @internal */ +export type MemoryUnion2$Outbound = Memory2$Outbound | any; + +/** @internal */ +export const MemoryUnion2$outboundSchema: z.ZodType< + MemoryUnion2$Outbound, + MemoryUnion2 +> = z.union([z.lazy(() => Memory2$outboundSchema), z.any()]); + +export function memoryUnion2ToJSON(memoryUnion2: MemoryUnion2): string { + return JSON.stringify(MemoryUnion2$outboundSchema.parse(memoryUnion2)); +} + +/** @internal */ +export const ProcessCpuUnit$outboundSchema: z.ZodEnum = z + .enum(ProcessCpuUnit); + +/** @internal */ +export type ProcessCpu$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const ProcessCpu$outboundSchema: z.ZodType< + ProcessCpu$Outbound, + ProcessCpu +> = z.object({ + unit: ProcessCpuUnit$outboundSchema, + value: z.number(), +}); + +export function processCpuToJSON(processCpu: ProcessCpu): string { + return JSON.stringify(ProcessCpu$outboundSchema.parse(processCpu)); +} + +/** @internal */ +export type ProcessCpuUnion$Outbound = ProcessCpu$Outbound | any; + +/** @internal */ +export const ProcessCpuUnion$outboundSchema: z.ZodType< + ProcessCpuUnion$Outbound, + ProcessCpuUnion +> = z.union([z.lazy(() => ProcessCpu$outboundSchema), z.any()]); + +export function processCpuUnionToJSON( + processCpuUnion: ProcessCpuUnion, +): string { + return JSON.stringify(ProcessCpuUnion$outboundSchema.parse(processCpuUnion)); +} + +/** @internal */ +export const ProcessKind$outboundSchema: z.ZodEnum = z.enum( + ProcessKind, +); + +/** @internal */ +export const ProcessMemoryUnit$outboundSchema: z.ZodEnum< + typeof ProcessMemoryUnit +> = z.enum(ProcessMemoryUnit); + +/** @internal */ +export type ProcessMemory$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const ProcessMemory$outboundSchema: z.ZodType< + ProcessMemory$Outbound, + ProcessMemory +> = z.object({ + unit: ProcessMemoryUnit$outboundSchema, + value: z.number(), +}); + +export function processMemoryToJSON(processMemory: ProcessMemory): string { + return JSON.stringify(ProcessMemory$outboundSchema.parse(processMemory)); +} + +/** @internal */ +export type ProcessMemoryUnion$Outbound = ProcessMemory$Outbound | any; + +/** @internal */ +export const ProcessMemoryUnion$outboundSchema: z.ZodType< + ProcessMemoryUnion$Outbound, + ProcessMemoryUnion +> = z.union([z.lazy(() => ProcessMemory$outboundSchema), z.any()]); + +export function processMemoryUnionToJSON( + processMemoryUnion: ProcessMemoryUnion, +): string { + return JSON.stringify( + ProcessMemoryUnion$outboundSchema.parse(processMemoryUnion), + ); +} + +/** @internal */ +export type Process$Outbound = { + cpu?: ProcessCpu$Outbound | any | null | undefined; + kind: string; + memory?: ProcessMemory$Outbound | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +/** @internal */ +export const Process$outboundSchema: z.ZodType = z + .object({ + cpu: z.nullable(z.union([z.lazy(() => ProcessCpu$outboundSchema), z.any()])) + .optional(), + kind: ProcessKind$outboundSchema, + memory: z.nullable( + z.union([z.lazy(() => ProcessMemory$outboundSchema), z.any()]), + ).optional(), + name: z.string(), + phase: z.nullable(z.string()).optional(), + pid: z.nullable(z.int()).optional(), + ready: z.boolean(), + restartCount: z.nullable(z.int()).optional(), + unitId: z.string(), + }); + +export function processToJSON(process: Process): string { + return JSON.stringify(Process$outboundSchema.parse(process)); +} + +/** @internal */ +export type ProcessUnion$Outbound = Process$Outbound | any; + +/** @internal */ +export const ProcessUnion$outboundSchema: z.ZodType< + ProcessUnion$Outbound, + ProcessUnion +> = z.union([z.lazy(() => Process$outboundSchema), z.any()]); + +export function processUnionToJSON(processUnion: ProcessUnion): string { + return JSON.stringify(ProcessUnion$outboundSchema.parse(processUnion)); +} + +/** @internal */ +export const Reason9$outboundSchema: z.ZodEnum = z.enum( + Reason9, +); + +/** @internal */ +export const CollectionIssueSeverity9$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity9 +> = z.enum(CollectionIssueSeverity9); + +/** @internal */ +export type CollectionIssue9$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue9$outboundSchema: z.ZodType< + CollectionIssue9$Outbound, + CollectionIssue9 +> = z.object({ + message: z.string(), + reason: Reason9$outboundSchema, + severity: CollectionIssueSeverity9$outboundSchema, + source: z.string(), +}); + +export function collectionIssue9ToJSON( + collectionIssue9: CollectionIssue9, +): string { + return JSON.stringify( + CollectionIssue9$outboundSchema.parse(collectionIssue9), + ); +} + +/** @internal */ +export const Health9$outboundSchema: z.ZodEnum = z.enum( + Health9, +); + +/** @internal */ +export const StatusLifecycle9$outboundSchema: z.ZodEnum< + typeof StatusLifecycle9 +> = z.enum(StatusLifecycle9); + +/** @internal */ +export type HeartbeatStatus9$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus9$outboundSchema: z.ZodType< + HeartbeatStatus9$Outbound, + HeartbeatStatus9 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue9$outboundSchema)), + health: Health9$outboundSchema, + lifecycle: StatusLifecycle9$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus9ToJSON( + heartbeatStatus9: HeartbeatStatus9, +): string { + return JSON.stringify( + HeartbeatStatus9$outboundSchema.parse(heartbeatStatus9), + ); +} + +/** @internal */ +export type DataLocal2$Outbound = { + commandSupported: boolean; + cpu?: Cpu2$Outbound | any | null | undefined; + events: Array; + imagePathPresent: boolean; + memory?: Memory2$Outbound | any | null | undefined; + pid?: number | null | undefined; + process?: Process$Outbound | any | null | undefined; + readinessProbeOk?: boolean | null | undefined; + status: HeartbeatStatus9$Outbound; + triggerCount: number; + backend: "local"; +}; + +/** @internal */ +export const DataLocal2$outboundSchema: z.ZodType< + DataLocal2$Outbound, + DataLocal2 +> = z.object({ + commandSupported: z.boolean(), + cpu: z.nullable(z.union([z.lazy(() => Cpu2$outboundSchema), z.any()])) + .optional(), + events: z.array(z.lazy(() => SyncReconcileRequestEvent2$outboundSchema)), + imagePathPresent: z.boolean(), + memory: z.nullable(z.union([z.lazy(() => Memory2$outboundSchema), z.any()])) + .optional(), + pid: z.nullable(z.int()).optional(), + process: z.nullable(z.union([z.lazy(() => Process$outboundSchema), z.any()])) + .optional(), + readinessProbeOk: z.nullable(z.boolean()).optional(), + status: z.lazy(() => HeartbeatStatus9$outboundSchema), + triggerCount: z.int(), + backend: z.literal("local"), +}); + +export function dataLocal2ToJSON(dataLocal2: DataLocal2): string { + return JSON.stringify(DataLocal2$outboundSchema.parse(dataLocal2)); +} + +/** @internal */ +export const CpuUnit1$outboundSchema: z.ZodEnum = z.enum( + CpuUnit1, +); + +/** @internal */ +export type Cpu1$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Cpu1$outboundSchema: z.ZodType = z.object({ + unit: CpuUnit1$outboundSchema, + value: z.number(), +}); + +export function cpu1ToJSON(cpu1: Cpu1): string { + return JSON.stringify(Cpu1$outboundSchema.parse(cpu1)); +} + +/** @internal */ +export type CpuUnion1$Outbound = Cpu1$Outbound | any; + +/** @internal */ +export const CpuUnion1$outboundSchema: z.ZodType< + CpuUnion1$Outbound, + CpuUnion1 +> = z.union([z.lazy(() => Cpu1$outboundSchema), z.any()]); + +export function cpuUnion1ToJSON(cpuUnion1: CpuUnion1): string { + return JSON.stringify(CpuUnion1$outboundSchema.parse(cpuUnion1)); +} + +/** @internal */ +export type InvolvedObject1$Outbound = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +/** @internal */ +export const InvolvedObject1$outboundSchema: z.ZodType< + InvolvedObject1$Outbound, + InvolvedObject1 +> = z.object({ + apiVersion: z.nullable(z.string()).optional(), + fieldPath: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + namespace: z.nullable(z.string()).optional(), + resourceVersion: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), +}); + +export function involvedObject1ToJSON( + involvedObject1: InvolvedObject1, +): string { + return JSON.stringify(InvolvedObject1$outboundSchema.parse(involvedObject1)); +} + +/** @internal */ +export type InvolvedObjectUnion1$Outbound = InvolvedObject1$Outbound | any; + +/** @internal */ +export const InvolvedObjectUnion1$outboundSchema: z.ZodType< + InvolvedObjectUnion1$Outbound, + InvolvedObjectUnion1 +> = z.union([z.lazy(() => InvolvedObject1$outboundSchema), z.any()]); + +export function involvedObjectUnion1ToJSON( + involvedObjectUnion1: InvolvedObjectUnion1, +): string { + return JSON.stringify( + InvolvedObjectUnion1$outboundSchema.parse(involvedObjectUnion1), + ); +} + +/** @internal */ +export type SyncReconcileRequestSource1$Outbound = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSource1$outboundSchema: z.ZodType< + SyncReconcileRequestSource1$Outbound, + SyncReconcileRequestSource1 +> = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSource1ToJSON( + syncReconcileRequestSource1: SyncReconcileRequestSource1, +): string { + return JSON.stringify( + SyncReconcileRequestSource1$outboundSchema.parse( + syncReconcileRequestSource1, + ), + ); +} + +/** @internal */ +export type SourceUnion1$Outbound = SyncReconcileRequestSource1$Outbound | any; + +/** @internal */ +export const SourceUnion1$outboundSchema: z.ZodType< + SourceUnion1$Outbound, + SourceUnion1 +> = z.union([ + z.lazy(() => SyncReconcileRequestSource1$outboundSchema), + z.any(), +]); + +export function sourceUnion1ToJSON(sourceUnion1: SourceUnion1): string { + return JSON.stringify(SourceUnion1$outboundSchema.parse(sourceUnion1)); +} + +/** @internal */ +export type SyncReconcileRequestEvent1$Outbound = { + count?: number | null | undefined; + eventTime?: string | null | undefined; + firstTimestamp?: string | null | undefined; + involvedObject?: InvolvedObject1$Outbound | any | null | undefined; + lastTimestamp?: string | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource1$Outbound | any | null | undefined; + type?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestEvent1$outboundSchema: z.ZodType< + SyncReconcileRequestEvent1$Outbound, + SyncReconcileRequestEvent1 +> = z.object({ + count: z.nullable(z.int()).optional(), + eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), + firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject1$outboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSource1$outboundSchema), + z.any(), + ]), + ).optional(), + type: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestEvent1ToJSON( + syncReconcileRequestEvent1: SyncReconcileRequestEvent1, +): string { + return JSON.stringify( + SyncReconcileRequestEvent1$outboundSchema.parse(syncReconcileRequestEvent1), + ); +} + +/** @internal */ +export const MemoryUnit1$outboundSchema: z.ZodEnum = z.enum( + MemoryUnit1, +); + +/** @internal */ +export type Memory1$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Memory1$outboundSchema: z.ZodType = z + .object({ + unit: MemoryUnit1$outboundSchema, + value: z.number(), + }); + +export function memory1ToJSON(memory1: Memory1): string { + return JSON.stringify(Memory1$outboundSchema.parse(memory1)); +} + +/** @internal */ +export type MemoryUnion1$Outbound = Memory1$Outbound | any; + +/** @internal */ +export const MemoryUnion1$outboundSchema: z.ZodType< + MemoryUnion1$Outbound, + MemoryUnion1 +> = z.union([z.lazy(() => Memory1$outboundSchema), z.any()]); + +export function memoryUnion1ToJSON(memoryUnion1: MemoryUnion1): string { + return JSON.stringify(MemoryUnion1$outboundSchema.parse(memoryUnion1)); +} + +/** @internal */ +export const CpuPodUnit1$outboundSchema: z.ZodEnum = z.enum( + CpuPodUnit1, +); + +/** @internal */ +export type CpuPod1$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const CpuPod1$outboundSchema: z.ZodType = z + .object({ + unit: CpuPodUnit1$outboundSchema, + value: z.number(), + }); + +export function cpuPod1ToJSON(cpuPod1: CpuPod1): string { + return JSON.stringify(CpuPod1$outboundSchema.parse(cpuPod1)); +} + +/** @internal */ +export type PodCpuUnion1$Outbound = CpuPod1$Outbound | any; + +/** @internal */ +export const PodCpuUnion1$outboundSchema: z.ZodType< + PodCpuUnion1$Outbound, + PodCpuUnion1 +> = z.union([z.lazy(() => CpuPod1$outboundSchema), z.any()]); + +export function podCpuUnion1ToJSON(podCpuUnion1: PodCpuUnion1): string { + return JSON.stringify(PodCpuUnion1$outboundSchema.parse(podCpuUnion1)); +} + +/** @internal */ +export const MemoryPodUnit1$outboundSchema: z.ZodEnum = z + .enum(MemoryPodUnit1); + +/** @internal */ +export type MemoryPod1$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const MemoryPod1$outboundSchema: z.ZodType< + MemoryPod1$Outbound, + MemoryPod1 +> = z.object({ + unit: MemoryPodUnit1$outboundSchema, + value: z.number(), +}); + +export function memoryPod1ToJSON(memoryPod1: MemoryPod1): string { + return JSON.stringify(MemoryPod1$outboundSchema.parse(memoryPod1)); +} + +/** @internal */ +export type PodMemoryUnion1$Outbound = MemoryPod1$Outbound | any; + +/** @internal */ +export const PodMemoryUnion1$outboundSchema: z.ZodType< + PodMemoryUnion1$Outbound, + PodMemoryUnion1 +> = z.union([z.lazy(() => MemoryPod1$outboundSchema), z.any()]); + +export function podMemoryUnion1ToJSON( + podMemoryUnion1: PodMemoryUnion1, +): string { + return JSON.stringify(PodMemoryUnion1$outboundSchema.parse(podMemoryUnion1)); +} + +/** @internal */ +export type OwnerReference1$Outbound = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +/** @internal */ +export const OwnerReference1$outboundSchema: z.ZodType< + OwnerReference1$Outbound, + OwnerReference1 +> = z.object({ + controller: z.boolean(), + kind: z.string(), + name: z.string(), + uid: z.string(), +}); + +export function ownerReference1ToJSON( + ownerReference1: OwnerReference1, +): string { + return JSON.stringify(OwnerReference1$outboundSchema.parse(ownerReference1)); +} + +/** @internal */ +export type Pod1$Outbound = { + cpu?: CpuPod1$Outbound | any | null | undefined; + memory?: MemoryPod1$Outbound | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +/** @internal */ +export const Pod1$outboundSchema: z.ZodType = z.object({ + cpu: z.nullable(z.union([z.lazy(() => CpuPod1$outboundSchema), z.any()])) + .optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryPod1$outboundSchema), z.any()]), + ).optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + ownerReferences: z.array(z.lazy(() => OwnerReference1$outboundSchema)), + phase: z.nullable(z.string()).optional(), + podIp: z.nullable(z.string()).optional(), + ready: z.boolean(), + restartCount: z.int(), + terminatedReason: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function pod1ToJSON(pod1: Pod1): string { + return JSON.stringify(Pod1$outboundSchema.parse(pod1)); +} + +/** @internal */ +export type Replicas1$Outbound = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +/** @internal */ +export const Replicas1$outboundSchema: z.ZodType< + Replicas1$Outbound, + Replicas1 +> = z.object({ + available: z.nullable(z.int()).optional(), + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + misscheduled: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + updated: z.nullable(z.int()).optional(), +}); + +export function replicas1ToJSON(replicas1: Replicas1): string { + return JSON.stringify(Replicas1$outboundSchema.parse(replicas1)); +} + +/** @internal */ +export const Reason8$outboundSchema: z.ZodEnum = z.enum( + Reason8, +); + +/** @internal */ +export const CollectionIssueSeverity8$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity8 +> = z.enum(CollectionIssueSeverity8); + +/** @internal */ +export type CollectionIssue8$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue8$outboundSchema: z.ZodType< + CollectionIssue8$Outbound, + CollectionIssue8 +> = z.object({ + message: z.string(), + reason: Reason8$outboundSchema, + severity: CollectionIssueSeverity8$outboundSchema, + source: z.string(), +}); + +export function collectionIssue8ToJSON( + collectionIssue8: CollectionIssue8, +): string { + return JSON.stringify( + CollectionIssue8$outboundSchema.parse(collectionIssue8), + ); +} + +/** @internal */ +export const Health8$outboundSchema: z.ZodEnum = z.enum( + Health8, +); + +/** @internal */ +export const StatusLifecycle8$outboundSchema: z.ZodEnum< + typeof StatusLifecycle8 +> = z.enum(StatusLifecycle8); + +/** @internal */ +export type HeartbeatStatus8$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus8$outboundSchema: z.ZodType< + HeartbeatStatus8$Outbound, + HeartbeatStatus8 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue8$outboundSchema)), + health: Health8$outboundSchema, + lifecycle: StatusLifecycle8$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus8ToJSON( + heartbeatStatus8: HeartbeatStatus8, +): string { + return JSON.stringify( + HeartbeatStatus8$outboundSchema.parse(heartbeatStatus8), + ); +} + +/** @internal */ +export type WorkloadCondition1$Outbound = { + lastTransitionTime?: string | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +/** @internal */ +export const WorkloadCondition1$outboundSchema: z.ZodType< + WorkloadCondition1$Outbound, + WorkloadCondition1 +> = z.object({ + lastTransitionTime: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.nullable(z.string()).optional(), + reason: z.nullable(z.string()).optional(), + status: z.string(), + type: z.string(), +}); + +export function workloadCondition1ToJSON( + workloadCondition1: WorkloadCondition1, +): string { + return JSON.stringify( + WorkloadCondition1$outboundSchema.parse(workloadCondition1), + ); +} + +/** @internal */ +export type Workload1$Outbound = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +/** @internal */ +export const Workload1$outboundSchema: z.ZodType< + Workload1$Outbound, + Workload1 +> = z.object({ + availableReplicas: z.nullable(z.int()).optional(), + conditions: z.array(z.lazy(() => WorkloadCondition1$outboundSchema)), + desiredGeneration: z.nullable(z.int()).optional(), + desiredReplicas: z.nullable(z.int()).optional(), + observedGeneration: z.nullable(z.int()).optional(), + readyReplicas: z.nullable(z.int()).optional(), + rolloutReason: z.nullable(z.string()).optional(), + updatedReplicas: z.nullable(z.int()).optional(), +}); + +export function workload1ToJSON(workload1: Workload1): string { + return JSON.stringify(Workload1$outboundSchema.parse(workload1)); +} + +/** @internal */ +export type WorkloadUnion1$Outbound = Workload1$Outbound | any; + +/** @internal */ +export const WorkloadUnion1$outboundSchema: z.ZodType< + WorkloadUnion1$Outbound, + WorkloadUnion1 +> = z.union([z.lazy(() => Workload1$outboundSchema), z.any()]); + +export function workloadUnion1ToJSON(workloadUnion1: WorkloadUnion1): string { + return JSON.stringify(WorkloadUnion1$outboundSchema.parse(workloadUnion1)); +} + +/** @internal */ +export const WorkloadKind1$outboundSchema: z.ZodEnum = z + .enum(WorkloadKind1); + +/** @internal */ +export type DataKubernetes1$Outbound = { + cpu?: Cpu1$Outbound | any | null | undefined; + events: Array; + memory?: Memory1$Outbound | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas1$Outbound; + restarts?: number | null | undefined; + status: HeartbeatStatus8$Outbound; + triggerCount: number; + workload?: Workload1$Outbound | any | null | undefined; + workloadKind: string; + backend: "kubernetes"; +}; + +/** @internal */ +export const DataKubernetes1$outboundSchema: z.ZodType< + DataKubernetes1$Outbound, + DataKubernetes1 +> = z.object({ + cpu: z.nullable(z.union([z.lazy(() => Cpu1$outboundSchema), z.any()])) + .optional(), + events: z.array(z.lazy(() => SyncReconcileRequestEvent1$outboundSchema)), + memory: z.nullable(z.union([z.lazy(() => Memory1$outboundSchema), z.any()])) + .optional(), + name: z.string(), + namespace: z.string(), + pods: z.array(z.lazy(() => Pod1$outboundSchema)), + replicas: z.lazy(() => Replicas1$outboundSchema), + restarts: z.nullable(z.int()).optional(), + status: z.lazy(() => HeartbeatStatus8$outboundSchema), + triggerCount: z.int(), + workload: z.nullable( + z.union([z.lazy(() => Workload1$outboundSchema), z.any()]), + ).optional(), + workloadKind: WorkloadKind1$outboundSchema, + backend: z.literal("kubernetes"), +}); + +export function dataKubernetes1ToJSON( + dataKubernetes1: DataKubernetes1, +): string { + return JSON.stringify(DataKubernetes1$outboundSchema.parse(dataKubernetes1)); +} + +/** @internal */ +export const Reason7$outboundSchema: z.ZodEnum = z.enum( + Reason7, +); + +/** @internal */ +export const CollectionIssueSeverity7$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity7 +> = z.enum(CollectionIssueSeverity7); + +/** @internal */ +export type CollectionIssue7$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue7$outboundSchema: z.ZodType< + CollectionIssue7$Outbound, + CollectionIssue7 +> = z.object({ + message: z.string(), + reason: Reason7$outboundSchema, + severity: CollectionIssueSeverity7$outboundSchema, + source: z.string(), +}); + +export function collectionIssue7ToJSON( + collectionIssue7: CollectionIssue7, +): string { + return JSON.stringify( + CollectionIssue7$outboundSchema.parse(collectionIssue7), + ); +} + +/** @internal */ +export const Health7$outboundSchema: z.ZodEnum = z.enum( + Health7, +); + +/** @internal */ +export const StatusLifecycle7$outboundSchema: z.ZodEnum< + typeof StatusLifecycle7 +> = z.enum(StatusLifecycle7); + +/** @internal */ +export type HeartbeatStatus7$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus7$outboundSchema: z.ZodType< + HeartbeatStatus7$Outbound, + HeartbeatStatus7 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue7$outboundSchema)), + health: Health7$outboundSchema, + lifecycle: StatusLifecycle7$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus7ToJSON( + heartbeatStatus7: HeartbeatStatus7, +): string { + return JSON.stringify( + HeartbeatStatus7$outboundSchema.parse(heartbeatStatus7), + ); +} + +/** @internal */ +export type DataAzureContainerApps1$Outbound = { + appName: string; + cpu?: number | null | undefined; + environmentName?: string | null | undefined; + ingressFqdn?: string | null | undefined; + maxReplicas?: number | null | undefined; + memory?: string | null | undefined; + minReplicas?: number | null | undefined; + provisioningState?: string | null | undefined; + revision?: string | null | undefined; + runningStatus?: string | null | undefined; + status: HeartbeatStatus7$Outbound; + backend: "azureContainerApps"; +}; + +/** @internal */ +export const DataAzureContainerApps1$outboundSchema: z.ZodType< + DataAzureContainerApps1$Outbound, + DataAzureContainerApps1 +> = z.object({ + appName: z.string(), + cpu: z.nullable(z.number()).optional(), + environmentName: z.nullable(z.string()).optional(), + ingressFqdn: z.nullable(z.string()).optional(), + maxReplicas: z.nullable(z.int()).optional(), + memory: z.nullable(z.string()).optional(), + minReplicas: z.nullable(z.int()).optional(), + provisioningState: z.nullable(z.string()).optional(), + revision: z.nullable(z.string()).optional(), + runningStatus: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus7$outboundSchema), + backend: z.literal("azureContainerApps"), +}); + +export function dataAzureContainerApps1ToJSON( + dataAzureContainerApps1: DataAzureContainerApps1, +): string { + return JSON.stringify( + DataAzureContainerApps1$outboundSchema.parse(dataAzureContainerApps1), + ); +} + +/** @internal */ +export const Reason6$outboundSchema: z.ZodEnum = z.enum( + Reason6, +); + +/** @internal */ +export const CollectionIssueSeverity6$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity6 +> = z.enum(CollectionIssueSeverity6); + +/** @internal */ +export type CollectionIssue6$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue6$outboundSchema: z.ZodType< + CollectionIssue6$Outbound, + CollectionIssue6 +> = z.object({ + message: z.string(), + reason: Reason6$outboundSchema, + severity: CollectionIssueSeverity6$outboundSchema, + source: z.string(), +}); + +export function collectionIssue6ToJSON( + collectionIssue6: CollectionIssue6, +): string { + return JSON.stringify( + CollectionIssue6$outboundSchema.parse(collectionIssue6), + ); +} + +/** @internal */ +export const Health6$outboundSchema: z.ZodEnum = z.enum( + Health6, +); + +/** @internal */ +export const StatusLifecycle6$outboundSchema: z.ZodEnum< + typeof StatusLifecycle6 +> = z.enum(StatusLifecycle6); + +/** @internal */ +export type HeartbeatStatus6$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus6$outboundSchema: z.ZodType< + HeartbeatStatus6$Outbound, + HeartbeatStatus6 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue6$outboundSchema)), + health: Health6$outboundSchema, + lifecycle: StatusLifecycle6$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus6ToJSON( + heartbeatStatus6: HeartbeatStatus6, +): string { + return JSON.stringify( + HeartbeatStatus6$outboundSchema.parse(heartbeatStatus6), + ); +} + +/** @internal */ +export type DataGcpCloudRun$Outbound = { + containerImage?: string | null | undefined; + cpuLimit?: string | null | undefined; + generation?: number | null | undefined; + latestCreatedRevision?: string | null | undefined; + latestReadyRevision?: string | null | undefined; + maxInstanceCount?: number | null | undefined; + memoryLimit?: string | null | undefined; + minInstanceCount?: number | null | undefined; + observedGeneration?: number | null | undefined; + region?: string | null | undefined; + service: string; + status: HeartbeatStatus6$Outbound; + trafficCount: number; + uri?: string | null | undefined; + urls: Array; + backend: "gcpCloudRun"; +}; + +/** @internal */ +export const DataGcpCloudRun$outboundSchema: z.ZodType< + DataGcpCloudRun$Outbound, + DataGcpCloudRun +> = z.object({ + containerImage: z.nullable(z.string()).optional(), + cpuLimit: z.nullable(z.string()).optional(), + generation: z.nullable(z.int()).optional(), + latestCreatedRevision: z.nullable(z.string()).optional(), + latestReadyRevision: z.nullable(z.string()).optional(), + maxInstanceCount: z.nullable(z.int()).optional(), + memoryLimit: z.nullable(z.string()).optional(), + minInstanceCount: z.nullable(z.int()).optional(), + observedGeneration: z.nullable(z.int()).optional(), + region: z.nullable(z.string()).optional(), + service: z.string(), + status: z.lazy(() => HeartbeatStatus6$outboundSchema), + trafficCount: z.int(), + uri: z.nullable(z.string()).optional(), + urls: z.array(z.string()), + backend: z.literal("gcpCloudRun"), +}); + +export function dataGcpCloudRunToJSON( + dataGcpCloudRun: DataGcpCloudRun, +): string { + return JSON.stringify(DataGcpCloudRun$outboundSchema.parse(dataGcpCloudRun)); +} + +/** @internal */ +export const Reason5$outboundSchema: z.ZodEnum = z.enum( + Reason5, +); + +/** @internal */ +export const CollectionIssueSeverity5$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity5 +> = z.enum(CollectionIssueSeverity5); + +/** @internal */ +export type CollectionIssue5$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue5$outboundSchema: z.ZodType< + CollectionIssue5$Outbound, + CollectionIssue5 +> = z.object({ + message: z.string(), + reason: Reason5$outboundSchema, + severity: CollectionIssueSeverity5$outboundSchema, + source: z.string(), +}); + +export function collectionIssue5ToJSON( + collectionIssue5: CollectionIssue5, +): string { + return JSON.stringify( + CollectionIssue5$outboundSchema.parse(collectionIssue5), + ); +} + +/** @internal */ +export const Health5$outboundSchema: z.ZodEnum = z.enum( + Health5, +); + +/** @internal */ +export const StatusLifecycle5$outboundSchema: z.ZodEnum< + typeof StatusLifecycle5 +> = z.enum(StatusLifecycle5); + +/** @internal */ +export type HeartbeatStatus5$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus5$outboundSchema: z.ZodType< + HeartbeatStatus5$Outbound, + HeartbeatStatus5 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue5$outboundSchema)), + health: Health5$outboundSchema, + lifecycle: StatusLifecycle5$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus5ToJSON( + heartbeatStatus5: HeartbeatStatus5, +): string { + return JSON.stringify( + HeartbeatStatus5$outboundSchema.parse(heartbeatStatus5), + ); +} + +/** @internal */ +export type DataAwsLambda$Outbound = { + codeSha256?: string | null | undefined; + functionName: string; + functionUrlAuthType?: string | null | undefined; + functionUrlCorsPresent: boolean; + lastModified?: string | null | undefined; + lastUpdateStatus?: string | null | undefined; + lastUpdateStatusReason?: string | null | undefined; + lastUpdateStatusReasonCode?: string | null | undefined; + layerCount: number; + memorySizeMb?: number | null | undefined; + packageType?: string | null | undefined; + revisionId?: string | null | undefined; + runtime?: string | null | undefined; + state?: string | null | undefined; + stateReason?: string | null | undefined; + stateReasonCode?: string | null | undefined; + status: HeartbeatStatus5$Outbound; + timeoutSeconds?: number | null | undefined; + triggerCount: number; + version?: string | null | undefined; + backend: "awsLambda"; +}; + +/** @internal */ +export const DataAwsLambda$outboundSchema: z.ZodType< + DataAwsLambda$Outbound, + DataAwsLambda +> = z.object({ + codeSha256: z.nullable(z.string()).optional(), + functionName: z.string(), + functionUrlAuthType: z.nullable(z.string()).optional(), + functionUrlCorsPresent: z.boolean(), + lastModified: z.nullable(z.string()).optional(), + lastUpdateStatus: z.nullable(z.string()).optional(), + lastUpdateStatusReason: z.nullable(z.string()).optional(), + lastUpdateStatusReasonCode: z.nullable(z.string()).optional(), + layerCount: z.int(), + memorySizeMb: z.nullable(z.int()).optional(), + packageType: z.nullable(z.string()).optional(), + revisionId: z.nullable(z.string()).optional(), + runtime: z.nullable(z.string()).optional(), + state: z.nullable(z.string()).optional(), + stateReason: z.nullable(z.string()).optional(), + stateReasonCode: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus5$outboundSchema), + timeoutSeconds: z.nullable(z.int()).optional(), + triggerCount: z.int(), + version: z.nullable(z.string()).optional(), + backend: z.literal("awsLambda"), +}); + +export function dataAwsLambdaToJSON(dataAwsLambda: DataAwsLambda): string { + return JSON.stringify(DataAwsLambda$outboundSchema.parse(dataAwsLambda)); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion2$Outbound = + | DataAwsLambda$Outbound + | DataGcpCloudRun$Outbound + | DataAzureContainerApps1$Outbound + | DataKubernetes1$Outbound + | DataLocal2$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion2$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion2$Outbound, + SyncReconcileRequestDataUnion2 +> = z.union([ + z.lazy(() => DataAwsLambda$outboundSchema), + z.lazy(() => DataGcpCloudRun$outboundSchema), + z.lazy(() => DataAzureContainerApps1$outboundSchema), + z.lazy(() => DataKubernetes1$outboundSchema), + z.lazy(() => DataLocal2$outboundSchema), +]); + +export function syncReconcileRequestDataUnion2ToJSON( + syncReconcileRequestDataUnion2: SyncReconcileRequestDataUnion2, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion2$outboundSchema.parse( + syncReconcileRequestDataUnion2, + ), + ); +} + +/** @internal */ +export type DataWorker$Outbound = { + data: + | DataAwsLambda$Outbound + | DataGcpCloudRun$Outbound + | DataAzureContainerApps1$Outbound + | DataKubernetes1$Outbound + | DataLocal2$Outbound; + resourceType: "worker"; +}; + +/** @internal */ +export const DataWorker$outboundSchema: z.ZodType< + DataWorker$Outbound, + DataWorker +> = z.object({ + data: z.union([ + z.lazy(() => DataAwsLambda$outboundSchema), + z.lazy(() => DataGcpCloudRun$outboundSchema), + z.lazy(() => DataAzureContainerApps1$outboundSchema), + z.lazy(() => DataKubernetes1$outboundSchema), + z.lazy(() => DataLocal2$outboundSchema), + ]), + resourceType: z.literal("worker"), +}); + +export function dataWorkerToJSON(dataWorker: DataWorker): string { + return JSON.stringify(DataWorker$outboundSchema.parse(dataWorker)); +} + +/** @internal */ +export const Reason4$outboundSchema: z.ZodEnum = z.enum( + Reason4, +); + +/** @internal */ +export const CollectionIssueSeverity4$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity4 +> = z.enum(CollectionIssueSeverity4); + +/** @internal */ +export type CollectionIssue4$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue4$outboundSchema: z.ZodType< + CollectionIssue4$Outbound, + CollectionIssue4 +> = z.object({ + message: z.string(), + reason: Reason4$outboundSchema, + severity: CollectionIssueSeverity4$outboundSchema, + source: z.string(), +}); + +export function collectionIssue4ToJSON( + collectionIssue4: CollectionIssue4, +): string { + return JSON.stringify( + CollectionIssue4$outboundSchema.parse(collectionIssue4), + ); +} + +/** @internal */ +export const Health4$outboundSchema: z.ZodEnum = z.enum( + Health4, +); + +/** @internal */ +export const StatusLifecycle4$outboundSchema: z.ZodEnum< + typeof StatusLifecycle4 +> = z.enum(StatusLifecycle4); + +/** @internal */ +export type HeartbeatStatus4$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus4$outboundSchema: z.ZodType< + HeartbeatStatus4$Outbound, + HeartbeatStatus4 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue4$outboundSchema)), + health: Health4$outboundSchema, + lifecycle: StatusLifecycle4$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus4ToJSON( + heartbeatStatus4: HeartbeatStatus4, +): string { + return JSON.stringify( + HeartbeatStatus4$outboundSchema.parse(heartbeatStatus4), + ); +} + +/** @internal */ +export type DataLocal1$Outbound = { + isDirectory?: boolean | null | undefined; + modifiedAt?: string | null | undefined; + path: string; + pathExists: boolean; + readonly?: boolean | null | undefined; + status: HeartbeatStatus4$Outbound; + backend: "local"; +}; + +/** @internal */ +export const DataLocal1$outboundSchema: z.ZodType< + DataLocal1$Outbound, + DataLocal1 +> = z.object({ + isDirectory: z.nullable(z.boolean()).optional(), + modifiedAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), + path: z.string(), + pathExists: z.boolean(), + readonly: z.nullable(z.boolean()).optional(), + status: z.lazy(() => HeartbeatStatus4$outboundSchema), + backend: z.literal("local"), +}); + +export function dataLocal1ToJSON(dataLocal1: DataLocal1): string { + return JSON.stringify(DataLocal1$outboundSchema.parse(dataLocal1)); +} + +/** @internal */ +export const Reason3$outboundSchema: z.ZodEnum = z.enum( + Reason3, +); + +/** @internal */ +export const CollectionIssueSeverity3$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity3 +> = z.enum(CollectionIssueSeverity3); + +/** @internal */ +export type CollectionIssue3$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue3$outboundSchema: z.ZodType< + CollectionIssue3$Outbound, + CollectionIssue3 +> = z.object({ + message: z.string(), + reason: Reason3$outboundSchema, + severity: CollectionIssueSeverity3$outboundSchema, + source: z.string(), +}); + +export function collectionIssue3ToJSON( + collectionIssue3: CollectionIssue3, +): string { + return JSON.stringify( + CollectionIssue3$outboundSchema.parse(collectionIssue3), + ); +} + +/** @internal */ +export const Health3$outboundSchema: z.ZodEnum = z.enum( + Health3, +); + +/** @internal */ +export const StatusLifecycle3$outboundSchema: z.ZodEnum< + typeof StatusLifecycle3 +> = z.enum(StatusLifecycle3); + +/** @internal */ +export type HeartbeatStatus3$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus3$outboundSchema: z.ZodType< + HeartbeatStatus3$Outbound, + HeartbeatStatus3 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue3$outboundSchema)), + health: Health3$outboundSchema, + lifecycle: StatusLifecycle3$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus3ToJSON( + heartbeatStatus3: HeartbeatStatus3, +): string { + return JSON.stringify( + HeartbeatStatus3$outboundSchema.parse(heartbeatStatus3), + ); +} + +/** @internal */ +export type DataAzureBlob$Outbound = { + accessTier?: string | null | undefined; + accountKind?: string | null | undefined; + allowBlobPublicAccess?: boolean | null | undefined; + blobDeleteRetentionDays?: number | null | undefined; + blobDeleteRetentionEnabled?: boolean | null | undefined; + blobEncryptionEnabled?: boolean | null | undefined; + blobVersioningEnabled?: boolean | null | undefined; + changeFeedEnabled?: boolean | null | undefined; + changeFeedRetentionDays?: number | null | undefined; + containerDeleteRetentionDays?: number | null | undefined; + containerDeleteRetentionEnabled?: boolean | null | undefined; + containerPublicAccess?: string | null | undefined; + encryptionKeySource?: string | null | undefined; + fileEncryptionEnabled?: boolean | null | undefined; + location?: string | null | undefined; + name: string; + primaryLocation?: string | null | undefined; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + queueEncryptionEnabled?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + secondaryLocation?: string | null | undefined; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: HeartbeatStatus3$Outbound; + statusOfPrimary?: string | null | undefined; + statusOfSecondary?: string | null | undefined; + storageAccountName?: string | null | undefined; + tableEncryptionEnabled?: boolean | null | undefined; + backend: "azureBlob"; +}; + +/** @internal */ +export const DataAzureBlob$outboundSchema: z.ZodType< + DataAzureBlob$Outbound, + DataAzureBlob +> = z.object({ + accessTier: z.nullable(z.string()).optional(), + accountKind: z.nullable(z.string()).optional(), + allowBlobPublicAccess: z.nullable(z.boolean()).optional(), + blobDeleteRetentionDays: z.nullable(z.int()).optional(), + blobDeleteRetentionEnabled: z.nullable(z.boolean()).optional(), + blobEncryptionEnabled: z.nullable(z.boolean()).optional(), + blobVersioningEnabled: z.nullable(z.boolean()).optional(), + changeFeedEnabled: z.nullable(z.boolean()).optional(), + changeFeedRetentionDays: z.nullable(z.int()).optional(), + containerDeleteRetentionDays: z.nullable(z.int()).optional(), + containerDeleteRetentionEnabled: z.nullable(z.boolean()).optional(), + containerPublicAccess: z.nullable(z.string()).optional(), + encryptionKeySource: z.nullable(z.string()).optional(), + fileEncryptionEnabled: z.nullable(z.boolean()).optional(), + location: z.nullable(z.string()).optional(), + name: z.string(), + primaryLocation: z.nullable(z.string()).optional(), + provisioningState: z.nullable(z.string()).optional(), + publicNetworkAccess: z.nullable(z.string()).optional(), + queueEncryptionEnabled: z.nullable(z.boolean()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + secondaryLocation: z.nullable(z.string()).optional(), + skuName: z.nullable(z.string()).optional(), + skuTier: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus3$outboundSchema), + statusOfPrimary: z.nullable(z.string()).optional(), + statusOfSecondary: z.nullable(z.string()).optional(), + storageAccountName: z.nullable(z.string()).optional(), + tableEncryptionEnabled: z.nullable(z.boolean()).optional(), + backend: z.literal("azureBlob"), +}); + +export function dataAzureBlobToJSON(dataAzureBlob: DataAzureBlob): string { + return JSON.stringify(DataAzureBlob$outboundSchema.parse(dataAzureBlob)); +} + +/** @internal */ +export const Reason2$outboundSchema: z.ZodEnum = z.enum( + Reason2, +); + +/** @internal */ +export const CollectionIssueSeverity2$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity2 +> = z.enum(CollectionIssueSeverity2); + +/** @internal */ +export type CollectionIssue2$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue2$outboundSchema: z.ZodType< + CollectionIssue2$Outbound, + CollectionIssue2 +> = z.object({ + message: z.string(), + reason: Reason2$outboundSchema, + severity: CollectionIssueSeverity2$outboundSchema, + source: z.string(), +}); + +export function collectionIssue2ToJSON( + collectionIssue2: CollectionIssue2, +): string { + return JSON.stringify( + CollectionIssue2$outboundSchema.parse(collectionIssue2), + ); +} + +/** @internal */ +export const Health2$outboundSchema: z.ZodEnum = z.enum( + Health2, +); + +/** @internal */ +export const StatusLifecycle2$outboundSchema: z.ZodEnum< + typeof StatusLifecycle2 +> = z.enum(StatusLifecycle2); + +/** @internal */ +export type HeartbeatStatus2$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus2$outboundSchema: z.ZodType< + HeartbeatStatus2$Outbound, + HeartbeatStatus2 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue2$outboundSchema)), + health: Health2$outboundSchema, + lifecycle: StatusLifecycle2$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus2ToJSON( + heartbeatStatus2: HeartbeatStatus2, +): string { + return JSON.stringify( + HeartbeatStatus2$outboundSchema.parse(heartbeatStatus2), + ); +} + +/** @internal */ +export type DataGcpCloudStorage$Outbound = { + bucketId?: string | null | undefined; + defaultKmsKeyName?: string | null | undefined; + encryptionConfigPresent: boolean; + lifecyclePresent: boolean; + lifecycleRuleCount?: number | null | undefined; + location?: string | null | undefined; + locationType?: string | null | undefined; + name: string; + publicAccessPrevention?: string | null | undefined; + retentionPeriod?: string | null | undefined; + retentionPolicyEffectiveTime?: string | null | undefined; + retentionPolicyIsLocked?: boolean | null | undefined; + softDeleteEffectiveTime?: string | null | undefined; + softDeleteRetentionDurationSeconds?: string | null | undefined; + status: HeartbeatStatus2$Outbound; + storageClass?: string | null | undefined; + uniformBucketLevelAccessEnabled?: boolean | null | undefined; + uniformBucketLevelAccessLockedTime?: string | null | undefined; + versioningEnabled?: boolean | null | undefined; + backend: "gcpCloudStorage"; +}; + +/** @internal */ +export const DataGcpCloudStorage$outboundSchema: z.ZodType< + DataGcpCloudStorage$Outbound, + DataGcpCloudStorage +> = z.object({ + bucketId: z.nullable(z.string()).optional(), + defaultKmsKeyName: z.nullable(z.string()).optional(), + encryptionConfigPresent: z.boolean(), + lifecyclePresent: z.boolean(), + lifecycleRuleCount: z.nullable(z.int()).optional(), + location: z.nullable(z.string()).optional(), + locationType: z.nullable(z.string()).optional(), + name: z.string(), + publicAccessPrevention: z.nullable(z.string()).optional(), + retentionPeriod: z.nullable(z.string()).optional(), + retentionPolicyEffectiveTime: z.nullable(z.string()).optional(), + retentionPolicyIsLocked: z.nullable(z.boolean()).optional(), + softDeleteEffectiveTime: z.nullable(z.string()).optional(), + softDeleteRetentionDurationSeconds: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus2$outboundSchema), + storageClass: z.nullable(z.string()).optional(), + uniformBucketLevelAccessEnabled: z.nullable(z.boolean()).optional(), + uniformBucketLevelAccessLockedTime: z.nullable(z.string()).optional(), + versioningEnabled: z.nullable(z.boolean()).optional(), + backend: z.literal("gcpCloudStorage"), +}); + +export function dataGcpCloudStorageToJSON( + dataGcpCloudStorage: DataGcpCloudStorage, +): string { + return JSON.stringify( + DataGcpCloudStorage$outboundSchema.parse(dataGcpCloudStorage), + ); +} diff --git a/client-sdks/platform/typescript/src/models/deployment.ts b/client-sdks/platform/typescript/src/models/deployment.ts index c336c4cae..ae88928bc 100644 --- a/client-sdks/platform/typescript/src/models/deployment.ts +++ b/client-sdks/platform/typescript/src/models/deployment.ts @@ -3,13 +3,32 @@ */ import * as z from "zod/v4"; -import { remap as remap$ } from "../lib/primitives.js"; import { collectExtraKeys as collectExtraKeys$, safeParse, } from "../lib/schemas.js"; import { ClosedEnum } from "../types/enums.js"; import { Result as SafeParseResult } from "../types/fp.js"; +import { + DeploymentBasePlatform, + DeploymentBasePlatform$inboundSchema, + DeploymentEnvironmentInfoUnion, + DeploymentEnvironmentInfoUnion$inboundSchema, + DeploymentInput, + DeploymentInput$inboundSchema, + DeploymentManagementEnum, + DeploymentManagementEnum$inboundSchema, + DeploymentOverrideAw, + DeploymentOverrideAw$inboundSchema, + DeploymentPlatform, + DeploymentPlatform$inboundSchema, + DeploymentStackSettings, + DeploymentStackSettings$inboundSchema, + DeploymentStackState, + DeploymentStackState$inboundSchema, + DeploymentStatus, + DeploymentStatus$inboundSchema, +} from "./deploymentoverrideaw.js"; import { EnvironmentVariableConfig, EnvironmentVariableConfig$inboundSchema, @@ -17,1640 +36,1034 @@ import { import { SDKValidationError } from "./errors/sdkvalidationerror.js"; /** - * Deployment status in the deployment lifecycle - */ -export const DeploymentStatus = { - Pending: "pending", - PreflightsFailed: "preflights-failed", - InitialSetup: "initial-setup", - InitialSetupFailed: "initial-setup-failed", - Provisioning: "provisioning", - ProvisioningFailed: "provisioning-failed", - Running: "running", - RefreshFailed: "refresh-failed", - UpdatePending: "update-pending", - Updating: "updating", - UpdateFailed: "update-failed", - DeletePending: "delete-pending", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - TeardownFailed: "teardown-failed", - Deleted: "deleted", - Error: "error", -} as const; -/** - * Deployment status in the deployment lifecycle - */ -export type DeploymentStatus = ClosedEnum; - -/** - * Target platform for the deployment - */ -export const DeploymentPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Target platform for the deployment - */ -export type DeploymentPlatform = ClosedEnum; - -/** - * Underlying cloud platform for Kubernetes deployments. - */ -export const DeploymentBasePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", -} as const; -/** - * Underlying cloud platform for Kubernetes deployments. - */ -export type DeploymentBasePlatform = ClosedEnum; - -export const DeploymentPlatformTest = { - Test: "test", -} as const; -export type DeploymentPlatformTest = ClosedEnum; - -/** - * Test platform environment information (mock) + * Azure-specific binding specification */ -export type DeploymentEnvironmentInfoTest = { +export type DeploymentOverrideAzureResource = { /** - * Test identifier for this environment + * Scope (subscription/resource group/resource level) */ - testId: string; - platform: DeploymentPlatformTest; + scope: string; }; -export const DeploymentPlatformLocal = { - Local: "local", -} as const; -export type DeploymentPlatformLocal = ClosedEnum< - typeof DeploymentPlatformLocal ->; - /** - * Local platform environment information + * Azure-specific binding specification */ -export type DeploymentEnvironmentInfoLocal = { - /** - * Architecture (e.g., "x86_64", "aarch64") - */ - arch: string; - /** - * Hostname of the machine running the deployment - */ - hostname: string; +export type DeploymentOverrideAzureStack = { /** - * Operating system (e.g., "linux", "macos", "windows") + * Scope (subscription/resource group/resource level) */ - os: string; - platform: DeploymentPlatformLocal; + scope: string; }; -export const DeploymentPlatformAzure = { - Azure: "azure", -} as const; -export type DeploymentPlatformAzure = ClosedEnum< - typeof DeploymentPlatformAzure ->; - /** - * Azure-specific environment information + * Generic binding configuration for permissions */ -export type DeploymentEnvironmentInfoAzure = { - /** - * Azure location/region - */ - location: string; +export type DeploymentOverrideAzureBinding = { /** - * Azure subscription ID + * Azure-specific binding specification */ - subscriptionId: string; + resource?: DeploymentOverrideAzureResource | undefined; /** - * Azure tenant ID + * Azure-specific binding specification */ - tenantId: string; - platform: DeploymentPlatformAzure; + stack?: DeploymentOverrideAzureStack | undefined; }; -export const DeploymentPlatformGcp = { - Gcp: "gcp", -} as const; -export type DeploymentPlatformGcp = ClosedEnum; - /** - * GCP-specific environment information + * Grant permissions for a specific cloud platform */ -export type DeploymentEnvironmentInfoGcp = { +export type DeploymentOverrideAzureGrant = { /** - * GCP project ID (e.g., "my-project") + * AWS IAM actions (only for AWS) */ - projectId: string; + actions?: Array | null | undefined; /** - * GCP project number (e.g., "123456789012") + * Azure actions (only for Azure) */ - projectNumber: string; + dataActions?: Array | null | undefined; /** - * GCP region + * GCP permissions that require an exact residual custom role. */ - region: string; - platform: DeploymentPlatformGcp; -}; - -export const DeploymentPlatformAws = { - Aws: "aws", -} as const; -export type DeploymentPlatformAws = ClosedEnum; - -/** - * AWS-specific environment information - */ -export type DeploymentEnvironmentInfoAws = { + permissions?: Array | null | undefined; /** - * AWS account ID + * Provider predefined roles to bind directly. */ - accountId: string; + predefinedRoles?: Array | null | undefined; /** - * AWS region + * GCP residual custom permissions to pair with predefined roles. */ - region: string; - platform: DeploymentPlatformAws; + residualPermissions?: Array | null | undefined; }; /** - * Cloud environment information + * Azure-specific platform permission configuration */ -export type DeploymentEnvironmentInfoUnion = - | DeploymentEnvironmentInfoGcp - | DeploymentEnvironmentInfoAzure - | DeploymentEnvironmentInfoLocal - | DeploymentEnvironmentInfoAws - | DeploymentEnvironmentInfoTest - | any; - -export type DeploymentPoolsAutoscale = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; +export type DeploymentOverrideAzure = { /** - * Maximum machine count. + * Generic binding configuration for permissions */ - max: number; + binding: DeploymentOverrideAzureBinding; /** - * Minimum machine count. + * Short admin-facing description of why this entry exists. */ - min: number; - mode: "autoscale"; -}; - -export type DeploymentPoolsFixed = { + description?: string | null | undefined; /** - * Provider machine type selected for this deployment. + * Grant permissions for a specific cloud platform */ - machine?: string | null | undefined; + grant: DeploymentOverrideAzureGrant; /** - * Number of machines to run. + * Stable admin-facing label for this permission entry. */ - machines: number; - mode: "fixed"; + label?: string | null | undefined; }; /** - * User-selected deployment settings for one compute pool. + * GCP IAM condition */ -export type DeploymentPoolsUnion = - | DeploymentPoolsFixed - | DeploymentPoolsAutoscale; +export type DeploymentOverrideConditionResource = { + expression: string; + title: string; +}; + +export type DeploymentOverrideResourceConditionUnion = + | DeploymentOverrideConditionResource + | any; /** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. + * GCP-specific binding specification */ -export type DeploymentCompute = { +export type DeploymentOverrideGcpResource = { + condition?: DeploymentOverrideConditionResource | any | null | undefined; /** - * Selected compute choices keyed by pool ID. + * Scope (project/resource level) */ - pools?: - | { [k: string]: DeploymentPoolsFixed | DeploymentPoolsAutoscale } - | undefined; + scope: string; }; -export type DeploymentComputeUnion = DeploymentCompute | any; - -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export const DeploymentDeploymentModel = { - Push: "push", - Pull: "pull", -} as const; /** - * Deployment model: how updates are delivered to the remote environment. + * GCP IAM condition */ -export type DeploymentDeploymentModel = ClosedEnum< - typeof DeploymentDeploymentModel ->; - -export type DeploymentAws = { - certificateArn: string; -}; - -export type DeploymentAwsUnion = DeploymentAws | any; - -export type DeploymentAzureStackSettings = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; -}; - -export type DeploymentAzureUnion = DeploymentAzureStackSettings | any; - -export type DeploymentGcpStackSettings = { - certificateName: string; +export type DeploymentOverrideConditionStack = { + expression: string; + title: string; }; -export type DeploymentGcpUnion = DeploymentGcpStackSettings | any; +export type DeploymentOverrideStackConditionUnion = + | DeploymentOverrideConditionStack + | any; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * GCP-specific binding specification */ -export type DeploymentTlsSecretRef = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; -}; - -export type DeploymentDomainsKubernetes = { +export type DeploymentOverrideGcpStack = { + condition?: DeploymentOverrideConditionStack | any | null | undefined; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Scope (project/resource level) */ - tlsSecretRef: DeploymentTlsSecretRef; -}; - -export type DeploymentDomainsKubernetesUnion = - | DeploymentDomainsKubernetes - | any; - -/** - * Platform-specific certificate references for custom domains. - */ -export type DeploymentDomainsCertificate = { - aws?: DeploymentAws | any | null | undefined; - azure?: DeploymentAzureStackSettings | any | null | undefined; - gcp?: DeploymentGcpStackSettings | any | null | undefined; - kubernetes?: DeploymentDomainsKubernetes | any | null | undefined; + scope: string; }; /** - * Custom domain configuration for a single resource. + * Generic binding configuration for permissions */ -export type DeploymentCustomDomains = { +export type DeploymentOverrideGcpBinding = { /** - * Platform-specific certificate references for custom domains. + * GCP-specific binding specification */ - certificate: DeploymentDomainsCertificate; + resource?: DeploymentOverrideGcpResource | undefined; /** - * Fully qualified domain name to use. + * GCP-specific binding specification */ - domain: string; + stack?: DeploymentOverrideGcpStack | undefined; }; /** - * Domain configuration for the stack. - * - * @remarks - * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. + * Grant permissions for a specific cloud platform */ -export type DeploymentDomains = { +export type DeploymentOverrideGcpGrant = { /** - * Custom domain configuration per resource ID. + * AWS IAM actions (only for AWS) */ - customDomains?: { [k: string]: DeploymentCustomDomains } | null | undefined; -}; - -export type DeploymentDomainsUnion = DeploymentDomains | any; - -/** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ -export type DeploymentExternalBindings = {}; - -/** - * How heartbeat health checks are handled. - */ -export const DeploymentHeartbeats = { - Off: "off", - On: "on", -} as const; -/** - * How heartbeat health checks are handled. - */ -export type DeploymentHeartbeats = ClosedEnum; - -/** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. - */ -export type DeploymentCloud = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; -}; - -export type DeploymentCloudUnion = DeploymentCloud | any; - -/** - * Ownership model for the Kubernetes cluster. - */ -export const DeploymentOwnership = { - Managed: "managed", - Existing: "existing", - External: "external", -} as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type DeploymentOwnership = ClosedEnum; - -/** - * Kubernetes cluster setup settings. - */ -export type DeploymentCluster = { - cloud?: DeploymentCloud | any | null | undefined; + actions?: Array | null | undefined; /** - * Namespace where the Alien chart and application resources run. + * Azure actions (only for Azure) */ - namespace?: string | null | undefined; + dataActions?: Array | null | undefined; /** - * Ownership model for the Kubernetes cluster. + * GCP permissions that require an exact residual custom role. */ - ownership: DeploymentOwnership; -}; - -export type DeploymentClusterUnion = DeploymentCluster | any; - -export type DeploymentCertificateNone2 = { - mode: "none"; -}; - -export type DeploymentCertificateManagedTLSSecret2 = { - mode: "managedTlsSecret"; + permissions?: Array | null | undefined; /** - * Secret name template. Runtime may substitute resource/deployment tokens. + * Provider predefined roles to bind directly. */ - secretNameTemplate: string; -}; - -export type DeploymentCertificateAwsAcmArn2 = { + predefinedRoles?: Array | null | undefined; /** - * Existing ACM certificate ARN. + * GCP residual custom permissions to pair with predefined roles. */ - certificateArn: string; - mode: "awsAcmArn"; + residualPermissions?: Array | null | undefined; }; -export type DeploymentCertificateManagedAcmImport2 = { - mode: "managedAcmImport"; +/** + * GCP-specific platform permission configuration + */ +export type DeploymentOverrideGcp = { /** - * ACM region. Defaults to the deployment region when omitted. + * Generic binding configuration for permissions */ - region?: string | null | undefined; + binding: DeploymentOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentOverrideGcpGrant; /** - * Tags applied to runtime-imported ACM certificates. + * Stable admin-facing label for this permission entry. */ - tags?: { [k: string]: string } | undefined; + label?: string | null | undefined; }; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Platform-specific permission configurations */ -export type DeploymentCertificateTLSSecretRef2 = { +export type DeploymentOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; /** - * Secret namespace. Defaults to the release namespace when omitted. + * Azure permission configurations */ - namespace?: string | null | undefined; + azure?: Array | null | undefined; /** - * Secret name. + * GCP permission configurations */ - secretName: string; - mode: "tlsSecretRef"; + gcp?: Array | null | undefined; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * A permission set that can be applied across different cloud platforms */ -export type DeploymentCertificateUnion2 = - | DeploymentCertificateTLSSecretRef2 - | DeploymentCertificateManagedAcmImport2 - | DeploymentCertificateAwsAcmArn2 - | DeploymentCertificateManagedTLSSecret2 - | DeploymentCertificateNone2; - -export const DeploymentModeCustom = { - Custom: "custom", -} as const; -export type DeploymentModeCustom = ClosedEnum; - -export const DeploymentProviderAzureApplicationGatewayForContainersEnum4 = { - AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", -} as const; -export type DeploymentProviderAzureApplicationGatewayForContainersEnum4 = - ClosedEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum4 - >; - -export type DeploymentProviderAzureApplicationGatewayForContainers4 = { +export type DeploymentOverride = { /** - * Optional ALB name when using BYO Application Gateway resources. + * Human-readable description of what this permission set allows */ - albName?: string | null | undefined; + description: string; /** - * Optional ALB namespace when using BYO Application Gateway resources. + * Unique identifier for the permission set (e.g., "storage/data-read") */ - albNamespace?: string | null | undefined; + id: string; /** - * Public or internal frontend exposure. + * Platform-specific permission configurations */ - frontend: string; - provider: DeploymentProviderAzureApplicationGatewayForContainersEnum4; + platforms: DeploymentOverridePlatforms; }; -export const DeploymentProviderGkeGatewayEnum4 = { - GkeGateway: "gkeGateway", -} as const; -export type DeploymentProviderGkeGatewayEnum4 = ClosedEnum< - typeof DeploymentProviderGkeGatewayEnum4 ->; - -export type DeploymentProviderGkeGateway4 = { - provider: DeploymentProviderGkeGatewayEnum4; +/** + * Reference to a permission set - either by name or inline definition + */ +export type DeploymentOverrideUnion = DeploymentOverride | string; + +export type DeploymentManagement2 = { /** - * Optional static address name for the Gateway frontend. + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource */ - staticAddressName?: string | null | undefined; + override: { [k: string]: Array }; }; -export const DeploymentProviderAwsAlbEnum4 = { - AwsAlb: "awsAlb", -} as const; -export type DeploymentProviderAwsAlbEnum4 = ClosedEnum< - typeof DeploymentProviderAwsAlbEnum4 ->; +/** + * AWS-specific binding specification + */ +export type DeploymentExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; -export type DeploymentProviderAwsAlb4 = { +/** + * AWS-specific binding specification + */ +export type DeploymentExtendAwStack = { /** - * Optional ALB IP address type, such as `dualstack`. + * Optional condition for additional filtering (rare) */ - ipAddressType?: string | null | undefined; - provider: DeploymentProviderAwsAlbEnum4; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Internet-facing or internal ALB scheme. + * Resource ARNs to bind to */ - scheme: string; + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentExtendAwBinding = { /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * AWS-specific binding specification */ - subnetIds?: Array | undefined; + resource?: DeploymentExtendAwResource | undefined; /** - * ALB target type, usually `ip`. + * AWS-specific binding specification */ - targetType: string; + stack?: DeploymentExtendAwStack | undefined; }; -export type DeploymentProviderUnion4 = - | DeploymentProviderAwsAlb4 - | DeploymentProviderAzureApplicationGatewayForContainers4 - | DeploymentProviderGkeGateway4 - | any; +/** + * IAM effect. Defaults to Allow. + */ +export const DeploymentExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type DeploymentExtendEffect = ClosedEnum; /** - * Shared Gateway API route profile values. + * Grant permissions for a specific cloud platform */ -export type DeploymentRouteGateway2 = { +export type DeploymentExtendAwGrant = { /** - * Annotations applied to route objects. + * AWS IAM actions (only for AWS) */ - annotations?: { [k: string]: string } | undefined; + actions?: Array | null | undefined; /** - * Route controller identifier, for example a cloud Gateway controller. + * Azure actions (only for Azure) */ - controller?: string | null | undefined; + dataActions?: Array | null | undefined; /** - * GatewayClass selected for generated Gateways. + * GCP permissions that require an exact residual custom role. */ - gatewayClassName: string; + permissions?: Array | null | undefined; /** - * Labels applied to route objects. + * Provider predefined roles to bind directly. */ - labels?: { [k: string]: string } | undefined; + predefinedRoles?: Array | null | undefined; /** - * Listener port, usually 443. + * GCP residual custom permissions to pair with predefined roles. */ - listenerPort: number; - provider?: - | DeploymentProviderAwsAlb4 - | DeploymentProviderAzureApplicationGatewayForContainers4 - | DeploymentProviderGkeGateway4 - | any - | null - | undefined; - routeApi: "gateway"; + residualPermissions?: Array | null | undefined; }; -export const DeploymentProviderAzureApplicationGatewayForContainersEnum3 = { - AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", -} as const; -export type DeploymentProviderAzureApplicationGatewayForContainersEnum3 = - ClosedEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum3 - >; - -export type DeploymentProviderAzureApplicationGatewayForContainers3 = { +/** + * AWS-specific platform permission configuration + */ +export type DeploymentExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentExtendAwBinding; /** - * Optional ALB name when using BYO Application Gateway resources. + * Short admin-facing description of why this entry exists. */ - albName?: string | null | undefined; + description?: string | null | undefined; /** - * Optional ALB namespace when using BYO Application Gateway resources. + * IAM effect. Defaults to Allow. */ - albNamespace?: string | null | undefined; + effect?: DeploymentExtendEffect | undefined; /** - * Public or internal frontend exposure. + * Grant permissions for a specific cloud platform */ - frontend: string; - provider: DeploymentProviderAzureApplicationGatewayForContainersEnum3; -}; - -export const DeploymentProviderGkeGatewayEnum3 = { - GkeGateway: "gkeGateway", -} as const; -export type DeploymentProviderGkeGatewayEnum3 = ClosedEnum< - typeof DeploymentProviderGkeGatewayEnum3 ->; - -export type DeploymentProviderGkeGateway3 = { - provider: DeploymentProviderGkeGatewayEnum3; + grant: DeploymentExtendAwGrant; /** - * Optional static address name for the Gateway frontend. + * Stable admin-facing label for this permission entry. */ - staticAddressName?: string | null | undefined; + label?: string | null | undefined; }; -export const DeploymentProviderAwsAlbEnum3 = { - AwsAlb: "awsAlb", -} as const; -export type DeploymentProviderAwsAlbEnum3 = ClosedEnum< - typeof DeploymentProviderAwsAlbEnum3 ->; - -export type DeploymentProviderAwsAlb3 = { +/** + * Azure-specific binding specification + */ +export type DeploymentExtendAzureResource = { /** - * Optional ALB IP address type, such as `dualstack`. + * Scope (subscription/resource group/resource level) */ - ipAddressType?: string | null | undefined; - provider: DeploymentProviderAwsAlbEnum3; + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type DeploymentExtendAzureStack = { /** - * Internet-facing or internal ALB scheme. + * Scope (subscription/resource group/resource level) */ - scheme: string; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentExtendAzureBinding = { /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Azure-specific binding specification */ - subnetIds?: Array | undefined; + resource?: DeploymentExtendAzureResource | undefined; /** - * ALB target type, usually `ip`. + * Azure-specific binding specification */ - targetType: string; + stack?: DeploymentExtendAzureStack | undefined; }; -export type DeploymentProviderUnion3 = - | DeploymentProviderAwsAlb3 - | DeploymentProviderAzureApplicationGatewayForContainers3 - | DeploymentProviderGkeGateway3 - | any; - /** - * Shared Ingress route profile values. + * Grant permissions for a specific cloud platform */ -export type DeploymentRouteIngress2 = { +export type DeploymentExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; /** - * Annotations applied to route objects. + * Azure actions (only for Azure) */ - annotations?: { [k: string]: string } | undefined; + dataActions?: Array | null | undefined; /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. + * GCP permissions that require an exact residual custom role. */ - controller?: string | null | undefined; + permissions?: Array | null | undefined; /** - * `spec.ingressClassName` for generated Ingresses. + * Provider predefined roles to bind directly. */ - ingressClassName: string; + predefinedRoles?: Array | null | undefined; /** - * Labels applied to route objects. + * GCP residual custom permissions to pair with predefined roles. */ - labels?: { [k: string]: string } | undefined; - provider?: - | DeploymentProviderAwsAlb3 - | DeploymentProviderAzureApplicationGatewayForContainers3 - | DeploymentProviderGkeGateway3 - | any - | null - | undefined; - routeApi: "ingress"; + residualPermissions?: Array | null | undefined; }; /** - * Kubernetes route API selected for public endpoints. + * Azure-specific platform permission configuration */ -export type DeploymentRouteUnion2 = - | DeploymentRouteIngress2 - | DeploymentRouteGateway2; - -export type DeploymentExposureCustom = { +export type DeploymentExtendAzure = { /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Generic binding configuration for permissions */ - certificate: - | DeploymentCertificateTLSSecretRef2 - | DeploymentCertificateManagedAcmImport2 - | DeploymentCertificateAwsAcmArn2 - | DeploymentCertificateManagedTLSSecret2 - | DeploymentCertificateNone2; + binding: DeploymentExtendAzureBinding; /** - * Hostname routed by the Kubernetes public endpoint. + * Short admin-facing description of why this entry exists. */ - domain: string; - mode: DeploymentModeCustom; + description?: string | null | undefined; /** - * Kubernetes route API selected for public endpoints. + * Grant permissions for a specific cloud platform */ - route: DeploymentRouteIngress2 | DeploymentRouteGateway2; -}; - -export type DeploymentCertificateNone1 = { - mode: "none"; -}; - -export type DeploymentCertificateManagedTLSSecret1 = { - mode: "managedTlsSecret"; + grant: DeploymentExtendAzureGrant; /** - * Secret name template. Runtime may substitute resource/deployment tokens. + * Stable admin-facing label for this permission entry. */ - secretNameTemplate: string; + label?: string | null | undefined; }; -export type DeploymentCertificateAwsAcmArn1 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; +/** + * GCP IAM condition + */ +export type DeploymentExtendConditionResource = { + expression: string; + title: string; }; -export type DeploymentCertificateManagedAcmImport1 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; - /** - * Tags applied to runtime-imported ACM certificates. - */ - tags?: { [k: string]: string } | undefined; -}; +export type DeploymentExtendResourceConditionUnion = + | DeploymentExtendConditionResource + | any; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * GCP-specific binding specification */ -export type DeploymentCertificateTLSSecretRef1 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; +export type DeploymentExtendGcpResource = { + condition?: DeploymentExtendConditionResource | any | null | undefined; /** - * Secret name. + * Scope (project/resource level) */ - secretName: string; - mode: "tlsSecretRef"; + scope: string; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * GCP IAM condition */ -export type DeploymentCertificateUnion1 = - | DeploymentCertificateTLSSecretRef1 - | DeploymentCertificateManagedAcmImport1 - | DeploymentCertificateAwsAcmArn1 - | DeploymentCertificateManagedTLSSecret1 - | DeploymentCertificateNone1; - -export const DeploymentModeGenerated = { - Generated: "generated", -} as const; -export type DeploymentModeGenerated = ClosedEnum< - typeof DeploymentModeGenerated ->; +export type DeploymentExtendConditionStack = { + expression: string; + title: string; +}; -export const DeploymentProviderAzureApplicationGatewayForContainersEnum2 = { - AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", -} as const; -export type DeploymentProviderAzureApplicationGatewayForContainersEnum2 = - ClosedEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum2 - >; +export type DeploymentExtendStackConditionUnion = + | DeploymentExtendConditionStack + | any; -export type DeploymentProviderAzureApplicationGatewayForContainers2 = { +/** + * GCP-specific binding specification + */ +export type DeploymentExtendGcpStack = { + condition?: DeploymentExtendConditionStack | any | null | undefined; /** - * Optional ALB name when using BYO Application Gateway resources. + * Scope (project/resource level) */ - albName?: string | null | undefined; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentExtendGcpBinding = { /** - * Optional ALB namespace when using BYO Application Gateway resources. + * GCP-specific binding specification */ - albNamespace?: string | null | undefined; + resource?: DeploymentExtendGcpResource | undefined; /** - * Public or internal frontend exposure. + * GCP-specific binding specification */ - frontend: string; - provider: DeploymentProviderAzureApplicationGatewayForContainersEnum2; + stack?: DeploymentExtendGcpStack | undefined; }; -export const DeploymentProviderGkeGatewayEnum2 = { - GkeGateway: "gkeGateway", -} as const; -export type DeploymentProviderGkeGatewayEnum2 = ClosedEnum< - typeof DeploymentProviderGkeGatewayEnum2 ->; - -export type DeploymentProviderGkeGateway2 = { - provider: DeploymentProviderGkeGatewayEnum2; +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentExtendGcpGrant = { /** - * Optional static address name for the Gateway frontend. + * AWS IAM actions (only for AWS) */ - staticAddressName?: string | null | undefined; -}; - -export const DeploymentProviderAwsAlbEnum2 = { - AwsAlb: "awsAlb", -} as const; -export type DeploymentProviderAwsAlbEnum2 = ClosedEnum< - typeof DeploymentProviderAwsAlbEnum2 ->; - -export type DeploymentProviderAwsAlb2 = { + actions?: Array | null | undefined; /** - * Optional ALB IP address type, such as `dualstack`. + * Azure actions (only for Azure) */ - ipAddressType?: string | null | undefined; - provider: DeploymentProviderAwsAlbEnum2; + dataActions?: Array | null | undefined; /** - * Internet-facing or internal ALB scheme. + * GCP permissions that require an exact residual custom role. */ - scheme: string; + permissions?: Array | null | undefined; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Provider predefined roles to bind directly. */ - subnetIds?: Array | undefined; + predefinedRoles?: Array | null | undefined; /** - * ALB target type, usually `ip`. + * GCP residual custom permissions to pair with predefined roles. */ - targetType: string; + residualPermissions?: Array | null | undefined; }; -export type DeploymentProviderUnion2 = - | DeploymentProviderAwsAlb2 - | DeploymentProviderAzureApplicationGatewayForContainers2 - | DeploymentProviderGkeGateway2 - | any; - /** - * Shared Gateway API route profile values. + * GCP-specific platform permission configuration */ -export type DeploymentRouteGateway1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; +export type DeploymentExtendGcp = { /** - * Route controller identifier, for example a cloud Gateway controller. + * Generic binding configuration for permissions */ - controller?: string | null | undefined; + binding: DeploymentExtendGcpBinding; /** - * GatewayClass selected for generated Gateways. + * Short admin-facing description of why this entry exists. */ - gatewayClassName: string; + description?: string | null | undefined; /** - * Labels applied to route objects. + * Grant permissions for a specific cloud platform */ - labels?: { [k: string]: string } | undefined; + grant: DeploymentExtendGcpGrant; /** - * Listener port, usually 443. + * Stable admin-facing label for this permission entry. */ - listenerPort: number; - provider?: - | DeploymentProviderAwsAlb2 - | DeploymentProviderAzureApplicationGatewayForContainers2 - | DeploymentProviderGkeGateway2 - | any - | null - | undefined; - routeApi: "gateway"; + label?: string | null | undefined; }; -export const DeploymentProviderAzureApplicationGatewayForContainersEnum1 = { - AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", -} as const; -export type DeploymentProviderAzureApplicationGatewayForContainersEnum1 = - ClosedEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum1 - >; - -export type DeploymentProviderAzureApplicationGatewayForContainers1 = { +/** + * Platform-specific permission configurations + */ +export type DeploymentExtendPlatforms = { /** - * Optional ALB name when using BYO Application Gateway resources. + * AWS permission configurations */ - albName?: string | null | undefined; + aws?: Array | null | undefined; /** - * Optional ALB namespace when using BYO Application Gateway resources. + * Azure permission configurations */ - albNamespace?: string | null | undefined; + azure?: Array | null | undefined; /** - * Public or internal frontend exposure. + * GCP permission configurations */ - frontend: string; - provider: DeploymentProviderAzureApplicationGatewayForContainersEnum1; + gcp?: Array | null | undefined; }; -export const DeploymentProviderGkeGatewayEnum1 = { - GkeGateway: "gkeGateway", -} as const; -export type DeploymentProviderGkeGatewayEnum1 = ClosedEnum< - typeof DeploymentProviderGkeGatewayEnum1 ->; - -export type DeploymentProviderGkeGateway1 = { - provider: DeploymentProviderGkeGatewayEnum1; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const DeploymentProviderAwsAlbEnum1 = { - AwsAlb: "awsAlb", -} as const; -export type DeploymentProviderAwsAlbEnum1 = ClosedEnum< - typeof DeploymentProviderAwsAlbEnum1 ->; - -export type DeploymentProviderAwsAlb1 = { +/** + * A permission set that can be applied across different cloud platforms + */ +export type DeploymentExtend = { /** - * Optional ALB IP address type, such as `dualstack`. + * Human-readable description of what this permission set allows */ - ipAddressType?: string | null | undefined; - provider: DeploymentProviderAwsAlbEnum1; + description: string; /** - * Internet-facing or internal ALB scheme. + * Unique identifier for the permission set (e.g., "storage/data-read") */ - scheme: string; + id: string; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Platform-specific permission configurations */ - subnetIds?: Array | undefined; + platforms: DeploymentExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type DeploymentExtendUnion = DeploymentExtend | string; + +export type DeploymentManagement1 = { /** - * ALB target type, usually `ip`. + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource */ - targetType: string; + extend: { [k: string]: Array }; }; -export type DeploymentProviderUnion1 = - | DeploymentProviderAwsAlb1 - | DeploymentProviderAzureApplicationGatewayForContainers1 - | DeploymentProviderGkeGateway1 - | any; +/** + * Management permissions configuration for stack management access + */ +export type DeploymentManagementUnion = + | DeploymentManagement1 + | DeploymentManagement2 + | DeploymentManagementEnum; /** - * Shared Ingress route profile values. + * AWS-specific binding specification */ -export type DeploymentRouteIngress1 = { +export type DeploymentProfileAwResource = { /** - * Annotations applied to route objects. + * Optional condition for additional filtering (rare) */ - annotations?: { [k: string]: string } | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. + * Resource ARNs to bind to */ - controller?: string | null | undefined; + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentProfileAwStack = { /** - * `spec.ingressClassName` for generated Ingresses. + * Optional condition for additional filtering (rare) */ - ingressClassName: string; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Labels applied to route objects. + * Resource ARNs to bind to */ - labels?: { [k: string]: string } | undefined; - provider?: - | DeploymentProviderAwsAlb1 - | DeploymentProviderAzureApplicationGatewayForContainers1 - | DeploymentProviderGkeGateway1 - | any - | null - | undefined; - routeApi: "ingress"; + resources: Array; }; /** - * Kubernetes route API selected for public endpoints. + * Generic binding configuration for permissions */ -export type DeploymentRouteUnion1 = - | DeploymentRouteIngress1 - | DeploymentRouteGateway1; - -export type DeploymentExposureGenerated = { +export type DeploymentProfileAwBinding = { /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * AWS-specific binding specification */ - certificate: - | DeploymentCertificateTLSSecretRef1 - | DeploymentCertificateManagedAcmImport1 - | DeploymentCertificateAwsAcmArn1 - | DeploymentCertificateManagedTLSSecret1 - | DeploymentCertificateNone1; - mode: DeploymentModeGenerated; + resource?: DeploymentProfileAwResource | undefined; /** - * Kubernetes route API selected for public endpoints. + * AWS-specific binding specification */ - route: DeploymentRouteIngress1 | DeploymentRouteGateway1; -}; - -export const DeploymentModeDisabled = { - Disabled: "disabled", -} as const; -export type DeploymentModeDisabled = ClosedEnum; - -export type DeploymentExposureDisabled = { - mode: DeploymentModeDisabled; + stack?: DeploymentProfileAwStack | undefined; }; -export type DeploymentExposureUnion = - | DeploymentExposureCustom - | DeploymentExposureGenerated - | DeploymentExposureDisabled - | any; - /** - * Kubernetes runtime substrate configuration. - * - * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. + * IAM effect. Defaults to Allow. */ -export type DeploymentKubernetes = { - cluster?: DeploymentCluster | any | null | undefined; - exposure?: - | DeploymentExposureCustom - | DeploymentExposureGenerated - | DeploymentExposureDisabled - | any - | null - | undefined; -}; - -export type DeploymentKubernetesUnion = DeploymentKubernetes | any; - -export const DeploymentTypeByoVnetAzure = { - ByoVnetAzure: "byo-vnet-azure", +export const DeploymentProfileEffect = { + Allow: "Allow", + Deny: "Deny", } as const; -export type DeploymentTypeByoVnetAzure = ClosedEnum< - typeof DeploymentTypeByoVnetAzure +/** + * IAM effect. Defaults to Allow. + */ +export type DeploymentProfileEffect = ClosedEnum< + typeof DeploymentProfileEffect >; -export type DeploymentNetworkByoVnetAzure = { - /** - * Name of the dedicated classic Application Gateway subnet within the VNet. - */ - applicationGatewaySubnetName?: string | null | undefined; - /** - * Name of the private subnet within the VNet - */ - privateSubnetName: string; +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentProfileAwGrant = { /** - * Name of the public subnet within the VNet + * AWS IAM actions (only for AWS) */ - publicSubnetName: string; - type: DeploymentTypeByoVnetAzure; + actions?: Array | null | undefined; /** - * The full resource ID of the existing VNet + * Azure actions (only for Azure) */ - vnetResourceId: string; -}; - -export const DeploymentTypeByoVpcGcp = { - ByoVpcGcp: "byo-vpc-gcp", -} as const; -export type DeploymentTypeByoVpcGcp = ClosedEnum< - typeof DeploymentTypeByoVpcGcp ->; - -export type DeploymentNetworkByoVpcGcp = { + dataActions?: Array | null | undefined; /** - * The name of the existing VPC network + * GCP permissions that require an exact residual custom role. */ - networkName: string; + permissions?: Array | null | undefined; /** - * The region of the subnet + * Provider predefined roles to bind directly. */ - region: string; + predefinedRoles?: Array | null | undefined; /** - * The name of the subnet to use + * GCP residual custom permissions to pair with predefined roles. */ - subnetName: string; - type: DeploymentTypeByoVpcGcp; + residualPermissions?: Array | null | undefined; }; -export const DeploymentTypeByoVpcAws = { - ByoVpcAws: "byo-vpc-aws", -} as const; -export type DeploymentTypeByoVpcAws = ClosedEnum< - typeof DeploymentTypeByoVpcAws ->; - -export type DeploymentNetworkByoVpcAws = { - /** - * IDs of private subnets - */ - privateSubnetIds: Array; +/** + * AWS-specific platform permission configuration + */ +export type DeploymentProfileAw = { /** - * IDs of public subnets (required for public ingress) + * Generic binding configuration for permissions */ - publicSubnetIds: Array; + binding: DeploymentProfileAwBinding; /** - * Optional security group IDs to use + * Short admin-facing description of why this entry exists. */ - securityGroupIds?: Array | undefined; - type: DeploymentTypeByoVpcAws; + description?: string | null | undefined; /** - * The ID of the existing VPC + * IAM effect. Defaults to Allow. */ - vpcId: string; -}; - -export const DeploymentTypeCreate = { - Create: "create", -} as const; -export type DeploymentTypeCreate = ClosedEnum; - -export type DeploymentNetworkCreate = { + effect?: DeploymentProfileEffect | undefined; /** - * Number of availability zones (default: 2). + * Grant permissions for a specific cloud platform */ - availabilityZones?: number | undefined; + grant: DeploymentProfileAwGrant; /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + * Stable admin-facing label for this permission entry. */ - cidr?: string | null | undefined; - type: DeploymentTypeCreate; -}; - -export const DeploymentTypeUseDefault = { - UseDefault: "use-default", -} as const; -export type DeploymentTypeUseDefault = ClosedEnum< - typeof DeploymentTypeUseDefault ->; - -export type DeploymentNetworkUseDefault = { - type: DeploymentTypeUseDefault; + label?: string | null | undefined; }; -export type DeploymentNetworkUnion = - | DeploymentNetworkByoVpcAws - | DeploymentNetworkByoVpcGcp - | DeploymentNetworkByoVnetAzure - | DeploymentNetworkUseDefault - | DeploymentNetworkCreate - | any; - -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export const DeploymentTelemetry = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; /** - * How telemetry (logs, metrics, traces) is handled. + * Azure-specific binding specification */ -export type DeploymentTelemetry = ClosedEnum; +export type DeploymentProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; /** - * How updates are delivered to the deployment. + * Azure-specific binding specification */ -export const DeploymentUpdates = { - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; +export type DeploymentProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + /** - * How updates are delivered to the deployment. + * Generic binding configuration for permissions */ -export type DeploymentUpdates = ClosedEnum; +export type DeploymentProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: DeploymentProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: DeploymentProfileAzureStack | undefined; +}; /** - * User-provided configuration (network, deployment model, approvals) + * Grant permissions for a specific cloud platform */ -export type DeploymentStackSettings = { - compute?: DeploymentCompute | any | null | undefined; +export type DeploymentProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; /** - * Deployment model: how updates are delivered to the remote environment. + * Azure actions (only for Azure) */ - deploymentModel?: DeploymentDeploymentModel | undefined; - domains?: DeploymentDomains | any | null | undefined; + dataActions?: Array | null | undefined; /** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ - externalBindings?: DeploymentExternalBindings | null | undefined; - /** - * How heartbeat health checks are handled. - */ - heartbeats?: DeploymentHeartbeats | undefined; - kubernetes?: DeploymentKubernetes | any | null | undefined; - network?: - | DeploymentNetworkByoVpcAws - | DeploymentNetworkByoVpcGcp - | DeploymentNetworkByoVnetAzure - | DeploymentNetworkUseDefault - | DeploymentNetworkCreate - | any - | null - | undefined; + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; /** - * How telemetry (logs, metrics, traces) is handled. + * Provider predefined roles to bind directly. */ - telemetry?: DeploymentTelemetry | undefined; + predefinedRoles?: Array | null | undefined; /** - * How updates are delivered to the deployment. + * GCP residual custom permissions to pair with predefined roles. */ - updates?: DeploymentUpdates | undefined; + residualPermissions?: Array | null | undefined; }; /** - * Represents the target cloud platform. - */ -export const DeploymentStackStatePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type DeploymentStackStatePlatform = ClosedEnum< - typeof DeploymentStackStatePlatform ->; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Azure-specific platform permission configuration */ -export type DeploymentStackStateConfig = { +export type DeploymentProfileAzure = { /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * Generic binding configuration for permissions */ - id: string; + binding: DeploymentProfileAzureBinding; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Short admin-facing description of why this entry exists. */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Represents the target cloud platform. - */ -export const DeploymentControllerPlatformEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. + * GCP IAM condition */ -export type DeploymentControllerPlatformEnum = ClosedEnum< - typeof DeploymentControllerPlatformEnum ->; +export type DeploymentProfileConditionResource = { + expression: string; + title: string; +}; -export type DeploymentControllerPlatformUnion = - | DeploymentControllerPlatformEnum +export type DeploymentProfileResourceConditionUnion = + | DeploymentProfileConditionResource | any; /** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. + * GCP-specific binding specification */ -export type DeploymentStackStateDependency = { - id: string; +export type DeploymentProfileGcpResource = { + condition?: DeploymentProfileConditionResource | any | null | undefined; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Scope (project/resource level) */ - type: string; + scope: string; }; /** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. + * GCP IAM condition */ -export type DeploymentErrorStackState = { - /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" - */ - code: string; - /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. - */ - context?: any | null | undefined; - /** - * Optional human-facing remediation hint. - */ - hint?: string | null | undefined; - /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. - */ - httpStatusCode?: number | null | undefined; - /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. - */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable: boolean; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; +export type DeploymentProfileConditionStack = { + expression: string; + title: string; }; -export type DeploymentErrorUnion = DeploymentErrorStackState | any; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const DeploymentLifecycleStackStateEnum = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type DeploymentLifecycleStackStateEnum = ClosedEnum< - typeof DeploymentLifecycleStackStateEnum ->; - -export type DeploymentLifecycleUnion = DeploymentLifecycleStackStateEnum | any; +export type DeploymentProfileStackConditionUnion = + | DeploymentProfileConditionStack + | any; /** - * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. + * GCP-specific binding specification */ -export type DeploymentOutputs = { +export type DeploymentProfileGcpStack = { + condition?: DeploymentProfileConditionStack | any | null | undefined; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Scope (project/resource level) */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + scope: string; }; -export type DeploymentOutputsUnion = DeploymentOutputs | any; - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Generic binding configuration for permissions */ -export type DeploymentPreviousConfig = { +export type DeploymentProfileGcpBinding = { /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * GCP-specific binding specification */ - id: string; + resource?: DeploymentProfileGcpResource | undefined; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * GCP-specific binding specification */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + stack?: DeploymentProfileGcpStack | undefined; }; -export type DeploymentPreviousConfigUnion = DeploymentPreviousConfig | any; - -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export const DeploymentStackStateStatus = { - Pending: "pending", - Provisioning: "provisioning", - ProvisionFailed: "provision-failed", - Running: "running", - Updating: "updating", - UpdateFailed: "update-failed", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - Deleted: "deleted", - RefreshFailed: "refresh-failed", -} as const; -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export type DeploymentStackStateStatus = ClosedEnum< - typeof DeploymentStackStateStatus ->; - /** - * Represents the state of a single resource within the stack for a specific platform. + * Grant permissions for a specific cloud platform */ -export type DeploymentStackStateResources = { +export type DeploymentProfileGcpGrant = { /** - * The platform-specific resource controller that manages this resource's lifecycle. - * - * @remarks - * This is None when the resource status is Pending. - * Stored as JSON to make the struct serializable and movable to alien-core. + * AWS IAM actions (only for AWS) */ - internal?: any | null | undefined; + actions?: Array | null | undefined; /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Azure actions (only for Azure) */ - config: DeploymentStackStateConfig; - controllerPlatform?: - | DeploymentControllerPlatformEnum - | any - | null - | undefined; + dataActions?: Array | null | undefined; /** - * Complete list of dependencies for this resource, including infrastructure dependencies. - * - * @remarks - * This preserves the full dependency information from the stack definition. + * GCP permissions that require an exact residual custom role. */ - dependencies?: Array | undefined; - error?: DeploymentErrorStackState | any | null | undefined; + permissions?: Array | null | undefined; /** - * Stores the controller state that failed, used for manual retry operations. - * - * @remarks - * This allows resuming from the exact point where the failure occurred. - * Stored as JSON to make the struct serializable and movable to alien-core. + * Provider predefined roles to bind directly. */ - lastFailedState?: any | null | undefined; - lifecycle?: DeploymentLifecycleStackStateEnum | any | null | undefined; - outputs?: DeploymentOutputs | any | null | undefined; - previousConfig?: DeploymentPreviousConfig | any | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Binding parameters for remote access. - * - * @remarks - * Only populated when the resource has `remote_access: true` in its ResourceEntry. - * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). - * Populated by controllers during provisioning using get_binding_params(). + * GCP residual custom permissions to pair with predefined roles. */ - remoteBindingParams?: any | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type DeploymentProfileGcp = { /** - * Tracks consecutive retry attempts for the current state transition. + * Generic binding configuration for permissions */ - retryAttempt?: number | undefined; + binding: DeploymentProfileGcpBinding; /** - * Represents the high-level status of a resource during its lifecycle. + * Short admin-facing description of why this entry exists. */ - status: DeploymentStackStateStatus; + description?: string | null | undefined; /** - * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + * Grant permissions for a specific cloud platform */ - type: string; + grant: DeploymentProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * State of infrastructure components managed by this deployment + * Platform-specific permission configurations */ -export type DeploymentStackState = { +export type DeploymentProfilePlatforms = { /** - * Represents the target cloud platform. + * AWS permission configurations */ - platform: DeploymentStackStatePlatform; + aws?: Array | null | undefined; /** - * A prefix used for resource naming to ensure uniqueness across deployments. + * Azure permission configurations */ - resourcePrefix: string; + azure?: Array | null | undefined; /** - * The state of individual resources, keyed by resource ID. + * GCP permission configurations */ - resources: { [k: string]: DeploymentStackStateResources }; + gcp?: Array | null | undefined; }; -export const DeploymentTypeStringList = { - StringList: "stringList", -} as const; -export type DeploymentTypeStringList = ClosedEnum< - typeof DeploymentTypeStringList ->; - -export type DeploymentDefaultStringList = { - type: DeploymentTypeStringList; +/** + * A permission set that can be applied across different cloud platforms + */ +export type DeploymentProfile = { /** - * String list default. + * Human-readable description of what this permission set allows */ - value: Array; -}; - -export const DeploymentTypeBoolean = { - Boolean: "boolean", -} as const; -export type DeploymentTypeBoolean = ClosedEnum; - -export type DeploymentDefaultBoolean = { - type: DeploymentTypeBoolean; + description: string; /** - * Boolean default. + * Unique identifier for the permission set (e.g., "storage/data-read") */ - value: boolean; -}; - -export const DeploymentTypeNumber = { - Number: "number", -} as const; -export type DeploymentTypeNumber = ClosedEnum; - -export type DeploymentDefaultNumber = { - type: DeploymentTypeNumber; + id: string; /** - * Number default. + * Platform-specific permission configurations */ - value: string; + platforms: DeploymentProfilePlatforms; }; -export const DeploymentTypeString = { - String: "string", -} as const; -export type DeploymentTypeString = ClosedEnum; +/** + * Reference to a permission set - either by name or inline definition + */ +export type DeploymentProfileUnion = DeploymentProfile | string; -export type DeploymentDefaultString = { - type: DeploymentTypeString; +/** + * Combined permissions configuration that contains both profiles and management + */ +export type DeploymentPermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | DeploymentManagement1 + | DeploymentManagement2 + | DeploymentManagementEnum + | undefined; /** - * String default. + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration */ - value: string; + profiles: { [k: string]: { [k: string]: Array } }; }; -export type DeploymentDefaultUnion = - | DeploymentDefaultString - | DeploymentDefaultNumber - | DeploymentDefaultBoolean - | DeploymentDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const DeploymentTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; /** - * Environment variable handling for a stack input mapping. + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type DeploymentTypeEnvEnum = ClosedEnum; - -export type DeploymentTypeUnion = DeploymentTypeEnvEnum | any; +export type DeploymentPreparedStackConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; /** - * How a resolved stack input is injected into runtime environment variables. + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. */ -export type DeploymentEnv = { - /** - * Environment variable name. - */ - name: string; +export type DeploymentPreparedStackDependency = { + id: string; /** - * Target resource IDs or patterns. None means every env-capable resource. + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - targetResources?: Array | null | undefined; - type?: DeploymentTypeEnvEnum | any | null | undefined; + type: string; }; /** - * Primitive stack input kind. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const DeploymentKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", +export const DeploymentPreparedStackLifecycle = { + Frozen: "frozen", + Live: "live", } as const; /** - * Primitive stack input kind. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type DeploymentKind = ClosedEnum; +export type DeploymentPreparedStackLifecycle = ClosedEnum< + typeof DeploymentPreparedStackLifecycle +>; -/** - * Represents the target cloud platform. - */ -export const DeploymentPreparedStackPlatform = { +export type DeploymentPreparedStackResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: DeploymentPreparedStackConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: DeploymentPreparedStackLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const DeploymentSupportedPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -1661,4090 +1074,396 @@ export const DeploymentPreparedStackPlatform = { /** * Represents the target cloud platform. */ -export type DeploymentPreparedStackPlatform = ClosedEnum< - typeof DeploymentPreparedStackPlatform +export type DeploymentSupportedPlatform = ClosedEnum< + typeof DeploymentSupportedPlatform >; /** - * Who can provide a stack input value. - */ -export const DeploymentProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type DeploymentProvidedBy = ClosedEnum; - -/** - * Portable stack input validation constraints. - */ -export type DeploymentValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; - /** - * Minimum string-list items. - */ - minItems?: number | null | undefined; - /** - * Minimum string length. - */ - minLength?: number | null | undefined; - /** - * Portable whole-value regex pattern. - */ - pattern?: string | null | undefined; - /** - * Allowed string enum values. - */ - values?: Array | null | undefined; -}; - -export type DeploymentValidationUnion = DeploymentValidation | any; - -/** - * Stack input definition serialized into a release stack. + * A bag of resources, unaware of any cloud. */ -export type DeploymentInput = { - default?: - | DeploymentDefaultString - | DeploymentDefaultNumber - | DeploymentDefaultBoolean - | DeploymentDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; +export type DeploymentPreparedStack = { /** - * Stable input ID used by CLI/API calls. + * Unique identifier for the stack */ id: string; /** - * Primitive stack input kind. - */ - kind: DeploymentKind; - /** - * Human-facing field label. - */ - label: string; - /** - * Example placeholder shown in UI. + * Input definitions required before setup or deployment can proceed. */ - placeholder?: string | null | undefined; + inputs?: Array | undefined; /** - * Platforms where this input applies. + * Combined permissions configuration that contains both profiles and management */ - platforms?: Array | null | undefined; + permissions?: DeploymentPermissions | undefined; /** - * Who can provide this value. + * Map of resource IDs to their configurations and lifecycle settings */ - providedBy: Array; + resources: { [k: string]: DeploymentPreparedStackResources }; /** - * Whether a resolved value is required before deployment can proceed. + * Which platforms this stack supports. When None, all platforms are supported. */ - required: boolean; - validation?: DeploymentValidation | any | null | undefined; + supportedPlatforms?: Array | null | undefined; }; -export const DeploymentManagementEnum = { - Auto: "auto", -} as const; -export type DeploymentManagementEnum = ClosedEnum< - typeof DeploymentManagementEnum ->; +export type DeploymentPreparedStackUnion = DeploymentPreparedStack | any; /** - * AWS-specific binding specification + * Runtime metadata for deployment state persistence */ -export type DeploymentOverrideAwResource = { +export type DeploymentRuntimeMetadata = { /** - * Optional condition for additional filtering (rare) + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + lastSyncedEnvVarsHash?: string | null | undefined; + preparedStack?: DeploymentPreparedStack | any | null | undefined; /** - * Resource ARNs to bind to + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. */ - resources: Array; + registryAccessGranted?: boolean | undefined; }; /** - * AWS-specific binding specification + * Setup source that imported this deployment */ -export type DeploymentOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - +export const DeploymentImportSource = { + Cloudformation: "cloudformation", + Terraform: "terraform", + Helm: "helm", +} as const; /** - * Generic binding configuration for permissions + * Setup source that imported this deployment */ -export type DeploymentOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: DeploymentOverrideAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: DeploymentOverrideAwStack | undefined; -}; +export type DeploymentImportSource = ClosedEnum; /** - * IAM effect. Defaults to Allow. + * Setup method that created the deployment record and owns setup-time resources. */ -export const DeploymentOverrideEffect = { - Allow: "Allow", - Deny: "Deny", +export const DeploymentSetupMethod1 = { + Cloudformation: "cloudformation", + GoogleOauth: "google-oauth", + Terraform: "terraform", + Helm: "helm", + Cli: "cli", + Manual: "manual", } as const; /** - * IAM effect. Defaults to Allow. - */ -export type DeploymentOverrideEffect = ClosedEnum< - typeof DeploymentOverrideEffect ->; - -/** - * Grant permissions for a specific cloud platform + * Setup method that created the deployment record and owns setup-time resources. */ -export type DeploymentOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type DeploymentSetupMethod1 = ClosedEnum; /** - * AWS-specific platform permission configuration + * Latest error information if the deployment is in a failed state */ -export type DeploymentOverrideAw = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentOverrideAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: DeploymentOverrideEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentOverrideAwGrant; +export type DeploymentError = { /** - * Stable admin-facing label for this permission entry. + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type DeploymentOverrideAzureResource = { + code: string; /** - * Scope (subscription/resource group/resource level) + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type DeploymentOverrideAzureStack = { + context?: any | null | undefined; /** - * Scope (subscription/resource group/resource level) + * Optional human-facing remediation hint. */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentOverrideAzureBinding = { + hint?: string | null | undefined; /** - * Azure-specific binding specification + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. */ - resource?: DeploymentOverrideAzureResource | undefined; + httpStatusCode?: number | null | undefined; /** - * Azure-specific binding specification + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. */ - stack?: DeploymentOverrideAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentOverrideAzureGrant = { + internal: boolean; /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type DeploymentOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentOverrideAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type DeploymentOverrideConditionResource = { - expression: string; - title: string; -}; - -export type DeploymentOverrideResourceConditionUnion = - | DeploymentOverrideConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentOverrideGcpResource = { - condition?: DeploymentOverrideConditionResource | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type DeploymentOverrideConditionStack = { - expression: string; - title: string; -}; - -export type DeploymentOverrideStackConditionUnion = - | DeploymentOverrideConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentOverrideGcpStack = { - condition?: DeploymentOverrideConditionStack | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: DeploymentOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: DeploymentOverrideGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type DeploymentOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentOverrideGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type DeploymentOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type DeploymentOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: DeploymentOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type DeploymentOverrideUnion = DeploymentOverride | string; - -export type DeploymentManagement2 = { - /** - * Permission profile that maps resources to permission sets + * Human-readable error message. * * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { [k: string]: Array }; -}; - -/** - * AWS-specific binding specification - */ -export type DeploymentExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type DeploymentExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: DeploymentExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: DeploymentExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const DeploymentExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type DeploymentExtendEffect = ClosedEnum; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type DeploymentExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: DeploymentExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type DeploymentExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type DeploymentExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: DeploymentExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: DeploymentExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type DeploymentExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type DeploymentExtendConditionResource = { - expression: string; - title: string; -}; - -export type DeploymentExtendResourceConditionUnion = - | DeploymentExtendConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentExtendGcpResource = { - condition?: DeploymentExtendConditionResource | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type DeploymentExtendConditionStack = { - expression: string; - title: string; -}; - -export type DeploymentExtendStackConditionUnion = - | DeploymentExtendConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentExtendGcpStack = { - condition?: DeploymentExtendConditionStack | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: DeploymentExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: DeploymentExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type DeploymentExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type DeploymentExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type DeploymentExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: DeploymentExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type DeploymentExtendUnion = DeploymentExtend | string; - -export type DeploymentManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { [k: string]: Array }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type DeploymentManagementUnion = - | DeploymentManagement1 - | DeploymentManagement2 - | DeploymentManagementEnum; - -/** - * AWS-specific binding specification - */ -export type DeploymentProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type DeploymentProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: DeploymentProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: DeploymentProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const DeploymentProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type DeploymentProfileEffect = ClosedEnum< - typeof DeploymentProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type DeploymentProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: DeploymentProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type DeploymentProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type DeploymentProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: DeploymentProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: DeploymentProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type DeploymentProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type DeploymentProfileConditionResource = { - expression: string; - title: string; -}; - -export type DeploymentProfileResourceConditionUnion = - | DeploymentProfileConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentProfileGcpResource = { - condition?: DeploymentProfileConditionResource | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type DeploymentProfileConditionStack = { - expression: string; - title: string; -}; - -export type DeploymentProfileStackConditionUnion = - | DeploymentProfileConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentProfileGcpStack = { - condition?: DeploymentProfileConditionStack | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: DeploymentProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: DeploymentProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type DeploymentProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type DeploymentProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type DeploymentProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: DeploymentProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type DeploymentProfileUnion = DeploymentProfile | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type DeploymentPermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | DeploymentManagement1 - | DeploymentManagement2 - | DeploymentManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { [k: string]: { [k: string]: Array } }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type DeploymentPreparedStackConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type DeploymentPreparedStackDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const DeploymentPreparedStackLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type DeploymentPreparedStackLifecycle = ClosedEnum< - typeof DeploymentPreparedStackLifecycle ->; - -export type DeploymentPreparedStackResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: DeploymentPreparedStackConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: DeploymentPreparedStackLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const DeploymentSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type DeploymentSupportedPlatform = ClosedEnum< - typeof DeploymentSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type DeploymentPreparedStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: DeploymentPermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: DeploymentPreparedStackResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: Array | null | undefined; -}; - -export type DeploymentPreparedStackUnion = DeploymentPreparedStack | any; - -/** - * Runtime metadata for deployment state persistence - */ -export type DeploymentRuntimeMetadata = { - /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment - */ - lastSyncedEnvVarsHash?: string | null | undefined; - preparedStack?: DeploymentPreparedStack | any | null | undefined; - /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. - */ - registryAccessGranted?: boolean | undefined; -}; - -/** - * Setup source that imported this deployment - */ -export const DeploymentImportSource = { - Cloudformation: "cloudformation", - Terraform: "terraform", - Helm: "helm", -} as const; -/** - * Setup source that imported this deployment - */ -export type DeploymentImportSource = ClosedEnum; - -/** - * Setup method that created the deployment record and owns setup-time resources. - */ -export const DeploymentSetupMethod1 = { - Cloudformation: "cloudformation", - GoogleOauth: "google-oauth", - Terraform: "terraform", - Helm: "helm", - Cli: "cli", - Manual: "manual", -} as const; -/** - * Setup method that created the deployment record and owns setup-time resources. - */ -export type DeploymentSetupMethod1 = ClosedEnum; - -/** - * Latest error information if the deployment is in a failed state - */ -export type DeploymentError = { - /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" - */ - code: string; - /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. - */ - context?: any | null | undefined; - /** - * Optional human-facing remediation hint. - */ - hint?: string | null | undefined; - /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. - */ - httpStatusCode?: number | null | undefined; - /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. - */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable: boolean; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; -}; - -/** - * Snapshot of target environment variables for the deployment - */ -export type DeploymentTargetEnvironmentVariables = { - /** - * Environment variables in the snapshot - */ - variables: Array; - /** - * Deterministic hash of all variables for change detection - */ - hash: string; - /** - * ISO 8601 timestamp when snapshot was created - */ - createdAt: Date; -}; - -/** - * Snapshot of current environment variables for the deployment - */ -export type DeploymentCurrentEnvironmentVariables = { - /** - * Environment variables in the snapshot - */ - variables: Array; - /** - * Deterministic hash of all variables for change detection - */ - hash: string; - /** - * ISO 8601 timestamp when snapshot was created - */ - createdAt: Date; -}; - -export type Deployment = { - /** - * Unique identifier for the deployment. - */ - id: string; - /** - * Deployment name. - */ - name: string; - /** - * Public subdomain for auto-generated domains - */ - publicSubdomain?: string | null | undefined; - /** - * Deployment status in the deployment lifecycle - */ - status: DeploymentStatus; - /** - * Unique identifier for the project. - */ - projectId: string; - /** - * Target platform for the deployment - */ - platform: DeploymentPlatform; - /** - * Underlying cloud platform for Kubernetes deployments. - */ - basePlatform?: DeploymentBasePlatform | null | undefined; - /** - * Cloud region or location for the deployment. - */ - region?: string | null | undefined; - /** - * DeploymentState protocol version owned by the runtime/manager - */ - deploymentProtocolVersion: number; - /** - * ID of deployment group this deployment belongs to - */ - deploymentGroupId: string; - /** - * Cloud environment information - */ - environmentInfo?: - | DeploymentEnvironmentInfoGcp - | DeploymentEnvironmentInfoAzure - | DeploymentEnvironmentInfoLocal - | DeploymentEnvironmentInfoAws - | DeploymentEnvironmentInfoTest - | any - | null - | undefined; - /** - * User-provided configuration (network, deployment model, approvals) - */ - stackSettings: DeploymentStackSettings; - /** - * State of infrastructure components managed by this deployment - */ - stackState?: DeploymentStackState | null | undefined; - /** - * Runtime metadata for deployment state persistence - */ - runtimeMetadata?: DeploymentRuntimeMetadata | null | undefined; - /** - * ID of the currently deployed release (actual state) - */ - currentReleaseId?: string | null | undefined; - /** - * ID of the desired release for deployment/update (desired state) - */ - desiredReleaseId?: string | null | undefined; - /** - * ID of the pinned release - */ - pinnedReleaseId?: string | null | undefined; - /** - * Setup source that imported this deployment - */ - importSource?: DeploymentImportSource | null | undefined; - /** - * Setup method that created the deployment record and owns setup-time resources. - */ - setupMethod?: DeploymentSetupMethod1 | null | undefined; - /** - * Setup method metadata needed to guide privileged teardown. - */ - setupMetadata?: { [k: string]: any | null } | null | undefined; - /** - * Imported setup target for compatibility checks - */ - setupTarget?: string | null | undefined; - /** - * Imported setup compatibility fingerprint - */ - setupFingerprint?: string | null | undefined; - /** - * Imported setup fingerprint algorithm version - */ - setupFingerprintVersion?: number | null | undefined; - /** - * Whether a retry has been requested for a failed deployment - */ - retryRequested: boolean; - /** - * Timestamp of the last received heartbeat from the deployment - */ - lastHeartbeatAt?: Date | null | undefined; - /** - * Latest error information if the deployment is in a failed state - */ - error?: DeploymentError | null | undefined; - /** - * Configuration of environment variables for the deployment - */ - environmentVariables?: Array | null | undefined; - /** - * Snapshot of target environment variables for the deployment - */ - targetEnvironmentVariables?: - | DeploymentTargetEnvironmentVariables - | null - | undefined; - /** - * Snapshot of current environment variables for the deployment - */ - currentEnvironmentVariables?: - | DeploymentCurrentEnvironmentVariables - | null - | undefined; - createdAt: Date; - updatedAt: Date; - managerId: string; - /** - * Unique identifier for the workspace. - */ - workspaceId: string; -}; - -/** @internal */ -export const DeploymentStatus$inboundSchema: z.ZodEnum< - typeof DeploymentStatus -> = z.enum(DeploymentStatus); - -/** @internal */ -export const DeploymentPlatform$inboundSchema: z.ZodEnum< - typeof DeploymentPlatform -> = z.enum(DeploymentPlatform); - -/** @internal */ -export const DeploymentBasePlatform$inboundSchema: z.ZodEnum< - typeof DeploymentBasePlatform -> = z.enum(DeploymentBasePlatform); - -/** @internal */ -export const DeploymentPlatformTest$inboundSchema: z.ZodEnum< - typeof DeploymentPlatformTest -> = z.enum(DeploymentPlatformTest); - -/** @internal */ -export const DeploymentEnvironmentInfoTest$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoTest, - unknown -> = z.object({ - testId: z.string(), - platform: DeploymentPlatformTest$inboundSchema, -}); - -export function deploymentEnvironmentInfoTestFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentEnvironmentInfoTest$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoTest' from JSON`, - ); -} - -/** @internal */ -export const DeploymentPlatformLocal$inboundSchema: z.ZodEnum< - typeof DeploymentPlatformLocal -> = z.enum(DeploymentPlatformLocal); - -/** @internal */ -export const DeploymentEnvironmentInfoLocal$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoLocal, - unknown -> = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: DeploymentPlatformLocal$inboundSchema, -}); - -export function deploymentEnvironmentInfoLocalFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentEnvironmentInfoLocal$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoLocal' from JSON`, - ); -} - -/** @internal */ -export const DeploymentPlatformAzure$inboundSchema: z.ZodEnum< - typeof DeploymentPlatformAzure -> = z.enum(DeploymentPlatformAzure); - -/** @internal */ -export const DeploymentEnvironmentInfoAzure$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoAzure, - unknown -> = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: DeploymentPlatformAzure$inboundSchema, -}); - -export function deploymentEnvironmentInfoAzureFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentEnvironmentInfoAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoAzure' from JSON`, - ); -} - -/** @internal */ -export const DeploymentPlatformGcp$inboundSchema: z.ZodEnum< - typeof DeploymentPlatformGcp -> = z.enum(DeploymentPlatformGcp); - -/** @internal */ -export const DeploymentEnvironmentInfoGcp$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoGcp, - unknown -> = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: DeploymentPlatformGcp$inboundSchema, -}); - -export function deploymentEnvironmentInfoGcpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentEnvironmentInfoGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoGcp' from JSON`, - ); -} - -/** @internal */ -export const DeploymentPlatformAws$inboundSchema: z.ZodEnum< - typeof DeploymentPlatformAws -> = z.enum(DeploymentPlatformAws); - -/** @internal */ -export const DeploymentEnvironmentInfoAws$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoAws, - unknown -> = z.object({ - accountId: z.string(), - region: z.string(), - platform: DeploymentPlatformAws$inboundSchema, -}); - -export function deploymentEnvironmentInfoAwsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentEnvironmentInfoAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoAws' from JSON`, - ); -} - -/** @internal */ -export const DeploymentEnvironmentInfoUnion$inboundSchema: z.ZodType< - DeploymentEnvironmentInfoUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentEnvironmentInfoGcp$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoAzure$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoLocal$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoAws$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoTest$inboundSchema), - z.any(), -]); - -export function deploymentEnvironmentInfoUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentEnvironmentInfoUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnvironmentInfoUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentPoolsAutoscale$inboundSchema: z.ZodType< - DeploymentPoolsAutoscale, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); - -export function deploymentPoolsAutoscaleFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentPoolsAutoscale$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPoolsAutoscale' from JSON`, - ); -} - -/** @internal */ -export const DeploymentPoolsFixed$inboundSchema: z.ZodType< - DeploymentPoolsFixed, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); - -export function deploymentPoolsFixedFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentPoolsFixed$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPoolsFixed' from JSON`, - ); -} - -/** @internal */ -export const DeploymentPoolsUnion$inboundSchema: z.ZodType< - DeploymentPoolsUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentPoolsFixed$inboundSchema), - z.lazy(() => DeploymentPoolsAutoscale$inboundSchema), -]); - -export function deploymentPoolsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentPoolsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPoolsUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCompute$inboundSchema: z.ZodType< - DeploymentCompute, - unknown -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => DeploymentPoolsFixed$inboundSchema), - z.lazy(() => DeploymentPoolsAutoscale$inboundSchema), - ]), - ).optional(), -}); - -export function deploymentComputeFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCompute$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCompute' from JSON`, - ); -} - -/** @internal */ -export const DeploymentComputeUnion$inboundSchema: z.ZodType< - DeploymentComputeUnion, - unknown -> = z.union([z.lazy(() => DeploymentCompute$inboundSchema), z.any()]); - -export function deploymentComputeUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentComputeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentComputeUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDeploymentModel$inboundSchema: z.ZodEnum< - typeof DeploymentDeploymentModel -> = z.enum(DeploymentDeploymentModel); - -/** @internal */ -export const DeploymentAws$inboundSchema: z.ZodType = z - .object({ - certificateArn: z.string(), - }); - -export function deploymentAwsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentAws' from JSON`, - ); -} - -/** @internal */ -export const DeploymentAwsUnion$inboundSchema: z.ZodType< - DeploymentAwsUnion, - unknown -> = z.union([z.lazy(() => DeploymentAws$inboundSchema), z.any()]); - -export function deploymentAwsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentAwsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentAwsUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentAzureStackSettings$inboundSchema: z.ZodType< - DeploymentAzureStackSettings, - unknown -> = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), -}); - -export function deploymentAzureStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentAzureStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentAzureStackSettings' from JSON`, - ); -} - -/** @internal */ -export const DeploymentAzureUnion$inboundSchema: z.ZodType< - DeploymentAzureUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentAzureStackSettings$inboundSchema), - z.any(), -]); - -export function deploymentAzureUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentAzureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentAzureUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentGcpStackSettings$inboundSchema: z.ZodType< - DeploymentGcpStackSettings, - unknown -> = z.object({ - certificateName: z.string(), -}); - -export function deploymentGcpStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentGcpStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentGcpStackSettings' from JSON`, - ); -} - -/** @internal */ -export const DeploymentGcpUnion$inboundSchema: z.ZodType< - DeploymentGcpUnion, - unknown -> = z.union([z.lazy(() => DeploymentGcpStackSettings$inboundSchema), z.any()]); - -export function deploymentGcpUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentGcpUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentGcpUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTlsSecretRef$inboundSchema: z.ZodType< - DeploymentTlsSecretRef, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), -}); - -export function deploymentTlsSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentTlsSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentTlsSecretRef' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDomainsKubernetes$inboundSchema: z.ZodType< - DeploymentDomainsKubernetes, - unknown -> = z.object({ - tlsSecretRef: z.lazy(() => DeploymentTlsSecretRef$inboundSchema), -}); - -export function deploymentDomainsKubernetesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDomainsKubernetes' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDomainsKubernetesUnion$inboundSchema: z.ZodType< - DeploymentDomainsKubernetesUnion, - unknown -> = z.union([z.lazy(() => DeploymentDomainsKubernetes$inboundSchema), z.any()]); - -export function deploymentDomainsKubernetesUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDomainsKubernetesUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDomainsKubernetesUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDomainsCertificate$inboundSchema: z.ZodType< - DeploymentDomainsCertificate, - unknown -> = z.object({ - aws: z.nullable(z.union([z.lazy(() => DeploymentAws$inboundSchema), z.any()])) - .optional(), - azure: z.nullable( - z.union([ - z.lazy(() => DeploymentAzureStackSettings$inboundSchema), - z.any(), - ]), - ).optional(), - gcp: z.nullable( - z.union([z.lazy(() => DeploymentGcpStackSettings$inboundSchema), z.any()]), - ).optional(), - kubernetes: z.nullable( - z.union([z.lazy(() => DeploymentDomainsKubernetes$inboundSchema), z.any()]), - ).optional(), -}); - -export function deploymentDomainsCertificateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDomainsCertificate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDomainsCertificate' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCustomDomains$inboundSchema: z.ZodType< - DeploymentCustomDomains, - unknown -> = z.object({ - certificate: z.lazy(() => DeploymentDomainsCertificate$inboundSchema), - domain: z.string(), -}); - -export function deploymentCustomDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCustomDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCustomDomains' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDomains$inboundSchema: z.ZodType< - DeploymentDomains, - unknown -> = z.object({ - customDomains: z.nullable( - z.record(z.string(), z.lazy(() => DeploymentCustomDomains$inboundSchema)), - ).optional(), -}); - -export function deploymentDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDomains' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDomainsUnion$inboundSchema: z.ZodType< - DeploymentDomainsUnion, - unknown -> = z.union([z.lazy(() => DeploymentDomains$inboundSchema), z.any()]); - -export function deploymentDomainsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDomainsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDomainsUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentExternalBindings$inboundSchema: z.ZodType< - DeploymentExternalBindings, - unknown -> = z.object({}); - -export function deploymentExternalBindingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentExternalBindings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExternalBindings' from JSON`, - ); -} - -/** @internal */ -export const DeploymentHeartbeats$inboundSchema: z.ZodEnum< - typeof DeploymentHeartbeats -> = z.enum(DeploymentHeartbeats); - -/** @internal */ -export const DeploymentCloud$inboundSchema: z.ZodType< - DeploymentCloud, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); - -export function deploymentCloudFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCloud$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCloud' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCloudUnion$inboundSchema: z.ZodType< - DeploymentCloudUnion, - unknown -> = z.union([z.lazy(() => DeploymentCloud$inboundSchema), z.any()]); - -export function deploymentCloudUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCloudUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCloudUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentOwnership$inboundSchema: z.ZodEnum< - typeof DeploymentOwnership -> = z.enum(DeploymentOwnership); - -/** @internal */ -export const DeploymentCluster$inboundSchema: z.ZodType< - DeploymentCluster, - unknown -> = z.object({ - cloud: z.nullable( - z.union([z.lazy(() => DeploymentCloud$inboundSchema), z.any()]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: DeploymentOwnership$inboundSchema, -}); - -export function deploymentClusterFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCluster$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCluster' from JSON`, - ); -} - -/** @internal */ -export const DeploymentClusterUnion$inboundSchema: z.ZodType< - DeploymentClusterUnion, - unknown -> = z.union([z.lazy(() => DeploymentCluster$inboundSchema), z.any()]); - -export function deploymentClusterUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentClusterUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentClusterUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateNone2$inboundSchema: z.ZodType< - DeploymentCertificateNone2, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function deploymentCertificateNone2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCertificateNone2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateNone2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateManagedTLSSecret2$inboundSchema: z.ZodType< - DeploymentCertificateManagedTLSSecret2, - unknown -> = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), -}); - -export function deploymentCertificateManagedTLSSecret2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentCertificateManagedTLSSecret2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateManagedTLSSecret2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateAwsAcmArn2$inboundSchema: z.ZodType< - DeploymentCertificateAwsAcmArn2, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); - -export function deploymentCertificateAwsAcmArn2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCertificateAwsAcmArn2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateAwsAcmArn2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateManagedAcmImport2$inboundSchema: z.ZodType< - DeploymentCertificateManagedAcmImport2, - unknown -> = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), -}); - -export function deploymentCertificateManagedAcmImport2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentCertificateManagedAcmImport2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateManagedAcmImport2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateTLSSecretRef2$inboundSchema: z.ZodType< - DeploymentCertificateTLSSecretRef2, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), -}); - -export function deploymentCertificateTLSSecretRef2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentCertificateTLSSecretRef2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateTLSSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateUnion2$inboundSchema: z.ZodType< - DeploymentCertificateUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => DeploymentCertificateManagedAcmImport2$inboundSchema), - z.lazy(() => DeploymentCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => DeploymentCertificateManagedTLSSecret2$inboundSchema), - z.lazy(() => DeploymentCertificateNone2$inboundSchema), -]); - -export function deploymentCertificateUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCertificateUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateUnion2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentModeCustom$inboundSchema: z.ZodEnum< - typeof DeploymentModeCustom -> = z.enum(DeploymentModeCustom); - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: - z.ZodEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum4 - > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum4); - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema: - z.ZodType = - z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, - }); - -export function deploymentProviderAzureApplicationGatewayForContainers4FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentProviderAzureApplicationGatewayForContainers4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers4' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderGkeGatewayEnum4$inboundSchema: z.ZodEnum< - typeof DeploymentProviderGkeGatewayEnum4 -> = z.enum(DeploymentProviderGkeGatewayEnum4); - -/** @internal */ -export const DeploymentProviderGkeGateway4$inboundSchema: z.ZodType< - DeploymentProviderGkeGateway4, - unknown -> = z.object({ - provider: DeploymentProviderGkeGatewayEnum4$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function deploymentProviderGkeGateway4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderGkeGateway4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderGkeGateway4' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< - typeof DeploymentProviderAwsAlbEnum4 -> = z.enum(DeploymentProviderAwsAlbEnum4); - -/** @internal */ -export const DeploymentProviderAwsAlb4$inboundSchema: z.ZodType< - DeploymentProviderAwsAlb4, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentProviderAwsAlbEnum4$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function deploymentProviderAwsAlb4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAwsAlb4' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderUnion4$inboundSchema: z.ZodType< - DeploymentProviderUnion4, - unknown -> = z.union([ - z.lazy(() => DeploymentProviderAwsAlb4$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway4$inboundSchema), - z.any(), -]); - -export function deploymentProviderUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderUnion4' from JSON`, - ); -} - -/** @internal */ -export const DeploymentRouteGateway2$inboundSchema: z.ZodType< - DeploymentRouteGateway2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentProviderAwsAlb4$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway4$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function deploymentRouteGateway2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentRouteGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteGateway2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: - z.ZodEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum3 - > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum3); - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema: - z.ZodType = - z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, - }); - -export function deploymentProviderAzureApplicationGatewayForContainers3FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentProviderAzureApplicationGatewayForContainers3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers3' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderGkeGatewayEnum3$inboundSchema: z.ZodEnum< - typeof DeploymentProviderGkeGatewayEnum3 -> = z.enum(DeploymentProviderGkeGatewayEnum3); - -/** @internal */ -export const DeploymentProviderGkeGateway3$inboundSchema: z.ZodType< - DeploymentProviderGkeGateway3, - unknown -> = z.object({ - provider: DeploymentProviderGkeGatewayEnum3$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function deploymentProviderGkeGateway3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderGkeGateway3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderGkeGateway3' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderAwsAlbEnum3$inboundSchema: z.ZodEnum< - typeof DeploymentProviderAwsAlbEnum3 -> = z.enum(DeploymentProviderAwsAlbEnum3); - -/** @internal */ -export const DeploymentProviderAwsAlb3$inboundSchema: z.ZodType< - DeploymentProviderAwsAlb3, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentProviderAwsAlbEnum3$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function deploymentProviderAwsAlb3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderAwsAlb3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAwsAlb3' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderUnion3$inboundSchema: z.ZodType< - DeploymentProviderUnion3, - unknown -> = z.union([ - z.lazy(() => DeploymentProviderAwsAlb3$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway3$inboundSchema), - z.any(), -]); - -export function deploymentProviderUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderUnion3' from JSON`, - ); -} - -/** @internal */ -export const DeploymentRouteIngress2$inboundSchema: z.ZodType< - DeploymentRouteIngress2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentProviderAwsAlb3$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway3$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function deploymentRouteIngress2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentRouteIngress2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteIngress2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentRouteUnion2$inboundSchema: z.ZodType< - DeploymentRouteUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentRouteIngress2$inboundSchema), - z.lazy(() => DeploymentRouteGateway2$inboundSchema), -]); - -export function deploymentRouteUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentRouteUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteUnion2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentExposureCustom$inboundSchema: z.ZodType< - DeploymentExposureCustom, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => DeploymentCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => DeploymentCertificateManagedAcmImport2$inboundSchema), - z.lazy(() => DeploymentCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => DeploymentCertificateManagedTLSSecret2$inboundSchema), - z.lazy(() => DeploymentCertificateNone2$inboundSchema), - ]), - domain: z.string(), - mode: DeploymentModeCustom$inboundSchema, - route: z.union([ - z.lazy(() => DeploymentRouteIngress2$inboundSchema), - z.lazy(() => DeploymentRouteGateway2$inboundSchema), - ]), -}); - -export function deploymentExposureCustomFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentExposureCustom$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExposureCustom' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateNone1$inboundSchema: z.ZodType< - DeploymentCertificateNone1, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function deploymentCertificateNone1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCertificateNone1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateNone1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateManagedTLSSecret1$inboundSchema: z.ZodType< - DeploymentCertificateManagedTLSSecret1, - unknown -> = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), -}); - -export function deploymentCertificateManagedTLSSecret1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentCertificateManagedTLSSecret1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateManagedTLSSecret1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateAwsAcmArn1$inboundSchema: z.ZodType< - DeploymentCertificateAwsAcmArn1, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); - -export function deploymentCertificateAwsAcmArn1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCertificateAwsAcmArn1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateAwsAcmArn1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateManagedAcmImport1$inboundSchema: z.ZodType< - DeploymentCertificateManagedAcmImport1, - unknown -> = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), -}); - -export function deploymentCertificateManagedAcmImport1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentCertificateManagedAcmImport1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateManagedAcmImport1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateTLSSecretRef1$inboundSchema: z.ZodType< - DeploymentCertificateTLSSecretRef1, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), -}); - -export function deploymentCertificateTLSSecretRef1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentCertificateTLSSecretRef1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateTLSSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentCertificateUnion1$inboundSchema: z.ZodType< - DeploymentCertificateUnion1, - unknown -> = z.union([ - z.lazy(() => DeploymentCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => DeploymentCertificateManagedAcmImport1$inboundSchema), - z.lazy(() => DeploymentCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => DeploymentCertificateManagedTLSSecret1$inboundSchema), - z.lazy(() => DeploymentCertificateNone1$inboundSchema), -]); - -export function deploymentCertificateUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentCertificateUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentCertificateUnion1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentModeGenerated$inboundSchema: z.ZodEnum< - typeof DeploymentModeGenerated -> = z.enum(DeploymentModeGenerated); - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: - z.ZodEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum2 - > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum2); - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema: - z.ZodType = - z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, - }); - -export function deploymentProviderAzureApplicationGatewayForContainers2FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentProviderAzureApplicationGatewayForContainers2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderGkeGatewayEnum2$inboundSchema: z.ZodEnum< - typeof DeploymentProviderGkeGatewayEnum2 -> = z.enum(DeploymentProviderGkeGatewayEnum2); - -/** @internal */ -export const DeploymentProviderGkeGateway2$inboundSchema: z.ZodType< - DeploymentProviderGkeGateway2, - unknown -> = z.object({ - provider: DeploymentProviderGkeGatewayEnum2$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function deploymentProviderGkeGateway2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderGkeGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderGkeGateway2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderAwsAlbEnum2$inboundSchema: z.ZodEnum< - typeof DeploymentProviderAwsAlbEnum2 -> = z.enum(DeploymentProviderAwsAlbEnum2); - -/** @internal */ -export const DeploymentProviderAwsAlb2$inboundSchema: z.ZodType< - DeploymentProviderAwsAlb2, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentProviderAwsAlbEnum2$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function deploymentProviderAwsAlb2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderAwsAlb2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAwsAlb2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderUnion2$inboundSchema: z.ZodType< - DeploymentProviderUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentProviderAwsAlb2$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway2$inboundSchema), - z.any(), -]); - -export function deploymentProviderUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderUnion2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentRouteGateway1$inboundSchema: z.ZodType< - DeploymentRouteGateway1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentProviderAwsAlb2$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway2$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function deploymentRouteGateway1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentRouteGateway1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteGateway1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: - z.ZodEnum< - typeof DeploymentProviderAzureApplicationGatewayForContainersEnum1 - > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum1); - -/** @internal */ -export const DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema: - z.ZodType = - z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, - }); - -export function deploymentProviderAzureApplicationGatewayForContainers1FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentProviderAzureApplicationGatewayForContainers1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderGkeGatewayEnum1$inboundSchema: z.ZodEnum< - typeof DeploymentProviderGkeGatewayEnum1 -> = z.enum(DeploymentProviderGkeGatewayEnum1); - -/** @internal */ -export const DeploymentProviderGkeGateway1$inboundSchema: z.ZodType< - DeploymentProviderGkeGateway1, - unknown -> = z.object({ - provider: DeploymentProviderGkeGatewayEnum1$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function deploymentProviderGkeGateway1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderGkeGateway1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderGkeGateway1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderAwsAlbEnum1$inboundSchema: z.ZodEnum< - typeof DeploymentProviderAwsAlbEnum1 -> = z.enum(DeploymentProviderAwsAlbEnum1); - -/** @internal */ -export const DeploymentProviderAwsAlb1$inboundSchema: z.ZodType< - DeploymentProviderAwsAlb1, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentProviderAwsAlbEnum1$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function deploymentProviderAwsAlb1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderAwsAlb1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderAwsAlb1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentProviderUnion1$inboundSchema: z.ZodType< - DeploymentProviderUnion1, - unknown -> = z.union([ - z.lazy(() => DeploymentProviderAwsAlb1$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway1$inboundSchema), - z.any(), -]); - -export function deploymentProviderUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentProviderUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentProviderUnion1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentRouteIngress1$inboundSchema: z.ZodType< - DeploymentRouteIngress1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentProviderAwsAlb1$inboundSchema), - z.lazy(() => - DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => DeploymentProviderGkeGateway1$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function deploymentRouteIngress1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentRouteIngress1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteIngress1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentRouteUnion1$inboundSchema: z.ZodType< - DeploymentRouteUnion1, - unknown -> = z.union([ - z.lazy(() => DeploymentRouteIngress1$inboundSchema), - z.lazy(() => DeploymentRouteGateway1$inboundSchema), -]); - -export function deploymentRouteUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentRouteUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentRouteUnion1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentExposureGenerated$inboundSchema: z.ZodType< - DeploymentExposureGenerated, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => DeploymentCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => DeploymentCertificateManagedAcmImport1$inboundSchema), - z.lazy(() => DeploymentCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => DeploymentCertificateManagedTLSSecret1$inboundSchema), - z.lazy(() => DeploymentCertificateNone1$inboundSchema), - ]), - mode: DeploymentModeGenerated$inboundSchema, - route: z.union([ - z.lazy(() => DeploymentRouteIngress1$inboundSchema), - z.lazy(() => DeploymentRouteGateway1$inboundSchema), - ]), -}); - -export function deploymentExposureGeneratedFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentExposureGenerated$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExposureGenerated' from JSON`, - ); -} - -/** @internal */ -export const DeploymentModeDisabled$inboundSchema: z.ZodEnum< - typeof DeploymentModeDisabled -> = z.enum(DeploymentModeDisabled); - -/** @internal */ -export const DeploymentExposureDisabled$inboundSchema: z.ZodType< - DeploymentExposureDisabled, - unknown -> = z.object({ - mode: DeploymentModeDisabled$inboundSchema, -}); - -export function deploymentExposureDisabledFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentExposureDisabled$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExposureDisabled' from JSON`, - ); -} - -/** @internal */ -export const DeploymentExposureUnion$inboundSchema: z.ZodType< - DeploymentExposureUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentExposureCustom$inboundSchema), - z.lazy(() => DeploymentExposureGenerated$inboundSchema), - z.lazy(() => DeploymentExposureDisabled$inboundSchema), - z.any(), -]); - -export function deploymentExposureUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentExposureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentExposureUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentKubernetes$inboundSchema: z.ZodType< - DeploymentKubernetes, - unknown -> = z.object({ - cluster: z.nullable( - z.union([z.lazy(() => DeploymentCluster$inboundSchema), z.any()]), - ).optional(), - exposure: z.nullable( - z.union([ - z.lazy(() => DeploymentExposureCustom$inboundSchema), - z.lazy(() => DeploymentExposureGenerated$inboundSchema), - z.lazy(() => DeploymentExposureDisabled$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function deploymentKubernetesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentKubernetes' from JSON`, - ); -} - -/** @internal */ -export const DeploymentKubernetesUnion$inboundSchema: z.ZodType< - DeploymentKubernetesUnion, - unknown -> = z.union([z.lazy(() => DeploymentKubernetes$inboundSchema), z.any()]); - -export function deploymentKubernetesUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentKubernetesUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentKubernetesUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTypeByoVnetAzure$inboundSchema: z.ZodEnum< - typeof DeploymentTypeByoVnetAzure -> = z.enum(DeploymentTypeByoVnetAzure); - -/** @internal */ -export const DeploymentNetworkByoVnetAzure$inboundSchema: z.ZodType< - DeploymentNetworkByoVnetAzure, - unknown -> = z.object({ - application_gateway_subnet_name: z.nullable(z.string()).optional(), - private_subnet_name: z.string(), - public_subnet_name: z.string(), - type: DeploymentTypeByoVnetAzure$inboundSchema, - vnet_resource_id: z.string(), -}).transform((v) => { - return remap$(v, { - "application_gateway_subnet_name": "applicationGatewaySubnetName", - "private_subnet_name": "privateSubnetName", - "public_subnet_name": "publicSubnetName", - "vnet_resource_id": "vnetResourceId", - }); -}); - -export function deploymentNetworkByoVnetAzureFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentNetworkByoVnetAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkByoVnetAzure' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTypeByoVpcGcp$inboundSchema: z.ZodEnum< - typeof DeploymentTypeByoVpcGcp -> = z.enum(DeploymentTypeByoVpcGcp); - -/** @internal */ -export const DeploymentNetworkByoVpcGcp$inboundSchema: z.ZodType< - DeploymentNetworkByoVpcGcp, - unknown -> = z.object({ - network_name: z.string(), - region: z.string(), - subnet_name: z.string(), - type: DeploymentTypeByoVpcGcp$inboundSchema, -}).transform((v) => { - return remap$(v, { - "network_name": "networkName", - "subnet_name": "subnetName", - }); -}); - -export function deploymentNetworkByoVpcGcpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentNetworkByoVpcGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkByoVpcGcp' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTypeByoVpcAws$inboundSchema: z.ZodEnum< - typeof DeploymentTypeByoVpcAws -> = z.enum(DeploymentTypeByoVpcAws); - -/** @internal */ -export const DeploymentNetworkByoVpcAws$inboundSchema: z.ZodType< - DeploymentNetworkByoVpcAws, - unknown -> = z.object({ - private_subnet_ids: z.array(z.string()), - public_subnet_ids: z.array(z.string()), - security_group_ids: z.array(z.string()).optional(), - type: DeploymentTypeByoVpcAws$inboundSchema, - vpc_id: z.string(), -}).transform((v) => { - return remap$(v, { - "private_subnet_ids": "privateSubnetIds", - "public_subnet_ids": "publicSubnetIds", - "security_group_ids": "securityGroupIds", - "vpc_id": "vpcId", - }); -}); - -export function deploymentNetworkByoVpcAwsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentNetworkByoVpcAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkByoVpcAws' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTypeCreate$inboundSchema: z.ZodEnum< - typeof DeploymentTypeCreate -> = z.enum(DeploymentTypeCreate); - -/** @internal */ -export const DeploymentNetworkCreate$inboundSchema: z.ZodType< - DeploymentNetworkCreate, - unknown -> = z.object({ - availability_zones: z.int().optional(), - cidr: z.nullable(z.string()).optional(), - type: DeploymentTypeCreate$inboundSchema, -}).transform((v) => { - return remap$(v, { - "availability_zones": "availabilityZones", - }); -}); - -export function deploymentNetworkCreateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentNetworkCreate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkCreate' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTypeUseDefault$inboundSchema: z.ZodEnum< - typeof DeploymentTypeUseDefault -> = z.enum(DeploymentTypeUseDefault); - -/** @internal */ -export const DeploymentNetworkUseDefault$inboundSchema: z.ZodType< - DeploymentNetworkUseDefault, - unknown -> = z.object({ - type: DeploymentTypeUseDefault$inboundSchema, -}); - -export function deploymentNetworkUseDefaultFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentNetworkUseDefault$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkUseDefault' from JSON`, - ); -} - -/** @internal */ -export const DeploymentNetworkUnion$inboundSchema: z.ZodType< - DeploymentNetworkUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentNetworkByoVpcAws$inboundSchema), - z.lazy(() => DeploymentNetworkByoVpcGcp$inboundSchema), - z.lazy(() => DeploymentNetworkByoVnetAzure$inboundSchema), - z.lazy(() => DeploymentNetworkUseDefault$inboundSchema), - z.lazy(() => DeploymentNetworkCreate$inboundSchema), - z.any(), -]); - -export function deploymentNetworkUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentNetworkUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentNetworkUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTelemetry$inboundSchema: z.ZodEnum< - typeof DeploymentTelemetry -> = z.enum(DeploymentTelemetry); - -/** @internal */ -export const DeploymentUpdates$inboundSchema: z.ZodEnum< - typeof DeploymentUpdates -> = z.enum(DeploymentUpdates); - -/** @internal */ -export const DeploymentStackSettings$inboundSchema: z.ZodType< - DeploymentStackSettings, - unknown -> = z.object({ - compute: z.nullable( - z.union([z.lazy(() => DeploymentCompute$inboundSchema), z.any()]), - ).optional(), - deploymentModel: DeploymentDeploymentModel$inboundSchema.optional(), - domains: z.nullable( - z.union([z.lazy(() => DeploymentDomains$inboundSchema), z.any()]), - ).optional(), - externalBindings: z.nullable( - z.lazy(() => DeploymentExternalBindings$inboundSchema), - ).optional(), - heartbeats: DeploymentHeartbeats$inboundSchema.optional(), - kubernetes: z.nullable( - z.union([z.lazy(() => DeploymentKubernetes$inboundSchema), z.any()]), - ).optional(), - network: z.nullable( - z.union([ - z.lazy(() => DeploymentNetworkByoVpcAws$inboundSchema), - z.lazy(() => DeploymentNetworkByoVpcGcp$inboundSchema), - z.lazy(() => DeploymentNetworkByoVnetAzure$inboundSchema), - z.lazy(() => DeploymentNetworkUseDefault$inboundSchema), - z.lazy(() => DeploymentNetworkCreate$inboundSchema), - z.any(), - ]), - ).optional(), - telemetry: DeploymentTelemetry$inboundSchema.optional(), - updates: DeploymentUpdates$inboundSchema.optional(), -}); - -export function deploymentStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentStackSettings' from JSON`, - ); -} - -/** @internal */ -export const DeploymentStackStatePlatform$inboundSchema: z.ZodEnum< - typeof DeploymentStackStatePlatform -> = z.enum(DeploymentStackStatePlatform); - -/** @internal */ -export const DeploymentStackStateConfig$inboundSchema: z.ZodType< - DeploymentStackStateConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function deploymentStackStateConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentStackStateConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentStackStateConfig' from JSON`, - ); -} - -/** @internal */ -export const DeploymentControllerPlatformEnum$inboundSchema: z.ZodEnum< - typeof DeploymentControllerPlatformEnum -> = z.enum(DeploymentControllerPlatformEnum); - -/** @internal */ -export const DeploymentControllerPlatformUnion$inboundSchema: z.ZodType< - DeploymentControllerPlatformUnion, - unknown -> = z.union([DeploymentControllerPlatformEnum$inboundSchema, z.any()]); - -export function deploymentControllerPlatformUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentControllerPlatformUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentControllerPlatformUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentStackStateDependency$inboundSchema: z.ZodType< - DeploymentStackStateDependency, - unknown -> = z.object({ - id: z.string(), - type: z.string(), -}); - -export function deploymentStackStateDependencyFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentStackStateDependency$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentStackStateDependency' from JSON`, - ); -} - -/** @internal */ -export const DeploymentErrorStackState$inboundSchema: z.ZodType< - DeploymentErrorStackState, - unknown -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); - -export function deploymentErrorStackStateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentErrorStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentErrorStackState' from JSON`, - ); -} - -/** @internal */ -export const DeploymentErrorUnion$inboundSchema: z.ZodType< - DeploymentErrorUnion, - unknown -> = z.union([z.lazy(() => DeploymentErrorStackState$inboundSchema), z.any()]); - -export function deploymentErrorUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentErrorUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentLifecycleStackStateEnum$inboundSchema: z.ZodEnum< - typeof DeploymentLifecycleStackStateEnum -> = z.enum(DeploymentLifecycleStackStateEnum); - -/** @internal */ -export const DeploymentLifecycleUnion$inboundSchema: z.ZodType< - DeploymentLifecycleUnion, - unknown -> = z.union([DeploymentLifecycleStackStateEnum$inboundSchema, z.any()]); - -export function deploymentLifecycleUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentLifecycleUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentLifecycleUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentOutputs$inboundSchema: z.ZodType< - DeploymentOutputs, - unknown -> = collectExtraKeys$( - z.object({ - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function deploymentOutputsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentOutputs$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOutputs' from JSON`, - ); -} - -/** @internal */ -export const DeploymentOutputsUnion$inboundSchema: z.ZodType< - DeploymentOutputsUnion, - unknown -> = z.union([z.lazy(() => DeploymentOutputs$inboundSchema), z.any()]); - -export function deploymentOutputsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentOutputsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOutputsUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentPreviousConfig$inboundSchema: z.ZodType< - DeploymentPreviousConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function deploymentPreviousConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentPreviousConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPreviousConfig' from JSON`, - ); -} - -/** @internal */ -export const DeploymentPreviousConfigUnion$inboundSchema: z.ZodType< - DeploymentPreviousConfigUnion, - unknown -> = z.union([z.lazy(() => DeploymentPreviousConfig$inboundSchema), z.any()]); - -export function deploymentPreviousConfigUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentPreviousConfigUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentPreviousConfigUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentStackStateStatus$inboundSchema: z.ZodEnum< - typeof DeploymentStackStateStatus -> = z.enum(DeploymentStackStateStatus); - -/** @internal */ -export const DeploymentStackStateResources$inboundSchema: z.ZodType< - DeploymentStackStateResources, - unknown -> = z.object({ - _internal: z.nullable(z.any()).optional(), - config: z.lazy(() => DeploymentStackStateConfig$inboundSchema), - controllerPlatform: z.nullable( - z.union([DeploymentControllerPlatformEnum$inboundSchema, z.any()]), - ).optional(), - dependencies: z.array( - z.lazy(() => DeploymentStackStateDependency$inboundSchema), - ).optional(), - error: z.nullable( - z.union([z.lazy(() => DeploymentErrorStackState$inboundSchema), z.any()]), - ).optional(), - lastFailedState: z.nullable(z.any()).optional(), - lifecycle: z.nullable( - z.union([DeploymentLifecycleStackStateEnum$inboundSchema, z.any()]), - ).optional(), - outputs: z.nullable( - z.union([z.lazy(() => DeploymentOutputs$inboundSchema), z.any()]), - ).optional(), - previousConfig: z.nullable( - z.union([z.lazy(() => DeploymentPreviousConfig$inboundSchema), z.any()]), - ).optional(), - remoteBindingParams: z.nullable(z.any()).optional(), - retryAttempt: z.int().optional(), - status: DeploymentStackStateStatus$inboundSchema, - type: z.string(), -}).transform((v) => { - return remap$(v, { - "_internal": "internal", - }); -}); - -export function deploymentStackStateResourcesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentStackStateResources$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentStackStateResources' from JSON`, - ); -} - -/** @internal */ -export const DeploymentStackState$inboundSchema: z.ZodType< - DeploymentStackState, - unknown -> = z.object({ - platform: DeploymentStackStatePlatform$inboundSchema, - resourcePrefix: z.string(), - resources: z.record( - z.string(), - z.lazy(() => DeploymentStackStateResources$inboundSchema), - ), -}); - -export function deploymentStackStateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentStackState' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTypeStringList$inboundSchema: z.ZodEnum< - typeof DeploymentTypeStringList -> = z.enum(DeploymentTypeStringList); - -/** @internal */ -export const DeploymentDefaultStringList$inboundSchema: z.ZodType< - DeploymentDefaultStringList, - unknown -> = z.object({ - type: DeploymentTypeStringList$inboundSchema, - value: z.array(z.string()), -}); - -export function deploymentDefaultStringListFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDefaultStringList$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDefaultStringList' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTypeBoolean$inboundSchema: z.ZodEnum< - typeof DeploymentTypeBoolean -> = z.enum(DeploymentTypeBoolean); - -/** @internal */ -export const DeploymentDefaultBoolean$inboundSchema: z.ZodType< - DeploymentDefaultBoolean, - unknown -> = z.object({ - type: DeploymentTypeBoolean$inboundSchema, - value: z.boolean(), -}); - -export function deploymentDefaultBooleanFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDefaultBoolean$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDefaultBoolean' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTypeNumber$inboundSchema: z.ZodEnum< - typeof DeploymentTypeNumber -> = z.enum(DeploymentTypeNumber); - -/** @internal */ -export const DeploymentDefaultNumber$inboundSchema: z.ZodType< - DeploymentDefaultNumber, - unknown -> = z.object({ - type: DeploymentTypeNumber$inboundSchema, - value: z.string(), -}); - -export function deploymentDefaultNumberFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDefaultNumber$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDefaultNumber' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTypeString$inboundSchema: z.ZodEnum< - typeof DeploymentTypeString -> = z.enum(DeploymentTypeString); - -/** @internal */ -export const DeploymentDefaultString$inboundSchema: z.ZodType< - DeploymentDefaultString, - unknown -> = z.object({ - type: DeploymentTypeString$inboundSchema, - value: z.string(), -}); - -export function deploymentDefaultStringFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDefaultString$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDefaultString' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDefaultUnion$inboundSchema: z.ZodType< - DeploymentDefaultUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDefaultString$inboundSchema), - z.lazy(() => DeploymentDefaultNumber$inboundSchema), - z.lazy(() => DeploymentDefaultBoolean$inboundSchema), - z.lazy(() => DeploymentDefaultStringList$inboundSchema), - z.any(), -]); - -export function deploymentDefaultUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDefaultUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDefaultUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentTypeEnvEnum$inboundSchema: z.ZodEnum< - typeof DeploymentTypeEnvEnum -> = z.enum(DeploymentTypeEnvEnum); - -/** @internal */ -export const DeploymentTypeUnion$inboundSchema: z.ZodType< - DeploymentTypeUnion, - unknown -> = z.union([DeploymentTypeEnvEnum$inboundSchema, z.any()]); - -export function deploymentTypeUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentTypeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentTypeUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentEnv$inboundSchema: z.ZodType = z - .object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable(z.union([DeploymentTypeEnvEnum$inboundSchema, z.any()])) - .optional(), - }); - -export function deploymentEnvFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentEnv' from JSON`, - ); -} - -/** @internal */ -export const DeploymentKind$inboundSchema: z.ZodEnum = z - .enum(DeploymentKind); - -/** @internal */ -export const DeploymentPreparedStackPlatform$inboundSchema: z.ZodEnum< - typeof DeploymentPreparedStackPlatform -> = z.enum(DeploymentPreparedStackPlatform); - -/** @internal */ -export const DeploymentProvidedBy$inboundSchema: z.ZodEnum< - typeof DeploymentProvidedBy -> = z.enum(DeploymentProvidedBy); - -/** @internal */ -export const DeploymentValidation$inboundSchema: z.ZodType< - DeploymentValidation, - unknown -> = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), -}); - -export function deploymentValidationFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentValidation$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentValidation' from JSON`, - ); -} - -/** @internal */ -export const DeploymentValidationUnion$inboundSchema: z.ZodType< - DeploymentValidationUnion, - unknown -> = z.union([z.lazy(() => DeploymentValidation$inboundSchema), z.any()]); - -export function deploymentValidationUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentValidationUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentValidationUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentInput$inboundSchema: z.ZodType< - DeploymentInput, - unknown -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => DeploymentDefaultString$inboundSchema), - z.lazy(() => DeploymentDefaultNumber$inboundSchema), - z.lazy(() => DeploymentDefaultBoolean$inboundSchema), - z.lazy(() => DeploymentDefaultStringList$inboundSchema), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array(z.lazy(() => DeploymentEnv$inboundSchema)).optional(), - id: z.string(), - kind: DeploymentKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable(z.array(DeploymentPreparedStackPlatform$inboundSchema)) - .optional(), - providedBy: z.array(DeploymentProvidedBy$inboundSchema), - required: z.boolean(), - validation: z.nullable( - z.union([z.lazy(() => DeploymentValidation$inboundSchema), z.any()]), - ).optional(), -}); - -export function deploymentInputFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentInput$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentInput' from JSON`, - ); -} - -/** @internal */ -export const DeploymentManagementEnum$inboundSchema: z.ZodEnum< - typeof DeploymentManagementEnum -> = z.enum(DeploymentManagementEnum); - -/** @internal */ -export const DeploymentOverrideAwResource$inboundSchema: z.ZodType< - DeploymentOverrideAwResource, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function deploymentOverrideAwResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentOverrideAwResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAwResource' from JSON`, - ); -} - -/** @internal */ -export const DeploymentOverrideAwStack$inboundSchema: z.ZodType< - DeploymentOverrideAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function deploymentOverrideAwStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentOverrideAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAwStack' from JSON`, - ); -} - -/** @internal */ -export const DeploymentOverrideAwBinding$inboundSchema: z.ZodType< - DeploymentOverrideAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => DeploymentOverrideAwResource$inboundSchema).optional(), - stack: z.lazy(() => DeploymentOverrideAwStack$inboundSchema).optional(), -}); + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; -export function deploymentOverrideAwBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentOverrideAwBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAwBinding' from JSON`, - ); -} +/** + * Snapshot of target environment variables for the deployment + */ +export type DeploymentTargetEnvironmentVariables = { + /** + * Environment variables in the snapshot + */ + variables: Array; + /** + * Deterministic hash of all variables for change detection + */ + hash: string; + /** + * ISO 8601 timestamp when snapshot was created + */ + createdAt: Date; +}; -/** @internal */ -export const DeploymentOverrideEffect$inboundSchema: z.ZodEnum< - typeof DeploymentOverrideEffect -> = z.enum(DeploymentOverrideEffect); +/** + * Snapshot of current environment variables for the deployment + */ +export type DeploymentCurrentEnvironmentVariables = { + /** + * Environment variables in the snapshot + */ + variables: Array; + /** + * Deterministic hash of all variables for change detection + */ + hash: string; + /** + * ISO 8601 timestamp when snapshot was created + */ + createdAt: Date; +}; -/** @internal */ -export const DeploymentOverrideAwGrant$inboundSchema: z.ZodType< - DeploymentOverrideAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +/** + * Agent host OS reported on the last sync + */ +export const DeploymentAgentOs = { + Linux: "linux", + Macos: "macos", + Windows: "windows", +} as const; +/** + * Agent host OS reported on the last sync + */ +export type DeploymentAgentOs = ClosedEnum; -export function deploymentOverrideAwGrantFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentOverrideAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAwGrant' from JSON`, - ); -} +/** + * Agent host architecture reported on the last sync + */ +export const DeploymentAgentArch = { + X8664: "x86_64", + Aarch64: "aarch64", +} as const; +/** + * Agent host architecture reported on the last sync + */ +export type DeploymentAgentArch = ClosedEnum; -/** @internal */ -export const DeploymentOverrideAw$inboundSchema: z.ZodType< - DeploymentOverrideAw, - unknown -> = z.object({ - binding: z.lazy(() => DeploymentOverrideAwBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - effect: DeploymentOverrideEffect$inboundSchema.optional(), - grant: z.lazy(() => DeploymentOverrideAwGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +/** + * Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. + */ +export const DeploymentRegime = { + OsService: "os-service", + Kubernetes: "kubernetes", +} as const; +/** + * Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. + */ +export type DeploymentRegime = ClosedEnum; -export function deploymentOverrideAwFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentOverrideAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentOverrideAw' from JSON`, - ); -} +export type Deployment = { + /** + * Unique identifier for the deployment. + */ + id: string; + /** + * Deployment name. + */ + name: string; + /** + * Public subdomain for auto-generated domains + */ + publicSubdomain?: string | null | undefined; + /** + * Deployment status in the deployment lifecycle + */ + status: DeploymentStatus; + /** + * Unique identifier for the project. + */ + projectId: string; + /** + * Target platform for the deployment + */ + platform: DeploymentPlatform; + /** + * Underlying cloud platform for Kubernetes deployments. + */ + basePlatform?: DeploymentBasePlatform | null | undefined; + /** + * Cloud region or location for the deployment. + */ + region?: string | null | undefined; + /** + * DeploymentState protocol version owned by the runtime/manager + */ + deploymentProtocolVersion: number; + /** + * ID of deployment group this deployment belongs to + */ + deploymentGroupId: string; + /** + * Cloud environment information + */ + environmentInfo?: DeploymentEnvironmentInfoUnion | null | undefined; + /** + * User-provided configuration (network, deployment model, approvals) + */ + stackSettings: DeploymentStackSettings; + /** + * State of infrastructure components managed by this deployment + */ + stackState?: DeploymentStackState | null | undefined; + /** + * Runtime metadata for deployment state persistence + */ + runtimeMetadata?: DeploymentRuntimeMetadata | null | undefined; + /** + * ID of the currently deployed release (actual state) + */ + currentReleaseId?: string | null | undefined; + /** + * ID of the desired release for deployment/update (desired state) + */ + desiredReleaseId?: string | null | undefined; + /** + * ID of the pinned release + */ + pinnedReleaseId?: string | null | undefined; + /** + * Setup source that imported this deployment + */ + importSource?: DeploymentImportSource | null | undefined; + /** + * Setup method that created the deployment record and owns setup-time resources. + */ + setupMethod?: DeploymentSetupMethod1 | null | undefined; + /** + * Setup method metadata needed to guide privileged teardown. + */ + setupMetadata?: { [k: string]: any | null } | null | undefined; + /** + * Imported setup target for compatibility checks + */ + setupTarget?: string | null | undefined; + /** + * Imported setup compatibility fingerprint + */ + setupFingerprint?: string | null | undefined; + /** + * Imported setup fingerprint algorithm version + */ + setupFingerprintVersion?: number | null | undefined; + /** + * Whether a retry has been requested for a failed deployment + */ + retryRequested: boolean; + /** + * Timestamp of the last received heartbeat from the deployment + */ + lastHeartbeatAt?: Date | null | undefined; + /** + * Latest error information if the deployment is in a failed state + */ + error?: DeploymentError | null | undefined; + /** + * Configuration of environment variables for the deployment + */ + environmentVariables?: Array | null | undefined; + /** + * Snapshot of target environment variables for the deployment + */ + targetEnvironmentVariables?: + | DeploymentTargetEnvironmentVariables + | null + | undefined; + /** + * Snapshot of current environment variables for the deployment + */ + currentEnvironmentVariables?: + | DeploymentCurrentEnvironmentVariables + | null + | undefined; + createdAt: Date; + updatedAt: Date; + managerId: string; + /** + * Unique identifier for the workspace. + */ + workspaceId: string; + /** + * Agent binary version reported on the last sync (e.g. "1.3.5") + */ + agentVersion?: string | null | undefined; + /** + * Agent host OS reported on the last sync + */ + agentOs?: DeploymentAgentOs | null | undefined; + /** + * Agent host architecture reported on the last sync + */ + agentArch?: DeploymentAgentArch | null | undefined; + /** + * Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. + */ + regime?: DeploymentRegime | null | undefined; + /** + * Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from. + */ + agentImageRepository?: string | null | undefined; + /** + * Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target. + */ + targetAgentVersion?: string | null | undefined; +}; /** @internal */ export const DeploymentOverrideAzureResource$inboundSchema: z.ZodType< @@ -6045,8 +1764,7 @@ export const DeploymentOverridePlatforms$inboundSchema: z.ZodType< DeploymentOverridePlatforms, unknown > = z.object({ - aws: z.nullable(z.array(z.lazy(() => DeploymentOverrideAw$inboundSchema))) - .optional(), + aws: z.nullable(z.array(DeploymentOverrideAw$inboundSchema)).optional(), azure: z.nullable( z.array(z.lazy(() => DeploymentOverrideAzure$inboundSchema)), ).optional(), @@ -7192,7 +2910,7 @@ export const DeploymentPreparedStack$inboundSchema: z.ZodType< unknown > = z.object({ id: z.string(), - inputs: z.array(z.lazy(() => DeploymentInput$inboundSchema)).optional(), + inputs: z.array(DeploymentInput$inboundSchema).optional(), permissions: z.lazy(() => DeploymentPermissions$inboundSchema).optional(), resources: z.record( z.string(), @@ -7328,6 +3046,21 @@ export function deploymentCurrentEnvironmentVariablesFromJSON( ); } +/** @internal */ +export const DeploymentAgentOs$inboundSchema: z.ZodEnum< + typeof DeploymentAgentOs +> = z.enum(DeploymentAgentOs); + +/** @internal */ +export const DeploymentAgentArch$inboundSchema: z.ZodEnum< + typeof DeploymentAgentArch +> = z.enum(DeploymentAgentArch); + +/** @internal */ +export const DeploymentRegime$inboundSchema: z.ZodEnum< + typeof DeploymentRegime +> = z.enum(DeploymentRegime); + /** @internal */ export const Deployment$inboundSchema: z.ZodType = z .object({ @@ -7341,19 +3074,10 @@ export const Deployment$inboundSchema: z.ZodType = z region: z.nullable(z.string()).optional(), deploymentProtocolVersion: z.int(), deploymentGroupId: z.string(), - environmentInfo: z.nullable( - z.union([ - z.lazy(() => DeploymentEnvironmentInfoGcp$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoAzure$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoLocal$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoAws$inboundSchema), - z.lazy(() => DeploymentEnvironmentInfoTest$inboundSchema), - z.any(), - ]), - ).optional(), - stackSettings: z.lazy(() => DeploymentStackSettings$inboundSchema), - stackState: z.nullable(z.lazy(() => DeploymentStackState$inboundSchema)) + environmentInfo: z.nullable(DeploymentEnvironmentInfoUnion$inboundSchema) .optional(), + stackSettings: DeploymentStackSettings$inboundSchema, + stackState: z.nullable(DeploymentStackState$inboundSchema).optional(), runtimeMetadata: z.nullable( z.lazy(() => DeploymentRuntimeMetadata$inboundSchema), ).optional(), @@ -7385,6 +3109,12 @@ export const Deployment$inboundSchema: z.ZodType = z updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), managerId: z.string(), workspaceId: z.string(), + agentVersion: z.nullable(z.string()).optional(), + agentOs: z.nullable(DeploymentAgentOs$inboundSchema).optional(), + agentArch: z.nullable(DeploymentAgentArch$inboundSchema).optional(), + regime: z.nullable(DeploymentRegime$inboundSchema).optional(), + agentImageRepository: z.nullable(z.string()).optional(), + targetAgentVersion: z.nullable(z.string()).optional(), }); export function deploymentFromJSON( diff --git a/client-sdks/platform/typescript/src/models/deploymentdetailresponse.ts b/client-sdks/platform/typescript/src/models/deploymentdetailresponse.ts index 423516794..0190944c1 100644 --- a/client-sdks/platform/typescript/src/models/deploymentdetailresponse.ts +++ b/client-sdks/platform/typescript/src/models/deploymentdetailresponse.ts @@ -3,13 +3,32 @@ */ import * as z from "zod/v4"; -import { remap as remap$ } from "../lib/primitives.js"; import { collectExtraKeys as collectExtraKeys$, safeParse, } from "../lib/schemas.js"; import { ClosedEnum } from "../types/enums.js"; import { Result as SafeParseResult } from "../types/fp.js"; +import { + DeploymentDetailResponseBasePlatform, + DeploymentDetailResponseBasePlatform$inboundSchema, + DeploymentDetailResponseEnvironmentInfoUnion, + DeploymentDetailResponseEnvironmentInfoUnion$inboundSchema, + DeploymentDetailResponseInput, + DeploymentDetailResponseInput$inboundSchema, + DeploymentDetailResponseManagementEnum, + DeploymentDetailResponseManagementEnum$inboundSchema, + DeploymentDetailResponseOverrideAw, + DeploymentDetailResponseOverrideAw$inboundSchema, + DeploymentDetailResponsePlatform, + DeploymentDetailResponsePlatform$inboundSchema, + DeploymentDetailResponseStackSettings, + DeploymentDetailResponseStackSettings$inboundSchema, + DeploymentDetailResponseStackState, + DeploymentDetailResponseStackState$inboundSchema, + DeploymentDetailResponseStatus, + DeploymentDetailResponseStatus$inboundSchema, +} from "./deploymentdetailresponseoverrideaw.js"; import { DeploymentGroupInfo, DeploymentGroupInfo$inboundSchema, @@ -29,6339 +48,1495 @@ import { import { SDKValidationError } from "./errors/sdkvalidationerror.js"; /** - * Deployment status in the deployment lifecycle - */ -export const DeploymentDetailResponseStatus = { - Pending: "pending", - PreflightsFailed: "preflights-failed", - InitialSetup: "initial-setup", - InitialSetupFailed: "initial-setup-failed", - Provisioning: "provisioning", - ProvisioningFailed: "provisioning-failed", - Running: "running", - RefreshFailed: "refresh-failed", - UpdatePending: "update-pending", - Updating: "updating", - UpdateFailed: "update-failed", - DeletePending: "delete-pending", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - TeardownFailed: "teardown-failed", - Deleted: "deleted", - Error: "error", -} as const; -/** - * Deployment status in the deployment lifecycle - */ -export type DeploymentDetailResponseStatus = ClosedEnum< - typeof DeploymentDetailResponseStatus ->; - -/** - * Target platform for the deployment - */ -export const DeploymentDetailResponsePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Target platform for the deployment - */ -export type DeploymentDetailResponsePlatform = ClosedEnum< - typeof DeploymentDetailResponsePlatform ->; - -/** - * Underlying cloud platform for Kubernetes deployments. - */ -export const DeploymentDetailResponseBasePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", -} as const; -/** - * Underlying cloud platform for Kubernetes deployments. - */ -export type DeploymentDetailResponseBasePlatform = ClosedEnum< - typeof DeploymentDetailResponseBasePlatform ->; - -export const DeploymentDetailResponsePlatformTest = { - Test: "test", -} as const; -export type DeploymentDetailResponsePlatformTest = ClosedEnum< - typeof DeploymentDetailResponsePlatformTest ->; - -/** - * Test platform environment information (mock) + * Azure-specific binding specification */ -export type DeploymentDetailResponseEnvironmentInfoTest = { +export type DeploymentDetailResponseOverrideAzureResource = { /** - * Test identifier for this environment + * Scope (subscription/resource group/resource level) */ - testId: string; - platform: DeploymentDetailResponsePlatformTest; + scope: string; }; -export const DeploymentDetailResponsePlatformLocal = { - Local: "local", -} as const; -export type DeploymentDetailResponsePlatformLocal = ClosedEnum< - typeof DeploymentDetailResponsePlatformLocal ->; - /** - * Local platform environment information + * Azure-specific binding specification */ -export type DeploymentDetailResponseEnvironmentInfoLocal = { - /** - * Architecture (e.g., "x86_64", "aarch64") - */ - arch: string; - /** - * Hostname of the machine running the deployment - */ - hostname: string; +export type DeploymentDetailResponseOverrideAzureStack = { /** - * Operating system (e.g., "linux", "macos", "windows") + * Scope (subscription/resource group/resource level) */ - os: string; - platform: DeploymentDetailResponsePlatformLocal; + scope: string; }; -export const DeploymentDetailResponsePlatformAzure = { - Azure: "azure", -} as const; -export type DeploymentDetailResponsePlatformAzure = ClosedEnum< - typeof DeploymentDetailResponsePlatformAzure ->; - /** - * Azure-specific environment information + * Generic binding configuration for permissions */ -export type DeploymentDetailResponseEnvironmentInfoAzure = { - /** - * Azure location/region - */ - location: string; +export type DeploymentDetailResponseOverrideAzureBinding = { /** - * Azure subscription ID + * Azure-specific binding specification */ - subscriptionId: string; + resource?: DeploymentDetailResponseOverrideAzureResource | undefined; /** - * Azure tenant ID + * Azure-specific binding specification */ - tenantId: string; - platform: DeploymentDetailResponsePlatformAzure; + stack?: DeploymentDetailResponseOverrideAzureStack | undefined; }; -export const DeploymentDetailResponsePlatformGcp = { - Gcp: "gcp", -} as const; -export type DeploymentDetailResponsePlatformGcp = ClosedEnum< - typeof DeploymentDetailResponsePlatformGcp ->; - /** - * GCP-specific environment information + * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseEnvironmentInfoGcp = { +export type DeploymentDetailResponseOverrideAzureGrant = { /** - * GCP project ID (e.g., "my-project") + * AWS IAM actions (only for AWS) */ - projectId: string; + actions?: Array | null | undefined; /** - * GCP project number (e.g., "123456789012") + * Azure actions (only for Azure) */ - projectNumber: string; + dataActions?: Array | null | undefined; /** - * GCP region + * GCP permissions that require an exact residual custom role. */ - region: string; - platform: DeploymentDetailResponsePlatformGcp; -}; - -export const DeploymentDetailResponsePlatformAws = { - Aws: "aws", -} as const; -export type DeploymentDetailResponsePlatformAws = ClosedEnum< - typeof DeploymentDetailResponsePlatformAws ->; - -/** - * AWS-specific environment information - */ -export type DeploymentDetailResponseEnvironmentInfoAws = { + permissions?: Array | null | undefined; /** - * AWS account ID + * Provider predefined roles to bind directly. */ - accountId: string; + predefinedRoles?: Array | null | undefined; /** - * AWS region + * GCP residual custom permissions to pair with predefined roles. */ - region: string; - platform: DeploymentDetailResponsePlatformAws; + residualPermissions?: Array | null | undefined; }; /** - * Cloud environment information + * Azure-specific platform permission configuration */ -export type DeploymentDetailResponseEnvironmentInfoUnion = - | DeploymentDetailResponseEnvironmentInfoGcp - | DeploymentDetailResponseEnvironmentInfoAzure - | DeploymentDetailResponseEnvironmentInfoLocal - | DeploymentDetailResponseEnvironmentInfoAws - | DeploymentDetailResponseEnvironmentInfoTest - | any; - -export type DeploymentDetailResponsePoolsAutoscale = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Maximum machine count. - */ - max: number; +export type DeploymentDetailResponseOverrideAzure = { /** - * Minimum machine count. + * Generic binding configuration for permissions */ - min: number; - mode: "autoscale"; -}; - -export type DeploymentDetailResponsePoolsFixed = { + binding: DeploymentDetailResponseOverrideAzureBinding; /** - * Provider machine type selected for this deployment. + * Short admin-facing description of why this entry exists. */ - machine?: string | null | undefined; + description?: string | null | undefined; /** - * Number of machines to run. + * Grant permissions for a specific cloud platform */ - machines: number; - mode: "fixed"; -}; - -/** - * User-selected deployment settings for one compute pool. - */ -export type DeploymentDetailResponsePoolsUnion = - | DeploymentDetailResponsePoolsFixed - | DeploymentDetailResponsePoolsAutoscale; - -/** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. - */ -export type DeploymentDetailResponseCompute = { + grant: DeploymentDetailResponseOverrideAzureGrant; /** - * Selected compute choices keyed by pool ID. + * Stable admin-facing label for this permission entry. */ - pools?: { - [k: string]: - | DeploymentDetailResponsePoolsFixed - | DeploymentDetailResponsePoolsAutoscale; - } | undefined; + label?: string | null | undefined; }; -export type DeploymentDetailResponseComputeUnion = - | DeploymentDetailResponseCompute - | any; - /** - * Deployment model: how updates are delivered to the remote environment. - */ -export const DeploymentDetailResponseDeploymentModel = { - Push: "push", - Pull: "pull", -} as const; -/** - * Deployment model: how updates are delivered to the remote environment. + * GCP IAM condition */ -export type DeploymentDetailResponseDeploymentModel = ClosedEnum< - typeof DeploymentDetailResponseDeploymentModel ->; - -export type DeploymentDetailResponseAws = { - certificateArn: string; -}; - -export type DeploymentDetailResponseAwsUnion = - | DeploymentDetailResponseAws - | any; - -export type DeploymentDetailResponseAzureStackSettings = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; -}; - -export type DeploymentDetailResponseAzureUnion = - | DeploymentDetailResponseAzureStackSettings - | any; - -export type DeploymentDetailResponseGcpStackSettings = { - certificateName: string; +export type DeploymentDetailResponseOverrideConditionResource = { + expression: string; + title: string; }; -export type DeploymentDetailResponseGcpUnion = - | DeploymentDetailResponseGcpStackSettings +export type DeploymentDetailResponseOverrideResourceConditionUnion = + | DeploymentDetailResponseOverrideConditionResource | any; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * GCP-specific binding specification */ -export type DeploymentDetailResponseTlsSecretRef = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; +export type DeploymentDetailResponseOverrideGcpResource = { + condition?: + | DeploymentDetailResponseOverrideConditionResource + | any + | null + | undefined; /** - * Secret name. + * Scope (project/resource level) */ - secretName: string; + scope: string; }; -export type DeploymentDetailResponseDomainsKubernetes = { - /** - * Namespace-scoped Kubernetes TLS Secret reference. - */ - tlsSecretRef: DeploymentDetailResponseTlsSecretRef; +/** + * GCP IAM condition + */ +export type DeploymentDetailResponseOverrideConditionStack = { + expression: string; + title: string; }; -export type DeploymentDetailResponseDomainsKubernetesUnion = - | DeploymentDetailResponseDomainsKubernetes +export type DeploymentDetailResponseOverrideStackConditionUnion = + | DeploymentDetailResponseOverrideConditionStack | any; /** - * Platform-specific certificate references for custom domains. + * GCP-specific binding specification */ -export type DeploymentDetailResponseDomainsCertificate = { - aws?: DeploymentDetailResponseAws | any | null | undefined; - azure?: DeploymentDetailResponseAzureStackSettings | any | null | undefined; - gcp?: DeploymentDetailResponseGcpStackSettings | any | null | undefined; - kubernetes?: - | DeploymentDetailResponseDomainsKubernetes +export type DeploymentDetailResponseOverrideGcpStack = { + condition?: + | DeploymentDetailResponseOverrideConditionStack | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; }; /** - * Custom domain configuration for a single resource. + * Generic binding configuration for permissions */ -export type DeploymentDetailResponseCustomDomains = { +export type DeploymentDetailResponseOverrideGcpBinding = { /** - * Platform-specific certificate references for custom domains. + * GCP-specific binding specification */ - certificate: DeploymentDetailResponseDomainsCertificate; + resource?: DeploymentDetailResponseOverrideGcpResource | undefined; /** - * Fully qualified domain name to use. + * GCP-specific binding specification */ - domain: string; + stack?: DeploymentDetailResponseOverrideGcpStack | undefined; }; /** - * Domain configuration for the stack. - * - * @remarks - * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. + * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseDomains = { +export type DeploymentDetailResponseOverrideGcpGrant = { /** - * Custom domain configuration per resource ID. + * AWS IAM actions (only for AWS) */ - customDomains?: - | { [k: string]: DeploymentDetailResponseCustomDomains } - | null - | undefined; -}; - -export type DeploymentDetailResponseDomainsUnion = - | DeploymentDetailResponseDomains - | any; - -/** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ -export type DeploymentDetailResponseExternalBindings = {}; - -/** - * How heartbeat health checks are handled. - */ -export const DeploymentDetailResponseHeartbeats = { - Off: "off", - On: "on", -} as const; -/** - * How heartbeat health checks are handled. - */ -export type DeploymentDetailResponseHeartbeats = ClosedEnum< - typeof DeploymentDetailResponseHeartbeats ->; - -/** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. - */ -export type DeploymentDetailResponseCloud = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; -}; - -export type DeploymentDetailResponseCloudUnion = - | DeploymentDetailResponseCloud - | any; - -/** - * Ownership model for the Kubernetes cluster. - */ -export const DeploymentDetailResponseOwnership = { - Managed: "managed", - Existing: "existing", - External: "external", -} as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type DeploymentDetailResponseOwnership = ClosedEnum< - typeof DeploymentDetailResponseOwnership ->; - -/** - * Kubernetes cluster setup settings. - */ -export type DeploymentDetailResponseCluster = { - cloud?: DeploymentDetailResponseCloud | any | null | undefined; + actions?: Array | null | undefined; /** - * Namespace where the Alien chart and application resources run. + * Azure actions (only for Azure) */ - namespace?: string | null | undefined; + dataActions?: Array | null | undefined; /** - * Ownership model for the Kubernetes cluster. + * GCP permissions that require an exact residual custom role. */ - ownership: DeploymentDetailResponseOwnership; -}; - -export type DeploymentDetailResponseClusterUnion = - | DeploymentDetailResponseCluster - | any; - -export type DeploymentDetailResponseCertificateNone2 = { - mode: "none"; -}; - -export type DeploymentDetailResponseCertificateManagedTLSSecret2 = { - mode: "managedTlsSecret"; + permissions?: Array | null | undefined; /** - * Secret name template. Runtime may substitute resource/deployment tokens. + * Provider predefined roles to bind directly. */ - secretNameTemplate: string; -}; - -export type DeploymentDetailResponseCertificateAwsAcmArn2 = { + predefinedRoles?: Array | null | undefined; /** - * Existing ACM certificate ARN. + * GCP residual custom permissions to pair with predefined roles. */ - certificateArn: string; - mode: "awsAcmArn"; + residualPermissions?: Array | null | undefined; }; -export type DeploymentDetailResponseCertificateManagedAcmImport2 = { - mode: "managedAcmImport"; +/** + * GCP-specific platform permission configuration + */ +export type DeploymentDetailResponseOverrideGcp = { /** - * ACM region. Defaults to the deployment region when omitted. + * Generic binding configuration for permissions */ - region?: string | null | undefined; + binding: DeploymentDetailResponseOverrideGcpBinding; /** - * Tags applied to runtime-imported ACM certificates. + * Short admin-facing description of why this entry exists. */ - tags?: { [k: string]: string } | undefined; -}; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type DeploymentDetailResponseCertificateTLSSecretRef2 = { + description?: string | null | undefined; /** - * Secret namespace. Defaults to the release namespace when omitted. + * Grant permissions for a specific cloud platform */ - namespace?: string | null | undefined; + grant: DeploymentDetailResponseOverrideGcpGrant; /** - * Secret name. + * Stable admin-facing label for this permission entry. */ - secretName: string; - mode: "tlsSecretRef"; + label?: string | null | undefined; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Platform-specific permission configurations */ -export type DeploymentDetailResponseCertificateUnion2 = - | DeploymentDetailResponseCertificateTLSSecretRef2 - | DeploymentDetailResponseCertificateManagedAcmImport2 - | DeploymentDetailResponseCertificateAwsAcmArn2 - | DeploymentDetailResponseCertificateManagedTLSSecret2 - | DeploymentDetailResponseCertificateNone2; - -export const DeploymentDetailResponseModeCustom = { - Custom: "custom", -} as const; -export type DeploymentDetailResponseModeCustom = ClosedEnum< - typeof DeploymentDetailResponseModeCustom ->; - -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4 = - ClosedEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4 - >; - -export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4; - }; - -export const DeploymentDetailResponseProviderGkeGatewayEnum4 = { - GkeGateway: "gkeGateway", -} as const; -export type DeploymentDetailResponseProviderGkeGatewayEnum4 = ClosedEnum< - typeof DeploymentDetailResponseProviderGkeGatewayEnum4 ->; - -export type DeploymentDetailResponseProviderGkeGateway4 = { - provider: DeploymentDetailResponseProviderGkeGatewayEnum4; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const DeploymentDetailResponseProviderAwsAlbEnum4 = { - AwsAlb: "awsAlb", -} as const; -export type DeploymentDetailResponseProviderAwsAlbEnum4 = ClosedEnum< - typeof DeploymentDetailResponseProviderAwsAlbEnum4 ->; - -export type DeploymentDetailResponseProviderAwsAlb4 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: DeploymentDetailResponseProviderAwsAlbEnum4; +export type DeploymentDetailResponseOverridePlatforms = { /** - * Internet-facing or internal ALB scheme. + * AWS permission configurations */ - scheme: string; + aws?: Array | null | undefined; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Azure permission configurations */ - subnetIds?: Array | undefined; + azure?: Array | null | undefined; /** - * ALB target type, usually `ip`. + * GCP permission configurations */ - targetType: string; + gcp?: Array | null | undefined; }; -export type DeploymentDetailResponseProviderUnion4 = - | DeploymentDetailResponseProviderAwsAlb4 - | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4 - | DeploymentDetailResponseProviderGkeGateway4 - | any; - /** - * Shared Gateway API route profile values. + * A permission set that can be applied across different cloud platforms */ -export type DeploymentDetailResponseRouteGateway2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; +export type DeploymentDetailResponseOverride = { /** - * Labels applied to route objects. + * Human-readable description of what this permission set allows */ - labels?: { [k: string]: string } | undefined; + description: string; /** - * Listener port, usually 443. + * Unique identifier for the permission set (e.g., "storage/data-read") */ - listenerPort: number; - provider?: - | DeploymentDetailResponseProviderAwsAlb4 - | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4 - | DeploymentDetailResponseProviderGkeGateway4 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3 = - ClosedEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3 - >; - -export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3; - }; - -export const DeploymentDetailResponseProviderGkeGatewayEnum3 = { - GkeGateway: "gkeGateway", -} as const; -export type DeploymentDetailResponseProviderGkeGatewayEnum3 = ClosedEnum< - typeof DeploymentDetailResponseProviderGkeGatewayEnum3 ->; - -export type DeploymentDetailResponseProviderGkeGateway3 = { - provider: DeploymentDetailResponseProviderGkeGatewayEnum3; + id: string; /** - * Optional static address name for the Gateway frontend. + * Platform-specific permission configurations */ - staticAddressName?: string | null | undefined; + platforms: DeploymentDetailResponseOverridePlatforms; }; -export const DeploymentDetailResponseProviderAwsAlbEnum3 = { - AwsAlb: "awsAlb", -} as const; -export type DeploymentDetailResponseProviderAwsAlbEnum3 = ClosedEnum< - typeof DeploymentDetailResponseProviderAwsAlbEnum3 ->; +/** + * Reference to a permission set - either by name or inline definition + */ +export type DeploymentDetailResponseOverrideUnion = + | DeploymentDetailResponseOverride + | string; -export type DeploymentDetailResponseProviderAwsAlb3 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: DeploymentDetailResponseProviderAwsAlbEnum3; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; +export type DeploymentDetailResponseManagement2 = { /** - * ALB target type, usually `ip`. + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource */ - targetType: string; + override: { [k: string]: Array }; }; -export type DeploymentDetailResponseProviderUnion3 = - | DeploymentDetailResponseProviderAwsAlb3 - | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3 - | DeploymentDetailResponseProviderGkeGateway3 - | any; - /** - * Shared Ingress route profile values. + * AWS-specific binding specification */ -export type DeploymentDetailResponseRouteIngress2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; +export type DeploymentDetailResponseExtendAwResource = { /** - * `spec.ingressClassName` for generated Ingresses. + * Optional condition for additional filtering (rare) */ - ingressClassName: string; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Labels applied to route objects. + * Resource ARNs to bind to */ - labels?: { [k: string]: string } | undefined; - provider?: - | DeploymentDetailResponseProviderAwsAlb3 - | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3 - | DeploymentDetailResponseProviderGkeGateway3 - | any - | null - | undefined; - routeApi: "ingress"; + resources: Array; }; /** - * Kubernetes route API selected for public endpoints. + * AWS-specific binding specification */ -export type DeploymentDetailResponseRouteUnion2 = - | DeploymentDetailResponseRouteIngress2 - | DeploymentDetailResponseRouteGateway2; - -export type DeploymentDetailResponseExposureCustom = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | DeploymentDetailResponseCertificateTLSSecretRef2 - | DeploymentDetailResponseCertificateManagedAcmImport2 - | DeploymentDetailResponseCertificateAwsAcmArn2 - | DeploymentDetailResponseCertificateManagedTLSSecret2 - | DeploymentDetailResponseCertificateNone2; - /** - * Hostname routed by the Kubernetes public endpoint. - */ - domain: string; - mode: DeploymentDetailResponseModeCustom; - /** - * Kubernetes route API selected for public endpoints. - */ - route: - | DeploymentDetailResponseRouteIngress2 - | DeploymentDetailResponseRouteGateway2; -}; - -export type DeploymentDetailResponseCertificateNone1 = { - mode: "none"; -}; - -export type DeploymentDetailResponseCertificateManagedTLSSecret1 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; -}; - -export type DeploymentDetailResponseCertificateAwsAcmArn1 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; -}; - -export type DeploymentDetailResponseCertificateManagedAcmImport1 = { - mode: "managedAcmImport"; +export type DeploymentDetailResponseExtendAwStack = { /** - * ACM region. Defaults to the deployment region when omitted. + * Optional condition for additional filtering (rare) */ - region?: string | null | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Tags applied to runtime-imported ACM certificates. + * Resource ARNs to bind to */ - tags?: { [k: string]: string } | undefined; + resources: Array; }; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Generic binding configuration for permissions */ -export type DeploymentDetailResponseCertificateTLSSecretRef1 = { +export type DeploymentDetailResponseExtendAwBinding = { /** - * Secret namespace. Defaults to the release namespace when omitted. + * AWS-specific binding specification */ - namespace?: string | null | undefined; + resource?: DeploymentDetailResponseExtendAwResource | undefined; /** - * Secret name. + * AWS-specific binding specification */ - secretName: string; - mode: "tlsSecretRef"; + stack?: DeploymentDetailResponseExtendAwStack | undefined; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * IAM effect. Defaults to Allow. */ -export type DeploymentDetailResponseCertificateUnion1 = - | DeploymentDetailResponseCertificateTLSSecretRef1 - | DeploymentDetailResponseCertificateManagedAcmImport1 - | DeploymentDetailResponseCertificateAwsAcmArn1 - | DeploymentDetailResponseCertificateManagedTLSSecret1 - | DeploymentDetailResponseCertificateNone1; - -export const DeploymentDetailResponseModeGenerated = { - Generated: "generated", -} as const; -export type DeploymentDetailResponseModeGenerated = ClosedEnum< - typeof DeploymentDetailResponseModeGenerated ->; - -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2 = - ClosedEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2 - >; - -export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2; - }; - -export const DeploymentDetailResponseProviderGkeGatewayEnum2 = { - GkeGateway: "gkeGateway", +export const DeploymentDetailResponseExtendEffect = { + Allow: "Allow", + Deny: "Deny", } as const; -export type DeploymentDetailResponseProviderGkeGatewayEnum2 = ClosedEnum< - typeof DeploymentDetailResponseProviderGkeGatewayEnum2 +/** + * IAM effect. Defaults to Allow. + */ +export type DeploymentDetailResponseExtendEffect = ClosedEnum< + typeof DeploymentDetailResponseExtendEffect >; -export type DeploymentDetailResponseProviderGkeGateway2 = { - provider: DeploymentDetailResponseProviderGkeGatewayEnum2; +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponseExtendAwGrant = { /** - * Optional static address name for the Gateway frontend. + * AWS IAM actions (only for AWS) */ - staticAddressName?: string | null | undefined; -}; - -export const DeploymentDetailResponseProviderAwsAlbEnum2 = { - AwsAlb: "awsAlb", -} as const; -export type DeploymentDetailResponseProviderAwsAlbEnum2 = ClosedEnum< - typeof DeploymentDetailResponseProviderAwsAlbEnum2 ->; - -export type DeploymentDetailResponseProviderAwsAlb2 = { + actions?: Array | null | undefined; /** - * Optional ALB IP address type, such as `dualstack`. + * Azure actions (only for Azure) */ - ipAddressType?: string | null | undefined; - provider: DeploymentDetailResponseProviderAwsAlbEnum2; + dataActions?: Array | null | undefined; /** - * Internet-facing or internal ALB scheme. + * GCP permissions that require an exact residual custom role. */ - scheme: string; + permissions?: Array | null | undefined; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Provider predefined roles to bind directly. */ - subnetIds?: Array | undefined; + predefinedRoles?: Array | null | undefined; /** - * ALB target type, usually `ip`. + * GCP residual custom permissions to pair with predefined roles. */ - targetType: string; + residualPermissions?: Array | null | undefined; }; -export type DeploymentDetailResponseProviderUnion2 = - | DeploymentDetailResponseProviderAwsAlb2 - | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2 - | DeploymentDetailResponseProviderGkeGateway2 - | any; - /** - * Shared Gateway API route profile values. + * AWS-specific platform permission configuration */ -export type DeploymentDetailResponseRouteGateway1 = { +export type DeploymentDetailResponseExtendAw = { /** - * Annotations applied to route objects. + * Generic binding configuration for permissions */ - annotations?: { [k: string]: string } | undefined; + binding: DeploymentDetailResponseExtendAwBinding; /** - * Route controller identifier, for example a cloud Gateway controller. + * Short admin-facing description of why this entry exists. */ - controller?: string | null | undefined; + description?: string | null | undefined; /** - * GatewayClass selected for generated Gateways. + * IAM effect. Defaults to Allow. */ - gatewayClassName: string; + effect?: DeploymentDetailResponseExtendEffect | undefined; /** - * Labels applied to route objects. + * Grant permissions for a specific cloud platform */ - labels?: { [k: string]: string } | undefined; + grant: DeploymentDetailResponseExtendAwGrant; /** - * Listener port, usually 443. + * Stable admin-facing label for this permission entry. */ - listenerPort: number; - provider?: - | DeploymentDetailResponseProviderAwsAlb2 - | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2 - | DeploymentDetailResponseProviderGkeGateway2 - | any - | null - | undefined; - routeApi: "gateway"; + label?: string | null | undefined; }; -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1 = - ClosedEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1 - >; - -export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1; - }; - -export const DeploymentDetailResponseProviderGkeGatewayEnum1 = { - GkeGateway: "gkeGateway", -} as const; -export type DeploymentDetailResponseProviderGkeGatewayEnum1 = ClosedEnum< - typeof DeploymentDetailResponseProviderGkeGatewayEnum1 ->; - -export type DeploymentDetailResponseProviderGkeGateway1 = { - provider: DeploymentDetailResponseProviderGkeGatewayEnum1; +/** + * Azure-specific binding specification + */ +export type DeploymentDetailResponseExtendAzureResource = { /** - * Optional static address name for the Gateway frontend. + * Scope (subscription/resource group/resource level) */ - staticAddressName?: string | null | undefined; + scope: string; }; -export const DeploymentDetailResponseProviderAwsAlbEnum1 = { - AwsAlb: "awsAlb", -} as const; -export type DeploymentDetailResponseProviderAwsAlbEnum1 = ClosedEnum< - typeof DeploymentDetailResponseProviderAwsAlbEnum1 ->; - -export type DeploymentDetailResponseProviderAwsAlb1 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: DeploymentDetailResponseProviderAwsAlbEnum1; +/** + * Azure-specific binding specification + */ +export type DeploymentDetailResponseExtendAzureStack = { /** - * Internet-facing or internal ALB scheme. + * Scope (subscription/resource group/resource level) */ - scheme: string; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponseExtendAzureBinding = { /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Azure-specific binding specification */ - subnetIds?: Array | undefined; + resource?: DeploymentDetailResponseExtendAzureResource | undefined; /** - * ALB target type, usually `ip`. + * Azure-specific binding specification */ - targetType: string; + stack?: DeploymentDetailResponseExtendAzureStack | undefined; }; -export type DeploymentDetailResponseProviderUnion1 = - | DeploymentDetailResponseProviderAwsAlb1 - | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1 - | DeploymentDetailResponseProviderGkeGateway1 - | any; - /** - * Shared Ingress route profile values. + * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseRouteIngress1 = { +export type DeploymentDetailResponseExtendAzureGrant = { /** - * Annotations applied to route objects. + * AWS IAM actions (only for AWS) */ - annotations?: { [k: string]: string } | undefined; + actions?: Array | null | undefined; /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. + * Azure actions (only for Azure) */ - controller?: string | null | undefined; + dataActions?: Array | null | undefined; /** - * `spec.ingressClassName` for generated Ingresses. + * GCP permissions that require an exact residual custom role. */ - ingressClassName: string; + permissions?: Array | null | undefined; /** - * Labels applied to route objects. + * Provider predefined roles to bind directly. */ - labels?: { [k: string]: string } | undefined; - provider?: - | DeploymentDetailResponseProviderAwsAlb1 - | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1 - | DeploymentDetailResponseProviderGkeGateway1 - | any - | null - | undefined; - routeApi: "ingress"; + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; }; /** - * Kubernetes route API selected for public endpoints. + * Azure-specific platform permission configuration */ -export type DeploymentDetailResponseRouteUnion1 = - | DeploymentDetailResponseRouteIngress1 - | DeploymentDetailResponseRouteGateway1; - -export type DeploymentDetailResponseExposureGenerated = { +export type DeploymentDetailResponseExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentDetailResponseExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Grant permissions for a specific cloud platform */ - certificate: - | DeploymentDetailResponseCertificateTLSSecretRef1 - | DeploymentDetailResponseCertificateManagedAcmImport1 - | DeploymentDetailResponseCertificateAwsAcmArn1 - | DeploymentDetailResponseCertificateManagedTLSSecret1 - | DeploymentDetailResponseCertificateNone1; - mode: DeploymentDetailResponseModeGenerated; + grant: DeploymentDetailResponseExtendAzureGrant; /** - * Kubernetes route API selected for public endpoints. + * Stable admin-facing label for this permission entry. */ - route: - | DeploymentDetailResponseRouteIngress1 - | DeploymentDetailResponseRouteGateway1; + label?: string | null | undefined; }; -export const DeploymentDetailResponseModeDisabled = { - Disabled: "disabled", -} as const; -export type DeploymentDetailResponseModeDisabled = ClosedEnum< - typeof DeploymentDetailResponseModeDisabled ->; - -export type DeploymentDetailResponseExposureDisabled = { - mode: DeploymentDetailResponseModeDisabled; +/** + * GCP IAM condition + */ +export type DeploymentDetailResponseExtendConditionResource = { + expression: string; + title: string; }; -export type DeploymentDetailResponseExposureUnion = - | DeploymentDetailResponseExposureCustom - | DeploymentDetailResponseExposureGenerated - | DeploymentDetailResponseExposureDisabled +export type DeploymentDetailResponseExtendResourceConditionUnion = + | DeploymentDetailResponseExtendConditionResource | any; /** - * Kubernetes runtime substrate configuration. - * - * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. + * GCP-specific binding specification */ -export type DeploymentDetailResponseKubernetes = { - cluster?: DeploymentDetailResponseCluster | any | null | undefined; - exposure?: - | DeploymentDetailResponseExposureCustom - | DeploymentDetailResponseExposureGenerated - | DeploymentDetailResponseExposureDisabled +export type DeploymentDetailResponseExtendGcpResource = { + condition?: + | DeploymentDetailResponseExtendConditionResource | any | null | undefined; -}; - -export type DeploymentDetailResponseKubernetesUnion = - | DeploymentDetailResponseKubernetes - | any; - -export const DeploymentDetailResponseTypeByoVnetAzure = { - ByoVnetAzure: "byo-vnet-azure", -} as const; -export type DeploymentDetailResponseTypeByoVnetAzure = ClosedEnum< - typeof DeploymentDetailResponseTypeByoVnetAzure ->; - -export type DeploymentDetailResponseNetworkByoVnetAzure = { /** - * Name of the dedicated classic Application Gateway subnet within the VNet. + * Scope (project/resource level) */ - applicationGatewaySubnetName?: string | null | undefined; + scope: string; +}; + +/** + * GCP IAM condition + */ +export type DeploymentDetailResponseExtendConditionStack = { + expression: string; + title: string; +}; + +export type DeploymentDetailResponseExtendStackConditionUnion = + | DeploymentDetailResponseExtendConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type DeploymentDetailResponseExtendGcpStack = { + condition?: + | DeploymentDetailResponseExtendConditionStack + | any + | null + | undefined; /** - * Name of the private subnet within the VNet + * Scope (project/resource level) */ - privateSubnetName: string; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponseExtendGcpBinding = { /** - * Name of the public subnet within the VNet + * GCP-specific binding specification */ - publicSubnetName: string; - type: DeploymentDetailResponseTypeByoVnetAzure; + resource?: DeploymentDetailResponseExtendGcpResource | undefined; /** - * The full resource ID of the existing VNet + * GCP-specific binding specification */ - vnetResourceId: string; + stack?: DeploymentDetailResponseExtendGcpStack | undefined; }; -export const DeploymentDetailResponseTypeByoVpcGcp = { - ByoVpcGcp: "byo-vpc-gcp", -} as const; -export type DeploymentDetailResponseTypeByoVpcGcp = ClosedEnum< - typeof DeploymentDetailResponseTypeByoVpcGcp ->; - -export type DeploymentDetailResponseNetworkByoVpcGcp = { +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponseExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; /** - * The name of the existing VPC network + * GCP permissions that require an exact residual custom role. */ - networkName: string; + permissions?: Array | null | undefined; /** - * The region of the subnet + * Provider predefined roles to bind directly. */ - region: string; + predefinedRoles?: Array | null | undefined; /** - * The name of the subnet to use + * GCP residual custom permissions to pair with predefined roles. */ - subnetName: string; - type: DeploymentDetailResponseTypeByoVpcGcp; + residualPermissions?: Array | null | undefined; }; -export const DeploymentDetailResponseTypeByoVpcAws = { - ByoVpcAws: "byo-vpc-aws", -} as const; -export type DeploymentDetailResponseTypeByoVpcAws = ClosedEnum< - typeof DeploymentDetailResponseTypeByoVpcAws ->; - -export type DeploymentDetailResponseNetworkByoVpcAws = { +/** + * GCP-specific platform permission configuration + */ +export type DeploymentDetailResponseExtendGcp = { /** - * IDs of private subnets + * Generic binding configuration for permissions */ - privateSubnetIds: Array; + binding: DeploymentDetailResponseExtendGcpBinding; /** - * IDs of public subnets (required for public ingress) + * Short admin-facing description of why this entry exists. */ - publicSubnetIds: Array; + description?: string | null | undefined; /** - * Optional security group IDs to use + * Grant permissions for a specific cloud platform */ - securityGroupIds?: Array | undefined; - type: DeploymentDetailResponseTypeByoVpcAws; + grant: DeploymentDetailResponseExtendGcpGrant; /** - * The ID of the existing VPC + * Stable admin-facing label for this permission entry. */ - vpcId: string; + label?: string | null | undefined; }; -export const DeploymentDetailResponseTypeCreate = { - Create: "create", -} as const; -export type DeploymentDetailResponseTypeCreate = ClosedEnum< - typeof DeploymentDetailResponseTypeCreate ->; - -export type DeploymentDetailResponseNetworkCreate = { +/** + * Platform-specific permission configurations + */ +export type DeploymentDetailResponseExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; /** - * Number of availability zones (default: 2). + * Azure permission configurations */ - availabilityZones?: number | undefined; + azure?: Array | null | undefined; /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + * GCP permission configurations */ - cidr?: string | null | undefined; - type: DeploymentDetailResponseTypeCreate; -}; - -export const DeploymentDetailResponseTypeUseDefault = { - UseDefault: "use-default", -} as const; -export type DeploymentDetailResponseTypeUseDefault = ClosedEnum< - typeof DeploymentDetailResponseTypeUseDefault ->; - -export type DeploymentDetailResponseNetworkUseDefault = { - type: DeploymentDetailResponseTypeUseDefault; + gcp?: Array | null | undefined; }; -export type DeploymentDetailResponseNetworkUnion = - | DeploymentDetailResponseNetworkByoVpcAws - | DeploymentDetailResponseNetworkByoVpcGcp - | DeploymentDetailResponseNetworkByoVnetAzure - | DeploymentDetailResponseNetworkUseDefault - | DeploymentDetailResponseNetworkCreate - | any; - /** - * How telemetry (logs, metrics, traces) is handled. - */ -export const DeploymentDetailResponseTelemetry = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How telemetry (logs, metrics, traces) is handled. + * A permission set that can be applied across different cloud platforms */ -export type DeploymentDetailResponseTelemetry = ClosedEnum< - typeof DeploymentDetailResponseTelemetry ->; +export type DeploymentDetailResponseExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: DeploymentDetailResponseExtendPlatforms; +}; /** - * How updates are delivered to the deployment. + * Reference to a permission set - either by name or inline definition */ -export const DeploymentDetailResponseUpdates = { - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; +export type DeploymentDetailResponseExtendUnion = + | DeploymentDetailResponseExtend + | string; + +export type DeploymentDetailResponseManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { [k: string]: Array }; +}; + /** - * How updates are delivered to the deployment. + * Management permissions configuration for stack management access */ -export type DeploymentDetailResponseUpdates = ClosedEnum< - typeof DeploymentDetailResponseUpdates ->; +export type DeploymentDetailResponseManagementUnion = + | DeploymentDetailResponseManagement1 + | DeploymentDetailResponseManagement2 + | DeploymentDetailResponseManagementEnum; /** - * User-provided configuration (network, deployment model, approvals) + * AWS-specific binding specification */ -export type DeploymentDetailResponseStackSettings = { - compute?: DeploymentDetailResponseCompute | any | null | undefined; - /** - * Deployment model: how updates are delivered to the remote environment. - */ - deploymentModel?: DeploymentDetailResponseDeploymentModel | undefined; - domains?: DeploymentDetailResponseDomains | any | null | undefined; +export type DeploymentDetailResponseProfileAwResource = { /** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. + * Optional condition for additional filtering (rare) */ - externalBindings?: - | DeploymentDetailResponseExternalBindings - | null - | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * How heartbeat health checks are handled. + * Resource ARNs to bind to */ - heartbeats?: DeploymentDetailResponseHeartbeats | undefined; - kubernetes?: DeploymentDetailResponseKubernetes | any | null | undefined; - network?: - | DeploymentDetailResponseNetworkByoVpcAws - | DeploymentDetailResponseNetworkByoVpcGcp - | DeploymentDetailResponseNetworkByoVnetAzure - | DeploymentDetailResponseNetworkUseDefault - | DeploymentDetailResponseNetworkCreate - | any - | null - | undefined; + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentDetailResponseProfileAwStack = { /** - * How telemetry (logs, metrics, traces) is handled. + * Optional condition for additional filtering (rare) */ - telemetry?: DeploymentDetailResponseTelemetry | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * How updates are delivered to the deployment. + * Resource ARNs to bind to */ - updates?: DeploymentDetailResponseUpdates | undefined; + resources: Array; }; /** - * Represents the target cloud platform. - */ -export const DeploymentDetailResponseStackStatePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type DeploymentDetailResponseStackStatePlatform = ClosedEnum< - typeof DeploymentDetailResponseStackStatePlatform ->; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Generic binding configuration for permissions */ -export type DeploymentDetailResponseStackStateConfig = { +export type DeploymentDetailResponseProfileAwBinding = { /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * AWS-specific binding specification */ - id: string; + resource?: DeploymentDetailResponseProfileAwResource | undefined; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * AWS-specific binding specification */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + stack?: DeploymentDetailResponseProfileAwStack | undefined; }; /** - * Represents the target cloud platform. + * IAM effect. Defaults to Allow. */ -export const DeploymentDetailResponseControllerPlatformEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", +export const DeploymentDetailResponseProfileEffect = { + Allow: "Allow", + Deny: "Deny", } as const; /** - * Represents the target cloud platform. + * IAM effect. Defaults to Allow. */ -export type DeploymentDetailResponseControllerPlatformEnum = ClosedEnum< - typeof DeploymentDetailResponseControllerPlatformEnum +export type DeploymentDetailResponseProfileEffect = ClosedEnum< + typeof DeploymentDetailResponseProfileEffect >; -export type DeploymentDetailResponseControllerPlatformUnion = - | DeploymentDetailResponseControllerPlatformEnum - | any; - /** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. + * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseStackStateDependency = { - id: string; +export type DeploymentDetailResponseProfileAwGrant = { /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * AWS IAM actions (only for AWS) */ - type: string; -}; - -/** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. - */ -export type DeploymentDetailResponseErrorStackState = { + actions?: Array | null | undefined; /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + * Azure actions (only for Azure) */ - code: string; + dataActions?: Array | null | undefined; /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. + * GCP permissions that require an exact residual custom role. */ - context?: any | null | undefined; + permissions?: Array | null | undefined; /** - * Optional human-facing remediation hint. + * Provider predefined roles to bind directly. */ - hint?: string | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. + * GCP residual custom permissions to pair with predefined roles. */ - httpStatusCode?: number | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type DeploymentDetailResponseProfileAw = { /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. + * Generic binding configuration for permissions */ - internal: boolean; + binding: DeploymentDetailResponseProfileAwBinding; /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. + * Short admin-facing description of why this entry exists. */ - message: string; + description?: string | null | undefined; /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. + * IAM effect. Defaults to Allow. */ - retryable: boolean; + effect?: DeploymentDetailResponseProfileEffect | undefined; /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. + * Grant permissions for a specific cloud platform */ - source?: any | null | undefined; + grant: DeploymentDetailResponseProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; -export type DeploymentDetailResponseErrorUnion = - | DeploymentDetailResponseErrorStackState - | any; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const DeploymentDetailResponseLifecycleStackStateEnum = { - Frozen: "frozen", - Live: "live", -} as const; /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + * Azure-specific binding specification */ -export type DeploymentDetailResponseLifecycleStackStateEnum = ClosedEnum< - typeof DeploymentDetailResponseLifecycleStackStateEnum ->; - -export type DeploymentDetailResponseLifecycleUnion = - | DeploymentDetailResponseLifecycleStackStateEnum - | any; +export type DeploymentDetailResponseProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; /** - * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. + * Azure-specific binding specification */ -export type DeploymentDetailResponseOutputs = { +export type DeploymentDetailResponseProfileAzureStack = { /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Scope (subscription/resource group/resource level) */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + scope: string; }; -export type DeploymentDetailResponseOutputsUnion = - | DeploymentDetailResponseOutputs - | any; - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Generic binding configuration for permissions */ -export type DeploymentDetailResponsePreviousConfig = { +export type DeploymentDetailResponseProfileAzureBinding = { /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * Azure-specific binding specification */ - id: string; + resource?: DeploymentDetailResponseProfileAzureResource | undefined; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Azure-specific binding specification */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + stack?: DeploymentDetailResponseProfileAzureStack | undefined; }; -export type DeploymentDetailResponsePreviousConfigUnion = - | DeploymentDetailResponsePreviousConfig - | any; - -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export const DeploymentDetailResponseStackStateStatus = { - Pending: "pending", - Provisioning: "provisioning", - ProvisionFailed: "provision-failed", - Running: "running", - Updating: "updating", - UpdateFailed: "update-failed", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - Deleted: "deleted", - RefreshFailed: "refresh-failed", -} as const; -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export type DeploymentDetailResponseStackStateStatus = ClosedEnum< - typeof DeploymentDetailResponseStackStateStatus ->; - /** - * Represents the state of a single resource within the stack for a specific platform. + * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseStackStateResources = { - /** - * The platform-specific resource controller that manages this resource's lifecycle. - * - * @remarks - * This is None when the resource status is Pending. - * Stored as JSON to make the struct serializable and movable to alien-core. - */ - internal?: any | null | undefined; - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: DeploymentDetailResponseStackStateConfig; - controllerPlatform?: - | DeploymentDetailResponseControllerPlatformEnum - | any - | null - | undefined; - /** - * Complete list of dependencies for this resource, including infrastructure dependencies. - * - * @remarks - * This preserves the full dependency information from the stack definition. - */ - dependencies?: - | Array - | undefined; - error?: DeploymentDetailResponseErrorStackState | any | null | undefined; +export type DeploymentDetailResponseProfileAzureGrant = { /** - * Stores the controller state that failed, used for manual retry operations. - * - * @remarks - * This allows resuming from the exact point where the failure occurred. - * Stored as JSON to make the struct serializable and movable to alien-core. + * AWS IAM actions (only for AWS) */ - lastFailedState?: any | null | undefined; - lifecycle?: - | DeploymentDetailResponseLifecycleStackStateEnum - | any - | null - | undefined; - outputs?: DeploymentDetailResponseOutputs | any | null | undefined; - previousConfig?: - | DeploymentDetailResponsePreviousConfig - | any - | null - | undefined; + actions?: Array | null | undefined; /** - * Binding parameters for remote access. - * - * @remarks - * Only populated when the resource has `remote_access: true` in its ResourceEntry. - * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). - * Populated by controllers during provisioning using get_binding_params(). + * Azure actions (only for Azure) */ - remoteBindingParams?: any | null | undefined; + dataActions?: Array | null | undefined; /** - * Tracks consecutive retry attempts for the current state transition. + * GCP permissions that require an exact residual custom role. */ - retryAttempt?: number | undefined; + permissions?: Array | null | undefined; /** - * Represents the high-level status of a resource during its lifecycle. + * Provider predefined roles to bind directly. */ - status: DeploymentDetailResponseStackStateStatus; + predefinedRoles?: Array | null | undefined; /** - * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + * GCP residual custom permissions to pair with predefined roles. */ - type: string; + residualPermissions?: Array | null | undefined; }; /** - * State of infrastructure components managed by this deployment + * Azure-specific platform permission configuration */ -export type DeploymentDetailResponseStackState = { +export type DeploymentDetailResponseProfileAzure = { /** - * Represents the target cloud platform. + * Generic binding configuration for permissions */ - platform: DeploymentDetailResponseStackStatePlatform; + binding: DeploymentDetailResponseProfileAzureBinding; /** - * A prefix used for resource naming to ensure uniqueness across deployments. + * Short admin-facing description of why this entry exists. */ - resourcePrefix: string; + description?: string | null | undefined; /** - * The state of individual resources, keyed by resource ID. + * Grant permissions for a specific cloud platform */ - resources: { [k: string]: DeploymentDetailResponseStackStateResources }; -}; - -export const DeploymentDetailResponseTypeStringList = { - StringList: "stringList", -} as const; -export type DeploymentDetailResponseTypeStringList = ClosedEnum< - typeof DeploymentDetailResponseTypeStringList ->; - -export type DeploymentDetailResponseDefaultStringList = { - type: DeploymentDetailResponseTypeStringList; + grant: DeploymentDetailResponseProfileAzureGrant; /** - * String list default. + * Stable admin-facing label for this permission entry. */ - value: Array; + label?: string | null | undefined; }; -export const DeploymentDetailResponseTypeBoolean = { - Boolean: "boolean", -} as const; -export type DeploymentDetailResponseTypeBoolean = ClosedEnum< - typeof DeploymentDetailResponseTypeBoolean ->; - -export type DeploymentDetailResponseDefaultBoolean = { - type: DeploymentDetailResponseTypeBoolean; - /** - * Boolean default. - */ - value: boolean; +/** + * GCP IAM condition + */ +export type DeploymentDetailResponseProfileConditionResource = { + expression: string; + title: string; }; -export const DeploymentDetailResponseTypeNumber = { - Number: "number", -} as const; -export type DeploymentDetailResponseTypeNumber = ClosedEnum< - typeof DeploymentDetailResponseTypeNumber ->; +export type DeploymentDetailResponseProfileResourceConditionUnion = + | DeploymentDetailResponseProfileConditionResource + | any; -export type DeploymentDetailResponseDefaultNumber = { - type: DeploymentDetailResponseTypeNumber; +/** + * GCP-specific binding specification + */ +export type DeploymentDetailResponseProfileGcpResource = { + condition?: + | DeploymentDetailResponseProfileConditionResource + | any + | null + | undefined; /** - * Number default. + * Scope (project/resource level) */ - value: string; + scope: string; }; -export const DeploymentDetailResponseTypeString = { - String: "string", -} as const; -export type DeploymentDetailResponseTypeString = ClosedEnum< - typeof DeploymentDetailResponseTypeString ->; - -export type DeploymentDetailResponseDefaultString = { - type: DeploymentDetailResponseTypeString; - /** - * String default. - */ - value: string; +/** + * GCP IAM condition + */ +export type DeploymentDetailResponseProfileConditionStack = { + expression: string; + title: string; }; -export type DeploymentDetailResponseDefaultUnion = - | DeploymentDetailResponseDefaultString - | DeploymentDetailResponseDefaultNumber - | DeploymentDetailResponseDefaultBoolean - | DeploymentDetailResponseDefaultStringList +export type DeploymentDetailResponseProfileStackConditionUnion = + | DeploymentDetailResponseProfileConditionStack | any; /** - * Environment variable handling for a stack input mapping. - */ -export const DeploymentDetailResponseTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. + * GCP-specific binding specification */ -export type DeploymentDetailResponseTypeEnvEnum = ClosedEnum< - typeof DeploymentDetailResponseTypeEnvEnum ->; - -export type DeploymentDetailResponseTypeUnion = - | DeploymentDetailResponseTypeEnvEnum - | any; +export type DeploymentDetailResponseProfileGcpStack = { + condition?: + | DeploymentDetailResponseProfileConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; /** - * How a resolved stack input is injected into runtime environment variables. + * Generic binding configuration for permissions */ -export type DeploymentDetailResponseEnv = { +export type DeploymentDetailResponseProfileGcpBinding = { /** - * Environment variable name. + * GCP-specific binding specification */ - name: string; + resource?: DeploymentDetailResponseProfileGcpResource | undefined; /** - * Target resource IDs or patterns. None means every env-capable resource. + * GCP-specific binding specification */ - targetResources?: Array | null | undefined; - type?: DeploymentDetailResponseTypeEnvEnum | any | null | undefined; + stack?: DeploymentDetailResponseProfileGcpStack | undefined; }; /** - * Primitive stack input kind. - */ -export const DeploymentDetailResponseKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type DeploymentDetailResponseKind = ClosedEnum< - typeof DeploymentDetailResponseKind ->; - -/** - * Represents the target cloud platform. - */ -export const DeploymentDetailResponsePreparedStackPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type DeploymentDetailResponsePreparedStackPlatform = ClosedEnum< - typeof DeploymentDetailResponsePreparedStackPlatform ->; - -/** - * Who can provide a stack input value. - */ -export const DeploymentDetailResponseProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type DeploymentDetailResponseProvidedBy = ClosedEnum< - typeof DeploymentDetailResponseProvidedBy ->; - -/** - * Portable stack input validation constraints. + * Grant permissions for a specific cloud platform */ -export type DeploymentDetailResponseValidation = { +export type DeploymentDetailResponseProfileGcpGrant = { /** - * Semantic format hint such as url. + * AWS IAM actions (only for AWS) */ - format?: string | null | undefined; + actions?: Array | null | undefined; /** - * Maximum number. + * Azure actions (only for Azure) */ - max?: string | null | undefined; + dataActions?: Array | null | undefined; /** - * Maximum string-list items. + * GCP permissions that require an exact residual custom role. */ - maxItems?: number | null | undefined; + permissions?: Array | null | undefined; /** - * Maximum string length. + * Provider predefined roles to bind directly. */ - maxLength?: number | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Minimum number. + * GCP residual custom permissions to pair with predefined roles. */ - min?: string | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type DeploymentDetailResponseProfileGcp = { /** - * Minimum string-list items. + * Generic binding configuration for permissions */ - minItems?: number | null | undefined; + binding: DeploymentDetailResponseProfileGcpBinding; /** - * Minimum string length. + * Short admin-facing description of why this entry exists. */ - minLength?: number | null | undefined; + description?: string | null | undefined; /** - * Portable whole-value regex pattern. + * Grant permissions for a specific cloud platform */ - pattern?: string | null | undefined; + grant: DeploymentDetailResponseProfileGcpGrant; /** - * Allowed string enum values. + * Stable admin-facing label for this permission entry. */ - values?: Array | null | undefined; + label?: string | null | undefined; }; -export type DeploymentDetailResponseValidationUnion = - | DeploymentDetailResponseValidation - | any; - /** - * Stack input definition serialized into a release stack. + * Platform-specific permission configurations */ -export type DeploymentDetailResponseInput = { - default?: - | DeploymentDetailResponseDefaultString - | DeploymentDetailResponseDefaultNumber - | DeploymentDetailResponseDefaultBoolean - | DeploymentDetailResponseDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; - /** - * Stable input ID used by CLI/API calls. - */ - id: string; +export type DeploymentDetailResponseProfilePlatforms = { /** - * Primitive stack input kind. + * AWS permission configurations */ - kind: DeploymentDetailResponseKind; + aws?: Array | null | undefined; /** - * Human-facing field label. + * Azure permission configurations */ - label: string; + azure?: Array | null | undefined; /** - * Example placeholder shown in UI. + * GCP permission configurations */ - placeholder?: string | null | undefined; + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type DeploymentDetailResponseProfile = { /** - * Platforms where this input applies. + * Human-readable description of what this permission set allows */ - platforms?: - | Array - | null - | undefined; + description: string; /** - * Who can provide this value. + * Unique identifier for the permission set (e.g., "storage/data-read") */ - providedBy: Array; + id: string; /** - * Whether a resolved value is required before deployment can proceed. + * Platform-specific permission configurations */ - required: boolean; - validation?: DeploymentDetailResponseValidation | any | null | undefined; + platforms: DeploymentDetailResponseProfilePlatforms; }; -export const DeploymentDetailResponseManagementEnum = { - Auto: "auto", -} as const; -export type DeploymentDetailResponseManagementEnum = ClosedEnum< - typeof DeploymentDetailResponseManagementEnum ->; +/** + * Reference to a permission set - either by name or inline definition + */ +export type DeploymentDetailResponseProfileUnion = + | DeploymentDetailResponseProfile + | string; /** - * AWS-specific binding specification + * Combined permissions configuration that contains both profiles and management */ -export type DeploymentDetailResponseOverrideAwResource = { +export type DeploymentDetailResponsePermissions = { /** - * Optional condition for additional filtering (rare) + * Management permissions configuration for stack management access */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + management?: + | DeploymentDetailResponseManagement1 + | DeploymentDetailResponseManagement2 + | DeploymentDetailResponseManagementEnum + | undefined; /** - * Resource ARNs to bind to + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration */ - resources: Array; + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; }; /** - * AWS-specific binding specification + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type DeploymentDetailResponseOverrideAwStack = { +export type DeploymentDetailResponsePreparedStackConfig = { /** - * Optional condition for additional filtering (rare) + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + id: string; /** - * Resource ARNs to bind to + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - resources: Array; + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; }; /** - * Generic binding configuration for permissions + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. */ -export type DeploymentDetailResponseOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: DeploymentDetailResponseOverrideAwResource | undefined; +export type DeploymentDetailResponsePreparedStackDependency = { + id: string; /** - * AWS-specific binding specification + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - stack?: DeploymentDetailResponseOverrideAwStack | undefined; + type: string; }; /** - * IAM effect. Defaults to Allow. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const DeploymentDetailResponseOverrideEffect = { - Allow: "Allow", - Deny: "Deny", +export const DeploymentDetailResponsePreparedStackLifecycle = { + Frozen: "frozen", + Live: "live", } as const; /** - * IAM effect. Defaults to Allow. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type DeploymentDetailResponseOverrideEffect = ClosedEnum< - typeof DeploymentDetailResponseOverrideEffect +export type DeploymentDetailResponsePreparedStackLifecycle = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackLifecycle >; -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentDetailResponseOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; +export type DeploymentDetailResponsePreparedStackResources = { /** - * Azure actions (only for Azure) + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - dataActions?: Array | null | undefined; + config: DeploymentDetailResponsePreparedStackConfig; /** - * GCP permissions that require an exact residual custom role. + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list */ - permissions?: Array | null | undefined; + dependencies: Array; /** - * Provider predefined roles to bind directly. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - predefinedRoles?: Array | null | undefined; + lifecycle: DeploymentDetailResponsePreparedStackLifecycle; /** - * GCP residual custom permissions to pair with predefined roles. + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). */ - residualPermissions?: Array | null | undefined; + remoteAccess?: boolean | undefined; }; /** - * AWS-specific platform permission configuration + * Represents the target cloud platform. + */ +export const DeploymentDetailResponseSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type DeploymentDetailResponseSupportedPlatform = ClosedEnum< + typeof DeploymentDetailResponseSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. */ -export type DeploymentDetailResponseOverrideAw = { +export type DeploymentDetailResponsePreparedStack = { /** - * Generic binding configuration for permissions + * Unique identifier for the stack */ - binding: DeploymentDetailResponseOverrideAwBinding; + id: string; /** - * Short admin-facing description of why this entry exists. + * Input definitions required before setup or deployment can proceed. */ - description?: string | null | undefined; + inputs?: Array | undefined; /** - * IAM effect. Defaults to Allow. + * Combined permissions configuration that contains both profiles and management */ - effect?: DeploymentDetailResponseOverrideEffect | undefined; + permissions?: DeploymentDetailResponsePermissions | undefined; /** - * Grant permissions for a specific cloud platform + * Map of resource IDs to their configurations and lifecycle settings */ - grant: DeploymentDetailResponseOverrideAwGrant; + resources: { [k: string]: DeploymentDetailResponsePreparedStackResources }; /** - * Stable admin-facing label for this permission entry. + * Which platforms this stack supports. When None, all platforms are supported. */ - label?: string | null | undefined; + supportedPlatforms?: + | Array + | null + | undefined; }; +export type DeploymentDetailResponsePreparedStackUnion = + | DeploymentDetailResponsePreparedStack + | any; + /** - * Azure-specific binding specification + * Runtime metadata for deployment state persistence */ -export type DeploymentDetailResponseOverrideAzureResource = { +export type DeploymentDetailResponseRuntimeMetadata = { /** - * Scope (subscription/resource group/resource level) + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type DeploymentDetailResponseOverrideAzureStack = { + lastSyncedEnvVarsHash?: string | null | undefined; + preparedStack?: + | DeploymentDetailResponsePreparedStack + | any + | null + | undefined; /** - * Scope (subscription/resource group/resource level) + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. */ - scope: string; + registryAccessGranted?: boolean | undefined; }; /** - * Generic binding configuration for permissions + * Setup source that imported this deployment */ -export type DeploymentDetailResponseOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: DeploymentDetailResponseOverrideAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: DeploymentDetailResponseOverrideAzureStack | undefined; -}; +export const DeploymentDetailResponseImportSource = { + Cloudformation: "cloudformation", + Terraform: "terraform", + Helm: "helm", +} as const; +/** + * Setup source that imported this deployment + */ +export type DeploymentDetailResponseImportSource = ClosedEnum< + typeof DeploymentDetailResponseImportSource +>; /** - * Grant permissions for a specific cloud platform + * Setup method that created the deployment record and owns setup-time resources. */ -export type DeploymentDetailResponseOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type DeploymentDetailResponseOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentDetailResponseOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentDetailResponseOverrideAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type DeploymentDetailResponseOverrideConditionResource = { - expression: string; - title: string; -}; - -export type DeploymentDetailResponseOverrideResourceConditionUnion = - | DeploymentDetailResponseOverrideConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentDetailResponseOverrideGcpResource = { - condition?: - | DeploymentDetailResponseOverrideConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type DeploymentDetailResponseOverrideConditionStack = { - expression: string; - title: string; -}; - -export type DeploymentDetailResponseOverrideStackConditionUnion = - | DeploymentDetailResponseOverrideConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentDetailResponseOverrideGcpStack = { - condition?: - | DeploymentDetailResponseOverrideConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentDetailResponseOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: DeploymentDetailResponseOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: DeploymentDetailResponseOverrideGcpStack | undefined; -}; - +export const DeploymentDetailResponseSetupMethod = { + Cloudformation: "cloudformation", + GoogleOauth: "google-oauth", + Terraform: "terraform", + Helm: "helm", + Cli: "cli", + Manual: "manual", +} as const; /** - * Grant permissions for a specific cloud platform + * Setup method that created the deployment record and owns setup-time resources. */ -export type DeploymentDetailResponseOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type DeploymentDetailResponseSetupMethod = ClosedEnum< + typeof DeploymentDetailResponseSetupMethod +>; /** - * GCP-specific platform permission configuration + * Latest error information if the deployment is in a failed state */ -export type DeploymentDetailResponseOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentDetailResponseOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentDetailResponseOverrideGcpGrant; +export type DeploymentDetailResponseError = { /** - * Stable admin-facing label for this permission entry. + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type DeploymentDetailResponseOverridePlatforms = { + code: string; /** - * AWS permission configurations + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. */ - aws?: Array | null | undefined; + context?: any | null | undefined; /** - * Azure permission configurations + * Optional human-facing remediation hint. */ - azure?: Array | null | undefined; + hint?: string | null | undefined; /** - * GCP permission configurations + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type DeploymentDetailResponseOverride = { + httpStatusCode?: number | null | undefined; /** - * Human-readable description of what this permission set allows + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. */ - description: string; + internal: boolean; /** - * Unique identifier for the permission set (e.g., "storage/data-read") + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. */ - id: string; + message: string; /** - * Platform-specific permission configurations + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. */ - platforms: DeploymentDetailResponseOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type DeploymentDetailResponseOverrideUnion = - | DeploymentDetailResponseOverride - | string; - -export type DeploymentDetailResponseManagement2 = { + retryable: boolean; /** - * Permission profile that maps resources to permission sets + * The underlying error that caused this error, creating an error chain. * * @remarks - * Key can be "*" for all resources or resource name for specific resource + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. */ - override: { [k: string]: Array }; -}; - -/** - * AWS-specific binding specification - */ -export type DeploymentDetailResponseExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type DeploymentDetailResponseExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentDetailResponseExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: DeploymentDetailResponseExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: DeploymentDetailResponseExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const DeploymentDetailResponseExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type DeploymentDetailResponseExtendEffect = ClosedEnum< - typeof DeploymentDetailResponseExtendEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentDetailResponseExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type DeploymentDetailResponseExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentDetailResponseExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: DeploymentDetailResponseExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentDetailResponseExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type DeploymentDetailResponseExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type DeploymentDetailResponseExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentDetailResponseExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: DeploymentDetailResponseExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: DeploymentDetailResponseExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentDetailResponseExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type DeploymentDetailResponseExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentDetailResponseExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentDetailResponseExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type DeploymentDetailResponseExtendConditionResource = { - expression: string; - title: string; -}; - -export type DeploymentDetailResponseExtendResourceConditionUnion = - | DeploymentDetailResponseExtendConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentDetailResponseExtendGcpResource = { - condition?: - | DeploymentDetailResponseExtendConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type DeploymentDetailResponseExtendConditionStack = { - expression: string; - title: string; -}; - -export type DeploymentDetailResponseExtendStackConditionUnion = - | DeploymentDetailResponseExtendConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentDetailResponseExtendGcpStack = { - condition?: - | DeploymentDetailResponseExtendConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentDetailResponseExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: DeploymentDetailResponseExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: DeploymentDetailResponseExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentDetailResponseExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type DeploymentDetailResponseExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentDetailResponseExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentDetailResponseExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type DeploymentDetailResponseExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type DeploymentDetailResponseExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: DeploymentDetailResponseExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type DeploymentDetailResponseExtendUnion = - | DeploymentDetailResponseExtend - | string; - -export type DeploymentDetailResponseManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { [k: string]: Array }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type DeploymentDetailResponseManagementUnion = - | DeploymentDetailResponseManagement1 - | DeploymentDetailResponseManagement2 - | DeploymentDetailResponseManagementEnum; - -/** - * AWS-specific binding specification - */ -export type DeploymentDetailResponseProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type DeploymentDetailResponseProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentDetailResponseProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: DeploymentDetailResponseProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: DeploymentDetailResponseProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const DeploymentDetailResponseProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type DeploymentDetailResponseProfileEffect = ClosedEnum< - typeof DeploymentDetailResponseProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentDetailResponseProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type DeploymentDetailResponseProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentDetailResponseProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: DeploymentDetailResponseProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentDetailResponseProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type DeploymentDetailResponseProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type DeploymentDetailResponseProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentDetailResponseProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: DeploymentDetailResponseProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: DeploymentDetailResponseProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentDetailResponseProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type DeploymentDetailResponseProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentDetailResponseProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentDetailResponseProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type DeploymentDetailResponseProfileConditionResource = { - expression: string; - title: string; -}; - -export type DeploymentDetailResponseProfileResourceConditionUnion = - | DeploymentDetailResponseProfileConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentDetailResponseProfileGcpResource = { - condition?: - | DeploymentDetailResponseProfileConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type DeploymentDetailResponseProfileConditionStack = { - expression: string; - title: string; -}; - -export type DeploymentDetailResponseProfileStackConditionUnion = - | DeploymentDetailResponseProfileConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type DeploymentDetailResponseProfileGcpStack = { - condition?: - | DeploymentDetailResponseProfileConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type DeploymentDetailResponseProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: DeploymentDetailResponseProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: DeploymentDetailResponseProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type DeploymentDetailResponseProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type DeploymentDetailResponseProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: DeploymentDetailResponseProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: DeploymentDetailResponseProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type DeploymentDetailResponseProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type DeploymentDetailResponseProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: DeploymentDetailResponseProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type DeploymentDetailResponseProfileUnion = - | DeploymentDetailResponseProfile - | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type DeploymentDetailResponsePermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | DeploymentDetailResponseManagement1 - | DeploymentDetailResponseManagement2 - | DeploymentDetailResponseManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type DeploymentDetailResponsePreparedStackConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type DeploymentDetailResponsePreparedStackDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const DeploymentDetailResponsePreparedStackLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type DeploymentDetailResponsePreparedStackLifecycle = ClosedEnum< - typeof DeploymentDetailResponsePreparedStackLifecycle ->; - -export type DeploymentDetailResponsePreparedStackResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: DeploymentDetailResponsePreparedStackConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: DeploymentDetailResponsePreparedStackLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const DeploymentDetailResponseSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type DeploymentDetailResponseSupportedPlatform = ClosedEnum< - typeof DeploymentDetailResponseSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type DeploymentDetailResponsePreparedStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: DeploymentDetailResponsePermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: DeploymentDetailResponsePreparedStackResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -export type DeploymentDetailResponsePreparedStackUnion = - | DeploymentDetailResponsePreparedStack - | any; - -/** - * Runtime metadata for deployment state persistence - */ -export type DeploymentDetailResponseRuntimeMetadata = { - /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment - */ - lastSyncedEnvVarsHash?: string | null | undefined; - preparedStack?: - | DeploymentDetailResponsePreparedStack - | any - | null - | undefined; - /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. - */ - registryAccessGranted?: boolean | undefined; -}; - -/** - * Setup source that imported this deployment - */ -export const DeploymentDetailResponseImportSource = { - Cloudformation: "cloudformation", - Terraform: "terraform", - Helm: "helm", -} as const; -/** - * Setup source that imported this deployment - */ -export type DeploymentDetailResponseImportSource = ClosedEnum< - typeof DeploymentDetailResponseImportSource ->; - -/** - * Setup method that created the deployment record and owns setup-time resources. - */ -export const DeploymentDetailResponseSetupMethod = { - Cloudformation: "cloudformation", - GoogleOauth: "google-oauth", - Terraform: "terraform", - Helm: "helm", - Cli: "cli", - Manual: "manual", -} as const; -/** - * Setup method that created the deployment record and owns setup-time resources. - */ -export type DeploymentDetailResponseSetupMethod = ClosedEnum< - typeof DeploymentDetailResponseSetupMethod ->; - -/** - * Latest error information if the deployment is in a failed state - */ -export type DeploymentDetailResponseError = { - /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" - */ - code: string; - /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. - */ - context?: any | null | undefined; - /** - * Optional human-facing remediation hint. - */ - hint?: string | null | undefined; - /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. - */ - httpStatusCode?: number | null | undefined; - /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. - */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable: boolean; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; -}; - -/** - * Snapshot of target environment variables for the deployment - */ -export type DeploymentDetailResponseTargetEnvironmentVariables = { - /** - * Environment variables in the snapshot - */ - variables: Array; - /** - * Deterministic hash of all variables for change detection - */ - hash: string; - /** - * ISO 8601 timestamp when snapshot was created - */ - createdAt: Date; -}; - -/** - * Snapshot of current environment variables for the deployment - */ -export type DeploymentDetailResponseCurrentEnvironmentVariables = { - /** - * Environment variables in the snapshot - */ - variables: Array; - /** - * Deterministic hash of all variables for change detection - */ - hash: string; - /** - * ISO 8601 timestamp when snapshot was created - */ - createdAt: Date; -}; - -export type DeploymentDetailResponse = { - /** - * Unique identifier for the deployment. - */ - id: string; - /** - * Deployment name. - */ - name: string; - /** - * Public subdomain for auto-generated domains - */ - publicSubdomain?: string | null | undefined; - /** - * Deployment status in the deployment lifecycle - */ - status: DeploymentDetailResponseStatus; - /** - * Unique identifier for the project. - */ - projectId: string; - /** - * Target platform for the deployment - */ - platform: DeploymentDetailResponsePlatform; - /** - * Underlying cloud platform for Kubernetes deployments. - */ - basePlatform?: DeploymentDetailResponseBasePlatform | null | undefined; - /** - * Cloud region or location for the deployment. - */ - region?: string | null | undefined; - /** - * DeploymentState protocol version owned by the runtime/manager - */ - deploymentProtocolVersion: number; - /** - * ID of deployment group this deployment belongs to - */ - deploymentGroupId: string; - /** - * Cloud environment information - */ - environmentInfo?: - | DeploymentDetailResponseEnvironmentInfoGcp - | DeploymentDetailResponseEnvironmentInfoAzure - | DeploymentDetailResponseEnvironmentInfoLocal - | DeploymentDetailResponseEnvironmentInfoAws - | DeploymentDetailResponseEnvironmentInfoTest - | any - | null - | undefined; - /** - * User-provided configuration (network, deployment model, approvals) - */ - stackSettings: DeploymentDetailResponseStackSettings; - /** - * State of infrastructure components managed by this deployment - */ - stackState?: DeploymentDetailResponseStackState | null | undefined; - /** - * Runtime metadata for deployment state persistence - */ - runtimeMetadata?: DeploymentDetailResponseRuntimeMetadata | null | undefined; - /** - * ID of the currently deployed release (actual state) - */ - currentReleaseId?: string | null | undefined; - /** - * ID of the desired release for deployment/update (desired state) - */ - desiredReleaseId?: string | null | undefined; - /** - * ID of the pinned release - */ - pinnedReleaseId?: string | null | undefined; - /** - * Setup source that imported this deployment - */ - importSource?: DeploymentDetailResponseImportSource | null | undefined; - /** - * Setup method that created the deployment record and owns setup-time resources. - */ - setupMethod?: DeploymentDetailResponseSetupMethod | null | undefined; - /** - * Setup method metadata needed to guide privileged teardown. - */ - setupMetadata?: { [k: string]: any | null } | null | undefined; - /** - * Imported setup target for compatibility checks - */ - setupTarget?: string | null | undefined; - /** - * Imported setup compatibility fingerprint - */ - setupFingerprint?: string | null | undefined; - /** - * Imported setup fingerprint algorithm version - */ - setupFingerprintVersion?: number | null | undefined; - /** - * Whether a retry has been requested for a failed deployment - */ - retryRequested: boolean; - /** - * Timestamp of the last received heartbeat from the deployment - */ - lastHeartbeatAt?: Date | null | undefined; - /** - * Latest error information if the deployment is in a failed state - */ - error?: DeploymentDetailResponseError | null | undefined; - /** - * Configuration of environment variables for the deployment - */ - environmentVariables?: Array | null | undefined; - /** - * Snapshot of target environment variables for the deployment - */ - targetEnvironmentVariables?: - | DeploymentDetailResponseTargetEnvironmentVariables - | null - | undefined; - /** - * Snapshot of current environment variables for the deployment - */ - currentEnvironmentVariables?: - | DeploymentDetailResponseCurrentEnvironmentVariables - | null - | undefined; - createdAt: Date; - updatedAt: Date; - managerId: string; - /** - * Unique identifier for the workspace. - */ - workspaceId: string; - release?: DeploymentReleaseInfo | null | undefined; - deploymentGroup?: DeploymentGroupInfo | undefined; - project?: DeploymentProjectInfo | undefined; -}; - -/** @internal */ -export const DeploymentDetailResponseStatus$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseStatus -> = z.enum(DeploymentDetailResponseStatus); - -/** @internal */ -export const DeploymentDetailResponsePlatform$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatform -> = z.enum(DeploymentDetailResponsePlatform); - -/** @internal */ -export const DeploymentDetailResponseBasePlatform$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseBasePlatform -> = z.enum(DeploymentDetailResponseBasePlatform); - -/** @internal */ -export const DeploymentDetailResponsePlatformTest$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatformTest -> = z.enum(DeploymentDetailResponsePlatformTest); - -/** @internal */ -export const DeploymentDetailResponseEnvironmentInfoTest$inboundSchema: - z.ZodType = z.object({ - testId: z.string(), - platform: DeploymentDetailResponsePlatformTest$inboundSchema, - }); - -export function deploymentDetailResponseEnvironmentInfoTestFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoTest, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseEnvironmentInfoTest$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoTest' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponsePlatformLocal$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatformLocal -> = z.enum(DeploymentDetailResponsePlatformLocal); - -/** @internal */ -export const DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema: - z.ZodType = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: DeploymentDetailResponsePlatformLocal$inboundSchema, - }); - -export function deploymentDetailResponseEnvironmentInfoLocalFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoLocal, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoLocal' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponsePlatformAzure$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatformAzure -> = z.enum(DeploymentDetailResponsePlatformAzure); - -/** @internal */ -export const DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema: - z.ZodType = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: DeploymentDetailResponsePlatformAzure$inboundSchema, - }); - -export function deploymentDetailResponseEnvironmentInfoAzureFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoAzure' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponsePlatformGcp$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatformGcp -> = z.enum(DeploymentDetailResponsePlatformGcp); - -/** @internal */ -export const DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema: - z.ZodType = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: DeploymentDetailResponsePlatformGcp$inboundSchema, - }); - -export function deploymentDetailResponseEnvironmentInfoGcpFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoGcp' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponsePlatformAws$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponsePlatformAws -> = z.enum(DeploymentDetailResponsePlatformAws); - -/** @internal */ -export const DeploymentDetailResponseEnvironmentInfoAws$inboundSchema: - z.ZodType = z.object({ - accountId: z.string(), - region: z.string(), - platform: DeploymentDetailResponsePlatformAws$inboundSchema, - }); - -export function deploymentDetailResponseEnvironmentInfoAwsFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoAws, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseEnvironmentInfoAws$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoAws' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseEnvironmentInfoUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoAws$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoTest$inboundSchema), - z.any(), - ]); - -export function deploymentDetailResponseEnvironmentInfoUnionFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseEnvironmentInfoUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseEnvironmentInfoUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseEnvironmentInfoUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponsePoolsAutoscale$inboundSchema: z.ZodType< - DeploymentDetailResponsePoolsAutoscale, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); - -export function deploymentDetailResponsePoolsAutoscaleFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponsePoolsAutoscale' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponsePoolsFixed$inboundSchema: z.ZodType< - DeploymentDetailResponsePoolsFixed, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); - -export function deploymentDetailResponsePoolsFixedFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponsePoolsFixed' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponsePoolsUnion$inboundSchema: z.ZodType< - DeploymentDetailResponsePoolsUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponsePoolsFixed$inboundSchema), - z.lazy(() => DeploymentDetailResponsePoolsAutoscale$inboundSchema), -]); - -export function deploymentDetailResponsePoolsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponsePoolsUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCompute$inboundSchema: z.ZodType< - DeploymentDetailResponseCompute, - unknown -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => DeploymentDetailResponsePoolsFixed$inboundSchema), - z.lazy(() => DeploymentDetailResponsePoolsAutoscale$inboundSchema), - ]), - ).optional(), -}); - -export function deploymentDetailResponseComputeFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseCompute$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseCompute' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseComputeUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseComputeUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseCompute$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseComputeUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseComputeUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseDeploymentModel$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseDeploymentModel -> = z.enum(DeploymentDetailResponseDeploymentModel); - -/** @internal */ -export const DeploymentDetailResponseAws$inboundSchema: z.ZodType< - DeploymentDetailResponseAws, - unknown -> = z.object({ - certificateArn: z.string(), -}); - -export function deploymentDetailResponseAwsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseAws' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseAwsUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseAwsUnion, - unknown -> = z.union([z.lazy(() => DeploymentDetailResponseAws$inboundSchema), z.any()]); - -export function deploymentDetailResponseAwsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseAwsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseAwsUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseAzureStackSettings$inboundSchema: - z.ZodType = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), - }); - -export function deploymentDetailResponseAzureStackSettingsFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseAzureStackSettings, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseAzureStackSettings$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseAzureStackSettings' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseAzureUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseAzureUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseAzureStackSettings$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseAzureUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseAzureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseAzureUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseGcpStackSettings$inboundSchema: z.ZodType< - DeploymentDetailResponseGcpStackSettings, - unknown -> = z.object({ - certificateName: z.string(), -}); - -export function deploymentDetailResponseGcpStackSettingsFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseGcpStackSettings, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseGcpStackSettings$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseGcpStackSettings' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseGcpUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseGcpUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseGcpStackSettings$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseGcpUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseGcpUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseGcpUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTlsSecretRef$inboundSchema: z.ZodType< - DeploymentDetailResponseTlsSecretRef, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), -}); - -export function deploymentDetailResponseTlsSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseTlsSecretRef' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseDomainsKubernetes$inboundSchema: z.ZodType< - DeploymentDetailResponseDomainsKubernetes, - unknown -> = z.object({ - tlsSecretRef: z.lazy(() => - DeploymentDetailResponseTlsSecretRef$inboundSchema - ), -}); - -export function deploymentDetailResponseDomainsKubernetesFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseDomainsKubernetes, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseDomainsKubernetes$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseDomainsKubernetes' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseDomainsKubernetesUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => DeploymentDetailResponseDomainsKubernetes$inboundSchema), - z.any(), - ]); - -export function deploymentDetailResponseDomainsKubernetesUnionFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseDomainsKubernetesUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseDomainsKubernetesUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseDomainsKubernetesUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseDomainsCertificate$inboundSchema: - z.ZodType = z.object({ - aws: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseAws$inboundSchema), - z.any(), - ]), - ).optional(), - azure: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseAzureStackSettings$inboundSchema), - z.any(), - ]), - ).optional(), - gcp: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseGcpStackSettings$inboundSchema), - z.any(), - ]), - ).optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseDomainsKubernetes$inboundSchema), - z.any(), - ]), - ).optional(), - }); - -export function deploymentDetailResponseDomainsCertificateFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseDomainsCertificate, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseDomainsCertificate$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseDomainsCertificate' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCustomDomains$inboundSchema: z.ZodType< - DeploymentDetailResponseCustomDomains, - unknown -> = z.object({ - certificate: z.lazy(() => - DeploymentDetailResponseDomainsCertificate$inboundSchema - ), - domain: z.string(), -}); - -export function deploymentDetailResponseCustomDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseCustomDomains' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseDomains$inboundSchema: z.ZodType< - DeploymentDetailResponseDomains, - unknown -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => DeploymentDetailResponseCustomDomains$inboundSchema), - ), - ).optional(), -}); - -export function deploymentDetailResponseDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDomains' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseDomainsUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseDomainsUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseDomains$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseDomainsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDomainsUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseExternalBindings$inboundSchema: z.ZodType< - DeploymentDetailResponseExternalBindings, - unknown -> = z.object({}); - -export function deploymentDetailResponseExternalBindingsFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseExternalBindings, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseExternalBindings$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseExternalBindings' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseHeartbeats$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseHeartbeats -> = z.enum(DeploymentDetailResponseHeartbeats); - -/** @internal */ -export const DeploymentDetailResponseCloud$inboundSchema: z.ZodType< - DeploymentDetailResponseCloud, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); - -export function deploymentDetailResponseCloudFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseCloud$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseCloud' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCloudUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseCloudUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseCloud$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseCloudUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseCloudUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseOwnership$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseOwnership -> = z.enum(DeploymentDetailResponseOwnership); - -/** @internal */ -export const DeploymentDetailResponseCluster$inboundSchema: z.ZodType< - DeploymentDetailResponseCluster, - unknown -> = z.object({ - cloud: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseCloud$inboundSchema), - z.any(), - ]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: DeploymentDetailResponseOwnership$inboundSchema, -}); - -export function deploymentDetailResponseClusterFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseCluster$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseCluster' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseClusterUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseClusterUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseCluster$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseClusterUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseClusterUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateNone2$inboundSchema: z.ZodType< - DeploymentDetailResponseCertificateNone2, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function deploymentDetailResponseCertificateNone2FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateNone2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateNone2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateNone2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function deploymentDetailResponseCertificateManagedTLSSecret2FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateManagedTLSSecret2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateManagedTLSSecret2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema: - z.ZodType = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), - }); - -export function deploymentDetailResponseCertificateAwsAcmArn2FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateAwsAcmArn2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateAwsAcmArn2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function deploymentDetailResponseCertificateManagedAcmImport2FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateManagedAcmImport2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateManagedAcmImport2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema: - z.ZodType = z - .object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function deploymentDetailResponseCertificateTLSSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateTLSSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateTLSSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateUnion2$inboundSchema: z.ZodType< - DeploymentDetailResponseCertificateUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => - DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => - DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateNone2$inboundSchema), -]); - -export function deploymentDetailResponseCertificateUnion2FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateUnion2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateUnion2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateUnion2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseModeCustom$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseModeCustom -> = z.enum(DeploymentDetailResponseModeCustom); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: - z.ZodEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4 - > = z.enum( - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: - z.ZodType< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, - }); - -export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers4FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGatewayEnum4$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderGkeGatewayEnum4, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGateway4$inboundSchema: - z.ZodType = z.object({ - provider: DeploymentDetailResponseProviderGkeGatewayEnum4$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), - }); - -export function deploymentDetailResponseProviderGkeGateway4FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderGkeGateway4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderGkeGateway4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderGkeGateway4' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlbEnum4$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderAwsAlbEnum4, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlb4$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderAwsAlb4, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentDetailResponseProviderAwsAlbEnum4$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function deploymentDetailResponseProviderAwsAlb4FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderAwsAlb4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderAwsAlb4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderAwsAlb4' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderUnion4$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderUnion4, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway4$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseProviderUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderUnion4' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseRouteGateway2$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteGateway2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway4$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function deploymentDetailResponseRouteGateway2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteGateway2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: - z.ZodEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3 - > = z.enum( - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema: - z.ZodType< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, - }); - -export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers3FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGatewayEnum3$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderGkeGatewayEnum3, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGateway3$inboundSchema: - z.ZodType = z.object({ - provider: DeploymentDetailResponseProviderGkeGatewayEnum3$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), - }); - -export function deploymentDetailResponseProviderGkeGateway3FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderGkeGateway3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderGkeGateway3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderGkeGateway3' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlbEnum3$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderAwsAlbEnum3, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlb3$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderAwsAlb3, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentDetailResponseProviderAwsAlbEnum3$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function deploymentDetailResponseProviderAwsAlb3FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderAwsAlb3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderAwsAlb3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderAwsAlb3' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderUnion3$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderUnion3, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb3$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway3$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseProviderUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderUnion3' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseRouteIngress2$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteIngress2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb3$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway3$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function deploymentDetailResponseRouteIngress2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseRouteIngress2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteIngress2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseRouteUnion2$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseRouteIngress2$inboundSchema), - z.lazy(() => DeploymentDetailResponseRouteGateway2$inboundSchema), -]); - -export function deploymentDetailResponseRouteUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseRouteUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteUnion2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseExposureCustom$inboundSchema: z.ZodType< - DeploymentDetailResponseExposureCustom, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => - DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema - ), - z.lazy(() => - DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => - DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateNone2$inboundSchema), - ]), - domain: z.string(), - mode: DeploymentDetailResponseModeCustom$inboundSchema, - route: z.union([ - z.lazy(() => DeploymentDetailResponseRouteIngress2$inboundSchema), - z.lazy(() => DeploymentDetailResponseRouteGateway2$inboundSchema), - ]), -}); - -export function deploymentDetailResponseExposureCustomFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseExposureCustom$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExposureCustom' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateNone1$inboundSchema: z.ZodType< - DeploymentDetailResponseCertificateNone1, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function deploymentDetailResponseCertificateNone1FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateNone1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateNone1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateNone1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function deploymentDetailResponseCertificateManagedTLSSecret1FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateManagedTLSSecret1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateManagedTLSSecret1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema: - z.ZodType = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), - }); - -export function deploymentDetailResponseCertificateAwsAcmArn1FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateAwsAcmArn1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateAwsAcmArn1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function deploymentDetailResponseCertificateManagedAcmImport1FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateManagedAcmImport1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateManagedAcmImport1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema: - z.ZodType = z - .object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function deploymentDetailResponseCertificateTLSSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateTLSSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateTLSSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseCertificateUnion1$inboundSchema: z.ZodType< - DeploymentDetailResponseCertificateUnion1, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => - DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => - DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateNone1$inboundSchema), -]); - -export function deploymentDetailResponseCertificateUnion1FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseCertificateUnion1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseCertificateUnion1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseCertificateUnion1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseModeGenerated$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseModeGenerated -> = z.enum(DeploymentDetailResponseModeGenerated); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: - z.ZodEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2 - > = z.enum( - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema: - z.ZodType< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, - }); - -export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers2FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGatewayEnum2$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderGkeGatewayEnum2, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGateway2$inboundSchema: - z.ZodType = z.object({ - provider: DeploymentDetailResponseProviderGkeGatewayEnum2$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), - }); - -export function deploymentDetailResponseProviderGkeGateway2FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderGkeGateway2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderGkeGateway2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderGkeGateway2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlbEnum2$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderAwsAlbEnum2, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlb2$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderAwsAlb2, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentDetailResponseProviderAwsAlbEnum2$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function deploymentDetailResponseProviderAwsAlb2FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderAwsAlb2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderAwsAlb2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderAwsAlb2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderUnion2$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderUnion2, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb2$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway2$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseProviderUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderUnion2' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseRouteGateway1$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteGateway1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb2$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway2$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function deploymentDetailResponseRouteGateway1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseRouteGateway1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteGateway1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: - z.ZodEnum< - typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1 - > = z.enum( - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema: - z.ZodType< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, - }); - -export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers1FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGatewayEnum1$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderGkeGatewayEnum1, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderGkeGateway1$inboundSchema: - z.ZodType = z.object({ - provider: DeploymentDetailResponseProviderGkeGatewayEnum1$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), - }); - -export function deploymentDetailResponseProviderGkeGateway1FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderGkeGateway1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderGkeGateway1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderGkeGateway1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlbEnum1$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseProviderAwsAlbEnum1, - ); - -/** @internal */ -export const DeploymentDetailResponseProviderAwsAlb1$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderAwsAlb1, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: DeploymentDetailResponseProviderAwsAlbEnum1$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function deploymentDetailResponseProviderAwsAlb1FromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseProviderAwsAlb1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderAwsAlb1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseProviderAwsAlb1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseProviderUnion1$inboundSchema: z.ZodType< - DeploymentDetailResponseProviderUnion1, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb1$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway1$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseProviderUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseProviderUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseProviderUnion1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseRouteIngress1$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteIngress1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseProviderAwsAlb1$inboundSchema), - z.lazy(() => - DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseProviderGkeGateway1$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function deploymentDetailResponseRouteIngress1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseRouteIngress1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteIngress1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseRouteUnion1$inboundSchema: z.ZodType< - DeploymentDetailResponseRouteUnion1, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseRouteIngress1$inboundSchema), - z.lazy(() => DeploymentDetailResponseRouteGateway1$inboundSchema), -]); - -export function deploymentDetailResponseRouteUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseRouteUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseRouteUnion1' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseExposureGenerated$inboundSchema: z.ZodType< - DeploymentDetailResponseExposureGenerated, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => - DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema - ), - z.lazy(() => - DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => - DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema - ), - z.lazy(() => DeploymentDetailResponseCertificateNone1$inboundSchema), - ]), - mode: DeploymentDetailResponseModeGenerated$inboundSchema, - route: z.union([ - z.lazy(() => DeploymentDetailResponseRouteIngress1$inboundSchema), - z.lazy(() => DeploymentDetailResponseRouteGateway1$inboundSchema), - ]), -}); - -export function deploymentDetailResponseExposureGeneratedFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseExposureGenerated, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseExposureGenerated$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseExposureGenerated' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseModeDisabled$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseModeDisabled -> = z.enum(DeploymentDetailResponseModeDisabled); - -/** @internal */ -export const DeploymentDetailResponseExposureDisabled$inboundSchema: z.ZodType< - DeploymentDetailResponseExposureDisabled, - unknown -> = z.object({ - mode: DeploymentDetailResponseModeDisabled$inboundSchema, -}); - -export function deploymentDetailResponseExposureDisabledFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseExposureDisabled, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseExposureDisabled$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseExposureDisabled' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseExposureUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseExposureUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseExposureCustom$inboundSchema), - z.lazy(() => DeploymentDetailResponseExposureGenerated$inboundSchema), - z.lazy(() => DeploymentDetailResponseExposureDisabled$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseExposureUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseExposureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseExposureUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseKubernetes$inboundSchema: z.ZodType< - DeploymentDetailResponseKubernetes, - unknown -> = z.object({ - cluster: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseCluster$inboundSchema), - z.any(), - ]), - ).optional(), - exposure: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseExposureCustom$inboundSchema), - z.lazy(() => DeploymentDetailResponseExposureGenerated$inboundSchema), - z.lazy(() => DeploymentDetailResponseExposureDisabled$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function deploymentDetailResponseKubernetesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseKubernetes' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseKubernetesUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseKubernetesUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseKubernetes$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseKubernetesUnionFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseKubernetesUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseKubernetesUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseKubernetesUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTypeByoVnetAzure$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeByoVnetAzure -> = z.enum(DeploymentDetailResponseTypeByoVnetAzure); - -/** @internal */ -export const DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema: - z.ZodType = z.object({ - application_gateway_subnet_name: z.nullable(z.string()).optional(), - private_subnet_name: z.string(), - public_subnet_name: z.string(), - type: DeploymentDetailResponseTypeByoVnetAzure$inboundSchema, - vnet_resource_id: z.string(), - }).transform((v) => { - return remap$(v, { - "application_gateway_subnet_name": "applicationGatewaySubnetName", - "private_subnet_name": "privateSubnetName", - "public_subnet_name": "publicSubnetName", - "vnet_resource_id": "vnetResourceId", - }); - }); - -export function deploymentDetailResponseNetworkByoVnetAzureFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseNetworkByoVnetAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseNetworkByoVnetAzure' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTypeByoVpcGcp$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeByoVpcGcp -> = z.enum(DeploymentDetailResponseTypeByoVpcGcp); - -/** @internal */ -export const DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema: z.ZodType< - DeploymentDetailResponseNetworkByoVpcGcp, - unknown -> = z.object({ - network_name: z.string(), - region: z.string(), - subnet_name: z.string(), - type: DeploymentDetailResponseTypeByoVpcGcp$inboundSchema, -}).transform((v) => { - return remap$(v, { - "network_name": "networkName", - "subnet_name": "subnetName", - }); -}); - -export function deploymentDetailResponseNetworkByoVpcGcpFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseNetworkByoVpcGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseNetworkByoVpcGcp' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTypeByoVpcAws$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeByoVpcAws -> = z.enum(DeploymentDetailResponseTypeByoVpcAws); - -/** @internal */ -export const DeploymentDetailResponseNetworkByoVpcAws$inboundSchema: z.ZodType< - DeploymentDetailResponseNetworkByoVpcAws, - unknown -> = z.object({ - private_subnet_ids: z.array(z.string()), - public_subnet_ids: z.array(z.string()), - security_group_ids: z.array(z.string()).optional(), - type: DeploymentDetailResponseTypeByoVpcAws$inboundSchema, - vpc_id: z.string(), -}).transform((v) => { - return remap$(v, { - "private_subnet_ids": "privateSubnetIds", - "public_subnet_ids": "publicSubnetIds", - "security_group_ids": "securityGroupIds", - "vpc_id": "vpcId", - }); -}); - -export function deploymentDetailResponseNetworkByoVpcAwsFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseNetworkByoVpcAws, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseNetworkByoVpcAws$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseNetworkByoVpcAws' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTypeCreate$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeCreate -> = z.enum(DeploymentDetailResponseTypeCreate); - -/** @internal */ -export const DeploymentDetailResponseNetworkCreate$inboundSchema: z.ZodType< - DeploymentDetailResponseNetworkCreate, - unknown -> = z.object({ - availability_zones: z.int().optional(), - cidr: z.nullable(z.string()).optional(), - type: DeploymentDetailResponseTypeCreate$inboundSchema, -}).transform((v) => { - return remap$(v, { - "availability_zones": "availabilityZones", - }); -}); - -export function deploymentDetailResponseNetworkCreateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseNetworkCreate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseNetworkCreate' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTypeUseDefault$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeUseDefault -> = z.enum(DeploymentDetailResponseTypeUseDefault); - -/** @internal */ -export const DeploymentDetailResponseNetworkUseDefault$inboundSchema: z.ZodType< - DeploymentDetailResponseNetworkUseDefault, - unknown -> = z.object({ - type: DeploymentDetailResponseTypeUseDefault$inboundSchema, -}); - -export function deploymentDetailResponseNetworkUseDefaultFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseNetworkUseDefault, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseNetworkUseDefault$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseNetworkUseDefault' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseNetworkUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseNetworkUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseNetworkByoVpcAws$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkUseDefault$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkCreate$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseNetworkUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseNetworkUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseNetworkUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTelemetry$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTelemetry -> = z.enum(DeploymentDetailResponseTelemetry); - -/** @internal */ -export const DeploymentDetailResponseUpdates$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseUpdates -> = z.enum(DeploymentDetailResponseUpdates); - -/** @internal */ -export const DeploymentDetailResponseStackSettings$inboundSchema: z.ZodType< - DeploymentDetailResponseStackSettings, - unknown -> = z.object({ - compute: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseCompute$inboundSchema), - z.any(), - ]), - ).optional(), - deploymentModel: DeploymentDetailResponseDeploymentModel$inboundSchema - .optional(), - domains: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseDomains$inboundSchema), - z.any(), - ]), - ).optional(), - externalBindings: z.nullable( - z.lazy(() => DeploymentDetailResponseExternalBindings$inboundSchema), - ).optional(), - heartbeats: DeploymentDetailResponseHeartbeats$inboundSchema.optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseKubernetes$inboundSchema), - z.any(), - ]), - ).optional(), - network: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseNetworkByoVpcAws$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkUseDefault$inboundSchema), - z.lazy(() => DeploymentDetailResponseNetworkCreate$inboundSchema), - z.any(), - ]), - ).optional(), - telemetry: DeploymentDetailResponseTelemetry$inboundSchema.optional(), - updates: DeploymentDetailResponseUpdates$inboundSchema.optional(), -}); - -export function deploymentDetailResponseStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseStackSettings' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseStackStatePlatform$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseStackStatePlatform, - ); - -/** @internal */ -export const DeploymentDetailResponseStackStateConfig$inboundSchema: z.ZodType< - DeploymentDetailResponseStackStateConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function deploymentDetailResponseStackStateConfigFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseStackStateConfig, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseStackStateConfig$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseStackStateConfig' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseControllerPlatformEnum$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseControllerPlatformEnum, - ); - -/** @internal */ -export const DeploymentDetailResponseControllerPlatformUnion$inboundSchema: - z.ZodType = z.union( - [DeploymentDetailResponseControllerPlatformEnum$inboundSchema, z.any()], - ); - -export function deploymentDetailResponseControllerPlatformUnionFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseControllerPlatformUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseControllerPlatformUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseControllerPlatformUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseStackStateDependency$inboundSchema: - z.ZodType = z.object({ - id: z.string(), - type: z.string(), - }); - -export function deploymentDetailResponseStackStateDependencyFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseStackStateDependency, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseStackStateDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseStackStateDependency' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseErrorStackState$inboundSchema: z.ZodType< - DeploymentDetailResponseErrorStackState, - unknown -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); - -export function deploymentDetailResponseErrorStackStateFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseErrorStackState, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseErrorStackState$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseErrorStackState' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseErrorUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseErrorUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseErrorStackState$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseErrorUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseErrorUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponseLifecycleStackStateEnum, - ); - -/** @internal */ -export const DeploymentDetailResponseLifecycleUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseLifecycleUnion, - unknown -> = z.union([ - DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema, - z.any(), -]); - -export function deploymentDetailResponseLifecycleUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseLifecycleUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseOutputs$inboundSchema: z.ZodType< - DeploymentDetailResponseOutputs, - unknown -> = collectExtraKeys$( - z.object({ - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function deploymentDetailResponseOutputsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseOutputs$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseOutputs' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseOutputsUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseOutputsUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseOutputs$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseOutputsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseOutputsUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponsePreviousConfig$inboundSchema: z.ZodType< - DeploymentDetailResponsePreviousConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function deploymentDetailResponsePreviousConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponsePreviousConfig' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponsePreviousConfigUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => DeploymentDetailResponsePreviousConfig$inboundSchema), - z.any(), - ]); - -export function deploymentDetailResponsePreviousConfigUnionFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponsePreviousConfigUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponsePreviousConfigUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponsePreviousConfigUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseStackStateStatus$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseStackStateStatus -> = z.enum(DeploymentDetailResponseStackStateStatus); - -/** @internal */ -export const DeploymentDetailResponseStackStateResources$inboundSchema: - z.ZodType = z.object({ - _internal: z.nullable(z.any()).optional(), - config: z.lazy(() => - DeploymentDetailResponseStackStateConfig$inboundSchema - ), - controllerPlatform: z.nullable( - z.union([ - DeploymentDetailResponseControllerPlatformEnum$inboundSchema, - z.any(), - ]), - ).optional(), - dependencies: z.array( - z.lazy(() => DeploymentDetailResponseStackStateDependency$inboundSchema), - ).optional(), - error: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseErrorStackState$inboundSchema), - z.any(), - ]), - ).optional(), - lastFailedState: z.nullable(z.any()).optional(), - lifecycle: z.nullable( - z.union([ - DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema, - z.any(), - ]), - ).optional(), - outputs: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseOutputs$inboundSchema), - z.any(), - ]), - ).optional(), - previousConfig: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponsePreviousConfig$inboundSchema), - z.any(), - ]), - ).optional(), - remoteBindingParams: z.nullable(z.any()).optional(), - retryAttempt: z.int().optional(), - status: DeploymentDetailResponseStackStateStatus$inboundSchema, - type: z.string(), - }).transform((v) => { - return remap$(v, { - "_internal": "internal", - }); - }); - -export function deploymentDetailResponseStackStateResourcesFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseStackStateResources, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseStackStateResources$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseStackStateResources' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseStackState$inboundSchema: z.ZodType< - DeploymentDetailResponseStackState, - unknown -> = z.object({ - platform: DeploymentDetailResponseStackStatePlatform$inboundSchema, - resourcePrefix: z.string(), - resources: z.record( - z.string(), - z.lazy(() => DeploymentDetailResponseStackStateResources$inboundSchema), - ), -}); - -export function deploymentDetailResponseStackStateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseStackState' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTypeStringList$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeStringList -> = z.enum(DeploymentDetailResponseTypeStringList); - -/** @internal */ -export const DeploymentDetailResponseDefaultStringList$inboundSchema: z.ZodType< - DeploymentDetailResponseDefaultStringList, - unknown -> = z.object({ - type: DeploymentDetailResponseTypeStringList$inboundSchema, - value: z.array(z.string()), -}); - -export function deploymentDetailResponseDefaultStringListFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseDefaultStringList, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseDefaultStringList$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseDefaultStringList' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTypeBoolean$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeBoolean -> = z.enum(DeploymentDetailResponseTypeBoolean); - -/** @internal */ -export const DeploymentDetailResponseDefaultBoolean$inboundSchema: z.ZodType< - DeploymentDetailResponseDefaultBoolean, - unknown -> = z.object({ - type: DeploymentDetailResponseTypeBoolean$inboundSchema, - value: z.boolean(), -}); - -export function deploymentDetailResponseDefaultBooleanFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseDefaultBoolean$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDefaultBoolean' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTypeNumber$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeNumber -> = z.enum(DeploymentDetailResponseTypeNumber); - -/** @internal */ -export const DeploymentDetailResponseDefaultNumber$inboundSchema: z.ZodType< - DeploymentDetailResponseDefaultNumber, - unknown -> = z.object({ - type: DeploymentDetailResponseTypeNumber$inboundSchema, - value: z.string(), -}); - -export function deploymentDetailResponseDefaultNumberFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseDefaultNumber$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDefaultNumber' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTypeString$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeString -> = z.enum(DeploymentDetailResponseTypeString); - -/** @internal */ -export const DeploymentDetailResponseDefaultString$inboundSchema: z.ZodType< - DeploymentDetailResponseDefaultString, - unknown -> = z.object({ - type: DeploymentDetailResponseTypeString$inboundSchema, - value: z.string(), -}); - -export function deploymentDetailResponseDefaultStringFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseDefaultString$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDefaultString' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseDefaultUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseDefaultUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseDefaultString$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultNumber$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultBoolean$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultStringList$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseDefaultUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseDefaultUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseDefaultUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseTypeEnvEnum$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseTypeEnvEnum -> = z.enum(DeploymentDetailResponseTypeEnvEnum); - -/** @internal */ -export const DeploymentDetailResponseTypeUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseTypeUnion, - unknown -> = z.union([DeploymentDetailResponseTypeEnvEnum$inboundSchema, z.any()]); - -export function deploymentDetailResponseTypeUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseTypeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseTypeUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseEnv$inboundSchema: z.ZodType< - DeploymentDetailResponseEnv, - unknown -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([DeploymentDetailResponseTypeEnvEnum$inboundSchema, z.any()]), - ).optional(), -}); - -export function deploymentDetailResponseEnvFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseEnv' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseKind$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseKind -> = z.enum(DeploymentDetailResponseKind); - -/** @internal */ -export const DeploymentDetailResponsePreparedStackPlatform$inboundSchema: - z.ZodEnum = z.enum( - DeploymentDetailResponsePreparedStackPlatform, - ); - -/** @internal */ -export const DeploymentDetailResponseProvidedBy$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseProvidedBy -> = z.enum(DeploymentDetailResponseProvidedBy); - -/** @internal */ -export const DeploymentDetailResponseValidation$inboundSchema: z.ZodType< - DeploymentDetailResponseValidation, - unknown -> = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), -}); - -export function deploymentDetailResponseValidationFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseValidation$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseValidation' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseValidationUnion$inboundSchema: z.ZodType< - DeploymentDetailResponseValidationUnion, - unknown -> = z.union([ - z.lazy(() => DeploymentDetailResponseValidation$inboundSchema), - z.any(), -]); - -export function deploymentDetailResponseValidationUnionFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseValidationUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseValidationUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseValidationUnion' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseInput$inboundSchema: z.ZodType< - DeploymentDetailResponseInput, - unknown -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseDefaultString$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultNumber$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultBoolean$inboundSchema), - z.lazy(() => DeploymentDetailResponseDefaultStringList$inboundSchema), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array(z.lazy(() => DeploymentDetailResponseEnv$inboundSchema)) - .optional(), - id: z.string(), - kind: DeploymentDetailResponseKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(DeploymentDetailResponsePreparedStackPlatform$inboundSchema), - ).optional(), - providedBy: z.array(DeploymentDetailResponseProvidedBy$inboundSchema), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseValidation$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function deploymentDetailResponseInputFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DeploymentDetailResponseInput$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseInput' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseManagementEnum$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseManagementEnum -> = z.enum(DeploymentDetailResponseManagementEnum); - -/** @internal */ -export const DeploymentDetailResponseOverrideAwResource$inboundSchema: - z.ZodType = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function deploymentDetailResponseOverrideAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseOverrideAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseOverrideAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideAwResource' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseOverrideAwStack$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function deploymentDetailResponseOverrideAwStackFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseOverrideAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseOverrideAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideAwStack' from JSON`, - ); -} - -/** @internal */ -export const DeploymentDetailResponseOverrideAwBinding$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => - DeploymentDetailResponseOverrideAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => DeploymentDetailResponseOverrideAwStack$inboundSchema) - .optional(), -}); - -export function deploymentDetailResponseOverrideAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseOverrideAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseOverrideAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideAwBinding' from JSON`, - ); -} + source?: any | null | undefined; +}; -/** @internal */ -export const DeploymentDetailResponseOverrideEffect$inboundSchema: z.ZodEnum< - typeof DeploymentDetailResponseOverrideEffect -> = z.enum(DeploymentDetailResponseOverrideEffect); +/** + * Snapshot of target environment variables for the deployment + */ +export type DeploymentDetailResponseTargetEnvironmentVariables = { + /** + * Environment variables in the snapshot + */ + variables: Array; + /** + * Deterministic hash of all variables for change detection + */ + hash: string; + /** + * ISO 8601 timestamp when snapshot was created + */ + createdAt: Date; +}; -/** @internal */ -export const DeploymentDetailResponseOverrideAwGrant$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +/** + * Snapshot of current environment variables for the deployment + */ +export type DeploymentDetailResponseCurrentEnvironmentVariables = { + /** + * Environment variables in the snapshot + */ + variables: Array; + /** + * Deterministic hash of all variables for change detection + */ + hash: string; + /** + * ISO 8601 timestamp when snapshot was created + */ + createdAt: Date; +}; -export function deploymentDetailResponseOverrideAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - DeploymentDetailResponseOverrideAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseOverrideAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'DeploymentDetailResponseOverrideAwGrant' from JSON`, - ); -} +/** + * Agent host OS reported on the last sync + */ +export const DeploymentDetailResponseAgentOs = { + Linux: "linux", + Macos: "macos", + Windows: "windows", +} as const; +/** + * Agent host OS reported on the last sync + */ +export type DeploymentDetailResponseAgentOs = ClosedEnum< + typeof DeploymentDetailResponseAgentOs +>; -/** @internal */ -export const DeploymentDetailResponseOverrideAw$inboundSchema: z.ZodType< - DeploymentDetailResponseOverrideAw, - unknown -> = z.object({ - binding: z.lazy(() => - DeploymentDetailResponseOverrideAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: DeploymentDetailResponseOverrideEffect$inboundSchema.optional(), - grant: z.lazy(() => DeploymentDetailResponseOverrideAwGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +/** + * Agent host architecture reported on the last sync + */ +export const DeploymentDetailResponseAgentArch = { + X8664: "x86_64", + Aarch64: "aarch64", +} as const; +/** + * Agent host architecture reported on the last sync + */ +export type DeploymentDetailResponseAgentArch = ClosedEnum< + typeof DeploymentDetailResponseAgentArch +>; -export function deploymentDetailResponseOverrideAwFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - DeploymentDetailResponseOverrideAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DeploymentDetailResponseOverrideAw' from JSON`, - ); -} +/** + * Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. + */ +export const DeploymentDetailResponseRegime = { + OsService: "os-service", + Kubernetes: "kubernetes", +} as const; +/** + * Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. + */ +export type DeploymentDetailResponseRegime = ClosedEnum< + typeof DeploymentDetailResponseRegime +>; + +export type DeploymentDetailResponse = { + /** + * Unique identifier for the deployment. + */ + id: string; + /** + * Deployment name. + */ + name: string; + /** + * Public subdomain for auto-generated domains + */ + publicSubdomain?: string | null | undefined; + /** + * Deployment status in the deployment lifecycle + */ + status: DeploymentDetailResponseStatus; + /** + * Unique identifier for the project. + */ + projectId: string; + /** + * Target platform for the deployment + */ + platform: DeploymentDetailResponsePlatform; + /** + * Underlying cloud platform for Kubernetes deployments. + */ + basePlatform?: DeploymentDetailResponseBasePlatform | null | undefined; + /** + * Cloud region or location for the deployment. + */ + region?: string | null | undefined; + /** + * DeploymentState protocol version owned by the runtime/manager + */ + deploymentProtocolVersion: number; + /** + * ID of deployment group this deployment belongs to + */ + deploymentGroupId: string; + /** + * Cloud environment information + */ + environmentInfo?: + | DeploymentDetailResponseEnvironmentInfoUnion + | null + | undefined; + /** + * User-provided configuration (network, deployment model, approvals) + */ + stackSettings: DeploymentDetailResponseStackSettings; + /** + * State of infrastructure components managed by this deployment + */ + stackState?: DeploymentDetailResponseStackState | null | undefined; + /** + * Runtime metadata for deployment state persistence + */ + runtimeMetadata?: DeploymentDetailResponseRuntimeMetadata | null | undefined; + /** + * ID of the currently deployed release (actual state) + */ + currentReleaseId?: string | null | undefined; + /** + * ID of the desired release for deployment/update (desired state) + */ + desiredReleaseId?: string | null | undefined; + /** + * ID of the pinned release + */ + pinnedReleaseId?: string | null | undefined; + /** + * Setup source that imported this deployment + */ + importSource?: DeploymentDetailResponseImportSource | null | undefined; + /** + * Setup method that created the deployment record and owns setup-time resources. + */ + setupMethod?: DeploymentDetailResponseSetupMethod | null | undefined; + /** + * Setup method metadata needed to guide privileged teardown. + */ + setupMetadata?: { [k: string]: any | null } | null | undefined; + /** + * Imported setup target for compatibility checks + */ + setupTarget?: string | null | undefined; + /** + * Imported setup compatibility fingerprint + */ + setupFingerprint?: string | null | undefined; + /** + * Imported setup fingerprint algorithm version + */ + setupFingerprintVersion?: number | null | undefined; + /** + * Whether a retry has been requested for a failed deployment + */ + retryRequested: boolean; + /** + * Timestamp of the last received heartbeat from the deployment + */ + lastHeartbeatAt?: Date | null | undefined; + /** + * Latest error information if the deployment is in a failed state + */ + error?: DeploymentDetailResponseError | null | undefined; + /** + * Configuration of environment variables for the deployment + */ + environmentVariables?: Array | null | undefined; + /** + * Snapshot of target environment variables for the deployment + */ + targetEnvironmentVariables?: + | DeploymentDetailResponseTargetEnvironmentVariables + | null + | undefined; + /** + * Snapshot of current environment variables for the deployment + */ + currentEnvironmentVariables?: + | DeploymentDetailResponseCurrentEnvironmentVariables + | null + | undefined; + createdAt: Date; + updatedAt: Date; + managerId: string; + /** + * Unique identifier for the workspace. + */ + workspaceId: string; + /** + * Agent binary version reported on the last sync (e.g. "1.3.5") + */ + agentVersion?: string | null | undefined; + /** + * Agent host OS reported on the last sync + */ + agentOs?: DeploymentDetailResponseAgentOs | null | undefined; + /** + * Agent host architecture reported on the last sync + */ + agentArch?: DeploymentDetailResponseAgentArch | null | undefined; + /** + * Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. + */ + regime?: DeploymentDetailResponseRegime | null | undefined; + /** + * Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from. + */ + agentImageRepository?: string | null | undefined; + /** + * Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target. + */ + targetAgentVersion?: string | null | undefined; + release?: DeploymentReleaseInfo | null | undefined; + deploymentGroup?: DeploymentGroupInfo | undefined; + project?: DeploymentProjectInfo | undefined; +}; /** @internal */ export const DeploymentDetailResponseOverrideAzureResource$inboundSchema: @@ -6729,9 +1904,8 @@ export const DeploymentDetailResponseOverridePlatforms$inboundSchema: z.ZodType< DeploymentDetailResponseOverridePlatforms, unknown > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => DeploymentDetailResponseOverrideAw$inboundSchema)), - ).optional(), + aws: z.nullable(z.array(DeploymentDetailResponseOverrideAw$inboundSchema)) + .optional(), azure: z.nullable( z.array(z.lazy(() => DeploymentDetailResponseOverrideAzure$inboundSchema)), ).optional(), @@ -8117,8 +3291,7 @@ export const DeploymentDetailResponsePreparedStack$inboundSchema: z.ZodType< unknown > = z.object({ id: z.string(), - inputs: z.array(z.lazy(() => DeploymentDetailResponseInput$inboundSchema)) - .optional(), + inputs: z.array(DeploymentDetailResponseInput$inboundSchema).optional(), permissions: z.lazy(() => DeploymentDetailResponsePermissions$inboundSchema) .optional(), resources: z.record( @@ -8280,6 +3453,21 @@ export function deploymentDetailResponseCurrentEnvironmentVariablesFromJSON( ); } +/** @internal */ +export const DeploymentDetailResponseAgentOs$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseAgentOs +> = z.enum(DeploymentDetailResponseAgentOs); + +/** @internal */ +export const DeploymentDetailResponseAgentArch$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseAgentArch +> = z.enum(DeploymentDetailResponseAgentArch); + +/** @internal */ +export const DeploymentDetailResponseRegime$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseRegime +> = z.enum(DeploymentDetailResponseRegime); + /** @internal */ export const DeploymentDetailResponse$inboundSchema: z.ZodType< DeploymentDetailResponse, @@ -8297,21 +3485,11 @@ export const DeploymentDetailResponse$inboundSchema: z.ZodType< deploymentProtocolVersion: z.int(), deploymentGroupId: z.string(), environmentInfo: z.nullable( - z.union([ - z.lazy(() => DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoAws$inboundSchema), - z.lazy(() => DeploymentDetailResponseEnvironmentInfoTest$inboundSchema), - z.any(), - ]), - ).optional(), - stackSettings: z.lazy(() => - DeploymentDetailResponseStackSettings$inboundSchema - ), - stackState: z.nullable( - z.lazy(() => DeploymentDetailResponseStackState$inboundSchema), + DeploymentDetailResponseEnvironmentInfoUnion$inboundSchema, ).optional(), + stackSettings: DeploymentDetailResponseStackSettings$inboundSchema, + stackState: z.nullable(DeploymentDetailResponseStackState$inboundSchema) + .optional(), runtimeMetadata: z.nullable( z.lazy(() => DeploymentDetailResponseRuntimeMetadata$inboundSchema), ).optional(), @@ -8350,6 +3528,13 @@ export const DeploymentDetailResponse$inboundSchema: z.ZodType< updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), managerId: z.string(), workspaceId: z.string(), + agentVersion: z.nullable(z.string()).optional(), + agentOs: z.nullable(DeploymentDetailResponseAgentOs$inboundSchema).optional(), + agentArch: z.nullable(DeploymentDetailResponseAgentArch$inboundSchema) + .optional(), + regime: z.nullable(DeploymentDetailResponseRegime$inboundSchema).optional(), + agentImageRepository: z.nullable(z.string()).optional(), + targetAgentVersion: z.nullable(z.string()).optional(), release: z.nullable(DeploymentReleaseInfo$inboundSchema).optional(), deploymentGroup: DeploymentGroupInfo$inboundSchema.optional(), project: DeploymentProjectInfo$inboundSchema.optional(), diff --git a/client-sdks/platform/typescript/src/models/deploymentdetailresponseoverrideaw.ts b/client-sdks/platform/typescript/src/models/deploymentdetailresponseoverrideaw.ts new file mode 100644 index 000000000..641a452a3 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/deploymentdetailresponseoverrideaw.ts @@ -0,0 +1,4919 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { + collectExtraKeys as collectExtraKeys$, + safeParse, +} from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +/** + * Deployment status in the deployment lifecycle + */ +export const DeploymentDetailResponseStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", +} as const; +/** + * Deployment status in the deployment lifecycle + */ +export type DeploymentDetailResponseStatus = ClosedEnum< + typeof DeploymentDetailResponseStatus +>; + +/** + * Target platform for the deployment + */ +export const DeploymentDetailResponsePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Target platform for the deployment + */ +export type DeploymentDetailResponsePlatform = ClosedEnum< + typeof DeploymentDetailResponsePlatform +>; + +/** + * Underlying cloud platform for Kubernetes deployments. + */ +export const DeploymentDetailResponseBasePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", +} as const; +/** + * Underlying cloud platform for Kubernetes deployments. + */ +export type DeploymentDetailResponseBasePlatform = ClosedEnum< + typeof DeploymentDetailResponseBasePlatform +>; + +export const DeploymentDetailResponsePlatformTest = { + Test: "test", +} as const; +export type DeploymentDetailResponsePlatformTest = ClosedEnum< + typeof DeploymentDetailResponsePlatformTest +>; + +/** + * Test platform environment information (mock) + */ +export type DeploymentDetailResponseEnvironmentInfoTest = { + /** + * Test identifier for this environment + */ + testId: string; + platform: DeploymentDetailResponsePlatformTest; +}; + +export const DeploymentDetailResponsePlatformLocal = { + Local: "local", +} as const; +export type DeploymentDetailResponsePlatformLocal = ClosedEnum< + typeof DeploymentDetailResponsePlatformLocal +>; + +/** + * Local platform environment information + */ +export type DeploymentDetailResponseEnvironmentInfoLocal = { + /** + * Architecture (e.g., "x86_64", "aarch64") + */ + arch: string; + /** + * Hostname of the machine running the deployment + */ + hostname: string; + /** + * Operating system (e.g., "linux", "macos", "windows") + */ + os: string; + platform: DeploymentDetailResponsePlatformLocal; +}; + +export const DeploymentDetailResponsePlatformAzure = { + Azure: "azure", +} as const; +export type DeploymentDetailResponsePlatformAzure = ClosedEnum< + typeof DeploymentDetailResponsePlatformAzure +>; + +/** + * Azure-specific environment information + */ +export type DeploymentDetailResponseEnvironmentInfoAzure = { + /** + * Azure location/region + */ + location: string; + /** + * Azure subscription ID + */ + subscriptionId: string; + /** + * Azure tenant ID + */ + tenantId: string; + platform: DeploymentDetailResponsePlatformAzure; +}; + +export const DeploymentDetailResponsePlatformGcp = { + Gcp: "gcp", +} as const; +export type DeploymentDetailResponsePlatformGcp = ClosedEnum< + typeof DeploymentDetailResponsePlatformGcp +>; + +/** + * GCP-specific environment information + */ +export type DeploymentDetailResponseEnvironmentInfoGcp = { + /** + * GCP project ID (e.g., "my-project") + */ + projectId: string; + /** + * GCP project number (e.g., "123456789012") + */ + projectNumber: string; + /** + * GCP region + */ + region: string; + platform: DeploymentDetailResponsePlatformGcp; +}; + +export const DeploymentDetailResponsePlatformAws = { + Aws: "aws", +} as const; +export type DeploymentDetailResponsePlatformAws = ClosedEnum< + typeof DeploymentDetailResponsePlatformAws +>; + +/** + * AWS-specific environment information + */ +export type DeploymentDetailResponseEnvironmentInfoAws = { + /** + * AWS account ID + */ + accountId: string; + /** + * AWS region + */ + region: string; + platform: DeploymentDetailResponsePlatformAws; +}; + +/** + * Cloud environment information + */ +export type DeploymentDetailResponseEnvironmentInfoUnion = + | DeploymentDetailResponseEnvironmentInfoGcp + | DeploymentDetailResponseEnvironmentInfoAzure + | DeploymentDetailResponseEnvironmentInfoLocal + | DeploymentDetailResponseEnvironmentInfoAws + | DeploymentDetailResponseEnvironmentInfoTest + | any; + +export type DeploymentDetailResponsePoolsAutoscale = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Maximum machine count. + */ + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; +}; + +export type DeploymentDetailResponsePoolsFixed = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Number of machines to run. + */ + machines: number; + mode: "fixed"; +}; + +/** + * User-selected deployment settings for one compute pool. + */ +export type DeploymentDetailResponsePoolsUnion = + | DeploymentDetailResponsePoolsFixed + | DeploymentDetailResponsePoolsAutoscale; + +/** + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. + */ +export type DeploymentDetailResponseCompute = { + /** + * Selected compute choices keyed by pool ID. + */ + pools?: { + [k: string]: + | DeploymentDetailResponsePoolsFixed + | DeploymentDetailResponsePoolsAutoscale; + } | undefined; +}; + +export type DeploymentDetailResponseComputeUnion = + | DeploymentDetailResponseCompute + | any; + +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export const DeploymentDetailResponseDeploymentModel = { + Push: "push", + Pull: "pull", +} as const; +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export type DeploymentDetailResponseDeploymentModel = ClosedEnum< + typeof DeploymentDetailResponseDeploymentModel +>; + +export type DeploymentDetailResponseAws = { + certificateArn: string; +}; + +export type DeploymentDetailResponseAwsUnion = + | DeploymentDetailResponseAws + | any; + +export type DeploymentDetailResponseAzureStackSettings = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +export type DeploymentDetailResponseAzureUnion = + | DeploymentDetailResponseAzureStackSettings + | any; + +export type DeploymentDetailResponseGcpStackSettings = { + certificateName: string; +}; + +export type DeploymentDetailResponseGcpUnion = + | DeploymentDetailResponseGcpStackSettings + | any; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type DeploymentDetailResponseTlsSecretRef = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; +}; + +export type DeploymentDetailResponseDomainsKubernetes = { + /** + * Namespace-scoped Kubernetes TLS Secret reference. + */ + tlsSecretRef: DeploymentDetailResponseTlsSecretRef; +}; + +export type DeploymentDetailResponseDomainsKubernetesUnion = + | DeploymentDetailResponseDomainsKubernetes + | any; + +/** + * Platform-specific certificate references for custom domains. + */ +export type DeploymentDetailResponseDomainsCertificate = { + aws?: DeploymentDetailResponseAws | any | null | undefined; + azure?: DeploymentDetailResponseAzureStackSettings | any | null | undefined; + gcp?: DeploymentDetailResponseGcpStackSettings | any | null | undefined; + kubernetes?: + | DeploymentDetailResponseDomainsKubernetes + | any + | null + | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type DeploymentDetailResponseCustomDomains = { + /** + * Platform-specific certificate references for custom domains. + */ + certificate: DeploymentDetailResponseDomainsCertificate; + /** + * Fully qualified domain name to use. + */ + domain: string; +}; + +/** + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. + */ +export type DeploymentDetailResponseDomains = { + /** + * Custom domain configuration per resource ID. + */ + customDomains?: + | { [k: string]: DeploymentDetailResponseCustomDomains } + | null + | undefined; +}; + +export type DeploymentDetailResponseDomainsUnion = + | DeploymentDetailResponseDomains + | any; + +/** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ +export type DeploymentDetailResponseExternalBindings = {}; + +/** + * How heartbeat health checks are handled. + */ +export const DeploymentDetailResponseHeartbeats = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type DeploymentDetailResponseHeartbeats = ClosedEnum< + typeof DeploymentDetailResponseHeartbeats +>; + +/** + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + */ +export type DeploymentDetailResponseCloud = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +export type DeploymentDetailResponseCloudUnion = + | DeploymentDetailResponseCloud + | any; + +/** + * Ownership model for the Kubernetes cluster. + */ +export const DeploymentDetailResponseOwnership = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type DeploymentDetailResponseOwnership = ClosedEnum< + typeof DeploymentDetailResponseOwnership +>; + +/** + * Kubernetes cluster setup settings. + */ +export type DeploymentDetailResponseCluster = { + cloud?: DeploymentDetailResponseCloud | any | null | undefined; + /** + * Namespace where the Alien chart and application resources run. + */ + namespace?: string | null | undefined; + /** + * Ownership model for the Kubernetes cluster. + */ + ownership: DeploymentDetailResponseOwnership; +}; + +export type DeploymentDetailResponseClusterUnion = + | DeploymentDetailResponseCluster + | any; + +export type DeploymentDetailResponseCertificateNone2 = { + mode: "none"; +}; + +export type DeploymentDetailResponseCertificateManagedTLSSecret2 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type DeploymentDetailResponseCertificateAwsAcmArn2 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type DeploymentDetailResponseCertificateManagedAcmImport2 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type DeploymentDetailResponseCertificateTLSSecretRef2 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type DeploymentDetailResponseCertificateUnion2 = + | DeploymentDetailResponseCertificateTLSSecretRef2 + | DeploymentDetailResponseCertificateManagedAcmImport2 + | DeploymentDetailResponseCertificateAwsAcmArn2 + | DeploymentDetailResponseCertificateManagedTLSSecret2 + | DeploymentDetailResponseCertificateNone2; + +export const DeploymentDetailResponseModeCustom = { + Custom: "custom", +} as const; +export type DeploymentDetailResponseModeCustom = ClosedEnum< + typeof DeploymentDetailResponseModeCustom +>; + +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4 = + ClosedEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4 + >; + +export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4; + }; + +export const DeploymentDetailResponseProviderGkeGatewayEnum4 = { + GkeGateway: "gkeGateway", +} as const; +export type DeploymentDetailResponseProviderGkeGatewayEnum4 = ClosedEnum< + typeof DeploymentDetailResponseProviderGkeGatewayEnum4 +>; + +export type DeploymentDetailResponseProviderGkeGateway4 = { + provider: DeploymentDetailResponseProviderGkeGatewayEnum4; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const DeploymentDetailResponseProviderAwsAlbEnum4 = { + AwsAlb: "awsAlb", +} as const; +export type DeploymentDetailResponseProviderAwsAlbEnum4 = ClosedEnum< + typeof DeploymentDetailResponseProviderAwsAlbEnum4 +>; + +export type DeploymentDetailResponseProviderAwsAlb4 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: DeploymentDetailResponseProviderAwsAlbEnum4; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type DeploymentDetailResponseProviderUnion4 = + | DeploymentDetailResponseProviderAwsAlb4 + | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4 + | DeploymentDetailResponseProviderGkeGateway4 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type DeploymentDetailResponseRouteGateway2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | DeploymentDetailResponseProviderAwsAlb4 + | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4 + | DeploymentDetailResponseProviderGkeGateway4 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3 = + ClosedEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3 + >; + +export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3; + }; + +export const DeploymentDetailResponseProviderGkeGatewayEnum3 = { + GkeGateway: "gkeGateway", +} as const; +export type DeploymentDetailResponseProviderGkeGatewayEnum3 = ClosedEnum< + typeof DeploymentDetailResponseProviderGkeGatewayEnum3 +>; + +export type DeploymentDetailResponseProviderGkeGateway3 = { + provider: DeploymentDetailResponseProviderGkeGatewayEnum3; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const DeploymentDetailResponseProviderAwsAlbEnum3 = { + AwsAlb: "awsAlb", +} as const; +export type DeploymentDetailResponseProviderAwsAlbEnum3 = ClosedEnum< + typeof DeploymentDetailResponseProviderAwsAlbEnum3 +>; + +export type DeploymentDetailResponseProviderAwsAlb3 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: DeploymentDetailResponseProviderAwsAlbEnum3; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type DeploymentDetailResponseProviderUnion3 = + | DeploymentDetailResponseProviderAwsAlb3 + | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3 + | DeploymentDetailResponseProviderGkeGateway3 + | any; + +/** + * Shared Ingress route profile values. + */ +export type DeploymentDetailResponseRouteIngress2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | DeploymentDetailResponseProviderAwsAlb3 + | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3 + | DeploymentDetailResponseProviderGkeGateway3 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type DeploymentDetailResponseRouteUnion2 = + | DeploymentDetailResponseRouteIngress2 + | DeploymentDetailResponseRouteGateway2; + +export type DeploymentDetailResponseExposureCustom = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | DeploymentDetailResponseCertificateTLSSecretRef2 + | DeploymentDetailResponseCertificateManagedAcmImport2 + | DeploymentDetailResponseCertificateAwsAcmArn2 + | DeploymentDetailResponseCertificateManagedTLSSecret2 + | DeploymentDetailResponseCertificateNone2; + /** + * Hostname routed by the Kubernetes public endpoint. + */ + domain: string; + mode: DeploymentDetailResponseModeCustom; + /** + * Kubernetes route API selected for public endpoints. + */ + route: + | DeploymentDetailResponseRouteIngress2 + | DeploymentDetailResponseRouteGateway2; +}; + +export type DeploymentDetailResponseCertificateNone1 = { + mode: "none"; +}; + +export type DeploymentDetailResponseCertificateManagedTLSSecret1 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type DeploymentDetailResponseCertificateAwsAcmArn1 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type DeploymentDetailResponseCertificateManagedAcmImport1 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type DeploymentDetailResponseCertificateTLSSecretRef1 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type DeploymentDetailResponseCertificateUnion1 = + | DeploymentDetailResponseCertificateTLSSecretRef1 + | DeploymentDetailResponseCertificateManagedAcmImport1 + | DeploymentDetailResponseCertificateAwsAcmArn1 + | DeploymentDetailResponseCertificateManagedTLSSecret1 + | DeploymentDetailResponseCertificateNone1; + +export const DeploymentDetailResponseModeGenerated = { + Generated: "generated", +} as const; +export type DeploymentDetailResponseModeGenerated = ClosedEnum< + typeof DeploymentDetailResponseModeGenerated +>; + +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2 = + ClosedEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2 + >; + +export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2; + }; + +export const DeploymentDetailResponseProviderGkeGatewayEnum2 = { + GkeGateway: "gkeGateway", +} as const; +export type DeploymentDetailResponseProviderGkeGatewayEnum2 = ClosedEnum< + typeof DeploymentDetailResponseProviderGkeGatewayEnum2 +>; + +export type DeploymentDetailResponseProviderGkeGateway2 = { + provider: DeploymentDetailResponseProviderGkeGatewayEnum2; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const DeploymentDetailResponseProviderAwsAlbEnum2 = { + AwsAlb: "awsAlb", +} as const; +export type DeploymentDetailResponseProviderAwsAlbEnum2 = ClosedEnum< + typeof DeploymentDetailResponseProviderAwsAlbEnum2 +>; + +export type DeploymentDetailResponseProviderAwsAlb2 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: DeploymentDetailResponseProviderAwsAlbEnum2; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type DeploymentDetailResponseProviderUnion2 = + | DeploymentDetailResponseProviderAwsAlb2 + | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2 + | DeploymentDetailResponseProviderGkeGateway2 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type DeploymentDetailResponseRouteGateway1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | DeploymentDetailResponseProviderAwsAlb2 + | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2 + | DeploymentDetailResponseProviderGkeGateway2 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1 = + ClosedEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1 + >; + +export type DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1; + }; + +export const DeploymentDetailResponseProviderGkeGatewayEnum1 = { + GkeGateway: "gkeGateway", +} as const; +export type DeploymentDetailResponseProviderGkeGatewayEnum1 = ClosedEnum< + typeof DeploymentDetailResponseProviderGkeGatewayEnum1 +>; + +export type DeploymentDetailResponseProviderGkeGateway1 = { + provider: DeploymentDetailResponseProviderGkeGatewayEnum1; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const DeploymentDetailResponseProviderAwsAlbEnum1 = { + AwsAlb: "awsAlb", +} as const; +export type DeploymentDetailResponseProviderAwsAlbEnum1 = ClosedEnum< + typeof DeploymentDetailResponseProviderAwsAlbEnum1 +>; + +export type DeploymentDetailResponseProviderAwsAlb1 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: DeploymentDetailResponseProviderAwsAlbEnum1; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type DeploymentDetailResponseProviderUnion1 = + | DeploymentDetailResponseProviderAwsAlb1 + | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1 + | DeploymentDetailResponseProviderGkeGateway1 + | any; + +/** + * Shared Ingress route profile values. + */ +export type DeploymentDetailResponseRouteIngress1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | DeploymentDetailResponseProviderAwsAlb1 + | DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1 + | DeploymentDetailResponseProviderGkeGateway1 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type DeploymentDetailResponseRouteUnion1 = + | DeploymentDetailResponseRouteIngress1 + | DeploymentDetailResponseRouteGateway1; + +export type DeploymentDetailResponseExposureGenerated = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | DeploymentDetailResponseCertificateTLSSecretRef1 + | DeploymentDetailResponseCertificateManagedAcmImport1 + | DeploymentDetailResponseCertificateAwsAcmArn1 + | DeploymentDetailResponseCertificateManagedTLSSecret1 + | DeploymentDetailResponseCertificateNone1; + mode: DeploymentDetailResponseModeGenerated; + /** + * Kubernetes route API selected for public endpoints. + */ + route: + | DeploymentDetailResponseRouteIngress1 + | DeploymentDetailResponseRouteGateway1; +}; + +export const DeploymentDetailResponseModeDisabled = { + Disabled: "disabled", +} as const; +export type DeploymentDetailResponseModeDisabled = ClosedEnum< + typeof DeploymentDetailResponseModeDisabled +>; + +export type DeploymentDetailResponseExposureDisabled = { + mode: DeploymentDetailResponseModeDisabled; +}; + +export type DeploymentDetailResponseExposureUnion = + | DeploymentDetailResponseExposureCustom + | DeploymentDetailResponseExposureGenerated + | DeploymentDetailResponseExposureDisabled + | any; + +/** + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. + */ +export type DeploymentDetailResponseKubernetes = { + cluster?: DeploymentDetailResponseCluster | any | null | undefined; + exposure?: + | DeploymentDetailResponseExposureCustom + | DeploymentDetailResponseExposureGenerated + | DeploymentDetailResponseExposureDisabled + | any + | null + | undefined; +}; + +export type DeploymentDetailResponseKubernetesUnion = + | DeploymentDetailResponseKubernetes + | any; + +export const DeploymentDetailResponseTypeByoVnetAzure = { + ByoVnetAzure: "byo-vnet-azure", +} as const; +export type DeploymentDetailResponseTypeByoVnetAzure = ClosedEnum< + typeof DeploymentDetailResponseTypeByoVnetAzure +>; + +export type DeploymentDetailResponseNetworkByoVnetAzure = { + /** + * Name of the dedicated classic Application Gateway subnet within the VNet. + */ + applicationGatewaySubnetName?: string | null | undefined; + /** + * Name of the private subnet within the VNet + */ + privateSubnetName: string; + /** + * Name of the public subnet within the VNet + */ + publicSubnetName: string; + type: DeploymentDetailResponseTypeByoVnetAzure; + /** + * The full resource ID of the existing VNet + */ + vnetResourceId: string; +}; + +export const DeploymentDetailResponseTypeByoVpcGcp = { + ByoVpcGcp: "byo-vpc-gcp", +} as const; +export type DeploymentDetailResponseTypeByoVpcGcp = ClosedEnum< + typeof DeploymentDetailResponseTypeByoVpcGcp +>; + +export type DeploymentDetailResponseNetworkByoVpcGcp = { + /** + * The name of the existing VPC network + */ + networkName: string; + /** + * The region of the subnet + */ + region: string; + /** + * The name of the subnet to use + */ + subnetName: string; + type: DeploymentDetailResponseTypeByoVpcGcp; +}; + +export const DeploymentDetailResponseTypeByoVpcAws = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type DeploymentDetailResponseTypeByoVpcAws = ClosedEnum< + typeof DeploymentDetailResponseTypeByoVpcAws +>; + +export type DeploymentDetailResponseNetworkByoVpcAws = { + /** + * IDs of private subnets + */ + privateSubnetIds: Array; + /** + * IDs of public subnets (required for public ingress) + */ + publicSubnetIds: Array; + /** + * Optional security group IDs to use + */ + securityGroupIds?: Array | undefined; + type: DeploymentDetailResponseTypeByoVpcAws; + /** + * The ID of the existing VPC + */ + vpcId: string; +}; + +export const DeploymentDetailResponseTypeCreate = { + Create: "create", +} as const; +export type DeploymentDetailResponseTypeCreate = ClosedEnum< + typeof DeploymentDetailResponseTypeCreate +>; + +export type DeploymentDetailResponseNetworkCreate = { + /** + * Number of availability zones (default: 2). + */ + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: DeploymentDetailResponseTypeCreate; +}; + +export const DeploymentDetailResponseTypeUseDefault = { + UseDefault: "use-default", +} as const; +export type DeploymentDetailResponseTypeUseDefault = ClosedEnum< + typeof DeploymentDetailResponseTypeUseDefault +>; + +export type DeploymentDetailResponseNetworkUseDefault = { + type: DeploymentDetailResponseTypeUseDefault; +}; + +export type DeploymentDetailResponseNetworkUnion = + | DeploymentDetailResponseNetworkByoVpcAws + | DeploymentDetailResponseNetworkByoVpcGcp + | DeploymentDetailResponseNetworkByoVnetAzure + | DeploymentDetailResponseNetworkUseDefault + | DeploymentDetailResponseNetworkCreate + | any; + +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export const DeploymentDetailResponseTelemetry = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export type DeploymentDetailResponseTelemetry = ClosedEnum< + typeof DeploymentDetailResponseTelemetry +>; + +/** + * How updates are delivered to the deployment. + */ +export const DeploymentDetailResponseUpdates = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How updates are delivered to the deployment. + */ +export type DeploymentDetailResponseUpdates = ClosedEnum< + typeof DeploymentDetailResponseUpdates +>; + +/** + * User-provided configuration (network, deployment model, approvals) + */ +export type DeploymentDetailResponseStackSettings = { + compute?: DeploymentDetailResponseCompute | any | null | undefined; + /** + * Deployment model: how updates are delivered to the remote environment. + */ + deploymentModel?: DeploymentDetailResponseDeploymentModel | undefined; + domains?: DeploymentDetailResponseDomains | any | null | undefined; + /** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ + externalBindings?: + | DeploymentDetailResponseExternalBindings + | null + | undefined; + /** + * How heartbeat health checks are handled. + */ + heartbeats?: DeploymentDetailResponseHeartbeats | undefined; + kubernetes?: DeploymentDetailResponseKubernetes | any | null | undefined; + network?: + | DeploymentDetailResponseNetworkByoVpcAws + | DeploymentDetailResponseNetworkByoVpcGcp + | DeploymentDetailResponseNetworkByoVnetAzure + | DeploymentDetailResponseNetworkUseDefault + | DeploymentDetailResponseNetworkCreate + | any + | null + | undefined; + /** + * How telemetry (logs, metrics, traces) is handled. + */ + telemetry?: DeploymentDetailResponseTelemetry | undefined; + /** + * How updates are delivered to the deployment. + */ + updates?: DeploymentDetailResponseUpdates | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const DeploymentDetailResponseStackStatePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type DeploymentDetailResponseStackStatePlatform = ClosedEnum< + typeof DeploymentDetailResponseStackStatePlatform +>; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type DeploymentDetailResponseStackStateConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const DeploymentDetailResponseControllerPlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type DeploymentDetailResponseControllerPlatformEnum = ClosedEnum< + typeof DeploymentDetailResponseControllerPlatformEnum +>; + +export type DeploymentDetailResponseControllerPlatformUnion = + | DeploymentDetailResponseControllerPlatformEnum + | any; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type DeploymentDetailResponseStackStateDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type DeploymentDetailResponseErrorStackState = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type DeploymentDetailResponseErrorUnion = + | DeploymentDetailResponseErrorStackState + | any; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const DeploymentDetailResponseLifecycleStackStateEnum = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type DeploymentDetailResponseLifecycleStackStateEnum = ClosedEnum< + typeof DeploymentDetailResponseLifecycleStackStateEnum +>; + +export type DeploymentDetailResponseLifecycleUnion = + | DeploymentDetailResponseLifecycleStackStateEnum + | any; + +/** + * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. + */ +export type DeploymentDetailResponseOutputs = { + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type DeploymentDetailResponseOutputsUnion = + | DeploymentDetailResponseOutputs + | any; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type DeploymentDetailResponsePreviousConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type DeploymentDetailResponsePreviousConfigUnion = + | DeploymentDetailResponsePreviousConfig + | any; + +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export const DeploymentDetailResponseStackStateStatus = { + Pending: "pending", + Provisioning: "provisioning", + ProvisionFailed: "provision-failed", + Running: "running", + Updating: "updating", + UpdateFailed: "update-failed", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + Deleted: "deleted", + RefreshFailed: "refresh-failed", +} as const; +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export type DeploymentDetailResponseStackStateStatus = ClosedEnum< + typeof DeploymentDetailResponseStackStateStatus +>; + +/** + * Represents the state of a single resource within the stack for a specific platform. + */ +export type DeploymentDetailResponseStackStateResources = { + /** + * The platform-specific resource controller that manages this resource's lifecycle. + * + * @remarks + * This is None when the resource status is Pending. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + internal?: any | null | undefined; + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: DeploymentDetailResponseStackStateConfig; + controllerPlatform?: + | DeploymentDetailResponseControllerPlatformEnum + | any + | null + | undefined; + /** + * Complete list of dependencies for this resource, including infrastructure dependencies. + * + * @remarks + * This preserves the full dependency information from the stack definition. + */ + dependencies?: + | Array + | undefined; + error?: DeploymentDetailResponseErrorStackState | any | null | undefined; + /** + * Stores the controller state that failed, used for manual retry operations. + * + * @remarks + * This allows resuming from the exact point where the failure occurred. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + lastFailedState?: any | null | undefined; + lifecycle?: + | DeploymentDetailResponseLifecycleStackStateEnum + | any + | null + | undefined; + outputs?: DeploymentDetailResponseOutputs | any | null | undefined; + previousConfig?: + | DeploymentDetailResponsePreviousConfig + | any + | null + | undefined; + /** + * Binding parameters for remote access. + * + * @remarks + * Only populated when the resource has `remote_access: true` in its ResourceEntry. + * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). + * Populated by controllers during provisioning using get_binding_params(). + */ + remoteBindingParams?: any | null | undefined; + /** + * Tracks consecutive retry attempts for the current state transition. + */ + retryAttempt?: number | undefined; + /** + * Represents the high-level status of a resource during its lifecycle. + */ + status: DeploymentDetailResponseStackStateStatus; + /** + * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + */ + type: string; +}; + +/** + * State of infrastructure components managed by this deployment + */ +export type DeploymentDetailResponseStackState = { + /** + * Represents the target cloud platform. + */ + platform: DeploymentDetailResponseStackStatePlatform; + /** + * A prefix used for resource naming to ensure uniqueness across deployments. + */ + resourcePrefix: string; + /** + * The state of individual resources, keyed by resource ID. + */ + resources: { [k: string]: DeploymentDetailResponseStackStateResources }; +}; + +export const DeploymentDetailResponseTypeStringList = { + StringList: "stringList", +} as const; +export type DeploymentDetailResponseTypeStringList = ClosedEnum< + typeof DeploymentDetailResponseTypeStringList +>; + +export type DeploymentDetailResponseDefaultStringList = { + type: DeploymentDetailResponseTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const DeploymentDetailResponseTypeBoolean = { + Boolean: "boolean", +} as const; +export type DeploymentDetailResponseTypeBoolean = ClosedEnum< + typeof DeploymentDetailResponseTypeBoolean +>; + +export type DeploymentDetailResponseDefaultBoolean = { + type: DeploymentDetailResponseTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const DeploymentDetailResponseTypeNumber = { + Number: "number", +} as const; +export type DeploymentDetailResponseTypeNumber = ClosedEnum< + typeof DeploymentDetailResponseTypeNumber +>; + +export type DeploymentDetailResponseDefaultNumber = { + type: DeploymentDetailResponseTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const DeploymentDetailResponseTypeString = { + String: "string", +} as const; +export type DeploymentDetailResponseTypeString = ClosedEnum< + typeof DeploymentDetailResponseTypeString +>; + +export type DeploymentDetailResponseDefaultString = { + type: DeploymentDetailResponseTypeString; + /** + * String default. + */ + value: string; +}; + +export type DeploymentDetailResponseDefaultUnion = + | DeploymentDetailResponseDefaultString + | DeploymentDetailResponseDefaultNumber + | DeploymentDetailResponseDefaultBoolean + | DeploymentDetailResponseDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const DeploymentDetailResponseTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type DeploymentDetailResponseTypeEnvEnum = ClosedEnum< + typeof DeploymentDetailResponseTypeEnvEnum +>; + +export type DeploymentDetailResponseTypeUnion = + | DeploymentDetailResponseTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type DeploymentDetailResponseEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: DeploymentDetailResponseTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const DeploymentDetailResponseKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type DeploymentDetailResponseKind = ClosedEnum< + typeof DeploymentDetailResponseKind +>; + +/** + * Represents the target cloud platform. + */ +export const DeploymentDetailResponsePreparedStackPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type DeploymentDetailResponsePreparedStackPlatform = ClosedEnum< + typeof DeploymentDetailResponsePreparedStackPlatform +>; + +/** + * Who can provide a stack input value. + */ +export const DeploymentDetailResponseProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type DeploymentDetailResponseProvidedBy = ClosedEnum< + typeof DeploymentDetailResponseProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type DeploymentDetailResponseValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type DeploymentDetailResponseValidationUnion = + | DeploymentDetailResponseValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type DeploymentDetailResponseInput = { + default?: + | DeploymentDetailResponseDefaultString + | DeploymentDetailResponseDefaultNumber + | DeploymentDetailResponseDefaultBoolean + | DeploymentDetailResponseDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: DeploymentDetailResponseKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: DeploymentDetailResponseValidation | any | null | undefined; +}; + +export const DeploymentDetailResponseManagementEnum = { + Auto: "auto", +} as const; +export type DeploymentDetailResponseManagementEnum = ClosedEnum< + typeof DeploymentDetailResponseManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type DeploymentDetailResponseOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentDetailResponseOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentDetailResponseOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: DeploymentDetailResponseOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: DeploymentDetailResponseOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const DeploymentDetailResponseOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type DeploymentDetailResponseOverrideEffect = ClosedEnum< + typeof DeploymentDetailResponseOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentDetailResponseOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type DeploymentDetailResponseOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentDetailResponseOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: DeploymentDetailResponseOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentDetailResponseOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** @internal */ +export const DeploymentDetailResponseStatus$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseStatus +> = z.enum(DeploymentDetailResponseStatus); + +/** @internal */ +export const DeploymentDetailResponsePlatform$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatform +> = z.enum(DeploymentDetailResponsePlatform); + +/** @internal */ +export const DeploymentDetailResponseBasePlatform$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseBasePlatform +> = z.enum(DeploymentDetailResponseBasePlatform); + +/** @internal */ +export const DeploymentDetailResponsePlatformTest$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatformTest +> = z.enum(DeploymentDetailResponsePlatformTest); + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoTest$inboundSchema: + z.ZodType = z.object({ + testId: z.string(), + platform: DeploymentDetailResponsePlatformTest$inboundSchema, + }); + +export function deploymentDetailResponseEnvironmentInfoTestFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoTest, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoTest$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoTest' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePlatformLocal$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatformLocal +> = z.enum(DeploymentDetailResponsePlatformLocal); + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema: + z.ZodType = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: DeploymentDetailResponsePlatformLocal$inboundSchema, + }); + +export function deploymentDetailResponseEnvironmentInfoLocalFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoLocal, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoLocal' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePlatformAzure$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatformAzure +> = z.enum(DeploymentDetailResponsePlatformAzure); + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema: + z.ZodType = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: DeploymentDetailResponsePlatformAzure$inboundSchema, + }); + +export function deploymentDetailResponseEnvironmentInfoAzureFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePlatformGcp$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatformGcp +> = z.enum(DeploymentDetailResponsePlatformGcp); + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema: + z.ZodType = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: DeploymentDetailResponsePlatformGcp$inboundSchema, + }); + +export function deploymentDetailResponseEnvironmentInfoGcpFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePlatformAws$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponsePlatformAws +> = z.enum(DeploymentDetailResponsePlatformAws); + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoAws$inboundSchema: + z.ZodType = z.object({ + accountId: z.string(), + region: z.string(), + platform: DeploymentDetailResponsePlatformAws$inboundSchema, + }); + +export function deploymentDetailResponseEnvironmentInfoAwsFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoAws, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoAws$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoAws' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseEnvironmentInfoUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentDetailResponseEnvironmentInfoGcp$inboundSchema), + z.lazy(() => DeploymentDetailResponseEnvironmentInfoAzure$inboundSchema), + z.lazy(() => DeploymentDetailResponseEnvironmentInfoLocal$inboundSchema), + z.lazy(() => DeploymentDetailResponseEnvironmentInfoAws$inboundSchema), + z.lazy(() => DeploymentDetailResponseEnvironmentInfoTest$inboundSchema), + z.any(), + ]); + +export function deploymentDetailResponseEnvironmentInfoUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseEnvironmentInfoUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseEnvironmentInfoUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseEnvironmentInfoUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePoolsAutoscale$inboundSchema: z.ZodType< + DeploymentDetailResponsePoolsAutoscale, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}); + +export function deploymentDetailResponsePoolsAutoscaleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePoolsAutoscale' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePoolsFixed$inboundSchema: z.ZodType< + DeploymentDetailResponsePoolsFixed, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}); + +export function deploymentDetailResponsePoolsFixedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePoolsFixed' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePoolsUnion$inboundSchema: z.ZodType< + DeploymentDetailResponsePoolsUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponsePoolsFixed$inboundSchema), + z.lazy(() => DeploymentDetailResponsePoolsAutoscale$inboundSchema), +]); + +export function deploymentDetailResponsePoolsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePoolsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCompute$inboundSchema: z.ZodType< + DeploymentDetailResponseCompute, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => DeploymentDetailResponsePoolsFixed$inboundSchema), + z.lazy(() => DeploymentDetailResponsePoolsAutoscale$inboundSchema), + ]), + ).optional(), +}); + +export function deploymentDetailResponseComputeFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseCompute$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseCompute' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseComputeUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseComputeUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseCompute$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseComputeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseComputeUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDeploymentModel$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseDeploymentModel +> = z.enum(DeploymentDetailResponseDeploymentModel); + +/** @internal */ +export const DeploymentDetailResponseAws$inboundSchema: z.ZodType< + DeploymentDetailResponseAws, + unknown +> = z.object({ + certificateArn: z.string(), +}); + +export function deploymentDetailResponseAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseAws' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseAwsUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseAwsUnion, + unknown +> = z.union([z.lazy(() => DeploymentDetailResponseAws$inboundSchema), z.any()]); + +export function deploymentDetailResponseAwsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseAwsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseAwsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseAzureStackSettings$inboundSchema: + z.ZodType = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), + }); + +export function deploymentDetailResponseAzureStackSettingsFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseAzureStackSettings, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseAzureStackSettings$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseAzureStackSettings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseAzureUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseAzureUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseAzureStackSettings$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseAzureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseAzureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseAzureUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseGcpStackSettings$inboundSchema: z.ZodType< + DeploymentDetailResponseGcpStackSettings, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function deploymentDetailResponseGcpStackSettingsFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseGcpStackSettings, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseGcpStackSettings$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseGcpStackSettings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseGcpUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseGcpUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseGcpStackSettings$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseGcpUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseGcpUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseGcpUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTlsSecretRef$inboundSchema: z.ZodType< + DeploymentDetailResponseTlsSecretRef, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function deploymentDetailResponseTlsSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseTlsSecretRef' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDomainsKubernetes$inboundSchema: z.ZodType< + DeploymentDetailResponseDomainsKubernetes, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => + DeploymentDetailResponseTlsSecretRef$inboundSchema + ), +}); + +export function deploymentDetailResponseDomainsKubernetesFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseDomainsKubernetes, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDomainsKubernetes$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseDomainsKubernetes' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDomainsKubernetesUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentDetailResponseDomainsKubernetes$inboundSchema), + z.any(), + ]); + +export function deploymentDetailResponseDomainsKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseDomainsKubernetesUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDomainsKubernetesUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseDomainsKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDomainsCertificate$inboundSchema: + z.ZodType = z.object({ + aws: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseAws$inboundSchema), + z.any(), + ]), + ).optional(), + azure: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseAzureStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + gcp: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseGcpStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseDomainsKubernetes$inboundSchema), + z.any(), + ]), + ).optional(), + }); + +export function deploymentDetailResponseDomainsCertificateFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseDomainsCertificate, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDomainsCertificate$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseDomainsCertificate' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCustomDomains$inboundSchema: z.ZodType< + DeploymentDetailResponseCustomDomains, + unknown +> = z.object({ + certificate: z.lazy(() => + DeploymentDetailResponseDomainsCertificate$inboundSchema + ), + domain: z.string(), +}); + +export function deploymentDetailResponseCustomDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseCustomDomains' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDomains$inboundSchema: z.ZodType< + DeploymentDetailResponseDomains, + unknown +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => DeploymentDetailResponseCustomDomains$inboundSchema), + ), + ).optional(), +}); + +export function deploymentDetailResponseDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseDomains' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDomainsUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseDomainsUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseDomains$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseDomainsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseDomainsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseExternalBindings$inboundSchema: z.ZodType< + DeploymentDetailResponseExternalBindings, + unknown +> = z.object({}); + +export function deploymentDetailResponseExternalBindingsFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseExternalBindings, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseExternalBindings$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseExternalBindings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseHeartbeats$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseHeartbeats +> = z.enum(DeploymentDetailResponseHeartbeats); + +/** @internal */ +export const DeploymentDetailResponseCloud$inboundSchema: z.ZodType< + DeploymentDetailResponseCloud, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function deploymentDetailResponseCloudFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseCloud$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseCloud' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCloudUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseCloudUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseCloud$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseCloudUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseCloudUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseOwnership$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseOwnership +> = z.enum(DeploymentDetailResponseOwnership); + +/** @internal */ +export const DeploymentDetailResponseCluster$inboundSchema: z.ZodType< + DeploymentDetailResponseCluster, + unknown +> = z.object({ + cloud: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseCloud$inboundSchema), + z.any(), + ]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: DeploymentDetailResponseOwnership$inboundSchema, +}); + +export function deploymentDetailResponseClusterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseCluster$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseCluster' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseClusterUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseClusterUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseCluster$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseClusterUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseClusterUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateNone2$inboundSchema: z.ZodType< + DeploymentDetailResponseCertificateNone2, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function deploymentDetailResponseCertificateNone2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateNone2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateNone2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateNone2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function deploymentDetailResponseCertificateManagedTLSSecret2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateManagedTLSSecret2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateManagedTLSSecret2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema: + z.ZodType = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function deploymentDetailResponseCertificateAwsAcmArn2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateAwsAcmArn2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateAwsAcmArn2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function deploymentDetailResponseCertificateManagedAcmImport2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateManagedAcmImport2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateManagedAcmImport2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema: + z.ZodType = z + .object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function deploymentDetailResponseCertificateTLSSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateTLSSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateTLSSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateUnion2$inboundSchema: z.ZodType< + DeploymentDetailResponseCertificateUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateNone2$inboundSchema), +]); + +export function deploymentDetailResponseCertificateUnion2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseModeCustom$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseModeCustom +> = z.enum(DeploymentDetailResponseModeCustom); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: + z.ZodEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4 + > = z.enum( + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: + z.ZodType< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, + }); + +export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers4FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGatewayEnum4$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderGkeGatewayEnum4, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGateway4$inboundSchema: + z.ZodType = z.object({ + provider: DeploymentDetailResponseProviderGkeGatewayEnum4$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function deploymentDetailResponseProviderGkeGateway4FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderGkeGateway4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderGkeGateway4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderGkeGateway4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlbEnum4$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderAwsAlbEnum4, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlb4$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderAwsAlb4, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentDetailResponseProviderAwsAlbEnum4$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentDetailResponseProviderAwsAlb4FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAwsAlb4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAwsAlb4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderAwsAlb4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderUnion4$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderUnion4, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway4$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseProviderUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderUnion4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteGateway2$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteGateway2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway4$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function deploymentDetailResponseRouteGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteGateway2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: + z.ZodEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3 + > = z.enum( + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema: + z.ZodType< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, + }); + +export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers3FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGatewayEnum3$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderGkeGatewayEnum3, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGateway3$inboundSchema: + z.ZodType = z.object({ + provider: DeploymentDetailResponseProviderGkeGatewayEnum3$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function deploymentDetailResponseProviderGkeGateway3FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderGkeGateway3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderGkeGateway3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderGkeGateway3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlbEnum3$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderAwsAlbEnum3, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlb3$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderAwsAlb3, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentDetailResponseProviderAwsAlbEnum3$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentDetailResponseProviderAwsAlb3FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAwsAlb3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAwsAlb3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderAwsAlb3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderUnion3$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderUnion3, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb3$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway3$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseProviderUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderUnion3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteIngress2$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteIngress2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb3$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway3$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function deploymentDetailResponseRouteIngress2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteIngress2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteIngress2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteUnion2$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseRouteIngress2$inboundSchema), + z.lazy(() => DeploymentDetailResponseRouteGateway2$inboundSchema), +]); + +export function deploymentDetailResponseRouteUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseExposureCustom$inboundSchema: z.ZodType< + DeploymentDetailResponseExposureCustom, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => + DeploymentDetailResponseCertificateTLSSecretRef2$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponseCertificateManagedAcmImport2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedTLSSecret2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateNone2$inboundSchema), + ]), + domain: z.string(), + mode: DeploymentDetailResponseModeCustom$inboundSchema, + route: z.union([ + z.lazy(() => DeploymentDetailResponseRouteIngress2$inboundSchema), + z.lazy(() => DeploymentDetailResponseRouteGateway2$inboundSchema), + ]), +}); + +export function deploymentDetailResponseExposureCustomFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseExposureCustom$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseExposureCustom' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateNone1$inboundSchema: z.ZodType< + DeploymentDetailResponseCertificateNone1, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function deploymentDetailResponseCertificateNone1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateNone1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateNone1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateNone1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function deploymentDetailResponseCertificateManagedTLSSecret1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateManagedTLSSecret1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateManagedTLSSecret1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema: + z.ZodType = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function deploymentDetailResponseCertificateAwsAcmArn1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateAwsAcmArn1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateAwsAcmArn1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function deploymentDetailResponseCertificateManagedAcmImport1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateManagedAcmImport1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateManagedAcmImport1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema: + z.ZodType = z + .object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function deploymentDetailResponseCertificateTLSSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateTLSSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateTLSSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseCertificateUnion1$inboundSchema: z.ZodType< + DeploymentDetailResponseCertificateUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateNone1$inboundSchema), +]); + +export function deploymentDetailResponseCertificateUnion1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseCertificateUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseCertificateUnion1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseCertificateUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseModeGenerated$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseModeGenerated +> = z.enum(DeploymentDetailResponseModeGenerated); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: + z.ZodEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2 + > = z.enum( + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema: + z.ZodType< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, + }); + +export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGatewayEnum2$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderGkeGatewayEnum2, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGateway2$inboundSchema: + z.ZodType = z.object({ + provider: DeploymentDetailResponseProviderGkeGatewayEnum2$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function deploymentDetailResponseProviderGkeGateway2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderGkeGateway2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderGkeGateway2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderGkeGateway2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlbEnum2$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderAwsAlbEnum2, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlb2$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderAwsAlb2, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentDetailResponseProviderAwsAlbEnum2$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentDetailResponseProviderAwsAlb2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAwsAlb2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAwsAlb2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderAwsAlb2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderUnion2$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb2$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway2$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseProviderUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteGateway1$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteGateway1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb2$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway2$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function deploymentDetailResponseRouteGateway1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteGateway1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteGateway1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: + z.ZodEnum< + typeof DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1 + > = z.enum( + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema: + z.ZodType< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentDetailResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, + }); + +export function deploymentDetailResponseProviderAzureApplicationGatewayForContainers1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGatewayEnum1$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderGkeGatewayEnum1, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderGkeGateway1$inboundSchema: + z.ZodType = z.object({ + provider: DeploymentDetailResponseProviderGkeGatewayEnum1$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function deploymentDetailResponseProviderGkeGateway1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderGkeGateway1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderGkeGateway1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderGkeGateway1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlbEnum1$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseProviderAwsAlbEnum1, + ); + +/** @internal */ +export const DeploymentDetailResponseProviderAwsAlb1$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderAwsAlb1, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentDetailResponseProviderAwsAlbEnum1$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentDetailResponseProviderAwsAlb1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseProviderAwsAlb1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderAwsAlb1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseProviderAwsAlb1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseProviderUnion1$inboundSchema: z.ZodType< + DeploymentDetailResponseProviderUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb1$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway1$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseProviderUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseProviderUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseProviderUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteIngress1$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteIngress1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseProviderAwsAlb1$inboundSchema), + z.lazy(() => + DeploymentDetailResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseProviderGkeGateway1$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function deploymentDetailResponseRouteIngress1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteIngress1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteIngress1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseRouteUnion1$inboundSchema: z.ZodType< + DeploymentDetailResponseRouteUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseRouteIngress1$inboundSchema), + z.lazy(() => DeploymentDetailResponseRouteGateway1$inboundSchema), +]); + +export function deploymentDetailResponseRouteUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseRouteUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseRouteUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseExposureGenerated$inboundSchema: z.ZodType< + DeploymentDetailResponseExposureGenerated, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => + DeploymentDetailResponseCertificateTLSSecretRef1$inboundSchema + ), + z.lazy(() => + DeploymentDetailResponseCertificateManagedAcmImport1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => + DeploymentDetailResponseCertificateManagedTLSSecret1$inboundSchema + ), + z.lazy(() => DeploymentDetailResponseCertificateNone1$inboundSchema), + ]), + mode: DeploymentDetailResponseModeGenerated$inboundSchema, + route: z.union([ + z.lazy(() => DeploymentDetailResponseRouteIngress1$inboundSchema), + z.lazy(() => DeploymentDetailResponseRouteGateway1$inboundSchema), + ]), +}); + +export function deploymentDetailResponseExposureGeneratedFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseExposureGenerated, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseExposureGenerated$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseExposureGenerated' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseModeDisabled$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseModeDisabled +> = z.enum(DeploymentDetailResponseModeDisabled); + +/** @internal */ +export const DeploymentDetailResponseExposureDisabled$inboundSchema: z.ZodType< + DeploymentDetailResponseExposureDisabled, + unknown +> = z.object({ + mode: DeploymentDetailResponseModeDisabled$inboundSchema, +}); + +export function deploymentDetailResponseExposureDisabledFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseExposureDisabled, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseExposureDisabled$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseExposureDisabled' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseExposureUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseExposureUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseExposureCustom$inboundSchema), + z.lazy(() => DeploymentDetailResponseExposureGenerated$inboundSchema), + z.lazy(() => DeploymentDetailResponseExposureDisabled$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseExposureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseExposureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseExposureUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseKubernetes$inboundSchema: z.ZodType< + DeploymentDetailResponseKubernetes, + unknown +> = z.object({ + cluster: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseCluster$inboundSchema), + z.any(), + ]), + ).optional(), + exposure: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseExposureCustom$inboundSchema), + z.lazy(() => DeploymentDetailResponseExposureGenerated$inboundSchema), + z.lazy(() => DeploymentDetailResponseExposureDisabled$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function deploymentDetailResponseKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseKubernetes' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseKubernetesUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseKubernetesUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseKubernetes$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseKubernetesUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseKubernetesUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeByoVnetAzure$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeByoVnetAzure +> = z.enum(DeploymentDetailResponseTypeByoVnetAzure); + +/** @internal */ +export const DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema: + z.ZodType = z.object({ + application_gateway_subnet_name: z.nullable(z.string()).optional(), + private_subnet_name: z.string(), + public_subnet_name: z.string(), + type: DeploymentDetailResponseTypeByoVnetAzure$inboundSchema, + vnet_resource_id: z.string(), + }).transform((v) => { + return remap$(v, { + "application_gateway_subnet_name": "applicationGatewaySubnetName", + "private_subnet_name": "privateSubnetName", + "public_subnet_name": "publicSubnetName", + "vnet_resource_id": "vnetResourceId", + }); + }); + +export function deploymentDetailResponseNetworkByoVnetAzureFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseNetworkByoVnetAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseNetworkByoVnetAzure' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeByoVpcGcp$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeByoVpcGcp +> = z.enum(DeploymentDetailResponseTypeByoVpcGcp); + +/** @internal */ +export const DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema: z.ZodType< + DeploymentDetailResponseNetworkByoVpcGcp, + unknown +> = z.object({ + network_name: z.string(), + region: z.string(), + subnet_name: z.string(), + type: DeploymentDetailResponseTypeByoVpcGcp$inboundSchema, +}).transform((v) => { + return remap$(v, { + "network_name": "networkName", + "subnet_name": "subnetName", + }); +}); + +export function deploymentDetailResponseNetworkByoVpcGcpFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseNetworkByoVpcGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseNetworkByoVpcGcp' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeByoVpcAws$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeByoVpcAws +> = z.enum(DeploymentDetailResponseTypeByoVpcAws); + +/** @internal */ +export const DeploymentDetailResponseNetworkByoVpcAws$inboundSchema: z.ZodType< + DeploymentDetailResponseNetworkByoVpcAws, + unknown +> = z.object({ + private_subnet_ids: z.array(z.string()), + public_subnet_ids: z.array(z.string()), + security_group_ids: z.array(z.string()).optional(), + type: DeploymentDetailResponseTypeByoVpcAws$inboundSchema, + vpc_id: z.string(), +}).transform((v) => { + return remap$(v, { + "private_subnet_ids": "privateSubnetIds", + "public_subnet_ids": "publicSubnetIds", + "security_group_ids": "securityGroupIds", + "vpc_id": "vpcId", + }); +}); + +export function deploymentDetailResponseNetworkByoVpcAwsFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseNetworkByoVpcAws, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkByoVpcAws$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseNetworkByoVpcAws' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeCreate$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeCreate +> = z.enum(DeploymentDetailResponseTypeCreate); + +/** @internal */ +export const DeploymentDetailResponseNetworkCreate$inboundSchema: z.ZodType< + DeploymentDetailResponseNetworkCreate, + unknown +> = z.object({ + availability_zones: z.int().optional(), + cidr: z.nullable(z.string()).optional(), + type: DeploymentDetailResponseTypeCreate$inboundSchema, +}).transform((v) => { + return remap$(v, { + "availability_zones": "availabilityZones", + }); +}); + +export function deploymentDetailResponseNetworkCreateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkCreate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseNetworkCreate' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeUseDefault$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeUseDefault +> = z.enum(DeploymentDetailResponseTypeUseDefault); + +/** @internal */ +export const DeploymentDetailResponseNetworkUseDefault$inboundSchema: z.ZodType< + DeploymentDetailResponseNetworkUseDefault, + unknown +> = z.object({ + type: DeploymentDetailResponseTypeUseDefault$inboundSchema, +}); + +export function deploymentDetailResponseNetworkUseDefaultFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseNetworkUseDefault, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkUseDefault$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseNetworkUseDefault' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseNetworkUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseNetworkUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseNetworkByoVpcAws$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkUseDefault$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkCreate$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseNetworkUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseNetworkUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseNetworkUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTelemetry$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTelemetry +> = z.enum(DeploymentDetailResponseTelemetry); + +/** @internal */ +export const DeploymentDetailResponseUpdates$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseUpdates +> = z.enum(DeploymentDetailResponseUpdates); + +/** @internal */ +export const DeploymentDetailResponseStackSettings$inboundSchema: z.ZodType< + DeploymentDetailResponseStackSettings, + unknown +> = z.object({ + compute: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseCompute$inboundSchema), + z.any(), + ]), + ).optional(), + deploymentModel: DeploymentDetailResponseDeploymentModel$inboundSchema + .optional(), + domains: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseDomains$inboundSchema), + z.any(), + ]), + ).optional(), + externalBindings: z.nullable( + z.lazy(() => DeploymentDetailResponseExternalBindings$inboundSchema), + ).optional(), + heartbeats: DeploymentDetailResponseHeartbeats$inboundSchema.optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseKubernetes$inboundSchema), + z.any(), + ]), + ).optional(), + network: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseNetworkByoVpcAws$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkByoVpcGcp$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkByoVnetAzure$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkUseDefault$inboundSchema), + z.lazy(() => DeploymentDetailResponseNetworkCreate$inboundSchema), + z.any(), + ]), + ).optional(), + telemetry: DeploymentDetailResponseTelemetry$inboundSchema.optional(), + updates: DeploymentDetailResponseUpdates$inboundSchema.optional(), +}); + +export function deploymentDetailResponseStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseStackSettings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseStackStatePlatform$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseStackStatePlatform, + ); + +/** @internal */ +export const DeploymentDetailResponseStackStateConfig$inboundSchema: z.ZodType< + DeploymentDetailResponseStackStateConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function deploymentDetailResponseStackStateConfigFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseStackStateConfig, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseStackStateConfig$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseStackStateConfig' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseControllerPlatformEnum$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseControllerPlatformEnum, + ); + +/** @internal */ +export const DeploymentDetailResponseControllerPlatformUnion$inboundSchema: + z.ZodType = z.union( + [DeploymentDetailResponseControllerPlatformEnum$inboundSchema, z.any()], + ); + +export function deploymentDetailResponseControllerPlatformUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseControllerPlatformUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseControllerPlatformUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseControllerPlatformUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseStackStateDependency$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + type: z.string(), + }); + +export function deploymentDetailResponseStackStateDependencyFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseStackStateDependency, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseStackStateDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseStackStateDependency' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseErrorStackState$inboundSchema: z.ZodType< + DeploymentDetailResponseErrorStackState, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function deploymentDetailResponseErrorStackStateFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseErrorStackState, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseErrorStackState$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseErrorStackState' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseErrorUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseErrorUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseErrorStackState$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseErrorUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseErrorUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponseLifecycleStackStateEnum, + ); + +/** @internal */ +export const DeploymentDetailResponseLifecycleUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseLifecycleUnion, + unknown +> = z.union([ + DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema, + z.any(), +]); + +export function deploymentDetailResponseLifecycleUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseLifecycleUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseOutputs$inboundSchema: z.ZodType< + DeploymentDetailResponseOutputs, + unknown +> = collectExtraKeys$( + z.object({ + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function deploymentDetailResponseOutputsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseOutputs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseOutputs' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseOutputsUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseOutputsUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseOutputs$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseOutputsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseOutputsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePreviousConfig$inboundSchema: z.ZodType< + DeploymentDetailResponsePreviousConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function deploymentDetailResponsePreviousConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponsePreviousConfig' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponsePreviousConfigUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => DeploymentDetailResponsePreviousConfig$inboundSchema), + z.any(), + ]); + +export function deploymentDetailResponsePreviousConfigUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponsePreviousConfigUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponsePreviousConfigUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponsePreviousConfigUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseStackStateStatus$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseStackStateStatus +> = z.enum(DeploymentDetailResponseStackStateStatus); + +/** @internal */ +export const DeploymentDetailResponseStackStateResources$inboundSchema: + z.ZodType = z.object({ + _internal: z.nullable(z.any()).optional(), + config: z.lazy(() => + DeploymentDetailResponseStackStateConfig$inboundSchema + ), + controllerPlatform: z.nullable( + z.union([ + DeploymentDetailResponseControllerPlatformEnum$inboundSchema, + z.any(), + ]), + ).optional(), + dependencies: z.array( + z.lazy(() => DeploymentDetailResponseStackStateDependency$inboundSchema), + ).optional(), + error: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseErrorStackState$inboundSchema), + z.any(), + ]), + ).optional(), + lastFailedState: z.nullable(z.any()).optional(), + lifecycle: z.nullable( + z.union([ + DeploymentDetailResponseLifecycleStackStateEnum$inboundSchema, + z.any(), + ]), + ).optional(), + outputs: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseOutputs$inboundSchema), + z.any(), + ]), + ).optional(), + previousConfig: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponsePreviousConfig$inboundSchema), + z.any(), + ]), + ).optional(), + remoteBindingParams: z.nullable(z.any()).optional(), + retryAttempt: z.int().optional(), + status: DeploymentDetailResponseStackStateStatus$inboundSchema, + type: z.string(), + }).transform((v) => { + return remap$(v, { + "_internal": "internal", + }); + }); + +export function deploymentDetailResponseStackStateResourcesFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseStackStateResources, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseStackStateResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseStackStateResources' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseStackState$inboundSchema: z.ZodType< + DeploymentDetailResponseStackState, + unknown +> = z.object({ + platform: DeploymentDetailResponseStackStatePlatform$inboundSchema, + resourcePrefix: z.string(), + resources: z.record( + z.string(), + z.lazy(() => DeploymentDetailResponseStackStateResources$inboundSchema), + ), +}); + +export function deploymentDetailResponseStackStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseStackState' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeStringList$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeStringList +> = z.enum(DeploymentDetailResponseTypeStringList); + +/** @internal */ +export const DeploymentDetailResponseDefaultStringList$inboundSchema: z.ZodType< + DeploymentDetailResponseDefaultStringList, + unknown +> = z.object({ + type: DeploymentDetailResponseTypeStringList$inboundSchema, + value: z.array(z.string()), +}); + +export function deploymentDetailResponseDefaultStringListFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseDefaultStringList, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseDefaultStringList' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeBoolean$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeBoolean +> = z.enum(DeploymentDetailResponseTypeBoolean); + +/** @internal */ +export const DeploymentDetailResponseDefaultBoolean$inboundSchema: z.ZodType< + DeploymentDetailResponseDefaultBoolean, + unknown +> = z.object({ + type: DeploymentDetailResponseTypeBoolean$inboundSchema, + value: z.boolean(), +}); + +export function deploymentDetailResponseDefaultBooleanFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDefaultBoolean$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseDefaultBoolean' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeNumber$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeNumber +> = z.enum(DeploymentDetailResponseTypeNumber); + +/** @internal */ +export const DeploymentDetailResponseDefaultNumber$inboundSchema: z.ZodType< + DeploymentDetailResponseDefaultNumber, + unknown +> = z.object({ + type: DeploymentDetailResponseTypeNumber$inboundSchema, + value: z.string(), +}); + +export function deploymentDetailResponseDefaultNumberFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDefaultNumber$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseDefaultNumber' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeString$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeString +> = z.enum(DeploymentDetailResponseTypeString); + +/** @internal */ +export const DeploymentDetailResponseDefaultString$inboundSchema: z.ZodType< + DeploymentDetailResponseDefaultString, + unknown +> = z.object({ + type: DeploymentDetailResponseTypeString$inboundSchema, + value: z.string(), +}); + +export function deploymentDetailResponseDefaultStringFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDefaultString$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseDefaultString' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseDefaultUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseDefaultUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseDefaultString$inboundSchema), + z.lazy(() => DeploymentDetailResponseDefaultNumber$inboundSchema), + z.lazy(() => DeploymentDetailResponseDefaultBoolean$inboundSchema), + z.lazy(() => DeploymentDetailResponseDefaultStringList$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseDefaultUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseTypeEnvEnum$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseTypeEnvEnum +> = z.enum(DeploymentDetailResponseTypeEnvEnum); + +/** @internal */ +export const DeploymentDetailResponseTypeUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseTypeUnion, + unknown +> = z.union([DeploymentDetailResponseTypeEnvEnum$inboundSchema, z.any()]); + +export function deploymentDetailResponseTypeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseTypeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseEnv$inboundSchema: z.ZodType< + DeploymentDetailResponseEnv, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([DeploymentDetailResponseTypeEnvEnum$inboundSchema, z.any()]), + ).optional(), +}); + +export function deploymentDetailResponseEnvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseEnv' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseKind$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseKind +> = z.enum(DeploymentDetailResponseKind); + +/** @internal */ +export const DeploymentDetailResponsePreparedStackPlatform$inboundSchema: + z.ZodEnum = z.enum( + DeploymentDetailResponsePreparedStackPlatform, + ); + +/** @internal */ +export const DeploymentDetailResponseProvidedBy$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseProvidedBy +> = z.enum(DeploymentDetailResponseProvidedBy); + +/** @internal */ +export const DeploymentDetailResponseValidation$inboundSchema: z.ZodType< + DeploymentDetailResponseValidation, + unknown +> = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), +}); + +export function deploymentDetailResponseValidationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseValidation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseValidation' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseValidationUnion$inboundSchema: z.ZodType< + DeploymentDetailResponseValidationUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDetailResponseValidation$inboundSchema), + z.any(), +]); + +export function deploymentDetailResponseValidationUnionFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseValidationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseValidationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseInput$inboundSchema: z.ZodType< + DeploymentDetailResponseInput, + unknown +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseDefaultString$inboundSchema), + z.lazy(() => DeploymentDetailResponseDefaultNumber$inboundSchema), + z.lazy(() => DeploymentDetailResponseDefaultBoolean$inboundSchema), + z.lazy(() => DeploymentDetailResponseDefaultStringList$inboundSchema), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array(z.lazy(() => DeploymentDetailResponseEnv$inboundSchema)) + .optional(), + id: z.string(), + kind: DeploymentDetailResponseKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(DeploymentDetailResponsePreparedStackPlatform$inboundSchema), + ).optional(), + providedBy: z.array(DeploymentDetailResponseProvidedBy$inboundSchema), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => DeploymentDetailResponseValidation$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function deploymentDetailResponseInputFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDetailResponseInput$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseInput' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseManagementEnum$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseManagementEnum +> = z.enum(DeploymentDetailResponseManagementEnum); + +/** @internal */ +export const DeploymentDetailResponseOverrideAwResource$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function deploymentDetailResponseOverrideAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseOverrideAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseOverrideAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseOverrideAwResource' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseOverrideAwStack$inboundSchema: z.ZodType< + DeploymentDetailResponseOverrideAwStack, + unknown +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function deploymentDetailResponseOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseOverrideAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseOverrideAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseOverrideAwStack' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseOverrideAwBinding$inboundSchema: z.ZodType< + DeploymentDetailResponseOverrideAwBinding, + unknown +> = z.object({ + resource: z.lazy(() => + DeploymentDetailResponseOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => DeploymentDetailResponseOverrideAwStack$inboundSchema) + .optional(), +}); + +export function deploymentDetailResponseOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseOverrideAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseOverrideAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseOverrideEffect$inboundSchema: z.ZodEnum< + typeof DeploymentDetailResponseOverrideEffect +> = z.enum(DeploymentDetailResponseOverrideEffect); + +/** @internal */ +export const DeploymentDetailResponseOverrideAwGrant$inboundSchema: z.ZodType< + DeploymentDetailResponseOverrideAwGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function deploymentDetailResponseOverrideAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + DeploymentDetailResponseOverrideAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseOverrideAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'DeploymentDetailResponseOverrideAwGrant' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDetailResponseOverrideAw$inboundSchema: z.ZodType< + DeploymentDetailResponseOverrideAw, + unknown +> = z.object({ + binding: z.lazy(() => + DeploymentDetailResponseOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: DeploymentDetailResponseOverrideEffect$inboundSchema.optional(), + grant: z.lazy(() => DeploymentDetailResponseOverrideAwGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function deploymentDetailResponseOverrideAwFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentDetailResponseOverrideAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDetailResponseOverrideAw' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/deploymentlistitemresponse.ts b/client-sdks/platform/typescript/src/models/deploymentlistitemresponse.ts index 22a72651e..7b6348a3d 100644 --- a/client-sdks/platform/typescript/src/models/deploymentlistitemresponse.ts +++ b/client-sdks/platform/typescript/src/models/deploymentlistitemresponse.ts @@ -308,6 +308,49 @@ export type DeploymentListItemResponseError = { source?: any | null | undefined; }; +/** + * Agent host OS + */ +export const DeploymentListItemResponseAgentOs = { + Linux: "linux", + Macos: "macos", + Windows: "windows", +} as const; +/** + * Agent host OS + */ +export type DeploymentListItemResponseAgentOs = ClosedEnum< + typeof DeploymentListItemResponseAgentOs +>; + +/** + * Agent host architecture + */ +export const DeploymentListItemResponseAgentArch = { + X8664: "x86_64", + Aarch64: "aarch64", +} as const; +/** + * Agent host architecture + */ +export type DeploymentListItemResponseAgentArch = ClosedEnum< + typeof DeploymentListItemResponseAgentArch +>; + +/** + * Supervisor regime: os-service or kubernetes + */ +export const DeploymentListItemResponseRegime = { + OsService: "os-service", + Kubernetes: "kubernetes", +} as const; +/** + * Supervisor regime: os-service or kubernetes + */ +export type DeploymentListItemResponseRegime = ClosedEnum< + typeof DeploymentListItemResponseRegime +>; + export type DeploymentListItemResponse = { /** * Unique identifier for the deployment. @@ -404,6 +447,30 @@ export type DeploymentListItemResponse = { * Unique identifier for the workspace. */ workspaceId: string; + /** + * Agent binary version reported on the last sync + */ + agentVersion?: string | null | undefined; + /** + * Agent host OS + */ + agentOs?: DeploymentListItemResponseAgentOs | null | undefined; + /** + * Agent host architecture + */ + agentArch?: DeploymentListItemResponseAgentArch | null | undefined; + /** + * Supervisor regime: os-service or kubernetes + */ + regime?: DeploymentListItemResponseRegime | null | undefined; + /** + * Container image repository the agent was pulled from (no tag) + */ + agentImageRepository?: string | null | undefined; + /** + * Pinned target agent version (semver) for upgrade-driven sync + */ + targetAgentVersion?: string | null | undefined; release?: DeploymentReleaseInfo | null | undefined; deploymentGroup?: DeploymentGroupInfo | undefined; project?: DeploymentProjectInfo | undefined; @@ -632,6 +699,21 @@ export function deploymentListItemResponseErrorFromJSON( ); } +/** @internal */ +export const DeploymentListItemResponseAgentOs$inboundSchema: z.ZodEnum< + typeof DeploymentListItemResponseAgentOs +> = z.enum(DeploymentListItemResponseAgentOs); + +/** @internal */ +export const DeploymentListItemResponseAgentArch$inboundSchema: z.ZodEnum< + typeof DeploymentListItemResponseAgentArch +> = z.enum(DeploymentListItemResponseAgentArch); + +/** @internal */ +export const DeploymentListItemResponseRegime$inboundSchema: z.ZodEnum< + typeof DeploymentListItemResponseRegime +> = z.enum(DeploymentListItemResponseRegime); + /** @internal */ export const DeploymentListItemResponse$inboundSchema: z.ZodType< DeploymentListItemResponse, @@ -682,6 +764,14 @@ export const DeploymentListItemResponse$inboundSchema: z.ZodType< updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), managerId: z.string(), workspaceId: z.string(), + agentVersion: z.nullable(z.string()).optional(), + agentOs: z.nullable(DeploymentListItemResponseAgentOs$inboundSchema) + .optional(), + agentArch: z.nullable(DeploymentListItemResponseAgentArch$inboundSchema) + .optional(), + regime: z.nullable(DeploymentListItemResponseRegime$inboundSchema).optional(), + agentImageRepository: z.nullable(z.string()).optional(), + targetAgentVersion: z.nullable(z.string()).optional(), release: z.nullable(DeploymentReleaseInfo$inboundSchema).optional(), deploymentGroup: DeploymentGroupInfo$inboundSchema.optional(), project: DeploymentProjectInfo$inboundSchema.optional(), diff --git a/client-sdks/platform/typescript/src/models/deploymentoverrideaw.ts b/client-sdks/platform/typescript/src/models/deploymentoverrideaw.ts new file mode 100644 index 000000000..023d53e3d --- /dev/null +++ b/client-sdks/platform/typescript/src/models/deploymentoverrideaw.ts @@ -0,0 +1,4366 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { + collectExtraKeys as collectExtraKeys$, + safeParse, +} from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +/** + * Deployment status in the deployment lifecycle + */ +export const DeploymentStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", +} as const; +/** + * Deployment status in the deployment lifecycle + */ +export type DeploymentStatus = ClosedEnum; + +/** + * Target platform for the deployment + */ +export const DeploymentPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Target platform for the deployment + */ +export type DeploymentPlatform = ClosedEnum; + +/** + * Underlying cloud platform for Kubernetes deployments. + */ +export const DeploymentBasePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", +} as const; +/** + * Underlying cloud platform for Kubernetes deployments. + */ +export type DeploymentBasePlatform = ClosedEnum; + +export const DeploymentPlatformTest = { + Test: "test", +} as const; +export type DeploymentPlatformTest = ClosedEnum; + +/** + * Test platform environment information (mock) + */ +export type DeploymentEnvironmentInfoTest = { + /** + * Test identifier for this environment + */ + testId: string; + platform: DeploymentPlatformTest; +}; + +export const DeploymentPlatformLocal = { + Local: "local", +} as const; +export type DeploymentPlatformLocal = ClosedEnum< + typeof DeploymentPlatformLocal +>; + +/** + * Local platform environment information + */ +export type DeploymentEnvironmentInfoLocal = { + /** + * Architecture (e.g., "x86_64", "aarch64") + */ + arch: string; + /** + * Hostname of the machine running the deployment + */ + hostname: string; + /** + * Operating system (e.g., "linux", "macos", "windows") + */ + os: string; + platform: DeploymentPlatformLocal; +}; + +export const DeploymentPlatformAzure = { + Azure: "azure", +} as const; +export type DeploymentPlatformAzure = ClosedEnum< + typeof DeploymentPlatformAzure +>; + +/** + * Azure-specific environment information + */ +export type DeploymentEnvironmentInfoAzure = { + /** + * Azure location/region + */ + location: string; + /** + * Azure subscription ID + */ + subscriptionId: string; + /** + * Azure tenant ID + */ + tenantId: string; + platform: DeploymentPlatformAzure; +}; + +export const DeploymentPlatformGcp = { + Gcp: "gcp", +} as const; +export type DeploymentPlatformGcp = ClosedEnum; + +/** + * GCP-specific environment information + */ +export type DeploymentEnvironmentInfoGcp = { + /** + * GCP project ID (e.g., "my-project") + */ + projectId: string; + /** + * GCP project number (e.g., "123456789012") + */ + projectNumber: string; + /** + * GCP region + */ + region: string; + platform: DeploymentPlatformGcp; +}; + +export const DeploymentPlatformAws = { + Aws: "aws", +} as const; +export type DeploymentPlatformAws = ClosedEnum; + +/** + * AWS-specific environment information + */ +export type DeploymentEnvironmentInfoAws = { + /** + * AWS account ID + */ + accountId: string; + /** + * AWS region + */ + region: string; + platform: DeploymentPlatformAws; +}; + +/** + * Cloud environment information + */ +export type DeploymentEnvironmentInfoUnion = + | DeploymentEnvironmentInfoGcp + | DeploymentEnvironmentInfoAzure + | DeploymentEnvironmentInfoLocal + | DeploymentEnvironmentInfoAws + | DeploymentEnvironmentInfoTest + | any; + +export type DeploymentPoolsAutoscale = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Maximum machine count. + */ + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; +}; + +export type DeploymentPoolsFixed = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Number of machines to run. + */ + machines: number; + mode: "fixed"; +}; + +/** + * User-selected deployment settings for one compute pool. + */ +export type DeploymentPoolsUnion = + | DeploymentPoolsFixed + | DeploymentPoolsAutoscale; + +/** + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. + */ +export type DeploymentCompute = { + /** + * Selected compute choices keyed by pool ID. + */ + pools?: + | { [k: string]: DeploymentPoolsFixed | DeploymentPoolsAutoscale } + | undefined; +}; + +export type DeploymentComputeUnion = DeploymentCompute | any; + +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export const DeploymentDeploymentModel = { + Push: "push", + Pull: "pull", +} as const; +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export type DeploymentDeploymentModel = ClosedEnum< + typeof DeploymentDeploymentModel +>; + +export type DeploymentAws = { + certificateArn: string; +}; + +export type DeploymentAwsUnion = DeploymentAws | any; + +export type DeploymentAzureStackSettings = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +export type DeploymentAzureUnion = DeploymentAzureStackSettings | any; + +export type DeploymentGcpStackSettings = { + certificateName: string; +}; + +export type DeploymentGcpUnion = DeploymentGcpStackSettings | any; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type DeploymentTlsSecretRef = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; +}; + +export type DeploymentDomainsKubernetes = { + /** + * Namespace-scoped Kubernetes TLS Secret reference. + */ + tlsSecretRef: DeploymentTlsSecretRef; +}; + +export type DeploymentDomainsKubernetesUnion = + | DeploymentDomainsKubernetes + | any; + +/** + * Platform-specific certificate references for custom domains. + */ +export type DeploymentDomainsCertificate = { + aws?: DeploymentAws | any | null | undefined; + azure?: DeploymentAzureStackSettings | any | null | undefined; + gcp?: DeploymentGcpStackSettings | any | null | undefined; + kubernetes?: DeploymentDomainsKubernetes | any | null | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type DeploymentCustomDomains = { + /** + * Platform-specific certificate references for custom domains. + */ + certificate: DeploymentDomainsCertificate; + /** + * Fully qualified domain name to use. + */ + domain: string; +}; + +/** + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. + */ +export type DeploymentDomains = { + /** + * Custom domain configuration per resource ID. + */ + customDomains?: { [k: string]: DeploymentCustomDomains } | null | undefined; +}; + +export type DeploymentDomainsUnion = DeploymentDomains | any; + +/** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ +export type DeploymentExternalBindings = {}; + +/** + * How heartbeat health checks are handled. + */ +export const DeploymentHeartbeats = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type DeploymentHeartbeats = ClosedEnum; + +/** + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + */ +export type DeploymentCloud = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +export type DeploymentCloudUnion = DeploymentCloud | any; + +/** + * Ownership model for the Kubernetes cluster. + */ +export const DeploymentOwnership = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type DeploymentOwnership = ClosedEnum; + +/** + * Kubernetes cluster setup settings. + */ +export type DeploymentCluster = { + cloud?: DeploymentCloud | any | null | undefined; + /** + * Namespace where the Alien chart and application resources run. + */ + namespace?: string | null | undefined; + /** + * Ownership model for the Kubernetes cluster. + */ + ownership: DeploymentOwnership; +}; + +export type DeploymentClusterUnion = DeploymentCluster | any; + +export type DeploymentCertificateNone2 = { + mode: "none"; +}; + +export type DeploymentCertificateManagedTLSSecret2 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type DeploymentCertificateAwsAcmArn2 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type DeploymentCertificateManagedAcmImport2 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type DeploymentCertificateTLSSecretRef2 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type DeploymentCertificateUnion2 = + | DeploymentCertificateTLSSecretRef2 + | DeploymentCertificateManagedAcmImport2 + | DeploymentCertificateAwsAcmArn2 + | DeploymentCertificateManagedTLSSecret2 + | DeploymentCertificateNone2; + +export const DeploymentModeCustom = { + Custom: "custom", +} as const; +export type DeploymentModeCustom = ClosedEnum; + +export const DeploymentProviderAzureApplicationGatewayForContainersEnum4 = { + AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", +} as const; +export type DeploymentProviderAzureApplicationGatewayForContainersEnum4 = + ClosedEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum4 + >; + +export type DeploymentProviderAzureApplicationGatewayForContainers4 = { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: DeploymentProviderAzureApplicationGatewayForContainersEnum4; +}; + +export const DeploymentProviderGkeGatewayEnum4 = { + GkeGateway: "gkeGateway", +} as const; +export type DeploymentProviderGkeGatewayEnum4 = ClosedEnum< + typeof DeploymentProviderGkeGatewayEnum4 +>; + +export type DeploymentProviderGkeGateway4 = { + provider: DeploymentProviderGkeGatewayEnum4; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const DeploymentProviderAwsAlbEnum4 = { + AwsAlb: "awsAlb", +} as const; +export type DeploymentProviderAwsAlbEnum4 = ClosedEnum< + typeof DeploymentProviderAwsAlbEnum4 +>; + +export type DeploymentProviderAwsAlb4 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: DeploymentProviderAwsAlbEnum4; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type DeploymentProviderUnion4 = + | DeploymentProviderAwsAlb4 + | DeploymentProviderAzureApplicationGatewayForContainers4 + | DeploymentProviderGkeGateway4 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type DeploymentRouteGateway2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | DeploymentProviderAwsAlb4 + | DeploymentProviderAzureApplicationGatewayForContainers4 + | DeploymentProviderGkeGateway4 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const DeploymentProviderAzureApplicationGatewayForContainersEnum3 = { + AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", +} as const; +export type DeploymentProviderAzureApplicationGatewayForContainersEnum3 = + ClosedEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum3 + >; + +export type DeploymentProviderAzureApplicationGatewayForContainers3 = { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: DeploymentProviderAzureApplicationGatewayForContainersEnum3; +}; + +export const DeploymentProviderGkeGatewayEnum3 = { + GkeGateway: "gkeGateway", +} as const; +export type DeploymentProviderGkeGatewayEnum3 = ClosedEnum< + typeof DeploymentProviderGkeGatewayEnum3 +>; + +export type DeploymentProviderGkeGateway3 = { + provider: DeploymentProviderGkeGatewayEnum3; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const DeploymentProviderAwsAlbEnum3 = { + AwsAlb: "awsAlb", +} as const; +export type DeploymentProviderAwsAlbEnum3 = ClosedEnum< + typeof DeploymentProviderAwsAlbEnum3 +>; + +export type DeploymentProviderAwsAlb3 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: DeploymentProviderAwsAlbEnum3; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type DeploymentProviderUnion3 = + | DeploymentProviderAwsAlb3 + | DeploymentProviderAzureApplicationGatewayForContainers3 + | DeploymentProviderGkeGateway3 + | any; + +/** + * Shared Ingress route profile values. + */ +export type DeploymentRouteIngress2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | DeploymentProviderAwsAlb3 + | DeploymentProviderAzureApplicationGatewayForContainers3 + | DeploymentProviderGkeGateway3 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type DeploymentRouteUnion2 = + | DeploymentRouteIngress2 + | DeploymentRouteGateway2; + +export type DeploymentExposureCustom = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | DeploymentCertificateTLSSecretRef2 + | DeploymentCertificateManagedAcmImport2 + | DeploymentCertificateAwsAcmArn2 + | DeploymentCertificateManagedTLSSecret2 + | DeploymentCertificateNone2; + /** + * Hostname routed by the Kubernetes public endpoint. + */ + domain: string; + mode: DeploymentModeCustom; + /** + * Kubernetes route API selected for public endpoints. + */ + route: DeploymentRouteIngress2 | DeploymentRouteGateway2; +}; + +export type DeploymentCertificateNone1 = { + mode: "none"; +}; + +export type DeploymentCertificateManagedTLSSecret1 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type DeploymentCertificateAwsAcmArn1 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type DeploymentCertificateManagedAcmImport1 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type DeploymentCertificateTLSSecretRef1 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type DeploymentCertificateUnion1 = + | DeploymentCertificateTLSSecretRef1 + | DeploymentCertificateManagedAcmImport1 + | DeploymentCertificateAwsAcmArn1 + | DeploymentCertificateManagedTLSSecret1 + | DeploymentCertificateNone1; + +export const DeploymentModeGenerated = { + Generated: "generated", +} as const; +export type DeploymentModeGenerated = ClosedEnum< + typeof DeploymentModeGenerated +>; + +export const DeploymentProviderAzureApplicationGatewayForContainersEnum2 = { + AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", +} as const; +export type DeploymentProviderAzureApplicationGatewayForContainersEnum2 = + ClosedEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum2 + >; + +export type DeploymentProviderAzureApplicationGatewayForContainers2 = { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: DeploymentProviderAzureApplicationGatewayForContainersEnum2; +}; + +export const DeploymentProviderGkeGatewayEnum2 = { + GkeGateway: "gkeGateway", +} as const; +export type DeploymentProviderGkeGatewayEnum2 = ClosedEnum< + typeof DeploymentProviderGkeGatewayEnum2 +>; + +export type DeploymentProviderGkeGateway2 = { + provider: DeploymentProviderGkeGatewayEnum2; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const DeploymentProviderAwsAlbEnum2 = { + AwsAlb: "awsAlb", +} as const; +export type DeploymentProviderAwsAlbEnum2 = ClosedEnum< + typeof DeploymentProviderAwsAlbEnum2 +>; + +export type DeploymentProviderAwsAlb2 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: DeploymentProviderAwsAlbEnum2; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type DeploymentProviderUnion2 = + | DeploymentProviderAwsAlb2 + | DeploymentProviderAzureApplicationGatewayForContainers2 + | DeploymentProviderGkeGateway2 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type DeploymentRouteGateway1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | DeploymentProviderAwsAlb2 + | DeploymentProviderAzureApplicationGatewayForContainers2 + | DeploymentProviderGkeGateway2 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const DeploymentProviderAzureApplicationGatewayForContainersEnum1 = { + AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", +} as const; +export type DeploymentProviderAzureApplicationGatewayForContainersEnum1 = + ClosedEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum1 + >; + +export type DeploymentProviderAzureApplicationGatewayForContainers1 = { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: DeploymentProviderAzureApplicationGatewayForContainersEnum1; +}; + +export const DeploymentProviderGkeGatewayEnum1 = { + GkeGateway: "gkeGateway", +} as const; +export type DeploymentProviderGkeGatewayEnum1 = ClosedEnum< + typeof DeploymentProviderGkeGatewayEnum1 +>; + +export type DeploymentProviderGkeGateway1 = { + provider: DeploymentProviderGkeGatewayEnum1; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const DeploymentProviderAwsAlbEnum1 = { + AwsAlb: "awsAlb", +} as const; +export type DeploymentProviderAwsAlbEnum1 = ClosedEnum< + typeof DeploymentProviderAwsAlbEnum1 +>; + +export type DeploymentProviderAwsAlb1 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: DeploymentProviderAwsAlbEnum1; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type DeploymentProviderUnion1 = + | DeploymentProviderAwsAlb1 + | DeploymentProviderAzureApplicationGatewayForContainers1 + | DeploymentProviderGkeGateway1 + | any; + +/** + * Shared Ingress route profile values. + */ +export type DeploymentRouteIngress1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | DeploymentProviderAwsAlb1 + | DeploymentProviderAzureApplicationGatewayForContainers1 + | DeploymentProviderGkeGateway1 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type DeploymentRouteUnion1 = + | DeploymentRouteIngress1 + | DeploymentRouteGateway1; + +export type DeploymentExposureGenerated = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | DeploymentCertificateTLSSecretRef1 + | DeploymentCertificateManagedAcmImport1 + | DeploymentCertificateAwsAcmArn1 + | DeploymentCertificateManagedTLSSecret1 + | DeploymentCertificateNone1; + mode: DeploymentModeGenerated; + /** + * Kubernetes route API selected for public endpoints. + */ + route: DeploymentRouteIngress1 | DeploymentRouteGateway1; +}; + +export const DeploymentModeDisabled = { + Disabled: "disabled", +} as const; +export type DeploymentModeDisabled = ClosedEnum; + +export type DeploymentExposureDisabled = { + mode: DeploymentModeDisabled; +}; + +export type DeploymentExposureUnion = + | DeploymentExposureCustom + | DeploymentExposureGenerated + | DeploymentExposureDisabled + | any; + +/** + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. + */ +export type DeploymentKubernetes = { + cluster?: DeploymentCluster | any | null | undefined; + exposure?: + | DeploymentExposureCustom + | DeploymentExposureGenerated + | DeploymentExposureDisabled + | any + | null + | undefined; +}; + +export type DeploymentKubernetesUnion = DeploymentKubernetes | any; + +export const DeploymentTypeByoVnetAzure = { + ByoVnetAzure: "byo-vnet-azure", +} as const; +export type DeploymentTypeByoVnetAzure = ClosedEnum< + typeof DeploymentTypeByoVnetAzure +>; + +export type DeploymentNetworkByoVnetAzure = { + /** + * Name of the dedicated classic Application Gateway subnet within the VNet. + */ + applicationGatewaySubnetName?: string | null | undefined; + /** + * Name of the private subnet within the VNet + */ + privateSubnetName: string; + /** + * Name of the public subnet within the VNet + */ + publicSubnetName: string; + type: DeploymentTypeByoVnetAzure; + /** + * The full resource ID of the existing VNet + */ + vnetResourceId: string; +}; + +export const DeploymentTypeByoVpcGcp = { + ByoVpcGcp: "byo-vpc-gcp", +} as const; +export type DeploymentTypeByoVpcGcp = ClosedEnum< + typeof DeploymentTypeByoVpcGcp +>; + +export type DeploymentNetworkByoVpcGcp = { + /** + * The name of the existing VPC network + */ + networkName: string; + /** + * The region of the subnet + */ + region: string; + /** + * The name of the subnet to use + */ + subnetName: string; + type: DeploymentTypeByoVpcGcp; +}; + +export const DeploymentTypeByoVpcAws = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type DeploymentTypeByoVpcAws = ClosedEnum< + typeof DeploymentTypeByoVpcAws +>; + +export type DeploymentNetworkByoVpcAws = { + /** + * IDs of private subnets + */ + privateSubnetIds: Array; + /** + * IDs of public subnets (required for public ingress) + */ + publicSubnetIds: Array; + /** + * Optional security group IDs to use + */ + securityGroupIds?: Array | undefined; + type: DeploymentTypeByoVpcAws; + /** + * The ID of the existing VPC + */ + vpcId: string; +}; + +export const DeploymentTypeCreate = { + Create: "create", +} as const; +export type DeploymentTypeCreate = ClosedEnum; + +export type DeploymentNetworkCreate = { + /** + * Number of availability zones (default: 2). + */ + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: DeploymentTypeCreate; +}; + +export const DeploymentTypeUseDefault = { + UseDefault: "use-default", +} as const; +export type DeploymentTypeUseDefault = ClosedEnum< + typeof DeploymentTypeUseDefault +>; + +export type DeploymentNetworkUseDefault = { + type: DeploymentTypeUseDefault; +}; + +export type DeploymentNetworkUnion = + | DeploymentNetworkByoVpcAws + | DeploymentNetworkByoVpcGcp + | DeploymentNetworkByoVnetAzure + | DeploymentNetworkUseDefault + | DeploymentNetworkCreate + | any; + +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export const DeploymentTelemetry = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export type DeploymentTelemetry = ClosedEnum; + +/** + * How updates are delivered to the deployment. + */ +export const DeploymentUpdates = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How updates are delivered to the deployment. + */ +export type DeploymentUpdates = ClosedEnum; + +/** + * User-provided configuration (network, deployment model, approvals) + */ +export type DeploymentStackSettings = { + compute?: DeploymentCompute | any | null | undefined; + /** + * Deployment model: how updates are delivered to the remote environment. + */ + deploymentModel?: DeploymentDeploymentModel | undefined; + domains?: DeploymentDomains | any | null | undefined; + /** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ + externalBindings?: DeploymentExternalBindings | null | undefined; + /** + * How heartbeat health checks are handled. + */ + heartbeats?: DeploymentHeartbeats | undefined; + kubernetes?: DeploymentKubernetes | any | null | undefined; + network?: + | DeploymentNetworkByoVpcAws + | DeploymentNetworkByoVpcGcp + | DeploymentNetworkByoVnetAzure + | DeploymentNetworkUseDefault + | DeploymentNetworkCreate + | any + | null + | undefined; + /** + * How telemetry (logs, metrics, traces) is handled. + */ + telemetry?: DeploymentTelemetry | undefined; + /** + * How updates are delivered to the deployment. + */ + updates?: DeploymentUpdates | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const DeploymentStackStatePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type DeploymentStackStatePlatform = ClosedEnum< + typeof DeploymentStackStatePlatform +>; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type DeploymentStackStateConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const DeploymentControllerPlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type DeploymentControllerPlatformEnum = ClosedEnum< + typeof DeploymentControllerPlatformEnum +>; + +export type DeploymentControllerPlatformUnion = + | DeploymentControllerPlatformEnum + | any; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type DeploymentStackStateDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type DeploymentErrorStackState = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type DeploymentErrorUnion = DeploymentErrorStackState | any; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const DeploymentLifecycleStackStateEnum = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type DeploymentLifecycleStackStateEnum = ClosedEnum< + typeof DeploymentLifecycleStackStateEnum +>; + +export type DeploymentLifecycleUnion = DeploymentLifecycleStackStateEnum | any; + +/** + * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. + */ +export type DeploymentOutputs = { + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type DeploymentOutputsUnion = DeploymentOutputs | any; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type DeploymentPreviousConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type DeploymentPreviousConfigUnion = DeploymentPreviousConfig | any; + +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export const DeploymentStackStateStatus = { + Pending: "pending", + Provisioning: "provisioning", + ProvisionFailed: "provision-failed", + Running: "running", + Updating: "updating", + UpdateFailed: "update-failed", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + Deleted: "deleted", + RefreshFailed: "refresh-failed", +} as const; +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export type DeploymentStackStateStatus = ClosedEnum< + typeof DeploymentStackStateStatus +>; + +/** + * Represents the state of a single resource within the stack for a specific platform. + */ +export type DeploymentStackStateResources = { + /** + * The platform-specific resource controller that manages this resource's lifecycle. + * + * @remarks + * This is None when the resource status is Pending. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + internal?: any | null | undefined; + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: DeploymentStackStateConfig; + controllerPlatform?: + | DeploymentControllerPlatformEnum + | any + | null + | undefined; + /** + * Complete list of dependencies for this resource, including infrastructure dependencies. + * + * @remarks + * This preserves the full dependency information from the stack definition. + */ + dependencies?: Array | undefined; + error?: DeploymentErrorStackState | any | null | undefined; + /** + * Stores the controller state that failed, used for manual retry operations. + * + * @remarks + * This allows resuming from the exact point where the failure occurred. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + lastFailedState?: any | null | undefined; + lifecycle?: DeploymentLifecycleStackStateEnum | any | null | undefined; + outputs?: DeploymentOutputs | any | null | undefined; + previousConfig?: DeploymentPreviousConfig | any | null | undefined; + /** + * Binding parameters for remote access. + * + * @remarks + * Only populated when the resource has `remote_access: true` in its ResourceEntry. + * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). + * Populated by controllers during provisioning using get_binding_params(). + */ + remoteBindingParams?: any | null | undefined; + /** + * Tracks consecutive retry attempts for the current state transition. + */ + retryAttempt?: number | undefined; + /** + * Represents the high-level status of a resource during its lifecycle. + */ + status: DeploymentStackStateStatus; + /** + * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + */ + type: string; +}; + +/** + * State of infrastructure components managed by this deployment + */ +export type DeploymentStackState = { + /** + * Represents the target cloud platform. + */ + platform: DeploymentStackStatePlatform; + /** + * A prefix used for resource naming to ensure uniqueness across deployments. + */ + resourcePrefix: string; + /** + * The state of individual resources, keyed by resource ID. + */ + resources: { [k: string]: DeploymentStackStateResources }; +}; + +export const DeploymentTypeStringList = { + StringList: "stringList", +} as const; +export type DeploymentTypeStringList = ClosedEnum< + typeof DeploymentTypeStringList +>; + +export type DeploymentDefaultStringList = { + type: DeploymentTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const DeploymentTypeBoolean = { + Boolean: "boolean", +} as const; +export type DeploymentTypeBoolean = ClosedEnum; + +export type DeploymentDefaultBoolean = { + type: DeploymentTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const DeploymentTypeNumber = { + Number: "number", +} as const; +export type DeploymentTypeNumber = ClosedEnum; + +export type DeploymentDefaultNumber = { + type: DeploymentTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const DeploymentTypeString = { + String: "string", +} as const; +export type DeploymentTypeString = ClosedEnum; + +export type DeploymentDefaultString = { + type: DeploymentTypeString; + /** + * String default. + */ + value: string; +}; + +export type DeploymentDefaultUnion = + | DeploymentDefaultString + | DeploymentDefaultNumber + | DeploymentDefaultBoolean + | DeploymentDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const DeploymentTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type DeploymentTypeEnvEnum = ClosedEnum; + +export type DeploymentTypeUnion = DeploymentTypeEnvEnum | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type DeploymentEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: DeploymentTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const DeploymentKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type DeploymentKind = ClosedEnum; + +/** + * Represents the target cloud platform. + */ +export const DeploymentPreparedStackPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type DeploymentPreparedStackPlatform = ClosedEnum< + typeof DeploymentPreparedStackPlatform +>; + +/** + * Who can provide a stack input value. + */ +export const DeploymentProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type DeploymentProvidedBy = ClosedEnum; + +/** + * Portable stack input validation constraints. + */ +export type DeploymentValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type DeploymentValidationUnion = DeploymentValidation | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type DeploymentInput = { + default?: + | DeploymentDefaultString + | DeploymentDefaultNumber + | DeploymentDefaultBoolean + | DeploymentDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: DeploymentKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: Array | null | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: DeploymentValidation | any | null | undefined; +}; + +export const DeploymentManagementEnum = { + Auto: "auto", +} as const; +export type DeploymentManagementEnum = ClosedEnum< + typeof DeploymentManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type DeploymentOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type DeploymentOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type DeploymentOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: DeploymentOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: DeploymentOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const DeploymentOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type DeploymentOverrideEffect = ClosedEnum< + typeof DeploymentOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type DeploymentOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type DeploymentOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: DeploymentOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: DeploymentOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: DeploymentOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** @internal */ +export const DeploymentStatus$inboundSchema: z.ZodEnum< + typeof DeploymentStatus +> = z.enum(DeploymentStatus); + +/** @internal */ +export const DeploymentPlatform$inboundSchema: z.ZodEnum< + typeof DeploymentPlatform +> = z.enum(DeploymentPlatform); + +/** @internal */ +export const DeploymentBasePlatform$inboundSchema: z.ZodEnum< + typeof DeploymentBasePlatform +> = z.enum(DeploymentBasePlatform); + +/** @internal */ +export const DeploymentPlatformTest$inboundSchema: z.ZodEnum< + typeof DeploymentPlatformTest +> = z.enum(DeploymentPlatformTest); + +/** @internal */ +export const DeploymentEnvironmentInfoTest$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoTest, + unknown +> = z.object({ + testId: z.string(), + platform: DeploymentPlatformTest$inboundSchema, +}); + +export function deploymentEnvironmentInfoTestFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoTest$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoTest' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPlatformLocal$inboundSchema: z.ZodEnum< + typeof DeploymentPlatformLocal +> = z.enum(DeploymentPlatformLocal); + +/** @internal */ +export const DeploymentEnvironmentInfoLocal$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoLocal, + unknown +> = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: DeploymentPlatformLocal$inboundSchema, +}); + +export function deploymentEnvironmentInfoLocalFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoLocal$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoLocal' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPlatformAzure$inboundSchema: z.ZodEnum< + typeof DeploymentPlatformAzure +> = z.enum(DeploymentPlatformAzure); + +/** @internal */ +export const DeploymentEnvironmentInfoAzure$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoAzure, + unknown +> = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: DeploymentPlatformAzure$inboundSchema, +}); + +export function deploymentEnvironmentInfoAzureFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPlatformGcp$inboundSchema: z.ZodEnum< + typeof DeploymentPlatformGcp +> = z.enum(DeploymentPlatformGcp); + +/** @internal */ +export const DeploymentEnvironmentInfoGcp$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoGcp, + unknown +> = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: DeploymentPlatformGcp$inboundSchema, +}); + +export function deploymentEnvironmentInfoGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPlatformAws$inboundSchema: z.ZodEnum< + typeof DeploymentPlatformAws +> = z.enum(DeploymentPlatformAws); + +/** @internal */ +export const DeploymentEnvironmentInfoAws$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoAws, + unknown +> = z.object({ + accountId: z.string(), + region: z.string(), + platform: DeploymentPlatformAws$inboundSchema, +}); + +export function deploymentEnvironmentInfoAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoAws' from JSON`, + ); +} + +/** @internal */ +export const DeploymentEnvironmentInfoUnion$inboundSchema: z.ZodType< + DeploymentEnvironmentInfoUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentEnvironmentInfoGcp$inboundSchema), + z.lazy(() => DeploymentEnvironmentInfoAzure$inboundSchema), + z.lazy(() => DeploymentEnvironmentInfoLocal$inboundSchema), + z.lazy(() => DeploymentEnvironmentInfoAws$inboundSchema), + z.lazy(() => DeploymentEnvironmentInfoTest$inboundSchema), + z.any(), +]); + +export function deploymentEnvironmentInfoUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnvironmentInfoUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnvironmentInfoUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPoolsAutoscale$inboundSchema: z.ZodType< + DeploymentPoolsAutoscale, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}); + +export function deploymentPoolsAutoscaleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentPoolsAutoscale$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPoolsAutoscale' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPoolsFixed$inboundSchema: z.ZodType< + DeploymentPoolsFixed, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}); + +export function deploymentPoolsFixedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentPoolsFixed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPoolsFixed' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPoolsUnion$inboundSchema: z.ZodType< + DeploymentPoolsUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentPoolsFixed$inboundSchema), + z.lazy(() => DeploymentPoolsAutoscale$inboundSchema), +]); + +export function deploymentPoolsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentPoolsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPoolsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCompute$inboundSchema: z.ZodType< + DeploymentCompute, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => DeploymentPoolsFixed$inboundSchema), + z.lazy(() => DeploymentPoolsAutoscale$inboundSchema), + ]), + ).optional(), +}); + +export function deploymentComputeFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCompute$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCompute' from JSON`, + ); +} + +/** @internal */ +export const DeploymentComputeUnion$inboundSchema: z.ZodType< + DeploymentComputeUnion, + unknown +> = z.union([z.lazy(() => DeploymentCompute$inboundSchema), z.any()]); + +export function deploymentComputeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentComputeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentComputeUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDeploymentModel$inboundSchema: z.ZodEnum< + typeof DeploymentDeploymentModel +> = z.enum(DeploymentDeploymentModel); + +/** @internal */ +export const DeploymentAws$inboundSchema: z.ZodType = z + .object({ + certificateArn: z.string(), + }); + +export function deploymentAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentAws' from JSON`, + ); +} + +/** @internal */ +export const DeploymentAwsUnion$inboundSchema: z.ZodType< + DeploymentAwsUnion, + unknown +> = z.union([z.lazy(() => DeploymentAws$inboundSchema), z.any()]); + +export function deploymentAwsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentAwsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentAwsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentAzureStackSettings$inboundSchema: z.ZodType< + DeploymentAzureStackSettings, + unknown +> = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), +}); + +export function deploymentAzureStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentAzureStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentAzureStackSettings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentAzureUnion$inboundSchema: z.ZodType< + DeploymentAzureUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentAzureStackSettings$inboundSchema), + z.any(), +]); + +export function deploymentAzureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentAzureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentAzureUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentGcpStackSettings$inboundSchema: z.ZodType< + DeploymentGcpStackSettings, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function deploymentGcpStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentGcpStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentGcpStackSettings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentGcpUnion$inboundSchema: z.ZodType< + DeploymentGcpUnion, + unknown +> = z.union([z.lazy(() => DeploymentGcpStackSettings$inboundSchema), z.any()]); + +export function deploymentGcpUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentGcpUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentGcpUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTlsSecretRef$inboundSchema: z.ZodType< + DeploymentTlsSecretRef, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function deploymentTlsSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentTlsSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentTlsSecretRef' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDomainsKubernetes$inboundSchema: z.ZodType< + DeploymentDomainsKubernetes, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => DeploymentTlsSecretRef$inboundSchema), +}); + +export function deploymentDomainsKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDomainsKubernetes' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDomainsKubernetesUnion$inboundSchema: z.ZodType< + DeploymentDomainsKubernetesUnion, + unknown +> = z.union([z.lazy(() => DeploymentDomainsKubernetes$inboundSchema), z.any()]); + +export function deploymentDomainsKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDomainsKubernetesUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDomainsKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDomainsCertificate$inboundSchema: z.ZodType< + DeploymentDomainsCertificate, + unknown +> = z.object({ + aws: z.nullable(z.union([z.lazy(() => DeploymentAws$inboundSchema), z.any()])) + .optional(), + azure: z.nullable( + z.union([ + z.lazy(() => DeploymentAzureStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + gcp: z.nullable( + z.union([z.lazy(() => DeploymentGcpStackSettings$inboundSchema), z.any()]), + ).optional(), + kubernetes: z.nullable( + z.union([z.lazy(() => DeploymentDomainsKubernetes$inboundSchema), z.any()]), + ).optional(), +}); + +export function deploymentDomainsCertificateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDomainsCertificate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDomainsCertificate' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCustomDomains$inboundSchema: z.ZodType< + DeploymentCustomDomains, + unknown +> = z.object({ + certificate: z.lazy(() => DeploymentDomainsCertificate$inboundSchema), + domain: z.string(), +}); + +export function deploymentCustomDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCustomDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCustomDomains' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDomains$inboundSchema: z.ZodType< + DeploymentDomains, + unknown +> = z.object({ + customDomains: z.nullable( + z.record(z.string(), z.lazy(() => DeploymentCustomDomains$inboundSchema)), + ).optional(), +}); + +export function deploymentDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDomains' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDomainsUnion$inboundSchema: z.ZodType< + DeploymentDomainsUnion, + unknown +> = z.union([z.lazy(() => DeploymentDomains$inboundSchema), z.any()]); + +export function deploymentDomainsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDomainsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDomainsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentExternalBindings$inboundSchema: z.ZodType< + DeploymentExternalBindings, + unknown +> = z.object({}); + +export function deploymentExternalBindingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentExternalBindings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentExternalBindings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentHeartbeats$inboundSchema: z.ZodEnum< + typeof DeploymentHeartbeats +> = z.enum(DeploymentHeartbeats); + +/** @internal */ +export const DeploymentCloud$inboundSchema: z.ZodType< + DeploymentCloud, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function deploymentCloudFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCloud$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCloud' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCloudUnion$inboundSchema: z.ZodType< + DeploymentCloudUnion, + unknown +> = z.union([z.lazy(() => DeploymentCloud$inboundSchema), z.any()]); + +export function deploymentCloudUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCloudUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCloudUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentOwnership$inboundSchema: z.ZodEnum< + typeof DeploymentOwnership +> = z.enum(DeploymentOwnership); + +/** @internal */ +export const DeploymentCluster$inboundSchema: z.ZodType< + DeploymentCluster, + unknown +> = z.object({ + cloud: z.nullable( + z.union([z.lazy(() => DeploymentCloud$inboundSchema), z.any()]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: DeploymentOwnership$inboundSchema, +}); + +export function deploymentClusterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCluster$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCluster' from JSON`, + ); +} + +/** @internal */ +export const DeploymentClusterUnion$inboundSchema: z.ZodType< + DeploymentClusterUnion, + unknown +> = z.union([z.lazy(() => DeploymentCluster$inboundSchema), z.any()]); + +export function deploymentClusterUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentClusterUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentClusterUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateNone2$inboundSchema: z.ZodType< + DeploymentCertificateNone2, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function deploymentCertificateNone2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateNone2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateNone2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateManagedTLSSecret2$inboundSchema: z.ZodType< + DeploymentCertificateManagedTLSSecret2, + unknown +> = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), +}); + +export function deploymentCertificateManagedTLSSecret2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateManagedTLSSecret2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateManagedTLSSecret2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateAwsAcmArn2$inboundSchema: z.ZodType< + DeploymentCertificateAwsAcmArn2, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function deploymentCertificateAwsAcmArn2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateAwsAcmArn2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateAwsAcmArn2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateManagedAcmImport2$inboundSchema: z.ZodType< + DeploymentCertificateManagedAcmImport2, + unknown +> = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), +}); + +export function deploymentCertificateManagedAcmImport2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateManagedAcmImport2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateManagedAcmImport2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateTLSSecretRef2$inboundSchema: z.ZodType< + DeploymentCertificateTLSSecretRef2, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), +}); + +export function deploymentCertificateTLSSecretRef2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateTLSSecretRef2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateTLSSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateUnion2$inboundSchema: z.ZodType< + DeploymentCertificateUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => DeploymentCertificateManagedAcmImport2$inboundSchema), + z.lazy(() => DeploymentCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => DeploymentCertificateManagedTLSSecret2$inboundSchema), + z.lazy(() => DeploymentCertificateNone2$inboundSchema), +]); + +export function deploymentCertificateUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentModeCustom$inboundSchema: z.ZodEnum< + typeof DeploymentModeCustom +> = z.enum(DeploymentModeCustom); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: + z.ZodEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum4 + > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum4); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema: + z.ZodType = + z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, + }); + +export function deploymentProviderAzureApplicationGatewayForContainers4FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentProviderAzureApplicationGatewayForContainers4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderGkeGatewayEnum4$inboundSchema: z.ZodEnum< + typeof DeploymentProviderGkeGatewayEnum4 +> = z.enum(DeploymentProviderGkeGatewayEnum4); + +/** @internal */ +export const DeploymentProviderGkeGateway4$inboundSchema: z.ZodType< + DeploymentProviderGkeGateway4, + unknown +> = z.object({ + provider: DeploymentProviderGkeGatewayEnum4$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function deploymentProviderGkeGateway4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderGkeGateway4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderGkeGateway4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< + typeof DeploymentProviderAwsAlbEnum4 +> = z.enum(DeploymentProviderAwsAlbEnum4); + +/** @internal */ +export const DeploymentProviderAwsAlb4$inboundSchema: z.ZodType< + DeploymentProviderAwsAlb4, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentProviderAwsAlbEnum4$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentProviderAwsAlb4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAwsAlb4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderUnion4$inboundSchema: z.ZodType< + DeploymentProviderUnion4, + unknown +> = z.union([ + z.lazy(() => DeploymentProviderAwsAlb4$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway4$inboundSchema), + z.any(), +]); + +export function deploymentProviderUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderUnion4' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteGateway2$inboundSchema: z.ZodType< + DeploymentRouteGateway2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentProviderAwsAlb4$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway4$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function deploymentRouteGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteGateway2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: + z.ZodEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum3 + > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum3); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema: + z.ZodType = + z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, + }); + +export function deploymentProviderAzureApplicationGatewayForContainers3FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentProviderAzureApplicationGatewayForContainers3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderGkeGatewayEnum3$inboundSchema: z.ZodEnum< + typeof DeploymentProviderGkeGatewayEnum3 +> = z.enum(DeploymentProviderGkeGatewayEnum3); + +/** @internal */ +export const DeploymentProviderGkeGateway3$inboundSchema: z.ZodType< + DeploymentProviderGkeGateway3, + unknown +> = z.object({ + provider: DeploymentProviderGkeGatewayEnum3$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function deploymentProviderGkeGateway3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderGkeGateway3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderGkeGateway3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAwsAlbEnum3$inboundSchema: z.ZodEnum< + typeof DeploymentProviderAwsAlbEnum3 +> = z.enum(DeploymentProviderAwsAlbEnum3); + +/** @internal */ +export const DeploymentProviderAwsAlb3$inboundSchema: z.ZodType< + DeploymentProviderAwsAlb3, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentProviderAwsAlbEnum3$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentProviderAwsAlb3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderAwsAlb3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAwsAlb3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderUnion3$inboundSchema: z.ZodType< + DeploymentProviderUnion3, + unknown +> = z.union([ + z.lazy(() => DeploymentProviderAwsAlb3$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway3$inboundSchema), + z.any(), +]); + +export function deploymentProviderUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderUnion3' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteIngress2$inboundSchema: z.ZodType< + DeploymentRouteIngress2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentProviderAwsAlb3$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway3$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function deploymentRouteIngress2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteIngress2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteIngress2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteUnion2$inboundSchema: z.ZodType< + DeploymentRouteUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentRouteIngress2$inboundSchema), + z.lazy(() => DeploymentRouteGateway2$inboundSchema), +]); + +export function deploymentRouteUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentExposureCustom$inboundSchema: z.ZodType< + DeploymentExposureCustom, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => DeploymentCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => DeploymentCertificateManagedAcmImport2$inboundSchema), + z.lazy(() => DeploymentCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => DeploymentCertificateManagedTLSSecret2$inboundSchema), + z.lazy(() => DeploymentCertificateNone2$inboundSchema), + ]), + domain: z.string(), + mode: DeploymentModeCustom$inboundSchema, + route: z.union([ + z.lazy(() => DeploymentRouteIngress2$inboundSchema), + z.lazy(() => DeploymentRouteGateway2$inboundSchema), + ]), +}); + +export function deploymentExposureCustomFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentExposureCustom$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentExposureCustom' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateNone1$inboundSchema: z.ZodType< + DeploymentCertificateNone1, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function deploymentCertificateNone1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateNone1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateNone1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateManagedTLSSecret1$inboundSchema: z.ZodType< + DeploymentCertificateManagedTLSSecret1, + unknown +> = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), +}); + +export function deploymentCertificateManagedTLSSecret1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateManagedTLSSecret1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateManagedTLSSecret1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateAwsAcmArn1$inboundSchema: z.ZodType< + DeploymentCertificateAwsAcmArn1, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function deploymentCertificateAwsAcmArn1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateAwsAcmArn1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateAwsAcmArn1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateManagedAcmImport1$inboundSchema: z.ZodType< + DeploymentCertificateManagedAcmImport1, + unknown +> = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), +}); + +export function deploymentCertificateManagedAcmImport1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateManagedAcmImport1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateManagedAcmImport1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateTLSSecretRef1$inboundSchema: z.ZodType< + DeploymentCertificateTLSSecretRef1, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), +}); + +export function deploymentCertificateTLSSecretRef1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + DeploymentCertificateTLSSecretRef1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateTLSSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentCertificateUnion1$inboundSchema: z.ZodType< + DeploymentCertificateUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => DeploymentCertificateManagedAcmImport1$inboundSchema), + z.lazy(() => DeploymentCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => DeploymentCertificateManagedTLSSecret1$inboundSchema), + z.lazy(() => DeploymentCertificateNone1$inboundSchema), +]); + +export function deploymentCertificateUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentCertificateUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentCertificateUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentModeGenerated$inboundSchema: z.ZodEnum< + typeof DeploymentModeGenerated +> = z.enum(DeploymentModeGenerated); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: + z.ZodEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum2 + > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum2); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema: + z.ZodType = + z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, + }); + +export function deploymentProviderAzureApplicationGatewayForContainers2FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentProviderAzureApplicationGatewayForContainers2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderGkeGatewayEnum2$inboundSchema: z.ZodEnum< + typeof DeploymentProviderGkeGatewayEnum2 +> = z.enum(DeploymentProviderGkeGatewayEnum2); + +/** @internal */ +export const DeploymentProviderGkeGateway2$inboundSchema: z.ZodType< + DeploymentProviderGkeGateway2, + unknown +> = z.object({ + provider: DeploymentProviderGkeGatewayEnum2$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function deploymentProviderGkeGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderGkeGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderGkeGateway2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAwsAlbEnum2$inboundSchema: z.ZodEnum< + typeof DeploymentProviderAwsAlbEnum2 +> = z.enum(DeploymentProviderAwsAlbEnum2); + +/** @internal */ +export const DeploymentProviderAwsAlb2$inboundSchema: z.ZodType< + DeploymentProviderAwsAlb2, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentProviderAwsAlbEnum2$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentProviderAwsAlb2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderAwsAlb2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAwsAlb2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderUnion2$inboundSchema: z.ZodType< + DeploymentProviderUnion2, + unknown +> = z.union([ + z.lazy(() => DeploymentProviderAwsAlb2$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway2$inboundSchema), + z.any(), +]); + +export function deploymentProviderUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderUnion2' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteGateway1$inboundSchema: z.ZodType< + DeploymentRouteGateway1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentProviderAwsAlb2$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway2$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function deploymentRouteGateway1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteGateway1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteGateway1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: + z.ZodEnum< + typeof DeploymentProviderAzureApplicationGatewayForContainersEnum1 + > = z.enum(DeploymentProviderAzureApplicationGatewayForContainersEnum1); + +/** @internal */ +export const DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema: + z.ZodType = + z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + DeploymentProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, + }); + +export function deploymentProviderAzureApplicationGatewayForContainers1FromJSON( + jsonString: string, +): SafeParseResult< + DeploymentProviderAzureApplicationGatewayForContainers1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAzureApplicationGatewayForContainers1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderGkeGatewayEnum1$inboundSchema: z.ZodEnum< + typeof DeploymentProviderGkeGatewayEnum1 +> = z.enum(DeploymentProviderGkeGatewayEnum1); + +/** @internal */ +export const DeploymentProviderGkeGateway1$inboundSchema: z.ZodType< + DeploymentProviderGkeGateway1, + unknown +> = z.object({ + provider: DeploymentProviderGkeGatewayEnum1$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function deploymentProviderGkeGateway1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderGkeGateway1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderGkeGateway1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderAwsAlbEnum1$inboundSchema: z.ZodEnum< + typeof DeploymentProviderAwsAlbEnum1 +> = z.enum(DeploymentProviderAwsAlbEnum1); + +/** @internal */ +export const DeploymentProviderAwsAlb1$inboundSchema: z.ZodType< + DeploymentProviderAwsAlb1, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: DeploymentProviderAwsAlbEnum1$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function deploymentProviderAwsAlb1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderAwsAlb1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderAwsAlb1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentProviderUnion1$inboundSchema: z.ZodType< + DeploymentProviderUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentProviderAwsAlb1$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway1$inboundSchema), + z.any(), +]); + +export function deploymentProviderUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentProviderUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentProviderUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteIngress1$inboundSchema: z.ZodType< + DeploymentRouteIngress1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => DeploymentProviderAwsAlb1$inboundSchema), + z.lazy(() => + DeploymentProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => DeploymentProviderGkeGateway1$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function deploymentRouteIngress1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteIngress1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteIngress1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentRouteUnion1$inboundSchema: z.ZodType< + DeploymentRouteUnion1, + unknown +> = z.union([ + z.lazy(() => DeploymentRouteIngress1$inboundSchema), + z.lazy(() => DeploymentRouteGateway1$inboundSchema), +]); + +export function deploymentRouteUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentRouteUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentRouteUnion1' from JSON`, + ); +} + +/** @internal */ +export const DeploymentExposureGenerated$inboundSchema: z.ZodType< + DeploymentExposureGenerated, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => DeploymentCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => DeploymentCertificateManagedAcmImport1$inboundSchema), + z.lazy(() => DeploymentCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => DeploymentCertificateManagedTLSSecret1$inboundSchema), + z.lazy(() => DeploymentCertificateNone1$inboundSchema), + ]), + mode: DeploymentModeGenerated$inboundSchema, + route: z.union([ + z.lazy(() => DeploymentRouteIngress1$inboundSchema), + z.lazy(() => DeploymentRouteGateway1$inboundSchema), + ]), +}); + +export function deploymentExposureGeneratedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentExposureGenerated$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentExposureGenerated' from JSON`, + ); +} + +/** @internal */ +export const DeploymentModeDisabled$inboundSchema: z.ZodEnum< + typeof DeploymentModeDisabled +> = z.enum(DeploymentModeDisabled); + +/** @internal */ +export const DeploymentExposureDisabled$inboundSchema: z.ZodType< + DeploymentExposureDisabled, + unknown +> = z.object({ + mode: DeploymentModeDisabled$inboundSchema, +}); + +export function deploymentExposureDisabledFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentExposureDisabled$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentExposureDisabled' from JSON`, + ); +} + +/** @internal */ +export const DeploymentExposureUnion$inboundSchema: z.ZodType< + DeploymentExposureUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentExposureCustom$inboundSchema), + z.lazy(() => DeploymentExposureGenerated$inboundSchema), + z.lazy(() => DeploymentExposureDisabled$inboundSchema), + z.any(), +]); + +export function deploymentExposureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentExposureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentExposureUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentKubernetes$inboundSchema: z.ZodType< + DeploymentKubernetes, + unknown +> = z.object({ + cluster: z.nullable( + z.union([z.lazy(() => DeploymentCluster$inboundSchema), z.any()]), + ).optional(), + exposure: z.nullable( + z.union([ + z.lazy(() => DeploymentExposureCustom$inboundSchema), + z.lazy(() => DeploymentExposureGenerated$inboundSchema), + z.lazy(() => DeploymentExposureDisabled$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function deploymentKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentKubernetes' from JSON`, + ); +} + +/** @internal */ +export const DeploymentKubernetesUnion$inboundSchema: z.ZodType< + DeploymentKubernetesUnion, + unknown +> = z.union([z.lazy(() => DeploymentKubernetes$inboundSchema), z.any()]); + +export function deploymentKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentKubernetesUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeByoVnetAzure$inboundSchema: z.ZodEnum< + typeof DeploymentTypeByoVnetAzure +> = z.enum(DeploymentTypeByoVnetAzure); + +/** @internal */ +export const DeploymentNetworkByoVnetAzure$inboundSchema: z.ZodType< + DeploymentNetworkByoVnetAzure, + unknown +> = z.object({ + application_gateway_subnet_name: z.nullable(z.string()).optional(), + private_subnet_name: z.string(), + public_subnet_name: z.string(), + type: DeploymentTypeByoVnetAzure$inboundSchema, + vnet_resource_id: z.string(), +}).transform((v) => { + return remap$(v, { + "application_gateway_subnet_name": "applicationGatewaySubnetName", + "private_subnet_name": "privateSubnetName", + "public_subnet_name": "publicSubnetName", + "vnet_resource_id": "vnetResourceId", + }); +}); + +export function deploymentNetworkByoVnetAzureFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentNetworkByoVnetAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkByoVnetAzure' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeByoVpcGcp$inboundSchema: z.ZodEnum< + typeof DeploymentTypeByoVpcGcp +> = z.enum(DeploymentTypeByoVpcGcp); + +/** @internal */ +export const DeploymentNetworkByoVpcGcp$inboundSchema: z.ZodType< + DeploymentNetworkByoVpcGcp, + unknown +> = z.object({ + network_name: z.string(), + region: z.string(), + subnet_name: z.string(), + type: DeploymentTypeByoVpcGcp$inboundSchema, +}).transform((v) => { + return remap$(v, { + "network_name": "networkName", + "subnet_name": "subnetName", + }); +}); + +export function deploymentNetworkByoVpcGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentNetworkByoVpcGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkByoVpcGcp' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeByoVpcAws$inboundSchema: z.ZodEnum< + typeof DeploymentTypeByoVpcAws +> = z.enum(DeploymentTypeByoVpcAws); + +/** @internal */ +export const DeploymentNetworkByoVpcAws$inboundSchema: z.ZodType< + DeploymentNetworkByoVpcAws, + unknown +> = z.object({ + private_subnet_ids: z.array(z.string()), + public_subnet_ids: z.array(z.string()), + security_group_ids: z.array(z.string()).optional(), + type: DeploymentTypeByoVpcAws$inboundSchema, + vpc_id: z.string(), +}).transform((v) => { + return remap$(v, { + "private_subnet_ids": "privateSubnetIds", + "public_subnet_ids": "publicSubnetIds", + "security_group_ids": "securityGroupIds", + "vpc_id": "vpcId", + }); +}); + +export function deploymentNetworkByoVpcAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentNetworkByoVpcAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkByoVpcAws' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeCreate$inboundSchema: z.ZodEnum< + typeof DeploymentTypeCreate +> = z.enum(DeploymentTypeCreate); + +/** @internal */ +export const DeploymentNetworkCreate$inboundSchema: z.ZodType< + DeploymentNetworkCreate, + unknown +> = z.object({ + availability_zones: z.int().optional(), + cidr: z.nullable(z.string()).optional(), + type: DeploymentTypeCreate$inboundSchema, +}).transform((v) => { + return remap$(v, { + "availability_zones": "availabilityZones", + }); +}); + +export function deploymentNetworkCreateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentNetworkCreate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkCreate' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeUseDefault$inboundSchema: z.ZodEnum< + typeof DeploymentTypeUseDefault +> = z.enum(DeploymentTypeUseDefault); + +/** @internal */ +export const DeploymentNetworkUseDefault$inboundSchema: z.ZodType< + DeploymentNetworkUseDefault, + unknown +> = z.object({ + type: DeploymentTypeUseDefault$inboundSchema, +}); + +export function deploymentNetworkUseDefaultFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentNetworkUseDefault$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkUseDefault' from JSON`, + ); +} + +/** @internal */ +export const DeploymentNetworkUnion$inboundSchema: z.ZodType< + DeploymentNetworkUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentNetworkByoVpcAws$inboundSchema), + z.lazy(() => DeploymentNetworkByoVpcGcp$inboundSchema), + z.lazy(() => DeploymentNetworkByoVnetAzure$inboundSchema), + z.lazy(() => DeploymentNetworkUseDefault$inboundSchema), + z.lazy(() => DeploymentNetworkCreate$inboundSchema), + z.any(), +]); + +export function deploymentNetworkUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentNetworkUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentNetworkUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTelemetry$inboundSchema: z.ZodEnum< + typeof DeploymentTelemetry +> = z.enum(DeploymentTelemetry); + +/** @internal */ +export const DeploymentUpdates$inboundSchema: z.ZodEnum< + typeof DeploymentUpdates +> = z.enum(DeploymentUpdates); + +/** @internal */ +export const DeploymentStackSettings$inboundSchema: z.ZodType< + DeploymentStackSettings, + unknown +> = z.object({ + compute: z.nullable( + z.union([z.lazy(() => DeploymentCompute$inboundSchema), z.any()]), + ).optional(), + deploymentModel: DeploymentDeploymentModel$inboundSchema.optional(), + domains: z.nullable( + z.union([z.lazy(() => DeploymentDomains$inboundSchema), z.any()]), + ).optional(), + externalBindings: z.nullable( + z.lazy(() => DeploymentExternalBindings$inboundSchema), + ).optional(), + heartbeats: DeploymentHeartbeats$inboundSchema.optional(), + kubernetes: z.nullable( + z.union([z.lazy(() => DeploymentKubernetes$inboundSchema), z.any()]), + ).optional(), + network: z.nullable( + z.union([ + z.lazy(() => DeploymentNetworkByoVpcAws$inboundSchema), + z.lazy(() => DeploymentNetworkByoVpcGcp$inboundSchema), + z.lazy(() => DeploymentNetworkByoVnetAzure$inboundSchema), + z.lazy(() => DeploymentNetworkUseDefault$inboundSchema), + z.lazy(() => DeploymentNetworkCreate$inboundSchema), + z.any(), + ]), + ).optional(), + telemetry: DeploymentTelemetry$inboundSchema.optional(), + updates: DeploymentUpdates$inboundSchema.optional(), +}); + +export function deploymentStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentStackSettings' from JSON`, + ); +} + +/** @internal */ +export const DeploymentStackStatePlatform$inboundSchema: z.ZodEnum< + typeof DeploymentStackStatePlatform +> = z.enum(DeploymentStackStatePlatform); + +/** @internal */ +export const DeploymentStackStateConfig$inboundSchema: z.ZodType< + DeploymentStackStateConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function deploymentStackStateConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentStackStateConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentStackStateConfig' from JSON`, + ); +} + +/** @internal */ +export const DeploymentControllerPlatformEnum$inboundSchema: z.ZodEnum< + typeof DeploymentControllerPlatformEnum +> = z.enum(DeploymentControllerPlatformEnum); + +/** @internal */ +export const DeploymentControllerPlatformUnion$inboundSchema: z.ZodType< + DeploymentControllerPlatformUnion, + unknown +> = z.union([DeploymentControllerPlatformEnum$inboundSchema, z.any()]); + +export function deploymentControllerPlatformUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentControllerPlatformUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentControllerPlatformUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentStackStateDependency$inboundSchema: z.ZodType< + DeploymentStackStateDependency, + unknown +> = z.object({ + id: z.string(), + type: z.string(), +}); + +export function deploymentStackStateDependencyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentStackStateDependency$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentStackStateDependency' from JSON`, + ); +} + +/** @internal */ +export const DeploymentErrorStackState$inboundSchema: z.ZodType< + DeploymentErrorStackState, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function deploymentErrorStackStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentErrorStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentErrorStackState' from JSON`, + ); +} + +/** @internal */ +export const DeploymentErrorUnion$inboundSchema: z.ZodType< + DeploymentErrorUnion, + unknown +> = z.union([z.lazy(() => DeploymentErrorStackState$inboundSchema), z.any()]); + +export function deploymentErrorUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentErrorUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentLifecycleStackStateEnum$inboundSchema: z.ZodEnum< + typeof DeploymentLifecycleStackStateEnum +> = z.enum(DeploymentLifecycleStackStateEnum); + +/** @internal */ +export const DeploymentLifecycleUnion$inboundSchema: z.ZodType< + DeploymentLifecycleUnion, + unknown +> = z.union([DeploymentLifecycleStackStateEnum$inboundSchema, z.any()]); + +export function deploymentLifecycleUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentLifecycleUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentLifecycleUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentOutputs$inboundSchema: z.ZodType< + DeploymentOutputs, + unknown +> = collectExtraKeys$( + z.object({ + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function deploymentOutputsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentOutputs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentOutputs' from JSON`, + ); +} + +/** @internal */ +export const DeploymentOutputsUnion$inboundSchema: z.ZodType< + DeploymentOutputsUnion, + unknown +> = z.union([z.lazy(() => DeploymentOutputs$inboundSchema), z.any()]); + +export function deploymentOutputsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentOutputsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentOutputsUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPreviousConfig$inboundSchema: z.ZodType< + DeploymentPreviousConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function deploymentPreviousConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentPreviousConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreviousConfig' from JSON`, + ); +} + +/** @internal */ +export const DeploymentPreviousConfigUnion$inboundSchema: z.ZodType< + DeploymentPreviousConfigUnion, + unknown +> = z.union([z.lazy(() => DeploymentPreviousConfig$inboundSchema), z.any()]); + +export function deploymentPreviousConfigUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentPreviousConfigUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentPreviousConfigUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentStackStateStatus$inboundSchema: z.ZodEnum< + typeof DeploymentStackStateStatus +> = z.enum(DeploymentStackStateStatus); + +/** @internal */ +export const DeploymentStackStateResources$inboundSchema: z.ZodType< + DeploymentStackStateResources, + unknown +> = z.object({ + _internal: z.nullable(z.any()).optional(), + config: z.lazy(() => DeploymentStackStateConfig$inboundSchema), + controllerPlatform: z.nullable( + z.union([DeploymentControllerPlatformEnum$inboundSchema, z.any()]), + ).optional(), + dependencies: z.array( + z.lazy(() => DeploymentStackStateDependency$inboundSchema), + ).optional(), + error: z.nullable( + z.union([z.lazy(() => DeploymentErrorStackState$inboundSchema), z.any()]), + ).optional(), + lastFailedState: z.nullable(z.any()).optional(), + lifecycle: z.nullable( + z.union([DeploymentLifecycleStackStateEnum$inboundSchema, z.any()]), + ).optional(), + outputs: z.nullable( + z.union([z.lazy(() => DeploymentOutputs$inboundSchema), z.any()]), + ).optional(), + previousConfig: z.nullable( + z.union([z.lazy(() => DeploymentPreviousConfig$inboundSchema), z.any()]), + ).optional(), + remoteBindingParams: z.nullable(z.any()).optional(), + retryAttempt: z.int().optional(), + status: DeploymentStackStateStatus$inboundSchema, + type: z.string(), +}).transform((v) => { + return remap$(v, { + "_internal": "internal", + }); +}); + +export function deploymentStackStateResourcesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentStackStateResources$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentStackStateResources' from JSON`, + ); +} + +/** @internal */ +export const DeploymentStackState$inboundSchema: z.ZodType< + DeploymentStackState, + unknown +> = z.object({ + platform: DeploymentStackStatePlatform$inboundSchema, + resourcePrefix: z.string(), + resources: z.record( + z.string(), + z.lazy(() => DeploymentStackStateResources$inboundSchema), + ), +}); + +export function deploymentStackStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentStackState' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeStringList$inboundSchema: z.ZodEnum< + typeof DeploymentTypeStringList +> = z.enum(DeploymentTypeStringList); + +/** @internal */ +export const DeploymentDefaultStringList$inboundSchema: z.ZodType< + DeploymentDefaultStringList, + unknown +> = z.object({ + type: DeploymentTypeStringList$inboundSchema, + value: z.array(z.string()), +}); + +export function deploymentDefaultStringListFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDefaultStringList$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDefaultStringList' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeBoolean$inboundSchema: z.ZodEnum< + typeof DeploymentTypeBoolean +> = z.enum(DeploymentTypeBoolean); + +/** @internal */ +export const DeploymentDefaultBoolean$inboundSchema: z.ZodType< + DeploymentDefaultBoolean, + unknown +> = z.object({ + type: DeploymentTypeBoolean$inboundSchema, + value: z.boolean(), +}); + +export function deploymentDefaultBooleanFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDefaultBoolean$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDefaultBoolean' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeNumber$inboundSchema: z.ZodEnum< + typeof DeploymentTypeNumber +> = z.enum(DeploymentTypeNumber); + +/** @internal */ +export const DeploymentDefaultNumber$inboundSchema: z.ZodType< + DeploymentDefaultNumber, + unknown +> = z.object({ + type: DeploymentTypeNumber$inboundSchema, + value: z.string(), +}); + +export function deploymentDefaultNumberFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDefaultNumber$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDefaultNumber' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeString$inboundSchema: z.ZodEnum< + typeof DeploymentTypeString +> = z.enum(DeploymentTypeString); + +/** @internal */ +export const DeploymentDefaultString$inboundSchema: z.ZodType< + DeploymentDefaultString, + unknown +> = z.object({ + type: DeploymentTypeString$inboundSchema, + value: z.string(), +}); + +export function deploymentDefaultStringFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDefaultString$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDefaultString' from JSON`, + ); +} + +/** @internal */ +export const DeploymentDefaultUnion$inboundSchema: z.ZodType< + DeploymentDefaultUnion, + unknown +> = z.union([ + z.lazy(() => DeploymentDefaultString$inboundSchema), + z.lazy(() => DeploymentDefaultNumber$inboundSchema), + z.lazy(() => DeploymentDefaultBoolean$inboundSchema), + z.lazy(() => DeploymentDefaultStringList$inboundSchema), + z.any(), +]); + +export function deploymentDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentDefaultUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentTypeEnvEnum$inboundSchema: z.ZodEnum< + typeof DeploymentTypeEnvEnum +> = z.enum(DeploymentTypeEnvEnum); + +/** @internal */ +export const DeploymentTypeUnion$inboundSchema: z.ZodType< + DeploymentTypeUnion, + unknown +> = z.union([DeploymentTypeEnvEnum$inboundSchema, z.any()]); + +export function deploymentTypeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentTypeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentEnv$inboundSchema: z.ZodType = z + .object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable(z.union([DeploymentTypeEnvEnum$inboundSchema, z.any()])) + .optional(), + }); + +export function deploymentEnvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentEnv' from JSON`, + ); +} + +/** @internal */ +export const DeploymentKind$inboundSchema: z.ZodEnum = z + .enum(DeploymentKind); + +/** @internal */ +export const DeploymentPreparedStackPlatform$inboundSchema: z.ZodEnum< + typeof DeploymentPreparedStackPlatform +> = z.enum(DeploymentPreparedStackPlatform); + +/** @internal */ +export const DeploymentProvidedBy$inboundSchema: z.ZodEnum< + typeof DeploymentProvidedBy +> = z.enum(DeploymentProvidedBy); + +/** @internal */ +export const DeploymentValidation$inboundSchema: z.ZodType< + DeploymentValidation, + unknown +> = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), +}); + +export function deploymentValidationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentValidation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentValidation' from JSON`, + ); +} + +/** @internal */ +export const DeploymentValidationUnion$inboundSchema: z.ZodType< + DeploymentValidationUnion, + unknown +> = z.union([z.lazy(() => DeploymentValidation$inboundSchema), z.any()]); + +export function deploymentValidationUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentValidationUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const DeploymentInput$inboundSchema: z.ZodType< + DeploymentInput, + unknown +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => DeploymentDefaultString$inboundSchema), + z.lazy(() => DeploymentDefaultNumber$inboundSchema), + z.lazy(() => DeploymentDefaultBoolean$inboundSchema), + z.lazy(() => DeploymentDefaultStringList$inboundSchema), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array(z.lazy(() => DeploymentEnv$inboundSchema)).optional(), + id: z.string(), + kind: DeploymentKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable(z.array(DeploymentPreparedStackPlatform$inboundSchema)) + .optional(), + providedBy: z.array(DeploymentProvidedBy$inboundSchema), + required: z.boolean(), + validation: z.nullable( + z.union([z.lazy(() => DeploymentValidation$inboundSchema), z.any()]), + ).optional(), +}); + +export function deploymentInputFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentInput$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentInput' from JSON`, + ); +} + +/** @internal */ +export const DeploymentManagementEnum$inboundSchema: z.ZodEnum< + typeof DeploymentManagementEnum +> = z.enum(DeploymentManagementEnum); + +/** @internal */ +export const DeploymentOverrideAwResource$inboundSchema: z.ZodType< + DeploymentOverrideAwResource, + unknown +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function deploymentOverrideAwResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentOverrideAwResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentOverrideAwResource' from JSON`, + ); +} + +/** @internal */ +export const DeploymentOverrideAwStack$inboundSchema: z.ZodType< + DeploymentOverrideAwStack, + unknown +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function deploymentOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentOverrideAwStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentOverrideAwStack' from JSON`, + ); +} + +/** @internal */ +export const DeploymentOverrideAwBinding$inboundSchema: z.ZodType< + DeploymentOverrideAwBinding, + unknown +> = z.object({ + resource: z.lazy(() => DeploymentOverrideAwResource$inboundSchema).optional(), + stack: z.lazy(() => DeploymentOverrideAwStack$inboundSchema).optional(), +}); + +export function deploymentOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentOverrideAwBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const DeploymentOverrideEffect$inboundSchema: z.ZodEnum< + typeof DeploymentOverrideEffect +> = z.enum(DeploymentOverrideEffect); + +/** @internal */ +export const DeploymentOverrideAwGrant$inboundSchema: z.ZodType< + DeploymentOverrideAwGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function deploymentOverrideAwGrantFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentOverrideAwGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentOverrideAwGrant' from JSON`, + ); +} + +/** @internal */ +export const DeploymentOverrideAw$inboundSchema: z.ZodType< + DeploymentOverrideAw, + unknown +> = z.object({ + binding: z.lazy(() => DeploymentOverrideAwBinding$inboundSchema), + description: z.nullable(z.string()).optional(), + effect: DeploymentOverrideEffect$inboundSchema.optional(), + grant: z.lazy(() => DeploymentOverrideAwGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function deploymentOverrideAwFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DeploymentOverrideAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DeploymentOverrideAw' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/event.ts b/client-sdks/platform/typescript/src/models/event.ts index 48fafe9d9..12c91de02 100644 --- a/client-sdks/platform/typescript/src/models/event.ts +++ b/client-sdks/platform/typescript/src/models/event.ts @@ -173,6 +173,18 @@ export type DataDeploymentRetryRequested = { type: "DeploymentRetryRequested"; }; +export type DataDeploymentRejoined = { + /** + * ID of the deployment group that authorized the rejoin + */ + deploymentGroupId: string; + /** + * ID of the deployment whose agent rejoined + */ + deploymentId: string; + type: "DeploymentRejoined"; +}; + export type DataDeploymentDeleted = { /** * ID of the deployment that was deleted @@ -1146,6 +1158,7 @@ export type EventDataUnion = | DataDeploymentDegraded | DataDeploymentRecovered | DataDeploymentDeleted + | DataDeploymentRejoined | DataDeploymentRetryRequested | DataDeploymentRedeployRequested | DataDeploymentReleasePinned @@ -1330,6 +1343,7 @@ export type Event = { | DataDeploymentDegraded | DataDeploymentRecovered | DataDeploymentDeleted + | DataDeploymentRejoined | DataDeploymentRetryRequested | DataDeploymentRedeployRequested | DataDeploymentReleasePinned @@ -1513,6 +1527,26 @@ export function dataDeploymentRetryRequestedFromJSON( ); } +/** @internal */ +export const DataDeploymentRejoined$inboundSchema: z.ZodType< + DataDeploymentRejoined, + unknown +> = z.object({ + deploymentGroupId: z.string(), + deploymentId: z.string(), + type: z.literal("DeploymentRejoined"), +}); + +export function dataDeploymentRejoinedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataDeploymentRejoined$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataDeploymentRejoined' from JSON`, + ); +} + /** @internal */ export const DataDeploymentDeleted$inboundSchema: z.ZodType< DataDeploymentDeleted, @@ -2630,6 +2664,7 @@ export const EventDataUnion$inboundSchema: z.ZodType = z.lazy(() => DataDeploymentDegraded$inboundSchema), z.lazy(() => DataDeploymentRecovered$inboundSchema), z.lazy(() => DataDeploymentDeleted$inboundSchema), + z.lazy(() => DataDeploymentRejoined$inboundSchema), z.lazy(() => DataDeploymentRetryRequested$inboundSchema), z.lazy(() => DataDeploymentRedeployRequested$inboundSchema), z.lazy(() => DataDeploymentReleasePinned$inboundSchema), @@ -2794,6 +2829,7 @@ export const Event$inboundSchema: z.ZodType = z.object({ z.lazy(() => DataDeploymentDegraded$inboundSchema), z.lazy(() => DataDeploymentRecovered$inboundSchema), z.lazy(() => DataDeploymentDeleted$inboundSchema), + z.lazy(() => DataDeploymentRejoined$inboundSchema), z.lazy(() => DataDeploymentRetryRequested$inboundSchema), z.lazy(() => DataDeploymentRedeployRequested$inboundSchema), z.lazy(() => DataDeploymentReleasePinned$inboundSchema), diff --git a/client-sdks/platform/typescript/src/models/heartbeatstatus46.ts b/client-sdks/platform/typescript/src/models/heartbeatstatus46.ts new file mode 100644 index 000000000..31eea0753 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/heartbeatstatus46.ts @@ -0,0 +1,4983 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { ClosedEnum } from "../types/enums.js"; +import { + SyncReconcileRequestCurrentReleaseUnion, + SyncReconcileRequestCurrentReleaseUnion$Outbound, + SyncReconcileRequestCurrentReleaseUnion$outboundSchema, + SyncReconcileRequestEnvironmentInfoUnion, + SyncReconcileRequestEnvironmentInfoUnion$Outbound, + SyncReconcileRequestEnvironmentInfoUnion$outboundSchema, + SyncReconcileRequestErrorUnion, + SyncReconcileRequestErrorUnion$Outbound, + SyncReconcileRequestErrorUnion$outboundSchema, + SyncReconcileRequestPlatform, + SyncReconcileRequestPlatform$outboundSchema, +} from "./syncreconcilerequestpreparedstackoverridegcpstack.js"; +import { + StateStatus, + StateStatus$outboundSchema, + SyncReconcileRequestRuntimeMetadataUnion, + SyncReconcileRequestRuntimeMetadataUnion$Outbound, + SyncReconcileRequestRuntimeMetadataUnion$outboundSchema, + SyncReconcileRequestStackStateUnion, + SyncReconcileRequestStackStateUnion$Outbound, + SyncReconcileRequestStackStateUnion$outboundSchema, + SyncReconcileRequestTargetReleaseInput, + SyncReconcileRequestTargetReleaseInput$Outbound, + SyncReconcileRequestTargetReleaseInput$outboundSchema, + SyncReconcileRequestTargetReleaseManagement1, + SyncReconcileRequestTargetReleaseManagement1$Outbound, + SyncReconcileRequestTargetReleaseManagement1$outboundSchema, + SyncReconcileRequestTargetReleaseManagement2, + SyncReconcileRequestTargetReleaseManagement2$Outbound, + SyncReconcileRequestTargetReleaseManagement2$outboundSchema, + SyncReconcileRequestTargetReleaseManagementEnum, + SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema, +} from "./syncreconcilerequesttargetreleasemanagement1.js"; + +/** + * Management permissions configuration for stack management access + */ +export type SyncReconcileRequestTargetReleaseManagementUnion = + | SyncReconcileRequestTargetReleaseManagement1 + | SyncReconcileRequestTargetReleaseManagement2 + | SyncReconcileRequestTargetReleaseManagementEnum; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileRequestTargetReleaseProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestTargetReleaseProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestTargetReleaseProfileEffect = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestTargetReleaseProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileRequestTargetReleaseProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type TargetReleaseProfileConditionStateResource = { + expression: string; + title: string; +}; + +export type TargetReleaseProfileStateResourceConditionUnion = + | TargetReleaseProfileConditionStateResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseProfileGcpResource = { + condition?: + | TargetReleaseProfileConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type TargetReleaseProfileConditionState = { + expression: string; + title: string; +}; + +export type TargetReleaseProfileStateConditionUnion = + | TargetReleaseProfileConditionState + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseProfileGcpStack = { + condition?: TargetReleaseProfileConditionState | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileRequestTargetReleaseProfileGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestTargetReleaseProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestTargetReleaseProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestTargetReleaseProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestTargetReleaseProfileUnion = + | SyncReconcileRequestTargetReleaseProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncReconcileRequestTargetReleasePermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncReconcileRequestTargetReleaseManagement1 + | SyncReconcileRequestTargetReleaseManagement2 + | SyncReconcileRequestTargetReleaseManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileRequestTargetReleaseConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncReconcileRequestTargetReleaseDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const TargetReleaseStateLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type TargetReleaseStateLifecycle = ClosedEnum< + typeof TargetReleaseStateLifecycle +>; + +export type SyncReconcileRequestTargetReleaseResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncReconcileRequestTargetReleaseConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: TargetReleaseStateLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileRequestTargetReleaseSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileRequestTargetReleaseSupportedPlatform = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncReconcileRequestTargetReleaseStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncReconcileRequestTargetReleasePermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncReconcileRequestTargetReleaseResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +/** + * Release metadata + * + * @remarks + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. + */ +export type SyncReconcileRequestTargetRelease = { + /** + * Short description of the release + */ + description?: string | null | undefined; + /** + * Release ID (e.g., rel_xyz) + */ + releaseId: string; + /** + * A bag of resources, unaware of any cloud. + */ + stack: SyncReconcileRequestTargetReleaseStack; + /** + * Version string (e.g., 2.1.0) + */ + version?: string | null | undefined; +}; + +export type SyncReconcileRequestTargetReleaseUnion = + | SyncReconcileRequestTargetRelease + | any; + +/** + * Complete deployment state after step() execution + */ +export type SyncReconcileRequestState = { + currentRelease?: SyncReconcileRequestCurrentReleaseUnion | null | undefined; + environmentInfo?: SyncReconcileRequestEnvironmentInfoUnion | null | undefined; + error?: SyncReconcileRequestErrorUnion | null | undefined; + /** + * Represents the target cloud platform. + */ + platform: SyncReconcileRequestPlatform; + /** + * Protocol version for cross-actor compatibility. + * + * @remarks + * All actors (manager, push client, agent) check this before stepping. + * Mismatched versions produce a clear error instead of silent corruption. + * See docs/02-manager/10-deployment-protocol.md. + */ + protocolVersion: number; + /** + * Whether a retry has been requested for a failed deployment + * + * @remarks + * When true and status is a failed state, the deployment system will retry failed resources + */ + retryRequested?: boolean | undefined; + runtimeMetadata?: SyncReconcileRequestRuntimeMetadataUnion | null | undefined; + stackState?: SyncReconcileRequestStackStateUnion | null | undefined; + /** + * Deployment status in the deployment lifecycle + */ + status: StateStatus; + targetRelease?: SyncReconcileRequestTargetRelease | any | null | undefined; +}; + +export const BackendEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Managed: "managed", + External: "external", + Test: "test", +} as const; +export type BackendEnum = ClosedEnum; + +/** + * Represents the target cloud platform. + */ +export const HeartbeatControllerPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type HeartbeatControllerPlatform = ClosedEnum< + typeof HeartbeatControllerPlatform +>; + +export const Reason59 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason59 = ClosedEnum; + +export const CollectionIssueSeverity59 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity59 = ClosedEnum< + typeof CollectionIssueSeverity59 +>; + +export type CollectionIssue59 = { + message: string; + reason: Reason59; + severity: CollectionIssueSeverity59; + source: string; +}; + +export const Health59 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health59 = ClosedEnum; + +export const StatusLifecycle59 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle59 = ClosedEnum; + +export type HeartbeatStatus59 = { + collectionIssues: Array; + health: Health59; + lifecycle: StatusLifecycle59; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type SyncReconcileRequestData5 = { + createdAt?: string | null | undefined; + disableLocalAuth?: boolean | null | undefined; + location?: string | null | undefined; + metricId?: string | null | undefined; + minimumTlsVersion?: string | null | undefined; + name: string; + namespaceStatus?: string | null | undefined; + premiumMessagingPartitions?: number | null | undefined; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + serviceBusEndpoint?: string | null | undefined; + skuCapacity?: number | null | undefined; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: HeartbeatStatus59; + updatedAt?: string | null | undefined; + zoneRedundant?: boolean | null | undefined; +}; + +export type DataAzureServiceBusNamespace = { + data: SyncReconcileRequestData5; + resourceType: "azure_service_bus_namespace"; +}; + +export const Reason58 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason58 = ClosedEnum; + +export const CollectionIssueSeverity58 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity58 = ClosedEnum< + typeof CollectionIssueSeverity58 +>; + +export type CollectionIssue58 = { + message: string; + reason: Reason58; + severity: CollectionIssueSeverity58; + source: string; +}; + +export const Health58 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health58 = ClosedEnum; + +export const StatusLifecycle58 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle58 = ClosedEnum; + +export type HeartbeatStatus58 = { + collectionIssues: Array; + health: Health58; + lifecycle: StatusLifecycle58; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type WorkloadProfile = { + maximumCount?: number | null | undefined; + minimumCount?: number | null | undefined; + name: string; + workloadProfileType: string; +}; + +export type SyncReconcileRequestData4 = { + customDomainVerificationId?: string | null | undefined; + defaultDomain?: string | null | undefined; + eventStreamEndpoint?: string | null | undefined; + infrastructureResourceGroup?: string | null | undefined; + kind?: string | null | undefined; + location?: string | null | undefined; + name: string; + provisioningState?: string | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + staticIp?: string | null | undefined; + status: HeartbeatStatus58; + workloadProfileCount: number; + workloadProfiles: Array; + zoneRedundant?: boolean | null | undefined; +}; + +export type DataAzureContainerAppsEnvironment = { + data: SyncReconcileRequestData4; + resourceType: "azure_container_apps_environment"; +}; + +export type PrimaryEndpoints = { + blob?: string | null | undefined; + dfs?: string | null | undefined; + file?: string | null | undefined; + queue?: string | null | undefined; + table?: string | null | undefined; + web?: string | null | undefined; +}; + +export type SecondaryEndpoints = { + blob?: string | null | undefined; + dfs?: string | null | undefined; + file?: string | null | undefined; + queue?: string | null | undefined; + table?: string | null | undefined; + web?: string | null | undefined; +}; + +export const Reason57 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason57 = ClosedEnum; + +export const CollectionIssueSeverity57 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity57 = ClosedEnum< + typeof CollectionIssueSeverity57 +>; + +export type CollectionIssue57 = { + message: string; + reason: Reason57; + severity: CollectionIssueSeverity57; + source: string; +}; + +export const Health57 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health57 = ClosedEnum; + +export const StatusLifecycle57 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle57 = ClosedEnum; + +export type HeartbeatStatus57 = { + collectionIssues: Array; + health: Health57; + lifecycle: StatusLifecycle57; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type SyncReconcileRequestData3 = { + allowBlobPublicAccess?: boolean | null | undefined; + allowSharedKeyAccess?: boolean | null | undefined; + encryptionKeySource?: string | null | undefined; + kind?: string | null | undefined; + location?: string | null | undefined; + minimumTlsVersion?: string | null | undefined; + name: string; + networkBypass?: string | null | undefined; + networkDefaultAction?: string | null | undefined; + networkIpRuleCount?: number | null | undefined; + networkResourceAccessRuleCount?: number | null | undefined; + networkVirtualNetworkRuleCount?: number | null | undefined; + primaryEndpoints: PrimaryEndpoints; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + requireInfrastructureEncryption?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + secondaryEndpoints: SecondaryEndpoints; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: HeartbeatStatus57; + supportsHttpsTrafficOnly?: boolean | null | undefined; +}; + +export type DataAzureStorageAccount = { + data: SyncReconcileRequestData3; + resourceType: "azure_storage_account"; +}; + +export const Reason56 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason56 = ClosedEnum; + +export const CollectionIssueSeverity56 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity56 = ClosedEnum< + typeof CollectionIssueSeverity56 +>; + +export type CollectionIssue56 = { + message: string; + reason: Reason56; + severity: CollectionIssueSeverity56; + source: string; +}; + +export const Health56 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health56 = ClosedEnum; + +export const StatusLifecycle56 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle56 = ClosedEnum; + +export type HeartbeatStatus56 = { + collectionIssues: Array; + health: Health56; + lifecycle: StatusLifecycle56; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type SyncReconcileRequestData2 = { + location?: string | null | undefined; + managedTags: { [k: string]: string }; + name: string; + provisioningState?: string | null | undefined; + resourceId?: string | null | undefined; + status: HeartbeatStatus56; +}; + +export type DataAzureResourceGroup = { + data: SyncReconcileRequestData2; + resourceType: "azure_resource_group"; +}; + +export const Reason55 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason55 = ClosedEnum; + +export const CollectionIssueSeverity55 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity55 = ClosedEnum< + typeof CollectionIssueSeverity55 +>; + +export type CollectionIssue55 = { + message: string; + reason: Reason55; + severity: CollectionIssueSeverity55; + source: string; +}; + +export const Health55 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health55 = ClosedEnum; + +export const StatusLifecycle55 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle55 = ClosedEnum; + +export type HeartbeatStatus55 = { + collectionIssues: Array; + health: Health55; + lifecycle: StatusLifecycle55; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureResourceProvider = { + namespace: string; + providerId?: string | null | undefined; + registered: boolean; + registrationPolicy?: string | null | undefined; + registrationState?: string | null | undefined; + resourceTypeCount: number; + status: HeartbeatStatus55; + backend: "azureResourceProvider"; +}; + +export const Reason54 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason54 = ClosedEnum; + +export const CollectionIssueSeverity54 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity54 = ClosedEnum< + typeof CollectionIssueSeverity54 +>; + +export type CollectionIssue54 = { + message: string; + reason: Reason54; + severity: CollectionIssueSeverity54; + source: string; +}; + +export const Health54 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health54 = ClosedEnum; + +export const StatusLifecycle54 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle54 = ClosedEnum; + +export type HeartbeatStatus54 = { + collectionIssues: Array; + health: Health54; + lifecycle: StatusLifecycle54; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpServiceUsage = { + enabled: boolean; + lastOperationName?: string | null | undefined; + projectId: string; + serviceName: string; + serviceResourceName?: string | null | undefined; + state?: string | null | undefined; + status: HeartbeatStatus54; + title?: string | null | undefined; + backend: "gcpServiceUsage"; +}; + +export type SyncReconcileRequestDataUnion14 = + | DataGcpServiceUsage + | DataAzureResourceProvider; + +export type DataServiceActivation = { + data: DataGcpServiceUsage | DataAzureResourceProvider; + resourceType: "service_activation"; +}; + +export type InvolvedObject9 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion9 = InvolvedObject9 | any; + +export type SyncReconcileRequestSource9 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion9 = SyncReconcileRequestSource9 | any; + +export type SyncReconcileRequestEvent12 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject9 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource9 | any | null | undefined; + type?: string | null | undefined; +}; + +export const Reason53 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason53 = ClosedEnum; + +export const CollectionIssueSeverity53 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity53 = ClosedEnum< + typeof CollectionIssueSeverity53 +>; + +export type CollectionIssue53 = { + message: string; + reason: Reason53; + severity: CollectionIssueSeverity53; + source: string; +}; + +export const Health53 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health53 = ClosedEnum; + +export const StatusLifecycle53 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle53 = ClosedEnum; + +export type HeartbeatStatus53 = { + collectionIssues: Array; + health: Health53; + lifecycle: StatusLifecycle53; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataKubernetesJob = { + active?: number | null | undefined; + completionTime?: Date | null | undefined; + conditionCount: number; + events: Array; + failed?: number | null | undefined; + imageDigest?: string | null | undefined; + jobName: string; + namespace: string; + startTime?: Date | null | undefined; + status: HeartbeatStatus53; + succeeded?: number | null | undefined; + backend: "kubernetesJob"; +}; + +export const Reason52 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason52 = ClosedEnum; + +export const CollectionIssueSeverity52 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity52 = ClosedEnum< + typeof CollectionIssueSeverity52 +>; + +export type CollectionIssue52 = { + message: string; + reason: Reason52; + severity: CollectionIssueSeverity52; + source: string; +}; + +export const Health52 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health52 = ClosedEnum; + +export const StatusLifecycle52 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle52 = ClosedEnum; + +export type HeartbeatStatus52 = { + collectionIssues: Array; + health: Health52; + lifecycle: StatusLifecycle52; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureContainerApps2 = { + environmentVariableCount: number; + managedEnvironmentId: string; + managedIdentityId?: string | null | undefined; + resourceGroupName: string; + resourcePrefix?: string | null | undefined; + status: HeartbeatStatus52; + backend: "azureContainerApps"; +}; + +export const Reason51 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason51 = ClosedEnum; + +export const CollectionIssueSeverity51 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity51 = ClosedEnum< + typeof CollectionIssueSeverity51 +>; + +export type CollectionIssue51 = { + message: string; + reason: Reason51; + severity: CollectionIssueSeverity51; + source: string; +}; + +export const Health51 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health51 = ClosedEnum; + +export const StatusLifecycle51 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle51 = ClosedEnum; + +export type HeartbeatStatus51 = { + collectionIssues: Array; + health: Health51; + lifecycle: StatusLifecycle51; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpCloudBuild = { + buildConfigId: string; + environmentVariableCount: number; + location: string; + projectId: string; + serviceAccount?: string | null | undefined; + status: HeartbeatStatus51; + backend: "gcpCloudBuild"; +}; + +export const Reason50 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason50 = ClosedEnum; + +export const CollectionIssueSeverity50 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity50 = ClosedEnum< + typeof CollectionIssueSeverity50 +>; + +export type CollectionIssue50 = { + message: string; + reason: Reason50; + severity: CollectionIssueSeverity50; + source: string; +}; + +export const Health50 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health50 = ClosedEnum; + +export const StatusLifecycle50 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle50 = ClosedEnum; + +export type HeartbeatStatus50 = { + collectionIssues: Array; + health: Health50; + lifecycle: StatusLifecycle50; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsCodeBuild = { + artifactsEncryptionDisabled?: boolean | null | undefined; + artifactsType?: string | null | undefined; + cloudWatchLogsStatus?: string | null | undefined; + computeType?: string | null | undefined; + created?: number | null | undefined; + description?: string | null | undefined; + encryptionKeyPresent: boolean; + environmentImage?: string | null | undefined; + environmentType?: string | null | undefined; + environmentVariableCount: number; + imagePullCredentialsType?: string | null | undefined; + lastModified?: number | null | undefined; + privilegedMode?: boolean | null | undefined; + projectArn?: string | null | undefined; + projectName: string; + queuedTimeoutInMinutes?: number | null | undefined; + s3LogsStatus?: string | null | undefined; + serviceRolePresent: boolean; + sourceType?: string | null | undefined; + status: HeartbeatStatus50; + timeoutInMinutes?: number | null | undefined; + backend: "awsCodeBuild"; +}; + +export type SyncReconcileRequestDataUnion13 = + | DataAwsCodeBuild + | DataGcpCloudBuild + | DataAzureContainerApps2 + | DataKubernetesJob; + +export type DataBuild = { + data: + | DataAwsCodeBuild + | DataGcpCloudBuild + | DataAzureContainerApps2 + | DataKubernetesJob; + resourceType: "build"; +}; + +export const Reason49 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason49 = ClosedEnum; + +export const CollectionIssueSeverity49 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity49 = ClosedEnum< + typeof CollectionIssueSeverity49 +>; + +export type CollectionIssue49 = { + message: string; + reason: Reason49; + severity: CollectionIssueSeverity49; + source: string; +}; + +export const Health49 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health49 = ClosedEnum; + +export const StatusLifecycle49 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle49 = ClosedEnum; + +export type HeartbeatStatus49 = { + collectionIssues: Array; + health: Health49; + lifecycle: StatusLifecycle49; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal10 = { + reachable: boolean; + registryUrl: string; + status: HeartbeatStatus49; + backend: "local"; +}; + +export const Reason48 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason48 = ClosedEnum; + +export const CollectionIssueSeverity48 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity48 = ClosedEnum< + typeof CollectionIssueSeverity48 +>; + +export type CollectionIssue48 = { + message: string; + reason: Reason48; + severity: CollectionIssueSeverity48; + source: string; +}; + +export const Health48 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health48 = ClosedEnum; + +export const StatusLifecycle48 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle48 = ClosedEnum; + +export type HeartbeatStatus48 = { + collectionIssues: Array; + health: Health48; + lifecycle: StatusLifecycle48; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureContainerRegistry = { + adminUserEnabled: boolean; + anonymousPullEnabled: boolean; + creationDate?: string | null | undefined; + dataEndpointEnabled?: boolean | null | undefined; + dataEndpointHostNames: Array; + encryptionKeyIdentifierPresent: boolean; + encryptionKeyVaultUriPresent: boolean; + encryptionStatus?: string | null | undefined; + ipRuleCount: number; + location: string; + loginServer?: string | null | undefined; + managedTagCount: number; + name: string; + networkRuleBypassOptions: string; + networkRuleDefaultAction?: string | null | undefined; + policiesPresent: boolean; + policyCount: number; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess: string; + resourceGroup: string; + resourceId?: string | null | undefined; + skuName: string; + skuTier?: string | null | undefined; + status: HeartbeatStatus48; + type?: string | null | undefined; + zoneRedundancy: string; + backend: "azureContainerRegistry"; +}; + +export const Reason47 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason47 = ClosedEnum; + +export const CollectionIssueSeverity47 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity47 = ClosedEnum< + typeof CollectionIssueSeverity47 +>; + +export type CollectionIssue47 = { + message: string; + reason: Reason47; + severity: CollectionIssueSeverity47; + source: string; +}; + +export const Health47 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health47 = ClosedEnum; + +export const StatusLifecycle47 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle47 = ClosedEnum; + +export type HeartbeatStatus47 = { + collectionIssues: Array; + health: Health47; + lifecycle: StatusLifecycle47; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpArtifactRegistry = { + cleanupPolicyCount: number; + cleanupPolicyDryRun?: boolean | null | undefined; + createTime?: string | null | undefined; + description?: string | null | undefined; + format?: string | null | undefined; + iamBindingCount: number; + iamPolicyEtagPresent: boolean; + iamRoles: Array; + kmsKeyNamePresent: boolean; + labelCount: number; + location: string; + mode?: string | null | undefined; + name?: string | null | undefined; + projectId: string; + pullServiceAccountEmail?: string | null | undefined; + pushServiceAccountEmail?: string | null | undefined; + repositoryId: string; + satisfiesPzs?: boolean | null | undefined; + sizeBytes?: string | null | undefined; + status: HeartbeatStatus47; + updateTime?: string | null | undefined; + backend: "gcpArtifactRegistry"; +}; + +export type Repository = { + createdAt: number; + encryptionType?: string | null | undefined; + imageTagMutability?: string | null | undefined; + kmsKeyPresent: boolean; + registryId: string; + repositoryArn: string; + repositoryName: string; + repositoryUri: string; + scanOnPush?: boolean | null | undefined; +}; + +export const Reason46 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason46 = ClosedEnum; + +export const CollectionIssueSeverity46 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity46 = ClosedEnum< + typeof CollectionIssueSeverity46 +>; + +export type CollectionIssue46 = { + message: string; + reason: Reason46; + severity: CollectionIssueSeverity46; + source: string; +}; + +export const Health46 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health46 = ClosedEnum; + +export const StatusLifecycle46 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle46 = ClosedEnum; + +export type HeartbeatStatus46 = { + collectionIssues: Array; + health: Health46; + lifecycle: StatusLifecycle46; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export type SyncReconcileRequestTargetReleaseManagementUnion$Outbound = + | SyncReconcileRequestTargetReleaseManagement1$Outbound + | SyncReconcileRequestTargetReleaseManagement2$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseManagementUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseManagementUnion$Outbound, + SyncReconcileRequestTargetReleaseManagementUnion + > = z.union([ + SyncReconcileRequestTargetReleaseManagement1$outboundSchema, + SyncReconcileRequestTargetReleaseManagement2$outboundSchema, + SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema, + ]); + +export function syncReconcileRequestTargetReleaseManagementUnionToJSON( + syncReconcileRequestTargetReleaseManagementUnion: + SyncReconcileRequestTargetReleaseManagementUnion, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseManagementUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseManagementUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAwResource$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAwResource$Outbound, + SyncReconcileRequestTargetReleaseProfileAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestTargetReleaseProfileAwResourceToJSON( + syncReconcileRequestTargetReleaseProfileAwResource: + SyncReconcileRequestTargetReleaseProfileAwResource, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAwResource$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAwStack$Outbound, + SyncReconcileRequestTargetReleaseProfileAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestTargetReleaseProfileAwStackToJSON( + syncReconcileRequestTargetReleaseProfileAwStack: + SyncReconcileRequestTargetReleaseProfileAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound = { + resource?: + | SyncReconcileRequestTargetReleaseProfileAwResource$Outbound + | undefined; + stack?: SyncReconcileRequestTargetReleaseProfileAwStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound, + SyncReconcileRequestTargetReleaseProfileAwBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileAwBindingToJSON( + syncReconcileRequestTargetReleaseProfileAwBinding: + SyncReconcileRequestTargetReleaseProfileAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseProfileEffect, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound, + SyncReconcileRequestTargetReleaseProfileAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileAwGrantToJSON( + syncReconcileRequestTargetReleaseProfileAwGrant: + SyncReconcileRequestTargetReleaseProfileAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAw$Outbound = { + binding: SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAw$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAw$Outbound, + SyncReconcileRequestTargetReleaseProfileAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestTargetReleaseProfileEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileAwToJSON( + syncReconcileRequestTargetReleaseProfileAw: + SyncReconcileRequestTargetReleaseProfileAw, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAw$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAw, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAzureResource$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAzureResource$Outbound, + SyncReconcileRequestTargetReleaseProfileAzureResource + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseProfileAzureResourceToJSON( + syncReconcileRequestTargetReleaseProfileAzureResource: + SyncReconcileRequestTargetReleaseProfileAzureResource, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAzureResource$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound, + SyncReconcileRequestTargetReleaseProfileAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseProfileAzureStackToJSON( + syncReconcileRequestTargetReleaseProfileAzureStack: + SyncReconcileRequestTargetReleaseProfileAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound = { + resource?: + | SyncReconcileRequestTargetReleaseProfileAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound, + SyncReconcileRequestTargetReleaseProfileAzureBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileAzureBindingToJSON( + syncReconcileRequestTargetReleaseProfileAzureBinding: + SyncReconcileRequestTargetReleaseProfileAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound, + SyncReconcileRequestTargetReleaseProfileAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileAzureGrantToJSON( + syncReconcileRequestTargetReleaseProfileAzureGrant: + SyncReconcileRequestTargetReleaseProfileAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileAzure$Outbound = { + binding: SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileAzure$Outbound, + SyncReconcileRequestTargetReleaseProfileAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileAzureToJSON( + syncReconcileRequestTargetReleaseProfileAzure: + SyncReconcileRequestTargetReleaseProfileAzure, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileAzure, + ), + ); +} + +/** @internal */ +export type TargetReleaseProfileConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const TargetReleaseProfileConditionStateResource$outboundSchema: + z.ZodType< + TargetReleaseProfileConditionStateResource$Outbound, + TargetReleaseProfileConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function targetReleaseProfileConditionStateResourceToJSON( + targetReleaseProfileConditionStateResource: + TargetReleaseProfileConditionStateResource, +): string { + return JSON.stringify( + TargetReleaseProfileConditionStateResource$outboundSchema.parse( + targetReleaseProfileConditionStateResource, + ), + ); +} + +/** @internal */ +export type TargetReleaseProfileStateResourceConditionUnion$Outbound = + | TargetReleaseProfileConditionStateResource$Outbound + | any; + +/** @internal */ +export const TargetReleaseProfileStateResourceConditionUnion$outboundSchema: + z.ZodType< + TargetReleaseProfileStateResourceConditionUnion$Outbound, + TargetReleaseProfileStateResourceConditionUnion + > = z.union([ + z.lazy(() => TargetReleaseProfileConditionStateResource$outboundSchema), + z.any(), + ]); + +export function targetReleaseProfileStateResourceConditionUnionToJSON( + targetReleaseProfileStateResourceConditionUnion: + TargetReleaseProfileStateResourceConditionUnion, +): string { + return JSON.stringify( + TargetReleaseProfileStateResourceConditionUnion$outboundSchema.parse( + targetReleaseProfileStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileGcpResource$Outbound = { + condition?: + | TargetReleaseProfileConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileGcpResource$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileGcpResource$Outbound, + SyncReconcileRequestTargetReleaseProfileGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => TargetReleaseProfileConditionStateResource$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseProfileGcpResourceToJSON( + syncReconcileRequestTargetReleaseProfileGcpResource: + SyncReconcileRequestTargetReleaseProfileGcpResource, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileGcpResource$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileGcpResource, + ), + ); +} + +/** @internal */ +export type TargetReleaseProfileConditionState$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const TargetReleaseProfileConditionState$outboundSchema: z.ZodType< + TargetReleaseProfileConditionState$Outbound, + TargetReleaseProfileConditionState +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function targetReleaseProfileConditionStateToJSON( + targetReleaseProfileConditionState: TargetReleaseProfileConditionState, +): string { + return JSON.stringify( + TargetReleaseProfileConditionState$outboundSchema.parse( + targetReleaseProfileConditionState, + ), + ); +} + +/** @internal */ +export type TargetReleaseProfileStateConditionUnion$Outbound = + | TargetReleaseProfileConditionState$Outbound + | any; + +/** @internal */ +export const TargetReleaseProfileStateConditionUnion$outboundSchema: z.ZodType< + TargetReleaseProfileStateConditionUnion$Outbound, + TargetReleaseProfileStateConditionUnion +> = z.union([ + z.lazy(() => TargetReleaseProfileConditionState$outboundSchema), + z.any(), +]); + +export function targetReleaseProfileStateConditionUnionToJSON( + targetReleaseProfileStateConditionUnion: + TargetReleaseProfileStateConditionUnion, +): string { + return JSON.stringify( + TargetReleaseProfileStateConditionUnion$outboundSchema.parse( + targetReleaseProfileStateConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound = { + condition?: + | TargetReleaseProfileConditionState$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound, + SyncReconcileRequestTargetReleaseProfileGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => TargetReleaseProfileConditionState$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseProfileGcpStackToJSON( + syncReconcileRequestTargetReleaseProfileGcpStack: + SyncReconcileRequestTargetReleaseProfileGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileGcpStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound = { + resource?: + | SyncReconcileRequestTargetReleaseProfileGcpResource$Outbound + | undefined; + stack?: SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound, + SyncReconcileRequestTargetReleaseProfileGcpBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileGcpBindingToJSON( + syncReconcileRequestTargetReleaseProfileGcpBinding: + SyncReconcileRequestTargetReleaseProfileGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound, + SyncReconcileRequestTargetReleaseProfileGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileGcpGrantToJSON( + syncReconcileRequestTargetReleaseProfileGcpGrant: + SyncReconcileRequestTargetReleaseProfileGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileGcp$Outbound = { + binding: SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileGcp$Outbound, + SyncReconcileRequestTargetReleaseProfileGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfileGcpToJSON( + syncReconcileRequestTargetReleaseProfileGcp: + SyncReconcileRequestTargetReleaseProfileGcp, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound, + SyncReconcileRequestTargetReleaseProfilePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseProfilePlatformsToJSON( + syncReconcileRequestTargetReleaseProfilePlatforms: + SyncReconcileRequestTargetReleaseProfilePlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfilePlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfile$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfile$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseProfile$Outbound, + SyncReconcileRequestTargetReleaseProfile +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema + ), +}); + +export function syncReconcileRequestTargetReleaseProfileToJSON( + syncReconcileRequestTargetReleaseProfile: + SyncReconcileRequestTargetReleaseProfile, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfile$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfile, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseProfileUnion$Outbound = + | SyncReconcileRequestTargetReleaseProfile$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProfileUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseProfileUnion$Outbound, + SyncReconcileRequestTargetReleaseProfileUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseProfile$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestTargetReleaseProfileUnionToJSON( + syncReconcileRequestTargetReleaseProfileUnion: + SyncReconcileRequestTargetReleaseProfileUnion, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseProfileUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseProfileUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleasePermissions$Outbound = { + management?: + | SyncReconcileRequestTargetReleaseManagement1$Outbound + | SyncReconcileRequestTargetReleaseManagement2$Outbound + | string + | undefined; + profiles: { + [k: string]: { + [k: string]: Array< + SyncReconcileRequestTargetReleaseProfile$Outbound | string + >; + }; + }; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleasePermissions$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleasePermissions$Outbound, + SyncReconcileRequestTargetReleasePermissions + > = z.object({ + management: z.union([ + SyncReconcileRequestTargetReleaseManagement1$outboundSchema, + SyncReconcileRequestTargetReleaseManagement2$outboundSchema, + SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileRequestTargetReleaseProfile$outboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); + +export function syncReconcileRequestTargetReleasePermissionsToJSON( + syncReconcileRequestTargetReleasePermissions: + SyncReconcileRequestTargetReleasePermissions, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleasePermissions$outboundSchema.parse( + syncReconcileRequestTargetReleasePermissions, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseConfig$Outbound = { + id: string; + type: string; + [additionalProperties: string]: unknown; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseConfig$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseConfig$Outbound, + SyncReconcileRequestTargetReleaseConfig +> = z.object({ + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; +}); + +export function syncReconcileRequestTargetReleaseConfigToJSON( + syncReconcileRequestTargetReleaseConfig: + SyncReconcileRequestTargetReleaseConfig, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseConfig$outboundSchema.parse( + syncReconcileRequestTargetReleaseConfig, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseDependency$Outbound = { + id: string; + type: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseDependency$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseDependency$Outbound, + SyncReconcileRequestTargetReleaseDependency + > = z.object({ + id: z.string(), + type: z.string(), + }); + +export function syncReconcileRequestTargetReleaseDependencyToJSON( + syncReconcileRequestTargetReleaseDependency: + SyncReconcileRequestTargetReleaseDependency, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseDependency$outboundSchema.parse( + syncReconcileRequestTargetReleaseDependency, + ), + ); +} + +/** @internal */ +export const TargetReleaseStateLifecycle$outboundSchema: z.ZodEnum< + typeof TargetReleaseStateLifecycle +> = z.enum(TargetReleaseStateLifecycle); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseResources$Outbound = { + config: SyncReconcileRequestTargetReleaseConfig$Outbound; + dependencies: Array; + lifecycle: string; + remoteAccess?: boolean | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseResources$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseResources$Outbound, + SyncReconcileRequestTargetReleaseResources + > = z.object({ + config: z.lazy(() => + SyncReconcileRequestTargetReleaseConfig$outboundSchema + ), + dependencies: z.array( + z.lazy(() => SyncReconcileRequestTargetReleaseDependency$outboundSchema), + ), + lifecycle: TargetReleaseStateLifecycle$outboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncReconcileRequestTargetReleaseResourcesToJSON( + syncReconcileRequestTargetReleaseResources: + SyncReconcileRequestTargetReleaseResources, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseResources$outboundSchema.parse( + syncReconcileRequestTargetReleaseResources, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestTargetReleaseSupportedPlatform$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseSupportedPlatform, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseStack$Outbound = { + id: string; + inputs?: Array | undefined; + permissions?: + | SyncReconcileRequestTargetReleasePermissions$Outbound + | undefined; + resources: { + [k: string]: SyncReconcileRequestTargetReleaseResources$Outbound; + }; + supportedPlatforms?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseStack$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseStack$Outbound, + SyncReconcileRequestTargetReleaseStack +> = z.object({ + id: z.string(), + inputs: z.array(SyncReconcileRequestTargetReleaseInput$outboundSchema) + .optional(), + permissions: z.lazy(() => + SyncReconcileRequestTargetReleasePermissions$outboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileRequestTargetReleaseResources$outboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncReconcileRequestTargetReleaseSupportedPlatform$outboundSchema), + ).optional(), +}); + +export function syncReconcileRequestTargetReleaseStackToJSON( + syncReconcileRequestTargetReleaseStack: + SyncReconcileRequestTargetReleaseStack, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetRelease$Outbound = { + description?: string | null | undefined; + releaseId: string; + stack: SyncReconcileRequestTargetReleaseStack$Outbound; + version?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetRelease$outboundSchema: z.ZodType< + SyncReconcileRequestTargetRelease$Outbound, + SyncReconcileRequestTargetRelease +> = z.object({ + description: z.nullable(z.string()).optional(), + releaseId: z.string(), + stack: z.lazy(() => SyncReconcileRequestTargetReleaseStack$outboundSchema), + version: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestTargetReleaseToJSON( + syncReconcileRequestTargetRelease: SyncReconcileRequestTargetRelease, +): string { + return JSON.stringify( + SyncReconcileRequestTargetRelease$outboundSchema.parse( + syncReconcileRequestTargetRelease, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseUnion$Outbound = + | SyncReconcileRequestTargetRelease$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseUnion$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseUnion$Outbound, + SyncReconcileRequestTargetReleaseUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestTargetRelease$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestTargetReleaseUnionToJSON( + syncReconcileRequestTargetReleaseUnion: + SyncReconcileRequestTargetReleaseUnion, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestState$Outbound = { + currentRelease?: + | SyncReconcileRequestCurrentReleaseUnion$Outbound + | null + | undefined; + environmentInfo?: + | SyncReconcileRequestEnvironmentInfoUnion$Outbound + | null + | undefined; + error?: SyncReconcileRequestErrorUnion$Outbound | null | undefined; + platform: string; + protocolVersion: number; + retryRequested?: boolean | undefined; + runtimeMetadata?: + | SyncReconcileRequestRuntimeMetadataUnion$Outbound + | null + | undefined; + stackState?: SyncReconcileRequestStackStateUnion$Outbound | null | undefined; + status: string; + targetRelease?: + | SyncReconcileRequestTargetRelease$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestState$outboundSchema: z.ZodType< + SyncReconcileRequestState$Outbound, + SyncReconcileRequestState +> = z.object({ + currentRelease: z.nullable( + SyncReconcileRequestCurrentReleaseUnion$outboundSchema, + ).optional(), + environmentInfo: z.nullable( + SyncReconcileRequestEnvironmentInfoUnion$outboundSchema, + ).optional(), + error: z.nullable(SyncReconcileRequestErrorUnion$outboundSchema).optional(), + platform: SyncReconcileRequestPlatform$outboundSchema, + protocolVersion: z.int(), + retryRequested: z.boolean().optional(), + runtimeMetadata: z.nullable( + SyncReconcileRequestRuntimeMetadataUnion$outboundSchema, + ).optional(), + stackState: z.nullable(SyncReconcileRequestStackStateUnion$outboundSchema) + .optional(), + status: StateStatus$outboundSchema, + targetRelease: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestTargetRelease$outboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileRequestStateToJSON( + syncReconcileRequestState: SyncReconcileRequestState, +): string { + return JSON.stringify( + SyncReconcileRequestState$outboundSchema.parse(syncReconcileRequestState), + ); +} + +/** @internal */ +export const BackendEnum$outboundSchema: z.ZodEnum = z.enum( + BackendEnum, +); + +/** @internal */ +export const HeartbeatControllerPlatform$outboundSchema: z.ZodEnum< + typeof HeartbeatControllerPlatform +> = z.enum(HeartbeatControllerPlatform); + +/** @internal */ +export const Reason59$outboundSchema: z.ZodEnum = z.enum( + Reason59, +); + +/** @internal */ +export const CollectionIssueSeverity59$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity59 +> = z.enum(CollectionIssueSeverity59); + +/** @internal */ +export type CollectionIssue59$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue59$outboundSchema: z.ZodType< + CollectionIssue59$Outbound, + CollectionIssue59 +> = z.object({ + message: z.string(), + reason: Reason59$outboundSchema, + severity: CollectionIssueSeverity59$outboundSchema, + source: z.string(), +}); + +export function collectionIssue59ToJSON( + collectionIssue59: CollectionIssue59, +): string { + return JSON.stringify( + CollectionIssue59$outboundSchema.parse(collectionIssue59), + ); +} + +/** @internal */ +export const Health59$outboundSchema: z.ZodEnum = z.enum( + Health59, +); + +/** @internal */ +export const StatusLifecycle59$outboundSchema: z.ZodEnum< + typeof StatusLifecycle59 +> = z.enum(StatusLifecycle59); + +/** @internal */ +export type HeartbeatStatus59$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus59$outboundSchema: z.ZodType< + HeartbeatStatus59$Outbound, + HeartbeatStatus59 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue59$outboundSchema)), + health: Health59$outboundSchema, + lifecycle: StatusLifecycle59$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus59ToJSON( + heartbeatStatus59: HeartbeatStatus59, +): string { + return JSON.stringify( + HeartbeatStatus59$outboundSchema.parse(heartbeatStatus59), + ); +} + +/** @internal */ +export type SyncReconcileRequestData5$Outbound = { + createdAt?: string | null | undefined; + disableLocalAuth?: boolean | null | undefined; + location?: string | null | undefined; + metricId?: string | null | undefined; + minimumTlsVersion?: string | null | undefined; + name: string; + namespaceStatus?: string | null | undefined; + premiumMessagingPartitions?: number | null | undefined; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + serviceBusEndpoint?: string | null | undefined; + skuCapacity?: number | null | undefined; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: HeartbeatStatus59$Outbound; + updatedAt?: string | null | undefined; + zoneRedundant?: boolean | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestData5$outboundSchema: z.ZodType< + SyncReconcileRequestData5$Outbound, + SyncReconcileRequestData5 +> = z.object({ + createdAt: z.nullable(z.string()).optional(), + disableLocalAuth: z.nullable(z.boolean()).optional(), + location: z.nullable(z.string()).optional(), + metricId: z.nullable(z.string()).optional(), + minimumTlsVersion: z.nullable(z.string()).optional(), + name: z.string(), + namespaceStatus: z.nullable(z.string()).optional(), + premiumMessagingPartitions: z.nullable(z.int()).optional(), + privateEndpointConnectionCount: z.int(), + provisioningState: z.nullable(z.string()).optional(), + publicNetworkAccess: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + serviceBusEndpoint: z.nullable(z.string()).optional(), + skuCapacity: z.nullable(z.int()).optional(), + skuName: z.nullable(z.string()).optional(), + skuTier: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus59$outboundSchema), + updatedAt: z.nullable(z.string()).optional(), + zoneRedundant: z.nullable(z.boolean()).optional(), +}); + +export function syncReconcileRequestData5ToJSON( + syncReconcileRequestData5: SyncReconcileRequestData5, +): string { + return JSON.stringify( + SyncReconcileRequestData5$outboundSchema.parse(syncReconcileRequestData5), + ); +} + +/** @internal */ +export type DataAzureServiceBusNamespace$Outbound = { + data: SyncReconcileRequestData5$Outbound; + resourceType: "azure_service_bus_namespace"; +}; + +/** @internal */ +export const DataAzureServiceBusNamespace$outboundSchema: z.ZodType< + DataAzureServiceBusNamespace$Outbound, + DataAzureServiceBusNamespace +> = z.object({ + data: z.lazy(() => SyncReconcileRequestData5$outboundSchema), + resourceType: z.literal("azure_service_bus_namespace"), +}); + +export function dataAzureServiceBusNamespaceToJSON( + dataAzureServiceBusNamespace: DataAzureServiceBusNamespace, +): string { + return JSON.stringify( + DataAzureServiceBusNamespace$outboundSchema.parse( + dataAzureServiceBusNamespace, + ), + ); +} + +/** @internal */ +export const Reason58$outboundSchema: z.ZodEnum = z.enum( + Reason58, +); + +/** @internal */ +export const CollectionIssueSeverity58$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity58 +> = z.enum(CollectionIssueSeverity58); + +/** @internal */ +export type CollectionIssue58$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue58$outboundSchema: z.ZodType< + CollectionIssue58$Outbound, + CollectionIssue58 +> = z.object({ + message: z.string(), + reason: Reason58$outboundSchema, + severity: CollectionIssueSeverity58$outboundSchema, + source: z.string(), +}); + +export function collectionIssue58ToJSON( + collectionIssue58: CollectionIssue58, +): string { + return JSON.stringify( + CollectionIssue58$outboundSchema.parse(collectionIssue58), + ); +} + +/** @internal */ +export const Health58$outboundSchema: z.ZodEnum = z.enum( + Health58, +); + +/** @internal */ +export const StatusLifecycle58$outboundSchema: z.ZodEnum< + typeof StatusLifecycle58 +> = z.enum(StatusLifecycle58); + +/** @internal */ +export type HeartbeatStatus58$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus58$outboundSchema: z.ZodType< + HeartbeatStatus58$Outbound, + HeartbeatStatus58 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue58$outboundSchema)), + health: Health58$outboundSchema, + lifecycle: StatusLifecycle58$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus58ToJSON( + heartbeatStatus58: HeartbeatStatus58, +): string { + return JSON.stringify( + HeartbeatStatus58$outboundSchema.parse(heartbeatStatus58), + ); +} + +/** @internal */ +export type WorkloadProfile$Outbound = { + maximumCount?: number | null | undefined; + minimumCount?: number | null | undefined; + name: string; + workloadProfileType: string; +}; + +/** @internal */ +export const WorkloadProfile$outboundSchema: z.ZodType< + WorkloadProfile$Outbound, + WorkloadProfile +> = z.object({ + maximumCount: z.nullable(z.int()).optional(), + minimumCount: z.nullable(z.int()).optional(), + name: z.string(), + workloadProfileType: z.string(), +}); + +export function workloadProfileToJSON( + workloadProfile: WorkloadProfile, +): string { + return JSON.stringify(WorkloadProfile$outboundSchema.parse(workloadProfile)); +} + +/** @internal */ +export type SyncReconcileRequestData4$Outbound = { + customDomainVerificationId?: string | null | undefined; + defaultDomain?: string | null | undefined; + eventStreamEndpoint?: string | null | undefined; + infrastructureResourceGroup?: string | null | undefined; + kind?: string | null | undefined; + location?: string | null | undefined; + name: string; + provisioningState?: string | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + staticIp?: string | null | undefined; + status: HeartbeatStatus58$Outbound; + workloadProfileCount: number; + workloadProfiles: Array; + zoneRedundant?: boolean | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestData4$outboundSchema: z.ZodType< + SyncReconcileRequestData4$Outbound, + SyncReconcileRequestData4 +> = z.object({ + customDomainVerificationId: z.nullable(z.string()).optional(), + defaultDomain: z.nullable(z.string()).optional(), + eventStreamEndpoint: z.nullable(z.string()).optional(), + infrastructureResourceGroup: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + location: z.nullable(z.string()).optional(), + name: z.string(), + provisioningState: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + staticIp: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus58$outboundSchema), + workloadProfileCount: z.int(), + workloadProfiles: z.array(z.lazy(() => WorkloadProfile$outboundSchema)), + zoneRedundant: z.nullable(z.boolean()).optional(), +}); + +export function syncReconcileRequestData4ToJSON( + syncReconcileRequestData4: SyncReconcileRequestData4, +): string { + return JSON.stringify( + SyncReconcileRequestData4$outboundSchema.parse(syncReconcileRequestData4), + ); +} + +/** @internal */ +export type DataAzureContainerAppsEnvironment$Outbound = { + data: SyncReconcileRequestData4$Outbound; + resourceType: "azure_container_apps_environment"; +}; + +/** @internal */ +export const DataAzureContainerAppsEnvironment$outboundSchema: z.ZodType< + DataAzureContainerAppsEnvironment$Outbound, + DataAzureContainerAppsEnvironment +> = z.object({ + data: z.lazy(() => SyncReconcileRequestData4$outboundSchema), + resourceType: z.literal("azure_container_apps_environment"), +}); + +export function dataAzureContainerAppsEnvironmentToJSON( + dataAzureContainerAppsEnvironment: DataAzureContainerAppsEnvironment, +): string { + return JSON.stringify( + DataAzureContainerAppsEnvironment$outboundSchema.parse( + dataAzureContainerAppsEnvironment, + ), + ); +} + +/** @internal */ +export type PrimaryEndpoints$Outbound = { + blob?: string | null | undefined; + dfs?: string | null | undefined; + file?: string | null | undefined; + queue?: string | null | undefined; + table?: string | null | undefined; + web?: string | null | undefined; +}; + +/** @internal */ +export const PrimaryEndpoints$outboundSchema: z.ZodType< + PrimaryEndpoints$Outbound, + PrimaryEndpoints +> = z.object({ + blob: z.nullable(z.string()).optional(), + dfs: z.nullable(z.string()).optional(), + file: z.nullable(z.string()).optional(), + queue: z.nullable(z.string()).optional(), + table: z.nullable(z.string()).optional(), + web: z.nullable(z.string()).optional(), +}); + +export function primaryEndpointsToJSON( + primaryEndpoints: PrimaryEndpoints, +): string { + return JSON.stringify( + PrimaryEndpoints$outboundSchema.parse(primaryEndpoints), + ); +} + +/** @internal */ +export type SecondaryEndpoints$Outbound = { + blob?: string | null | undefined; + dfs?: string | null | undefined; + file?: string | null | undefined; + queue?: string | null | undefined; + table?: string | null | undefined; + web?: string | null | undefined; +}; + +/** @internal */ +export const SecondaryEndpoints$outboundSchema: z.ZodType< + SecondaryEndpoints$Outbound, + SecondaryEndpoints +> = z.object({ + blob: z.nullable(z.string()).optional(), + dfs: z.nullable(z.string()).optional(), + file: z.nullable(z.string()).optional(), + queue: z.nullable(z.string()).optional(), + table: z.nullable(z.string()).optional(), + web: z.nullable(z.string()).optional(), +}); + +export function secondaryEndpointsToJSON( + secondaryEndpoints: SecondaryEndpoints, +): string { + return JSON.stringify( + SecondaryEndpoints$outboundSchema.parse(secondaryEndpoints), + ); +} + +/** @internal */ +export const Reason57$outboundSchema: z.ZodEnum = z.enum( + Reason57, +); + +/** @internal */ +export const CollectionIssueSeverity57$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity57 +> = z.enum(CollectionIssueSeverity57); + +/** @internal */ +export type CollectionIssue57$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue57$outboundSchema: z.ZodType< + CollectionIssue57$Outbound, + CollectionIssue57 +> = z.object({ + message: z.string(), + reason: Reason57$outboundSchema, + severity: CollectionIssueSeverity57$outboundSchema, + source: z.string(), +}); + +export function collectionIssue57ToJSON( + collectionIssue57: CollectionIssue57, +): string { + return JSON.stringify( + CollectionIssue57$outboundSchema.parse(collectionIssue57), + ); +} + +/** @internal */ +export const Health57$outboundSchema: z.ZodEnum = z.enum( + Health57, +); + +/** @internal */ +export const StatusLifecycle57$outboundSchema: z.ZodEnum< + typeof StatusLifecycle57 +> = z.enum(StatusLifecycle57); + +/** @internal */ +export type HeartbeatStatus57$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus57$outboundSchema: z.ZodType< + HeartbeatStatus57$Outbound, + HeartbeatStatus57 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue57$outboundSchema)), + health: Health57$outboundSchema, + lifecycle: StatusLifecycle57$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus57ToJSON( + heartbeatStatus57: HeartbeatStatus57, +): string { + return JSON.stringify( + HeartbeatStatus57$outboundSchema.parse(heartbeatStatus57), + ); +} + +/** @internal */ +export type SyncReconcileRequestData3$Outbound = { + allowBlobPublicAccess?: boolean | null | undefined; + allowSharedKeyAccess?: boolean | null | undefined; + encryptionKeySource?: string | null | undefined; + kind?: string | null | undefined; + location?: string | null | undefined; + minimumTlsVersion?: string | null | undefined; + name: string; + networkBypass?: string | null | undefined; + networkDefaultAction?: string | null | undefined; + networkIpRuleCount?: number | null | undefined; + networkResourceAccessRuleCount?: number | null | undefined; + networkVirtualNetworkRuleCount?: number | null | undefined; + primaryEndpoints: PrimaryEndpoints$Outbound; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + requireInfrastructureEncryption?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + secondaryEndpoints: SecondaryEndpoints$Outbound; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: HeartbeatStatus57$Outbound; + supportsHttpsTrafficOnly?: boolean | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestData3$outboundSchema: z.ZodType< + SyncReconcileRequestData3$Outbound, + SyncReconcileRequestData3 +> = z.object({ + allowBlobPublicAccess: z.nullable(z.boolean()).optional(), + allowSharedKeyAccess: z.nullable(z.boolean()).optional(), + encryptionKeySource: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + location: z.nullable(z.string()).optional(), + minimumTlsVersion: z.nullable(z.string()).optional(), + name: z.string(), + networkBypass: z.nullable(z.string()).optional(), + networkDefaultAction: z.nullable(z.string()).optional(), + networkIpRuleCount: z.nullable(z.int()).optional(), + networkResourceAccessRuleCount: z.nullable(z.int()).optional(), + networkVirtualNetworkRuleCount: z.nullable(z.int()).optional(), + primaryEndpoints: z.lazy(() => PrimaryEndpoints$outboundSchema), + provisioningState: z.nullable(z.string()).optional(), + publicNetworkAccess: z.nullable(z.string()).optional(), + requireInfrastructureEncryption: z.nullable(z.boolean()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + secondaryEndpoints: z.lazy(() => SecondaryEndpoints$outboundSchema), + skuName: z.nullable(z.string()).optional(), + skuTier: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus57$outboundSchema), + supportsHttpsTrafficOnly: z.nullable(z.boolean()).optional(), +}); + +export function syncReconcileRequestData3ToJSON( + syncReconcileRequestData3: SyncReconcileRequestData3, +): string { + return JSON.stringify( + SyncReconcileRequestData3$outboundSchema.parse(syncReconcileRequestData3), + ); +} + +/** @internal */ +export type DataAzureStorageAccount$Outbound = { + data: SyncReconcileRequestData3$Outbound; + resourceType: "azure_storage_account"; +}; + +/** @internal */ +export const DataAzureStorageAccount$outboundSchema: z.ZodType< + DataAzureStorageAccount$Outbound, + DataAzureStorageAccount +> = z.object({ + data: z.lazy(() => SyncReconcileRequestData3$outboundSchema), + resourceType: z.literal("azure_storage_account"), +}); + +export function dataAzureStorageAccountToJSON( + dataAzureStorageAccount: DataAzureStorageAccount, +): string { + return JSON.stringify( + DataAzureStorageAccount$outboundSchema.parse(dataAzureStorageAccount), + ); +} + +/** @internal */ +export const Reason56$outboundSchema: z.ZodEnum = z.enum( + Reason56, +); + +/** @internal */ +export const CollectionIssueSeverity56$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity56 +> = z.enum(CollectionIssueSeverity56); + +/** @internal */ +export type CollectionIssue56$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue56$outboundSchema: z.ZodType< + CollectionIssue56$Outbound, + CollectionIssue56 +> = z.object({ + message: z.string(), + reason: Reason56$outboundSchema, + severity: CollectionIssueSeverity56$outboundSchema, + source: z.string(), +}); + +export function collectionIssue56ToJSON( + collectionIssue56: CollectionIssue56, +): string { + return JSON.stringify( + CollectionIssue56$outboundSchema.parse(collectionIssue56), + ); +} + +/** @internal */ +export const Health56$outboundSchema: z.ZodEnum = z.enum( + Health56, +); + +/** @internal */ +export const StatusLifecycle56$outboundSchema: z.ZodEnum< + typeof StatusLifecycle56 +> = z.enum(StatusLifecycle56); + +/** @internal */ +export type HeartbeatStatus56$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus56$outboundSchema: z.ZodType< + HeartbeatStatus56$Outbound, + HeartbeatStatus56 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue56$outboundSchema)), + health: Health56$outboundSchema, + lifecycle: StatusLifecycle56$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus56ToJSON( + heartbeatStatus56: HeartbeatStatus56, +): string { + return JSON.stringify( + HeartbeatStatus56$outboundSchema.parse(heartbeatStatus56), + ); +} + +/** @internal */ +export type SyncReconcileRequestData2$Outbound = { + location?: string | null | undefined; + managedTags: { [k: string]: string }; + name: string; + provisioningState?: string | null | undefined; + resourceId?: string | null | undefined; + status: HeartbeatStatus56$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestData2$outboundSchema: z.ZodType< + SyncReconcileRequestData2$Outbound, + SyncReconcileRequestData2 +> = z.object({ + location: z.nullable(z.string()).optional(), + managedTags: z.record(z.string(), z.string()), + name: z.string(), + provisioningState: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus56$outboundSchema), +}); + +export function syncReconcileRequestData2ToJSON( + syncReconcileRequestData2: SyncReconcileRequestData2, +): string { + return JSON.stringify( + SyncReconcileRequestData2$outboundSchema.parse(syncReconcileRequestData2), + ); +} + +/** @internal */ +export type DataAzureResourceGroup$Outbound = { + data: SyncReconcileRequestData2$Outbound; + resourceType: "azure_resource_group"; +}; + +/** @internal */ +export const DataAzureResourceGroup$outboundSchema: z.ZodType< + DataAzureResourceGroup$Outbound, + DataAzureResourceGroup +> = z.object({ + data: z.lazy(() => SyncReconcileRequestData2$outboundSchema), + resourceType: z.literal("azure_resource_group"), +}); + +export function dataAzureResourceGroupToJSON( + dataAzureResourceGroup: DataAzureResourceGroup, +): string { + return JSON.stringify( + DataAzureResourceGroup$outboundSchema.parse(dataAzureResourceGroup), + ); +} + +/** @internal */ +export const Reason55$outboundSchema: z.ZodEnum = z.enum( + Reason55, +); + +/** @internal */ +export const CollectionIssueSeverity55$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity55 +> = z.enum(CollectionIssueSeverity55); + +/** @internal */ +export type CollectionIssue55$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue55$outboundSchema: z.ZodType< + CollectionIssue55$Outbound, + CollectionIssue55 +> = z.object({ + message: z.string(), + reason: Reason55$outboundSchema, + severity: CollectionIssueSeverity55$outboundSchema, + source: z.string(), +}); + +export function collectionIssue55ToJSON( + collectionIssue55: CollectionIssue55, +): string { + return JSON.stringify( + CollectionIssue55$outboundSchema.parse(collectionIssue55), + ); +} + +/** @internal */ +export const Health55$outboundSchema: z.ZodEnum = z.enum( + Health55, +); + +/** @internal */ +export const StatusLifecycle55$outboundSchema: z.ZodEnum< + typeof StatusLifecycle55 +> = z.enum(StatusLifecycle55); + +/** @internal */ +export type HeartbeatStatus55$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus55$outboundSchema: z.ZodType< + HeartbeatStatus55$Outbound, + HeartbeatStatus55 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue55$outboundSchema)), + health: Health55$outboundSchema, + lifecycle: StatusLifecycle55$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus55ToJSON( + heartbeatStatus55: HeartbeatStatus55, +): string { + return JSON.stringify( + HeartbeatStatus55$outboundSchema.parse(heartbeatStatus55), + ); +} + +/** @internal */ +export type DataAzureResourceProvider$Outbound = { + namespace: string; + providerId?: string | null | undefined; + registered: boolean; + registrationPolicy?: string | null | undefined; + registrationState?: string | null | undefined; + resourceTypeCount: number; + status: HeartbeatStatus55$Outbound; + backend: "azureResourceProvider"; +}; + +/** @internal */ +export const DataAzureResourceProvider$outboundSchema: z.ZodType< + DataAzureResourceProvider$Outbound, + DataAzureResourceProvider +> = z.object({ + namespace: z.string(), + providerId: z.nullable(z.string()).optional(), + registered: z.boolean(), + registrationPolicy: z.nullable(z.string()).optional(), + registrationState: z.nullable(z.string()).optional(), + resourceTypeCount: z.int(), + status: z.lazy(() => HeartbeatStatus55$outboundSchema), + backend: z.literal("azureResourceProvider"), +}); + +export function dataAzureResourceProviderToJSON( + dataAzureResourceProvider: DataAzureResourceProvider, +): string { + return JSON.stringify( + DataAzureResourceProvider$outboundSchema.parse(dataAzureResourceProvider), + ); +} + +/** @internal */ +export const Reason54$outboundSchema: z.ZodEnum = z.enum( + Reason54, +); + +/** @internal */ +export const CollectionIssueSeverity54$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity54 +> = z.enum(CollectionIssueSeverity54); + +/** @internal */ +export type CollectionIssue54$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue54$outboundSchema: z.ZodType< + CollectionIssue54$Outbound, + CollectionIssue54 +> = z.object({ + message: z.string(), + reason: Reason54$outboundSchema, + severity: CollectionIssueSeverity54$outboundSchema, + source: z.string(), +}); + +export function collectionIssue54ToJSON( + collectionIssue54: CollectionIssue54, +): string { + return JSON.stringify( + CollectionIssue54$outboundSchema.parse(collectionIssue54), + ); +} + +/** @internal */ +export const Health54$outboundSchema: z.ZodEnum = z.enum( + Health54, +); + +/** @internal */ +export const StatusLifecycle54$outboundSchema: z.ZodEnum< + typeof StatusLifecycle54 +> = z.enum(StatusLifecycle54); + +/** @internal */ +export type HeartbeatStatus54$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus54$outboundSchema: z.ZodType< + HeartbeatStatus54$Outbound, + HeartbeatStatus54 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue54$outboundSchema)), + health: Health54$outboundSchema, + lifecycle: StatusLifecycle54$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus54ToJSON( + heartbeatStatus54: HeartbeatStatus54, +): string { + return JSON.stringify( + HeartbeatStatus54$outboundSchema.parse(heartbeatStatus54), + ); +} + +/** @internal */ +export type DataGcpServiceUsage$Outbound = { + enabled: boolean; + lastOperationName?: string | null | undefined; + projectId: string; + serviceName: string; + serviceResourceName?: string | null | undefined; + state?: string | null | undefined; + status: HeartbeatStatus54$Outbound; + title?: string | null | undefined; + backend: "gcpServiceUsage"; +}; + +/** @internal */ +export const DataGcpServiceUsage$outboundSchema: z.ZodType< + DataGcpServiceUsage$Outbound, + DataGcpServiceUsage +> = z.object({ + enabled: z.boolean(), + lastOperationName: z.nullable(z.string()).optional(), + projectId: z.string(), + serviceName: z.string(), + serviceResourceName: z.nullable(z.string()).optional(), + state: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus54$outboundSchema), + title: z.nullable(z.string()).optional(), + backend: z.literal("gcpServiceUsage"), +}); + +export function dataGcpServiceUsageToJSON( + dataGcpServiceUsage: DataGcpServiceUsage, +): string { + return JSON.stringify( + DataGcpServiceUsage$outboundSchema.parse(dataGcpServiceUsage), + ); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion14$Outbound = + | DataGcpServiceUsage$Outbound + | DataAzureResourceProvider$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion14$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion14$Outbound, + SyncReconcileRequestDataUnion14 +> = z.union([ + z.lazy(() => DataGcpServiceUsage$outboundSchema), + z.lazy(() => DataAzureResourceProvider$outboundSchema), +]); + +export function syncReconcileRequestDataUnion14ToJSON( + syncReconcileRequestDataUnion14: SyncReconcileRequestDataUnion14, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion14$outboundSchema.parse( + syncReconcileRequestDataUnion14, + ), + ); +} + +/** @internal */ +export type DataServiceActivation$Outbound = { + data: DataGcpServiceUsage$Outbound | DataAzureResourceProvider$Outbound; + resourceType: "service_activation"; +}; + +/** @internal */ +export const DataServiceActivation$outboundSchema: z.ZodType< + DataServiceActivation$Outbound, + DataServiceActivation +> = z.object({ + data: z.union([ + z.lazy(() => DataGcpServiceUsage$outboundSchema), + z.lazy(() => DataAzureResourceProvider$outboundSchema), + ]), + resourceType: z.literal("service_activation"), +}); + +export function dataServiceActivationToJSON( + dataServiceActivation: DataServiceActivation, +): string { + return JSON.stringify( + DataServiceActivation$outboundSchema.parse(dataServiceActivation), + ); +} + +/** @internal */ +export type InvolvedObject9$Outbound = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +/** @internal */ +export const InvolvedObject9$outboundSchema: z.ZodType< + InvolvedObject9$Outbound, + InvolvedObject9 +> = z.object({ + apiVersion: z.nullable(z.string()).optional(), + fieldPath: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + namespace: z.nullable(z.string()).optional(), + resourceVersion: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), +}); + +export function involvedObject9ToJSON( + involvedObject9: InvolvedObject9, +): string { + return JSON.stringify(InvolvedObject9$outboundSchema.parse(involvedObject9)); +} + +/** @internal */ +export type InvolvedObjectUnion9$Outbound = InvolvedObject9$Outbound | any; + +/** @internal */ +export const InvolvedObjectUnion9$outboundSchema: z.ZodType< + InvolvedObjectUnion9$Outbound, + InvolvedObjectUnion9 +> = z.union([z.lazy(() => InvolvedObject9$outboundSchema), z.any()]); + +export function involvedObjectUnion9ToJSON( + involvedObjectUnion9: InvolvedObjectUnion9, +): string { + return JSON.stringify( + InvolvedObjectUnion9$outboundSchema.parse(involvedObjectUnion9), + ); +} + +/** @internal */ +export type SyncReconcileRequestSource9$Outbound = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSource9$outboundSchema: z.ZodType< + SyncReconcileRequestSource9$Outbound, + SyncReconcileRequestSource9 +> = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSource9ToJSON( + syncReconcileRequestSource9: SyncReconcileRequestSource9, +): string { + return JSON.stringify( + SyncReconcileRequestSource9$outboundSchema.parse( + syncReconcileRequestSource9, + ), + ); +} + +/** @internal */ +export type SourceUnion9$Outbound = SyncReconcileRequestSource9$Outbound | any; + +/** @internal */ +export const SourceUnion9$outboundSchema: z.ZodType< + SourceUnion9$Outbound, + SourceUnion9 +> = z.union([ + z.lazy(() => SyncReconcileRequestSource9$outboundSchema), + z.any(), +]); + +export function sourceUnion9ToJSON(sourceUnion9: SourceUnion9): string { + return JSON.stringify(SourceUnion9$outboundSchema.parse(sourceUnion9)); +} + +/** @internal */ +export type SyncReconcileRequestEvent12$Outbound = { + count?: number | null | undefined; + eventTime?: string | null | undefined; + firstTimestamp?: string | null | undefined; + involvedObject?: InvolvedObject9$Outbound | any | null | undefined; + lastTimestamp?: string | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource9$Outbound | any | null | undefined; + type?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestEvent12$outboundSchema: z.ZodType< + SyncReconcileRequestEvent12$Outbound, + SyncReconcileRequestEvent12 +> = z.object({ + count: z.nullable(z.int()).optional(), + eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), + firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject9$outboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSource9$outboundSchema), + z.any(), + ]), + ).optional(), + type: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestEvent12ToJSON( + syncReconcileRequestEvent12: SyncReconcileRequestEvent12, +): string { + return JSON.stringify( + SyncReconcileRequestEvent12$outboundSchema.parse( + syncReconcileRequestEvent12, + ), + ); +} + +/** @internal */ +export const Reason53$outboundSchema: z.ZodEnum = z.enum( + Reason53, +); + +/** @internal */ +export const CollectionIssueSeverity53$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity53 +> = z.enum(CollectionIssueSeverity53); + +/** @internal */ +export type CollectionIssue53$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue53$outboundSchema: z.ZodType< + CollectionIssue53$Outbound, + CollectionIssue53 +> = z.object({ + message: z.string(), + reason: Reason53$outboundSchema, + severity: CollectionIssueSeverity53$outboundSchema, + source: z.string(), +}); + +export function collectionIssue53ToJSON( + collectionIssue53: CollectionIssue53, +): string { + return JSON.stringify( + CollectionIssue53$outboundSchema.parse(collectionIssue53), + ); +} + +/** @internal */ +export const Health53$outboundSchema: z.ZodEnum = z.enum( + Health53, +); + +/** @internal */ +export const StatusLifecycle53$outboundSchema: z.ZodEnum< + typeof StatusLifecycle53 +> = z.enum(StatusLifecycle53); + +/** @internal */ +export type HeartbeatStatus53$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus53$outboundSchema: z.ZodType< + HeartbeatStatus53$Outbound, + HeartbeatStatus53 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue53$outboundSchema)), + health: Health53$outboundSchema, + lifecycle: StatusLifecycle53$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus53ToJSON( + heartbeatStatus53: HeartbeatStatus53, +): string { + return JSON.stringify( + HeartbeatStatus53$outboundSchema.parse(heartbeatStatus53), + ); +} + +/** @internal */ +export type DataKubernetesJob$Outbound = { + active?: number | null | undefined; + completionTime?: string | null | undefined; + conditionCount: number; + events: Array; + failed?: number | null | undefined; + imageDigest?: string | null | undefined; + jobName: string; + namespace: string; + startTime?: string | null | undefined; + status: HeartbeatStatus53$Outbound; + succeeded?: number | null | undefined; + backend: "kubernetesJob"; +}; + +/** @internal */ +export const DataKubernetesJob$outboundSchema: z.ZodType< + DataKubernetesJob$Outbound, + DataKubernetesJob +> = z.object({ + active: z.nullable(z.int()).optional(), + completionTime: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + conditionCount: z.int(), + events: z.array(z.lazy(() => SyncReconcileRequestEvent12$outboundSchema)), + failed: z.nullable(z.int()).optional(), + imageDigest: z.nullable(z.string()).optional(), + jobName: z.string(), + namespace: z.string(), + startTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), + status: z.lazy(() => HeartbeatStatus53$outboundSchema), + succeeded: z.nullable(z.int()).optional(), + backend: z.literal("kubernetesJob"), +}); + +export function dataKubernetesJobToJSON( + dataKubernetesJob: DataKubernetesJob, +): string { + return JSON.stringify( + DataKubernetesJob$outboundSchema.parse(dataKubernetesJob), + ); +} + +/** @internal */ +export const Reason52$outboundSchema: z.ZodEnum = z.enum( + Reason52, +); + +/** @internal */ +export const CollectionIssueSeverity52$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity52 +> = z.enum(CollectionIssueSeverity52); + +/** @internal */ +export type CollectionIssue52$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue52$outboundSchema: z.ZodType< + CollectionIssue52$Outbound, + CollectionIssue52 +> = z.object({ + message: z.string(), + reason: Reason52$outboundSchema, + severity: CollectionIssueSeverity52$outboundSchema, + source: z.string(), +}); + +export function collectionIssue52ToJSON( + collectionIssue52: CollectionIssue52, +): string { + return JSON.stringify( + CollectionIssue52$outboundSchema.parse(collectionIssue52), + ); +} + +/** @internal */ +export const Health52$outboundSchema: z.ZodEnum = z.enum( + Health52, +); + +/** @internal */ +export const StatusLifecycle52$outboundSchema: z.ZodEnum< + typeof StatusLifecycle52 +> = z.enum(StatusLifecycle52); + +/** @internal */ +export type HeartbeatStatus52$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus52$outboundSchema: z.ZodType< + HeartbeatStatus52$Outbound, + HeartbeatStatus52 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue52$outboundSchema)), + health: Health52$outboundSchema, + lifecycle: StatusLifecycle52$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus52ToJSON( + heartbeatStatus52: HeartbeatStatus52, +): string { + return JSON.stringify( + HeartbeatStatus52$outboundSchema.parse(heartbeatStatus52), + ); +} + +/** @internal */ +export type DataAzureContainerApps2$Outbound = { + environmentVariableCount: number; + managedEnvironmentId: string; + managedIdentityId?: string | null | undefined; + resourceGroupName: string; + resourcePrefix?: string | null | undefined; + status: HeartbeatStatus52$Outbound; + backend: "azureContainerApps"; +}; + +/** @internal */ +export const DataAzureContainerApps2$outboundSchema: z.ZodType< + DataAzureContainerApps2$Outbound, + DataAzureContainerApps2 +> = z.object({ + environmentVariableCount: z.int(), + managedEnvironmentId: z.string(), + managedIdentityId: z.nullable(z.string()).optional(), + resourceGroupName: z.string(), + resourcePrefix: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus52$outboundSchema), + backend: z.literal("azureContainerApps"), +}); + +export function dataAzureContainerApps2ToJSON( + dataAzureContainerApps2: DataAzureContainerApps2, +): string { + return JSON.stringify( + DataAzureContainerApps2$outboundSchema.parse(dataAzureContainerApps2), + ); +} + +/** @internal */ +export const Reason51$outboundSchema: z.ZodEnum = z.enum( + Reason51, +); + +/** @internal */ +export const CollectionIssueSeverity51$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity51 +> = z.enum(CollectionIssueSeverity51); + +/** @internal */ +export type CollectionIssue51$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue51$outboundSchema: z.ZodType< + CollectionIssue51$Outbound, + CollectionIssue51 +> = z.object({ + message: z.string(), + reason: Reason51$outboundSchema, + severity: CollectionIssueSeverity51$outboundSchema, + source: z.string(), +}); + +export function collectionIssue51ToJSON( + collectionIssue51: CollectionIssue51, +): string { + return JSON.stringify( + CollectionIssue51$outboundSchema.parse(collectionIssue51), + ); +} + +/** @internal */ +export const Health51$outboundSchema: z.ZodEnum = z.enum( + Health51, +); + +/** @internal */ +export const StatusLifecycle51$outboundSchema: z.ZodEnum< + typeof StatusLifecycle51 +> = z.enum(StatusLifecycle51); + +/** @internal */ +export type HeartbeatStatus51$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus51$outboundSchema: z.ZodType< + HeartbeatStatus51$Outbound, + HeartbeatStatus51 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue51$outboundSchema)), + health: Health51$outboundSchema, + lifecycle: StatusLifecycle51$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus51ToJSON( + heartbeatStatus51: HeartbeatStatus51, +): string { + return JSON.stringify( + HeartbeatStatus51$outboundSchema.parse(heartbeatStatus51), + ); +} + +/** @internal */ +export type DataGcpCloudBuild$Outbound = { + buildConfigId: string; + environmentVariableCount: number; + location: string; + projectId: string; + serviceAccount?: string | null | undefined; + status: HeartbeatStatus51$Outbound; + backend: "gcpCloudBuild"; +}; + +/** @internal */ +export const DataGcpCloudBuild$outboundSchema: z.ZodType< + DataGcpCloudBuild$Outbound, + DataGcpCloudBuild +> = z.object({ + buildConfigId: z.string(), + environmentVariableCount: z.int(), + location: z.string(), + projectId: z.string(), + serviceAccount: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus51$outboundSchema), + backend: z.literal("gcpCloudBuild"), +}); + +export function dataGcpCloudBuildToJSON( + dataGcpCloudBuild: DataGcpCloudBuild, +): string { + return JSON.stringify( + DataGcpCloudBuild$outboundSchema.parse(dataGcpCloudBuild), + ); +} + +/** @internal */ +export const Reason50$outboundSchema: z.ZodEnum = z.enum( + Reason50, +); + +/** @internal */ +export const CollectionIssueSeverity50$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity50 +> = z.enum(CollectionIssueSeverity50); + +/** @internal */ +export type CollectionIssue50$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue50$outboundSchema: z.ZodType< + CollectionIssue50$Outbound, + CollectionIssue50 +> = z.object({ + message: z.string(), + reason: Reason50$outboundSchema, + severity: CollectionIssueSeverity50$outboundSchema, + source: z.string(), +}); + +export function collectionIssue50ToJSON( + collectionIssue50: CollectionIssue50, +): string { + return JSON.stringify( + CollectionIssue50$outboundSchema.parse(collectionIssue50), + ); +} + +/** @internal */ +export const Health50$outboundSchema: z.ZodEnum = z.enum( + Health50, +); + +/** @internal */ +export const StatusLifecycle50$outboundSchema: z.ZodEnum< + typeof StatusLifecycle50 +> = z.enum(StatusLifecycle50); + +/** @internal */ +export type HeartbeatStatus50$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus50$outboundSchema: z.ZodType< + HeartbeatStatus50$Outbound, + HeartbeatStatus50 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue50$outboundSchema)), + health: Health50$outboundSchema, + lifecycle: StatusLifecycle50$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus50ToJSON( + heartbeatStatus50: HeartbeatStatus50, +): string { + return JSON.stringify( + HeartbeatStatus50$outboundSchema.parse(heartbeatStatus50), + ); +} + +/** @internal */ +export type DataAwsCodeBuild$Outbound = { + artifactsEncryptionDisabled?: boolean | null | undefined; + artifactsType?: string | null | undefined; + cloudWatchLogsStatus?: string | null | undefined; + computeType?: string | null | undefined; + created?: number | null | undefined; + description?: string | null | undefined; + encryptionKeyPresent: boolean; + environmentImage?: string | null | undefined; + environmentType?: string | null | undefined; + environmentVariableCount: number; + imagePullCredentialsType?: string | null | undefined; + lastModified?: number | null | undefined; + privilegedMode?: boolean | null | undefined; + projectArn?: string | null | undefined; + projectName: string; + queuedTimeoutInMinutes?: number | null | undefined; + s3LogsStatus?: string | null | undefined; + serviceRolePresent: boolean; + sourceType?: string | null | undefined; + status: HeartbeatStatus50$Outbound; + timeoutInMinutes?: number | null | undefined; + backend: "awsCodeBuild"; +}; + +/** @internal */ +export const DataAwsCodeBuild$outboundSchema: z.ZodType< + DataAwsCodeBuild$Outbound, + DataAwsCodeBuild +> = z.object({ + artifactsEncryptionDisabled: z.nullable(z.boolean()).optional(), + artifactsType: z.nullable(z.string()).optional(), + cloudWatchLogsStatus: z.nullable(z.string()).optional(), + computeType: z.nullable(z.string()).optional(), + created: z.nullable(z.number()).optional(), + description: z.nullable(z.string()).optional(), + encryptionKeyPresent: z.boolean(), + environmentImage: z.nullable(z.string()).optional(), + environmentType: z.nullable(z.string()).optional(), + environmentVariableCount: z.int(), + imagePullCredentialsType: z.nullable(z.string()).optional(), + lastModified: z.nullable(z.number()).optional(), + privilegedMode: z.nullable(z.boolean()).optional(), + projectArn: z.nullable(z.string()).optional(), + projectName: z.string(), + queuedTimeoutInMinutes: z.nullable(z.int()).optional(), + s3LogsStatus: z.nullable(z.string()).optional(), + serviceRolePresent: z.boolean(), + sourceType: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus50$outboundSchema), + timeoutInMinutes: z.nullable(z.int()).optional(), + backend: z.literal("awsCodeBuild"), +}); + +export function dataAwsCodeBuildToJSON( + dataAwsCodeBuild: DataAwsCodeBuild, +): string { + return JSON.stringify( + DataAwsCodeBuild$outboundSchema.parse(dataAwsCodeBuild), + ); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion13$Outbound = + | DataAwsCodeBuild$Outbound + | DataGcpCloudBuild$Outbound + | DataAzureContainerApps2$Outbound + | DataKubernetesJob$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion13$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion13$Outbound, + SyncReconcileRequestDataUnion13 +> = z.union([ + z.lazy(() => DataAwsCodeBuild$outboundSchema), + z.lazy(() => DataGcpCloudBuild$outboundSchema), + z.lazy(() => DataAzureContainerApps2$outboundSchema), + z.lazy(() => DataKubernetesJob$outboundSchema), +]); + +export function syncReconcileRequestDataUnion13ToJSON( + syncReconcileRequestDataUnion13: SyncReconcileRequestDataUnion13, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion13$outboundSchema.parse( + syncReconcileRequestDataUnion13, + ), + ); +} + +/** @internal */ +export type DataBuild$Outbound = { + data: + | DataAwsCodeBuild$Outbound + | DataGcpCloudBuild$Outbound + | DataAzureContainerApps2$Outbound + | DataKubernetesJob$Outbound; + resourceType: "build"; +}; + +/** @internal */ +export const DataBuild$outboundSchema: z.ZodType< + DataBuild$Outbound, + DataBuild +> = z.object({ + data: z.union([ + z.lazy(() => DataAwsCodeBuild$outboundSchema), + z.lazy(() => DataGcpCloudBuild$outboundSchema), + z.lazy(() => DataAzureContainerApps2$outboundSchema), + z.lazy(() => DataKubernetesJob$outboundSchema), + ]), + resourceType: z.literal("build"), +}); + +export function dataBuildToJSON(dataBuild: DataBuild): string { + return JSON.stringify(DataBuild$outboundSchema.parse(dataBuild)); +} + +/** @internal */ +export const Reason49$outboundSchema: z.ZodEnum = z.enum( + Reason49, +); + +/** @internal */ +export const CollectionIssueSeverity49$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity49 +> = z.enum(CollectionIssueSeverity49); + +/** @internal */ +export type CollectionIssue49$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue49$outboundSchema: z.ZodType< + CollectionIssue49$Outbound, + CollectionIssue49 +> = z.object({ + message: z.string(), + reason: Reason49$outboundSchema, + severity: CollectionIssueSeverity49$outboundSchema, + source: z.string(), +}); + +export function collectionIssue49ToJSON( + collectionIssue49: CollectionIssue49, +): string { + return JSON.stringify( + CollectionIssue49$outboundSchema.parse(collectionIssue49), + ); +} + +/** @internal */ +export const Health49$outboundSchema: z.ZodEnum = z.enum( + Health49, +); + +/** @internal */ +export const StatusLifecycle49$outboundSchema: z.ZodEnum< + typeof StatusLifecycle49 +> = z.enum(StatusLifecycle49); + +/** @internal */ +export type HeartbeatStatus49$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus49$outboundSchema: z.ZodType< + HeartbeatStatus49$Outbound, + HeartbeatStatus49 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue49$outboundSchema)), + health: Health49$outboundSchema, + lifecycle: StatusLifecycle49$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus49ToJSON( + heartbeatStatus49: HeartbeatStatus49, +): string { + return JSON.stringify( + HeartbeatStatus49$outboundSchema.parse(heartbeatStatus49), + ); +} + +/** @internal */ +export type DataLocal10$Outbound = { + reachable: boolean; + registryUrl: string; + status: HeartbeatStatus49$Outbound; + backend: "local"; +}; + +/** @internal */ +export const DataLocal10$outboundSchema: z.ZodType< + DataLocal10$Outbound, + DataLocal10 +> = z.object({ + reachable: z.boolean(), + registryUrl: z.string(), + status: z.lazy(() => HeartbeatStatus49$outboundSchema), + backend: z.literal("local"), +}); + +export function dataLocal10ToJSON(dataLocal10: DataLocal10): string { + return JSON.stringify(DataLocal10$outboundSchema.parse(dataLocal10)); +} + +/** @internal */ +export const Reason48$outboundSchema: z.ZodEnum = z.enum( + Reason48, +); + +/** @internal */ +export const CollectionIssueSeverity48$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity48 +> = z.enum(CollectionIssueSeverity48); + +/** @internal */ +export type CollectionIssue48$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue48$outboundSchema: z.ZodType< + CollectionIssue48$Outbound, + CollectionIssue48 +> = z.object({ + message: z.string(), + reason: Reason48$outboundSchema, + severity: CollectionIssueSeverity48$outboundSchema, + source: z.string(), +}); + +export function collectionIssue48ToJSON( + collectionIssue48: CollectionIssue48, +): string { + return JSON.stringify( + CollectionIssue48$outboundSchema.parse(collectionIssue48), + ); +} + +/** @internal */ +export const Health48$outboundSchema: z.ZodEnum = z.enum( + Health48, +); + +/** @internal */ +export const StatusLifecycle48$outboundSchema: z.ZodEnum< + typeof StatusLifecycle48 +> = z.enum(StatusLifecycle48); + +/** @internal */ +export type HeartbeatStatus48$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus48$outboundSchema: z.ZodType< + HeartbeatStatus48$Outbound, + HeartbeatStatus48 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue48$outboundSchema)), + health: Health48$outboundSchema, + lifecycle: StatusLifecycle48$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus48ToJSON( + heartbeatStatus48: HeartbeatStatus48, +): string { + return JSON.stringify( + HeartbeatStatus48$outboundSchema.parse(heartbeatStatus48), + ); +} + +/** @internal */ +export type DataAzureContainerRegistry$Outbound = { + adminUserEnabled: boolean; + anonymousPullEnabled: boolean; + creationDate?: string | null | undefined; + dataEndpointEnabled?: boolean | null | undefined; + dataEndpointHostNames: Array; + encryptionKeyIdentifierPresent: boolean; + encryptionKeyVaultUriPresent: boolean; + encryptionStatus?: string | null | undefined; + ipRuleCount: number; + location: string; + loginServer?: string | null | undefined; + managedTagCount: number; + name: string; + networkRuleBypassOptions: string; + networkRuleDefaultAction?: string | null | undefined; + policiesPresent: boolean; + policyCount: number; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess: string; + resourceGroup: string; + resourceId?: string | null | undefined; + skuName: string; + skuTier?: string | null | undefined; + status: HeartbeatStatus48$Outbound; + type?: string | null | undefined; + zoneRedundancy: string; + backend: "azureContainerRegistry"; +}; + +/** @internal */ +export const DataAzureContainerRegistry$outboundSchema: z.ZodType< + DataAzureContainerRegistry$Outbound, + DataAzureContainerRegistry +> = z.object({ + adminUserEnabled: z.boolean(), + anonymousPullEnabled: z.boolean(), + creationDate: z.nullable(z.string()).optional(), + dataEndpointEnabled: z.nullable(z.boolean()).optional(), + dataEndpointHostNames: z.array(z.string()), + encryptionKeyIdentifierPresent: z.boolean(), + encryptionKeyVaultUriPresent: z.boolean(), + encryptionStatus: z.nullable(z.string()).optional(), + ipRuleCount: z.int(), + location: z.string(), + loginServer: z.nullable(z.string()).optional(), + managedTagCount: z.int(), + name: z.string(), + networkRuleBypassOptions: z.string(), + networkRuleDefaultAction: z.nullable(z.string()).optional(), + policiesPresent: z.boolean(), + policyCount: z.int(), + privateEndpointConnectionCount: z.int(), + provisioningState: z.nullable(z.string()).optional(), + publicNetworkAccess: z.string(), + resourceGroup: z.string(), + resourceId: z.nullable(z.string()).optional(), + skuName: z.string(), + skuTier: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus48$outboundSchema), + type: z.nullable(z.string()).optional(), + zoneRedundancy: z.string(), + backend: z.literal("azureContainerRegistry"), +}); + +export function dataAzureContainerRegistryToJSON( + dataAzureContainerRegistry: DataAzureContainerRegistry, +): string { + return JSON.stringify( + DataAzureContainerRegistry$outboundSchema.parse(dataAzureContainerRegistry), + ); +} + +/** @internal */ +export const Reason47$outboundSchema: z.ZodEnum = z.enum( + Reason47, +); + +/** @internal */ +export const CollectionIssueSeverity47$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity47 +> = z.enum(CollectionIssueSeverity47); + +/** @internal */ +export type CollectionIssue47$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue47$outboundSchema: z.ZodType< + CollectionIssue47$Outbound, + CollectionIssue47 +> = z.object({ + message: z.string(), + reason: Reason47$outboundSchema, + severity: CollectionIssueSeverity47$outboundSchema, + source: z.string(), +}); + +export function collectionIssue47ToJSON( + collectionIssue47: CollectionIssue47, +): string { + return JSON.stringify( + CollectionIssue47$outboundSchema.parse(collectionIssue47), + ); +} + +/** @internal */ +export const Health47$outboundSchema: z.ZodEnum = z.enum( + Health47, +); + +/** @internal */ +export const StatusLifecycle47$outboundSchema: z.ZodEnum< + typeof StatusLifecycle47 +> = z.enum(StatusLifecycle47); + +/** @internal */ +export type HeartbeatStatus47$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus47$outboundSchema: z.ZodType< + HeartbeatStatus47$Outbound, + HeartbeatStatus47 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue47$outboundSchema)), + health: Health47$outboundSchema, + lifecycle: StatusLifecycle47$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus47ToJSON( + heartbeatStatus47: HeartbeatStatus47, +): string { + return JSON.stringify( + HeartbeatStatus47$outboundSchema.parse(heartbeatStatus47), + ); +} + +/** @internal */ +export type DataGcpArtifactRegistry$Outbound = { + cleanupPolicyCount: number; + cleanupPolicyDryRun?: boolean | null | undefined; + createTime?: string | null | undefined; + description?: string | null | undefined; + format?: string | null | undefined; + iamBindingCount: number; + iamPolicyEtagPresent: boolean; + iamRoles: Array; + kmsKeyNamePresent: boolean; + labelCount: number; + location: string; + mode?: string | null | undefined; + name?: string | null | undefined; + projectId: string; + pullServiceAccountEmail?: string | null | undefined; + pushServiceAccountEmail?: string | null | undefined; + repositoryId: string; + satisfiesPzs?: boolean | null | undefined; + sizeBytes?: string | null | undefined; + status: HeartbeatStatus47$Outbound; + updateTime?: string | null | undefined; + backend: "gcpArtifactRegistry"; +}; + +/** @internal */ +export const DataGcpArtifactRegistry$outboundSchema: z.ZodType< + DataGcpArtifactRegistry$Outbound, + DataGcpArtifactRegistry +> = z.object({ + cleanupPolicyCount: z.int(), + cleanupPolicyDryRun: z.nullable(z.boolean()).optional(), + createTime: z.nullable(z.string()).optional(), + description: z.nullable(z.string()).optional(), + format: z.nullable(z.string()).optional(), + iamBindingCount: z.int(), + iamPolicyEtagPresent: z.boolean(), + iamRoles: z.array(z.string()), + kmsKeyNamePresent: z.boolean(), + labelCount: z.int(), + location: z.string(), + mode: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + projectId: z.string(), + pullServiceAccountEmail: z.nullable(z.string()).optional(), + pushServiceAccountEmail: z.nullable(z.string()).optional(), + repositoryId: z.string(), + satisfiesPzs: z.nullable(z.boolean()).optional(), + sizeBytes: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus47$outboundSchema), + updateTime: z.nullable(z.string()).optional(), + backend: z.literal("gcpArtifactRegistry"), +}); + +export function dataGcpArtifactRegistryToJSON( + dataGcpArtifactRegistry: DataGcpArtifactRegistry, +): string { + return JSON.stringify( + DataGcpArtifactRegistry$outboundSchema.parse(dataGcpArtifactRegistry), + ); +} + +/** @internal */ +export type Repository$Outbound = { + createdAt: number; + encryptionType?: string | null | undefined; + imageTagMutability?: string | null | undefined; + kmsKeyPresent: boolean; + registryId: string; + repositoryArn: string; + repositoryName: string; + repositoryUri: string; + scanOnPush?: boolean | null | undefined; +}; + +/** @internal */ +export const Repository$outboundSchema: z.ZodType< + Repository$Outbound, + Repository +> = z.object({ + createdAt: z.number(), + encryptionType: z.nullable(z.string()).optional(), + imageTagMutability: z.nullable(z.string()).optional(), + kmsKeyPresent: z.boolean(), + registryId: z.string(), + repositoryArn: z.string(), + repositoryName: z.string(), + repositoryUri: z.string(), + scanOnPush: z.nullable(z.boolean()).optional(), +}); + +export function repositoryToJSON(repository: Repository): string { + return JSON.stringify(Repository$outboundSchema.parse(repository)); +} + +/** @internal */ +export const Reason46$outboundSchema: z.ZodEnum = z.enum( + Reason46, +); + +/** @internal */ +export const CollectionIssueSeverity46$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity46 +> = z.enum(CollectionIssueSeverity46); + +/** @internal */ +export type CollectionIssue46$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue46$outboundSchema: z.ZodType< + CollectionIssue46$Outbound, + CollectionIssue46 +> = z.object({ + message: z.string(), + reason: Reason46$outboundSchema, + severity: CollectionIssueSeverity46$outboundSchema, + source: z.string(), +}); + +export function collectionIssue46ToJSON( + collectionIssue46: CollectionIssue46, +): string { + return JSON.stringify( + CollectionIssue46$outboundSchema.parse(collectionIssue46), + ); +} + +/** @internal */ +export const Health46$outboundSchema: z.ZodEnum = z.enum( + Health46, +); + +/** @internal */ +export const StatusLifecycle46$outboundSchema: z.ZodEnum< + typeof StatusLifecycle46 +> = z.enum(StatusLifecycle46); + +/** @internal */ +export type HeartbeatStatus46$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus46$outboundSchema: z.ZodType< + HeartbeatStatus46$Outbound, + HeartbeatStatus46 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue46$outboundSchema)), + health: Health46$outboundSchema, + lifecycle: StatusLifecycle46$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus46ToJSON( + heartbeatStatus46: HeartbeatStatus46, +): string { + return JSON.stringify( + HeartbeatStatus46$outboundSchema.parse(heartbeatStatus46), + ); +} diff --git a/client-sdks/platform/typescript/src/models/index.ts b/client-sdks/platform/typescript/src/models/index.ts index a5f7dbfcb..9139216cd 100644 --- a/client-sdks/platform/typescript/src/models/index.ts +++ b/client-sdks/platform/typescript/src/models/index.ts @@ -11,6 +11,7 @@ export * from "./billingfeatureflags.js"; export * from "./billinglimits.js"; export * from "./billingplanstatus.js"; export * from "./cloudregionsresponse.js"; +export * from "./collectionissue26.js"; export * from "./command.js"; export * from "./commanddeploymentgroupinfo.js"; export * from "./commanddeploymentinfo.js"; @@ -27,9 +28,12 @@ export * from "./createdeploymentgrouptokenresponse.js"; export * from "./createdeploymentresponse.js"; export * from "./createdeploymenttokenrequest.js"; export * from "./createdeploymenttokenresponse.js"; +export * from "./createfirstpartydeploymentsessionresponse.js"; export * from "./createmanagerresponse.js"; +export * from "./createmanagerresponserouteunion4.js"; export * from "./createreleaserequest.js"; export * from "./createsetupregistrationoperationrequest.js"; +export * from "./datagcpcloudstorage.js"; export * from "./debugpackagepresignedurls.js"; export * from "./debugsession.js"; export * from "./debugsessionlistresponse.js"; @@ -41,6 +45,7 @@ export * from "./deployment.js"; export * from "./deploymentcomputeplan.js"; export * from "./deploymentconnectioninfo.js"; export * from "./deploymentdetailresponse.js"; +export * from "./deploymentdetailresponseoverrideaw.js"; export * from "./deploymentgroup.js"; export * from "./deploymentgroupinfo.js"; export * from "./deploymentgrouprole.js"; @@ -48,6 +53,7 @@ export * from "./deploymentgroupscope.js"; export * from "./deploymentinfo.js"; export * from "./deploymentinfosetupconfig.js"; export * from "./deploymentlistitemresponse.js"; +export * from "./deploymentoverrideaw.js"; export * from "./deploymentportalaccentcolor.js"; export * from "./deploymentportalappearance.js"; export * from "./deploymentportalappearancepreset.js"; @@ -82,6 +88,7 @@ export * from "./gitmetadata.js"; export * from "./gitnamespace.js"; export * from "./gitprovider.js"; export * from "./gitrepository.js"; +export * from "./heartbeatstatus46.js"; export * from "./importdeploymentrequest.js"; export * from "./importedresource.js"; export * from "./importsource.js"; @@ -97,14 +104,17 @@ export * from "./managerheartbeatresponse.js"; export * from "./managermanagementconfigs.js"; export * from "./managerretrydeploymentresponse.js"; export * from "./managerretryresponse.js"; +export * from "./managerretryresponseexposurecustom2.js"; export * from "./managerrole.js"; export * from "./managerscope.js"; export * from "./managerstatus.js"; export * from "./membership.js"; +export * from "./memoryunion4.js"; export * from "./newdeploymentrequest.js"; export * from "./newmanagerrequest.js"; export * from "./package.js"; export * from "./persistimporteddeploymentrequest.js"; +export * from "./persistimporteddeploymentrequestoverrideunion.js"; export * from "./pinreleaserequest.js"; export * from "./planid.js"; export * from "./prepareddeploymentstack.js"; @@ -116,8 +126,11 @@ export * from "./projectlistitemresponse.js"; export * from "./projectreleaseinfo.js"; export * from "./projectrole.js"; export * from "./projectscope.js"; +export * from "./rejoindeploymentrequest.js"; +export * from "./rejoindeploymentresponse.js"; export * from "./release.js"; export * from "./releaseauthorfilteritem.js"; +export * from "./releaseinforesources.js"; export * from "./releaselistitemresponse.js"; export * from "./resolvedstackinputsummary.js"; export * from "./resolvemanagergcpoauthproviderrequest.js"; @@ -127,6 +140,9 @@ export * from "./role.js"; export * from "./scope.js"; export * from "./security.js"; export * from "./serviceaccountsubject.js"; +export * from "./setfirstpartydeploymentinputsrequest.js"; +export * from "./setfirstpartydeploymentinputsresponse.js"; +export * from "./settargetagentversionrequest.js"; export * from "./setupfingerprintinfo.js"; export * from "./setupregistrationaction.js"; export * from "./setupregistrationcloudformationtarget.js"; @@ -135,15 +151,27 @@ export * from "./setupregistrationoperationresult.js"; export * from "./setupregistrationoperationstatus.js"; export * from "./stackbyplatform.js"; export * from "./stackinputvaluerequest.js"; +export * from "./statuslifecycle18.js"; export * from "./subject.js"; export * from "./subjectscope.js"; export * from "./supportedcloudregions.js"; export * from "./syncacquirerequest.js"; export * from "./syncacquireresponse.js"; +export * from "./syncacquireresponsekeyprefixsecretref2.js"; +export * from "./syncacquireresponsepreparedstackoverridegcpstack.js"; +export * from "./syncacquireresponseproviderazureapplicationgatewayforcontainersenum3.js"; +export * from "./syncacquireresponsetargetreleasemanagement1.js"; export * from "./synclistrequest.js"; export * from "./synclistresponse.js"; +export * from "./synclistresponseoverrideaw.js"; export * from "./syncreconcilerequest.js"; +export * from "./syncreconcilerequestpreparedstackoverridegcpstack.js"; +export * from "./syncreconcilerequesttargetreleasemanagement1.js"; export * from "./syncreconcileresponse.js"; +export * from "./syncreconcileresponsekeyprefixsecretref2.js"; +export * from "./syncreconcileresponsepreparedstackoverridegcpstack.js"; +export * from "./syncreconcileresponseproviderazureapplicationgatewayforcontainersenum3.js"; +export * from "./syncreconcileresponsetargetreleasemanagement1.js"; export * from "./syncreleaserequest.js"; export * from "./updateapikeyrequest.js"; export * from "./updatecommandrequest.js"; diff --git a/client-sdks/platform/typescript/src/models/managerretryresponse.ts b/client-sdks/platform/typescript/src/models/managerretryresponse.ts index f542c4aff..baba08b6f 100644 --- a/client-sdks/platform/typescript/src/models/managerretryresponse.ts +++ b/client-sdks/platform/typescript/src/models/managerretryresponse.ts @@ -7,282 +7,37 @@ import { remap as remap$ } from "../lib/primitives.js"; import { safeParse } from "../lib/schemas.js"; import { ClosedEnum } from "../types/enums.js"; import { Result as SafeParseResult } from "../types/fp.js"; -import { - DeploymentSetupPolicy, - DeploymentSetupPolicy$inboundSchema, -} from "./deploymentsetuppolicy.js"; -import { - EncryptedStackInputValue, - EncryptedStackInputValue$inboundSchema, -} from "./encryptedstackinputvalue.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; import { ManagerRetryDeploymentResponse, ManagerRetryDeploymentResponse$inboundSchema, } from "./managerretrydeploymentresponse.js"; +import { + ManagerRetryResponseClusterUnion2, + ManagerRetryResponseClusterUnion2$inboundSchema, + ManagerRetryResponseComputeUnion2, + ManagerRetryResponseComputeUnion2$inboundSchema, + ManagerRetryResponseDeploymentModel2, + ManagerRetryResponseDeploymentModel2$inboundSchema, + ManagerRetryResponseDomainsUnion2, + ManagerRetryResponseDomainsUnion2$inboundSchema, + ManagerRetryResponseExposureCustom2, + ManagerRetryResponseExposureCustom2$inboundSchema, + ManagerRetryResponseExternalBindings2, + ManagerRetryResponseExternalBindings2$inboundSchema, + ManagerRetryResponseHeartbeats2, + ManagerRetryResponseHeartbeats2$inboundSchema, + ManagerRetryResponseSetupConfig, + ManagerRetryResponseSetupConfig$inboundSchema, + ManagerRetryResponseSetupTerraform, + ManagerRetryResponseSetupTerraform$inboundSchema, +} from "./managerretryresponseexposurecustom2.js"; -export const ManagerRetryResponseEnvironmentVariableType = { - Plain: "plain", - Secret: "secret", -} as const; -export type ManagerRetryResponseEnvironmentVariableType = ClosedEnum< - typeof ManagerRetryResponseEnvironmentVariableType ->; - -export type ManagerRetryResponseEnvironmentVariable = { - name: string; - type: ManagerRetryResponseEnvironmentVariableType; - targetResources: Array | null; -}; - -export type ManagerRetryResponseSetupConfig = { - metadata: { [k: string]: any | null }; - policy: DeploymentSetupPolicy; - inputValues?: { [k: string]: EncryptedStackInputValue } | undefined; - environmentVariables: Array; -}; - -export type ManagerRetryResponsePoolsAutoscale3 = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Maximum machine count. - */ - max: number; - /** - * Minimum machine count. - */ - min: number; - mode: "autoscale"; -}; - -export type ManagerRetryResponsePoolsFixed3 = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Number of machines to run. - */ - machines: number; - mode: "fixed"; -}; - -/** - * User-selected deployment settings for one compute pool. - */ -export type ManagerRetryResponsePoolsUnion3 = - | ManagerRetryResponsePoolsFixed3 - | ManagerRetryResponsePoolsAutoscale3; - -/** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. - */ -export type ManagerRetryResponseCompute3 = { - /** - * Selected compute choices keyed by pool ID. - */ - pools?: { - [k: string]: - | ManagerRetryResponsePoolsFixed3 - | ManagerRetryResponsePoolsAutoscale3; - } | undefined; -}; - -export type ManagerRetryResponseComputeUnion3 = - | ManagerRetryResponseCompute3 - | any; - -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export const ManagerRetryResponseDeploymentModel3 = { - Push: "push", - Pull: "pull", -} as const; -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export type ManagerRetryResponseDeploymentModel3 = ClosedEnum< - typeof ManagerRetryResponseDeploymentModel3 ->; - -export type ManagerRetryResponseAws3 = { - certificateArn: string; -}; - -export type ManagerRetryResponseAwsUnion3 = ManagerRetryResponseAws3 | any; - -export type ManagerRetryResponseAzure3 = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; -}; - -export type ManagerRetryResponseAzureUnion3 = ManagerRetryResponseAzure3 | any; - -export type ManagerRetryResponseGcp3 = { - certificateName: string; -}; - -export type ManagerRetryResponseGcpUnion3 = ManagerRetryResponseGcp3 | any; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type ManagerRetryResponseTlsSecretRef3 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; -}; - -export type ManagerRetryResponseDomainsKubernetes3 = { - /** - * Namespace-scoped Kubernetes TLS Secret reference. - */ - tlsSecretRef: ManagerRetryResponseTlsSecretRef3; -}; - -export type ManagerRetryResponseDomainsKubernetesUnion3 = - | ManagerRetryResponseDomainsKubernetes3 - | any; - -/** - * Platform-specific certificate references for custom domains. - */ -export type ManagerRetryResponseDomainsCertificate3 = { - aws?: ManagerRetryResponseAws3 | any | null | undefined; - azure?: ManagerRetryResponseAzure3 | any | null | undefined; - gcp?: ManagerRetryResponseGcp3 | any | null | undefined; - kubernetes?: ManagerRetryResponseDomainsKubernetes3 | any | null | undefined; -}; - -/** - * Custom domain configuration for a single resource. - */ -export type ManagerRetryResponseCustomDomains3 = { - /** - * Platform-specific certificate references for custom domains. - */ - certificate: ManagerRetryResponseDomainsCertificate3; - /** - * Fully qualified domain name to use. - */ - domain: string; -}; - -/** - * Domain configuration for the stack. - * - * @remarks - * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. - */ -export type ManagerRetryResponseDomains3 = { - /** - * Custom domain configuration per resource ID. - */ - customDomains?: - | { [k: string]: ManagerRetryResponseCustomDomains3 } - | null - | undefined; -}; - -export type ManagerRetryResponseDomainsUnion3 = - | ManagerRetryResponseDomains3 - | any; - -/** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ -export type ManagerRetryResponseExternalBindings3 = {}; - -/** - * How heartbeat health checks are handled. - */ -export const ManagerRetryResponseHeartbeats3 = { - Off: "off", - On: "on", -} as const; -/** - * How heartbeat health checks are handled. - */ -export type ManagerRetryResponseHeartbeats3 = ClosedEnum< - typeof ManagerRetryResponseHeartbeats3 ->; - -/** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. - */ -export type ManagerRetryResponseCloud3 = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; -}; - -export type ManagerRetryResponseCloudUnion3 = ManagerRetryResponseCloud3 | any; - -/** - * Ownership model for the Kubernetes cluster. - */ -export const ManagerRetryResponseOwnership3 = { - Managed: "managed", - Existing: "existing", - External: "external", -} as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type ManagerRetryResponseOwnership3 = ClosedEnum< - typeof ManagerRetryResponseOwnership3 ->; - -/** - * Kubernetes cluster setup settings. - */ -export type ManagerRetryResponseCluster3 = { - cloud?: ManagerRetryResponseCloud3 | any | null | undefined; - /** - * Namespace where the Alien chart and application resources run. - */ - namespace?: string | null | undefined; - /** - * Ownership model for the Kubernetes cluster. - */ - ownership: ManagerRetryResponseOwnership3; -}; - -export type ManagerRetryResponseClusterUnion3 = - | ManagerRetryResponseCluster3 - | any; - -export type ManagerRetryResponseCertificateNone6 = { +export type ManagerRetryResponseCertificateNone3 = { mode: "none"; }; -export type ManagerRetryResponseCertificateManagedTLSSecret6 = { +export type ManagerRetryResponseCertificateManagedTLSSecret3 = { mode: "managedTlsSecret"; /** * Secret name template. Runtime may substitute resource/deployment tokens. @@ -290,7 +45,7 @@ export type ManagerRetryResponseCertificateManagedTLSSecret6 = { secretNameTemplate: string; }; -export type ManagerRetryResponseCertificateAwsAcmArn6 = { +export type ManagerRetryResponseCertificateAwsAcmArn3 = { /** * Existing ACM certificate ARN. */ @@ -298,7 +53,7 @@ export type ManagerRetryResponseCertificateAwsAcmArn6 = { mode: "awsAcmArn"; }; -export type ManagerRetryResponseCertificateManagedAcmImport6 = { +export type ManagerRetryResponseCertificateManagedAcmImport3 = { mode: "managedAcmImport"; /** * ACM region. Defaults to the deployment region when omitted. @@ -313,7 +68,7 @@ export type ManagerRetryResponseCertificateManagedAcmImport6 = { /** * Namespace-scoped Kubernetes TLS Secret reference. */ -export type ManagerRetryResponseCertificateTLSSecretRef6 = { +export type ManagerRetryResponseCertificateTLSSecretRef3 = { /** * Secret namespace. Defaults to the release namespace when omitted. */ @@ -328,31 +83,31 @@ export type ManagerRetryResponseCertificateTLSSecretRef6 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ -export type ManagerRetryResponseCertificateUnion6 = - | ManagerRetryResponseCertificateTLSSecretRef6 - | ManagerRetryResponseCertificateManagedAcmImport6 - | ManagerRetryResponseCertificateAwsAcmArn6 - | ManagerRetryResponseCertificateManagedTLSSecret6 - | ManagerRetryResponseCertificateNone6; - -export const ManagerRetryResponseModeCustom3 = { - Custom: "custom", +export type ManagerRetryResponseCertificateUnion3 = + | ManagerRetryResponseCertificateTLSSecretRef3 + | ManagerRetryResponseCertificateManagedAcmImport3 + | ManagerRetryResponseCertificateAwsAcmArn3 + | ManagerRetryResponseCertificateManagedTLSSecret3 + | ManagerRetryResponseCertificateNone3; + +export const ManagerRetryResponseModeGenerated2 = { + Generated: "generated", } as const; -export type ManagerRetryResponseModeCustom3 = ClosedEnum< - typeof ManagerRetryResponseModeCustom3 +export type ManagerRetryResponseModeGenerated2 = ClosedEnum< + typeof ManagerRetryResponseModeGenerated2 >; -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12 = +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum6 = { AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum6 = ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12 + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum6 >; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers12 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers6 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -367,37 +122,37 @@ export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers12 = */ frontend: string; provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12; + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum6; }; -export const ManagerRetryResponseProviderGkeGatewayEnum12 = { +export const ManagerRetryResponseProviderGkeGatewayEnum6 = { GkeGateway: "gkeGateway", } as const; -export type ManagerRetryResponseProviderGkeGatewayEnum12 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum12 +export type ManagerRetryResponseProviderGkeGatewayEnum6 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum6 >; -export type ManagerRetryResponseProviderGkeGateway12 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum12; +export type ManagerRetryResponseProviderGkeGateway6 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum6; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const ManagerRetryResponseProviderAwsAlbEnum12 = { +export const ManagerRetryResponseProviderAwsAlbEnum6 = { AwsAlb: "awsAlb", } as const; -export type ManagerRetryResponseProviderAwsAlbEnum12 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum12 +export type ManagerRetryResponseProviderAwsAlbEnum6 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum6 >; -export type ManagerRetryResponseProviderAwsAlb12 = { +export type ManagerRetryResponseProviderAwsAlb6 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum12; + provider: ManagerRetryResponseProviderAwsAlbEnum6; /** * Internet-facing or internal ALB scheme. */ @@ -412,16 +167,16 @@ export type ManagerRetryResponseProviderAwsAlb12 = { targetType: string; }; -export type ManagerRetryResponseProviderUnion12 = - | ManagerRetryResponseProviderAwsAlb12 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers12 - | ManagerRetryResponseProviderGkeGateway12 +export type ManagerRetryResponseProviderUnion6 = + | ManagerRetryResponseProviderAwsAlb6 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers6 + | ManagerRetryResponseProviderGkeGateway6 | any; /** * Shared Gateway API route profile values. */ -export type ManagerRetryResponseRouteGateway6 = { +export type ManagerRetryResponseRouteGateway3 = { /** * Annotations applied to route objects. */ @@ -443,26 +198,26 @@ export type ManagerRetryResponseRouteGateway6 = { */ listenerPort: number; provider?: - | ManagerRetryResponseProviderAwsAlb12 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers12 - | ManagerRetryResponseProviderGkeGateway12 + | ManagerRetryResponseProviderAwsAlb6 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers6 + | ManagerRetryResponseProviderGkeGateway6 | any | null | undefined; routeApi: "gateway"; }; -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11 = +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum5 = { AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum5 = ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11 + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum5 >; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers11 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers5 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -477,37 +232,37 @@ export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers11 = */ frontend: string; provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11; + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum5; }; -export const ManagerRetryResponseProviderGkeGatewayEnum11 = { +export const ManagerRetryResponseProviderGkeGatewayEnum5 = { GkeGateway: "gkeGateway", } as const; -export type ManagerRetryResponseProviderGkeGatewayEnum11 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum11 +export type ManagerRetryResponseProviderGkeGatewayEnum5 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum5 >; -export type ManagerRetryResponseProviderGkeGateway11 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum11; +export type ManagerRetryResponseProviderGkeGateway5 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum5; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const ManagerRetryResponseProviderAwsAlbEnum11 = { +export const ManagerRetryResponseProviderAwsAlbEnum5 = { AwsAlb: "awsAlb", } as const; -export type ManagerRetryResponseProviderAwsAlbEnum11 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum11 ->; +export type ManagerRetryResponseProviderAwsAlbEnum5 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum5 +>; -export type ManagerRetryResponseProviderAwsAlb11 = { +export type ManagerRetryResponseProviderAwsAlb5 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum11; + provider: ManagerRetryResponseProviderAwsAlbEnum5; /** * Internet-facing or internal ALB scheme. */ @@ -522,16 +277,16 @@ export type ManagerRetryResponseProviderAwsAlb11 = { targetType: string; }; -export type ManagerRetryResponseProviderUnion11 = - | ManagerRetryResponseProviderAwsAlb11 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers11 - | ManagerRetryResponseProviderGkeGateway11 +export type ManagerRetryResponseProviderUnion5 = + | ManagerRetryResponseProviderAwsAlb5 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers5 + | ManagerRetryResponseProviderGkeGateway5 | any; /** * Shared Ingress route profile values. */ -export type ManagerRetryResponseRouteIngress6 = { +export type ManagerRetryResponseRouteIngress3 = { /** * Annotations applied to route objects. */ @@ -549,9 +304,9 @@ export type ManagerRetryResponseRouteIngress6 = { */ labels?: { [k: string]: string } | undefined; provider?: - | ManagerRetryResponseProviderAwsAlb11 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers11 - | ManagerRetryResponseProviderGkeGateway11 + | ManagerRetryResponseProviderAwsAlb5 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers5 + | ManagerRetryResponseProviderGkeGateway5 | any | null | undefined; @@ -561,499 +316,191 @@ export type ManagerRetryResponseRouteIngress6 = { /** * Kubernetes route API selected for public endpoints. */ -export type ManagerRetryResponseRouteUnion6 = - | ManagerRetryResponseRouteIngress6 - | ManagerRetryResponseRouteGateway6; +export type ManagerRetryResponseRouteUnion3 = + | ManagerRetryResponseRouteIngress3 + | ManagerRetryResponseRouteGateway3; -export type ManagerRetryResponseExposureCustom3 = { +export type ManagerRetryResponseExposureGenerated2 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ certificate: - | ManagerRetryResponseCertificateTLSSecretRef6 - | ManagerRetryResponseCertificateManagedAcmImport6 - | ManagerRetryResponseCertificateAwsAcmArn6 - | ManagerRetryResponseCertificateManagedTLSSecret6 - | ManagerRetryResponseCertificateNone6; - /** - * Hostname routed by the Kubernetes public endpoint. - */ - domain: string; - mode: ManagerRetryResponseModeCustom3; + | ManagerRetryResponseCertificateTLSSecretRef3 + | ManagerRetryResponseCertificateManagedAcmImport3 + | ManagerRetryResponseCertificateAwsAcmArn3 + | ManagerRetryResponseCertificateManagedTLSSecret3 + | ManagerRetryResponseCertificateNone3; + mode: ManagerRetryResponseModeGenerated2; /** * Kubernetes route API selected for public endpoints. */ - route: ManagerRetryResponseRouteIngress6 | ManagerRetryResponseRouteGateway6; -}; - -export type ManagerRetryResponseCertificateNone5 = { - mode: "none"; + route: ManagerRetryResponseRouteIngress3 | ManagerRetryResponseRouteGateway3; }; -export type ManagerRetryResponseCertificateManagedTLSSecret5 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; -}; +export const ManagerRetryResponseModeDisabled2 = { + Disabled: "disabled", +} as const; +export type ManagerRetryResponseModeDisabled2 = ClosedEnum< + typeof ManagerRetryResponseModeDisabled2 +>; -export type ManagerRetryResponseCertificateAwsAcmArn5 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; +export type ManagerRetryResponseExposureDisabled2 = { + mode: ManagerRetryResponseModeDisabled2; }; -export type ManagerRetryResponseCertificateManagedAcmImport5 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; - /** - * Tags applied to runtime-imported ACM certificates. - */ - tags?: { [k: string]: string } | undefined; -}; +export type ManagerRetryResponseExposureUnion2 = + | ManagerRetryResponseExposureCustom2 + | ManagerRetryResponseExposureGenerated2 + | ManagerRetryResponseExposureDisabled2 + | any; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. */ -export type ManagerRetryResponseCertificateTLSSecretRef5 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; - mode: "tlsSecretRef"; +export type ManagerRetryResponseKubernetes2 = { + cluster?: ManagerRetryResponseClusterUnion2 | null | undefined; + exposure?: + | ManagerRetryResponseExposureCustom2 + | ManagerRetryResponseExposureGenerated2 + | ManagerRetryResponseExposureDisabled2 + | any + | null + | undefined; }; -/** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ -export type ManagerRetryResponseCertificateUnion5 = - | ManagerRetryResponseCertificateTLSSecretRef5 - | ManagerRetryResponseCertificateManagedAcmImport5 - | ManagerRetryResponseCertificateAwsAcmArn5 - | ManagerRetryResponseCertificateManagedTLSSecret5 - | ManagerRetryResponseCertificateNone5; - -export const ManagerRetryResponseModeGenerated3 = { - Generated: "generated", -} as const; -export type ManagerRetryResponseModeGenerated3 = ClosedEnum< - typeof ManagerRetryResponseModeGenerated3 ->; - -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10 = - ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10 - >; - -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers10 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10; - }; +export type ManagerRetryResponseKubernetesUnion2 = + | ManagerRetryResponseKubernetes2 + | any; -export const ManagerRetryResponseProviderGkeGatewayEnum10 = { - GkeGateway: "gkeGateway", +export const ManagerRetryResponseTypeByoVnetAzure2 = { + ByoVnetAzure: "byo-vnet-azure", } as const; -export type ManagerRetryResponseProviderGkeGatewayEnum10 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum10 +export type ManagerRetryResponseTypeByoVnetAzure2 = ClosedEnum< + typeof ManagerRetryResponseTypeByoVnetAzure2 >; -export type ManagerRetryResponseProviderGkeGateway10 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum10; +export type ManagerRetryResponseNetworkByoVnetAzure2 = { /** - * Optional static address name for the Gateway frontend. + * Name of the dedicated classic Application Gateway subnet within the VNet. */ - staticAddressName?: string | null | undefined; + applicationGatewaySubnetName?: string | null | undefined; + /** + * Name of the private subnet within the VNet + */ + privateSubnetName: string; + /** + * Name of the public subnet within the VNet + */ + publicSubnetName: string; + type: ManagerRetryResponseTypeByoVnetAzure2; + /** + * The full resource ID of the existing VNet + */ + vnetResourceId: string; }; -export const ManagerRetryResponseProviderAwsAlbEnum10 = { - AwsAlb: "awsAlb", +export const ManagerRetryResponseTypeByoVpcGcp2 = { + ByoVpcGcp: "byo-vpc-gcp", } as const; -export type ManagerRetryResponseProviderAwsAlbEnum10 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum10 +export type ManagerRetryResponseTypeByoVpcGcp2 = ClosedEnum< + typeof ManagerRetryResponseTypeByoVpcGcp2 >; -export type ManagerRetryResponseProviderAwsAlb10 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum10; +export type ManagerRetryResponseNetworkByoVpcGcp2 = { /** - * Internet-facing or internal ALB scheme. + * The name of the existing VPC network */ - scheme: string; + networkName: string; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * The region of the subnet */ - subnetIds?: Array | undefined; + region: string; /** - * ALB target type, usually `ip`. + * The name of the subnet to use */ - targetType: string; + subnetName: string; + type: ManagerRetryResponseTypeByoVpcGcp2; }; -export type ManagerRetryResponseProviderUnion10 = - | ManagerRetryResponseProviderAwsAlb10 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers10 - | ManagerRetryResponseProviderGkeGateway10 - | any; +export const ManagerRetryResponseTypeByoVpcAws2 = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type ManagerRetryResponseTypeByoVpcAws2 = ClosedEnum< + typeof ManagerRetryResponseTypeByoVpcAws2 +>; -/** - * Shared Gateway API route profile values. - */ -export type ManagerRetryResponseRouteGateway5 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; +export type ManagerRetryResponseNetworkByoVpcAws2 = { /** - * Route controller identifier, for example a cloud Gateway controller. + * IDs of private subnets */ - controller?: string | null | undefined; + privateSubnetIds: Array; /** - * GatewayClass selected for generated Gateways. + * IDs of public subnets (required for public ingress) */ - gatewayClassName: string; + publicSubnetIds: Array; /** - * Labels applied to route objects. + * Optional security group IDs to use */ - labels?: { [k: string]: string } | undefined; + securityGroupIds?: Array | undefined; + type: ManagerRetryResponseTypeByoVpcAws2; /** - * Listener port, usually 443. + * The ID of the existing VPC */ - listenerPort: number; - provider?: - | ManagerRetryResponseProviderAwsAlb10 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers10 - | ManagerRetryResponseProviderGkeGateway10 - | any - | null - | undefined; - routeApi: "gateway"; + vpcId: string; }; -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9 = - ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9 - >; - -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers9 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9; - }; - -export const ManagerRetryResponseProviderGkeGatewayEnum9 = { - GkeGateway: "gkeGateway", +export const ManagerRetryResponseTypeCreate2 = { + Create: "create", } as const; -export type ManagerRetryResponseProviderGkeGatewayEnum9 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum9 +export type ManagerRetryResponseTypeCreate2 = ClosedEnum< + typeof ManagerRetryResponseTypeCreate2 >; -export type ManagerRetryResponseProviderGkeGateway9 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum9; +export type ManagerRetryResponseNetworkCreate2 = { /** - * Optional static address name for the Gateway frontend. + * Number of availability zones (default: 2). */ - staticAddressName?: string | null | undefined; + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: ManagerRetryResponseTypeCreate2; }; -export const ManagerRetryResponseProviderAwsAlbEnum9 = { - AwsAlb: "awsAlb", +export const ManagerRetryResponseTypeUseDefault2 = { + UseDefault: "use-default", } as const; -export type ManagerRetryResponseProviderAwsAlbEnum9 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum9 +export type ManagerRetryResponseTypeUseDefault2 = ClosedEnum< + typeof ManagerRetryResponseTypeUseDefault2 >; -export type ManagerRetryResponseProviderAwsAlb9 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum9; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type ManagerRetryResponseProviderUnion9 = - | ManagerRetryResponseProviderAwsAlb9 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers9 - | ManagerRetryResponseProviderGkeGateway9 - | any; - -/** - * Shared Ingress route profile values. - */ -export type ManagerRetryResponseRouteIngress5 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - provider?: - | ManagerRetryResponseProviderAwsAlb9 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers9 - | ManagerRetryResponseProviderGkeGateway9 - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** - * Kubernetes route API selected for public endpoints. - */ -export type ManagerRetryResponseRouteUnion5 = - | ManagerRetryResponseRouteIngress5 - | ManagerRetryResponseRouteGateway5; - -export type ManagerRetryResponseExposureGenerated3 = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | ManagerRetryResponseCertificateTLSSecretRef5 - | ManagerRetryResponseCertificateManagedAcmImport5 - | ManagerRetryResponseCertificateAwsAcmArn5 - | ManagerRetryResponseCertificateManagedTLSSecret5 - | ManagerRetryResponseCertificateNone5; - mode: ManagerRetryResponseModeGenerated3; - /** - * Kubernetes route API selected for public endpoints. - */ - route: ManagerRetryResponseRouteIngress5 | ManagerRetryResponseRouteGateway5; -}; - -export const ManagerRetryResponseModeDisabled3 = { - Disabled: "disabled", -} as const; -export type ManagerRetryResponseModeDisabled3 = ClosedEnum< - typeof ManagerRetryResponseModeDisabled3 ->; - -export type ManagerRetryResponseExposureDisabled3 = { - mode: ManagerRetryResponseModeDisabled3; -}; - -export type ManagerRetryResponseExposureUnion3 = - | ManagerRetryResponseExposureCustom3 - | ManagerRetryResponseExposureGenerated3 - | ManagerRetryResponseExposureDisabled3 - | any; - -/** - * Kubernetes runtime substrate configuration. - * - * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. - */ -export type ManagerRetryResponseKubernetes3 = { - cluster?: ManagerRetryResponseCluster3 | any | null | undefined; - exposure?: - | ManagerRetryResponseExposureCustom3 - | ManagerRetryResponseExposureGenerated3 - | ManagerRetryResponseExposureDisabled3 - | any - | null - | undefined; -}; - -export type ManagerRetryResponseKubernetesUnion3 = - | ManagerRetryResponseKubernetes3 - | any; - -export const ManagerRetryResponseTypeByoVnetAzure3 = { - ByoVnetAzure: "byo-vnet-azure", -} as const; -export type ManagerRetryResponseTypeByoVnetAzure3 = ClosedEnum< - typeof ManagerRetryResponseTypeByoVnetAzure3 ->; - -export type ManagerRetryResponseNetworkByoVnetAzure3 = { - /** - * Name of the dedicated classic Application Gateway subnet within the VNet. - */ - applicationGatewaySubnetName?: string | null | undefined; - /** - * Name of the private subnet within the VNet - */ - privateSubnetName: string; - /** - * Name of the public subnet within the VNet - */ - publicSubnetName: string; - type: ManagerRetryResponseTypeByoVnetAzure3; - /** - * The full resource ID of the existing VNet - */ - vnetResourceId: string; -}; - -export const ManagerRetryResponseTypeByoVpcGcp3 = { - ByoVpcGcp: "byo-vpc-gcp", -} as const; -export type ManagerRetryResponseTypeByoVpcGcp3 = ClosedEnum< - typeof ManagerRetryResponseTypeByoVpcGcp3 ->; - -export type ManagerRetryResponseNetworkByoVpcGcp3 = { - /** - * The name of the existing VPC network - */ - networkName: string; - /** - * The region of the subnet - */ - region: string; - /** - * The name of the subnet to use - */ - subnetName: string; - type: ManagerRetryResponseTypeByoVpcGcp3; -}; - -export const ManagerRetryResponseTypeByoVpcAws3 = { - ByoVpcAws: "byo-vpc-aws", -} as const; -export type ManagerRetryResponseTypeByoVpcAws3 = ClosedEnum< - typeof ManagerRetryResponseTypeByoVpcAws3 ->; - -export type ManagerRetryResponseNetworkByoVpcAws3 = { - /** - * IDs of private subnets - */ - privateSubnetIds: Array; - /** - * IDs of public subnets (required for public ingress) - */ - publicSubnetIds: Array; - /** - * Optional security group IDs to use - */ - securityGroupIds?: Array | undefined; - type: ManagerRetryResponseTypeByoVpcAws3; - /** - * The ID of the existing VPC - */ - vpcId: string; -}; - -export const ManagerRetryResponseTypeCreate3 = { - Create: "create", -} as const; -export type ManagerRetryResponseTypeCreate3 = ClosedEnum< - typeof ManagerRetryResponseTypeCreate3 ->; - -export type ManagerRetryResponseNetworkCreate3 = { - /** - * Number of availability zones (default: 2). - */ - availabilityZones?: number | undefined; - /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). - */ - cidr?: string | null | undefined; - type: ManagerRetryResponseTypeCreate3; -}; - -export const ManagerRetryResponseTypeUseDefault3 = { - UseDefault: "use-default", -} as const; -export type ManagerRetryResponseTypeUseDefault3 = ClosedEnum< - typeof ManagerRetryResponseTypeUseDefault3 ->; - -export type ManagerRetryResponseNetworkUseDefault3 = { - type: ManagerRetryResponseTypeUseDefault3; +export type ManagerRetryResponseNetworkUseDefault2 = { + type: ManagerRetryResponseTypeUseDefault2; }; -export type ManagerRetryResponseNetworkUnion3 = - | ManagerRetryResponseNetworkByoVpcAws3 - | ManagerRetryResponseNetworkByoVpcGcp3 - | ManagerRetryResponseNetworkByoVnetAzure3 - | ManagerRetryResponseNetworkUseDefault3 - | ManagerRetryResponseNetworkCreate3 +export type ManagerRetryResponseNetworkUnion2 = + | ManagerRetryResponseNetworkByoVpcAws2 + | ManagerRetryResponseNetworkByoVpcGcp2 + | ManagerRetryResponseNetworkByoVnetAzure2 + | ManagerRetryResponseNetworkUseDefault2 + | ManagerRetryResponseNetworkCreate2 | any; /** * How telemetry (logs, metrics, traces) is handled. */ -export const ManagerRetryResponseTelemetry3 = { +export const ManagerRetryResponseTelemetry2 = { Off: "off", Auto: "auto", ApprovalRequired: "approval-required", @@ -1061,22 +508,22 @@ export const ManagerRetryResponseTelemetry3 = { /** * How telemetry (logs, metrics, traces) is handled. */ -export type ManagerRetryResponseTelemetry3 = ClosedEnum< - typeof ManagerRetryResponseTelemetry3 +export type ManagerRetryResponseTelemetry2 = ClosedEnum< + typeof ManagerRetryResponseTelemetry2 >; /** * How updates are delivered to the deployment. */ -export const ManagerRetryResponseUpdates3 = { +export const ManagerRetryResponseUpdates2 = { Auto: "auto", ApprovalRequired: "approval-required", } as const; /** * How updates are delivered to the deployment. */ -export type ManagerRetryResponseUpdates3 = ClosedEnum< - typeof ManagerRetryResponseUpdates3 +export type ManagerRetryResponseUpdates2 = ClosedEnum< + typeof ManagerRetryResponseUpdates2 >; /** @@ -1091,13 +538,13 @@ export type ManagerRetryResponseUpdates3 = ClosedEnum< * **Key distinction**: StackSettings is user-customizable, while ManagementConfig * is platform-derived (from the Manager's ServiceAccount). */ -export type ManagerRetryResponseStackSettings3 = { - compute?: ManagerRetryResponseCompute3 | any | null | undefined; +export type ManagerRetryResponseStackSettings2 = { + compute?: ManagerRetryResponseComputeUnion2 | null | undefined; /** * Deployment model: how updates are delivered to the remote environment. */ - deploymentModel?: ManagerRetryResponseDeploymentModel3 | undefined; - domains?: ManagerRetryResponseDomains3 | any | null | undefined; + deploymentModel?: ManagerRetryResponseDeploymentModel2 | undefined; + domains?: ManagerRetryResponseDomainsUnion2 | null | undefined; /** * External bindings for pre-existing infrastructure. * @@ -1106,42 +553,37 @@ export type ManagerRetryResponseStackSettings3 = { * Environment, etc.) instead of having Alien provision them. * Required for Kubernetes platform, optional for cloud platforms. */ - externalBindings?: ManagerRetryResponseExternalBindings3 | null | undefined; + externalBindings?: ManagerRetryResponseExternalBindings2 | null | undefined; /** * How heartbeat health checks are handled. */ - heartbeats?: ManagerRetryResponseHeartbeats3 | undefined; - kubernetes?: ManagerRetryResponseKubernetes3 | any | null | undefined; + heartbeats?: ManagerRetryResponseHeartbeats2 | undefined; + kubernetes?: ManagerRetryResponseKubernetes2 | any | null | undefined; network?: - | ManagerRetryResponseNetworkByoVpcAws3 - | ManagerRetryResponseNetworkByoVpcGcp3 - | ManagerRetryResponseNetworkByoVnetAzure3 - | ManagerRetryResponseNetworkUseDefault3 - | ManagerRetryResponseNetworkCreate3 + | ManagerRetryResponseNetworkByoVpcAws2 + | ManagerRetryResponseNetworkByoVpcGcp2 + | ManagerRetryResponseNetworkByoVnetAzure2 + | ManagerRetryResponseNetworkUseDefault2 + | ManagerRetryResponseNetworkCreate2 | any | null | undefined; /** * How telemetry (logs, metrics, traces) is handled. */ - telemetry?: ManagerRetryResponseTelemetry3 | undefined; + telemetry?: ManagerRetryResponseTelemetry2 | undefined; /** * How updates are delivered to the deployment. */ - updates?: ManagerRetryResponseUpdates3 | undefined; + updates?: ManagerRetryResponseUpdates2 | undefined; }; -export type ManagerRetryResponseSetupTerraform = { - method: "terraform"; +export type ManagerRetryResponseSetupGoogleOauth = { + method: "google-oauth"; deploymentPortalUrl: string; managerUrl: string; - providerSource: string; - moduleSource: string; - moduleVersion?: string | undefined; - moduleInputs: { [k: string]: string }; - mainTf: string; - tfvars: string; - commands: string; + oauthStartUrl: string; + region: string; /** * User-customizable deployment settings specified at deploy time. * @@ -1154,10 +596,10 @@ export type ManagerRetryResponseSetupTerraform = { * **Key distinction**: StackSettings is user-customizable, while ManagementConfig * is platform-derived (from the Manager's ServiceAccount). */ - stackSettings: ManagerRetryResponseStackSettings3; + stackSettings: ManagerRetryResponseStackSettings2; }; -export type ManagerRetryResponsePoolsAutoscale2 = { +export type ManagerRetryResponsePoolsAutoscale1 = { /** * Provider machine type selected for this deployment. */ @@ -1173,7 +615,7 @@ export type ManagerRetryResponsePoolsAutoscale2 = { mode: "autoscale"; }; -export type ManagerRetryResponsePoolsFixed2 = { +export type ManagerRetryResponsePoolsFixed1 = { /** * Provider machine type selected for this deployment. */ @@ -1188,9 +630,9 @@ export type ManagerRetryResponsePoolsFixed2 = { /** * User-selected deployment settings for one compute pool. */ -export type ManagerRetryResponsePoolsUnion2 = - | ManagerRetryResponsePoolsFixed2 - | ManagerRetryResponsePoolsAutoscale2; +export type ManagerRetryResponsePoolsUnion1 = + | ManagerRetryResponsePoolsFixed1 + | ManagerRetryResponsePoolsAutoscale1; /** * Deployment-time compute choices for Alien-managed compute pools. @@ -1201,58 +643,58 @@ export type ManagerRetryResponsePoolsUnion2 = * object stores the concrete choices made for one deployment, such as the * provider machine type and selected machine counts. */ -export type ManagerRetryResponseCompute2 = { +export type ManagerRetryResponseCompute1 = { /** * Selected compute choices keyed by pool ID. */ pools?: { [k: string]: - | ManagerRetryResponsePoolsFixed2 - | ManagerRetryResponsePoolsAutoscale2; + | ManagerRetryResponsePoolsFixed1 + | ManagerRetryResponsePoolsAutoscale1; } | undefined; }; -export type ManagerRetryResponseComputeUnion2 = - | ManagerRetryResponseCompute2 +export type ManagerRetryResponseComputeUnion1 = + | ManagerRetryResponseCompute1 | any; /** * Deployment model: how updates are delivered to the remote environment. */ -export const ManagerRetryResponseDeploymentModel2 = { +export const ManagerRetryResponseDeploymentModel1 = { Push: "push", Pull: "pull", } as const; /** * Deployment model: how updates are delivered to the remote environment. */ -export type ManagerRetryResponseDeploymentModel2 = ClosedEnum< - typeof ManagerRetryResponseDeploymentModel2 +export type ManagerRetryResponseDeploymentModel1 = ClosedEnum< + typeof ManagerRetryResponseDeploymentModel1 >; -export type ManagerRetryResponseAws2 = { +export type ManagerRetryResponseAws1 = { certificateArn: string; }; -export type ManagerRetryResponseAwsUnion2 = ManagerRetryResponseAws2 | any; +export type ManagerRetryResponseAwsUnion1 = ManagerRetryResponseAws1 | any; -export type ManagerRetryResponseAzure2 = { +export type ManagerRetryResponseAzure1 = { keyVaultCertificateId: string; keyVaultResourceId?: string | null | undefined; }; -export type ManagerRetryResponseAzureUnion2 = ManagerRetryResponseAzure2 | any; +export type ManagerRetryResponseAzureUnion1 = ManagerRetryResponseAzure1 | any; -export type ManagerRetryResponseGcp2 = { +export type ManagerRetryResponseGcp1 = { certificateName: string; }; -export type ManagerRetryResponseGcpUnion2 = ManagerRetryResponseGcp2 | any; +export type ManagerRetryResponseGcpUnion1 = ManagerRetryResponseGcp1 | any; /** * Namespace-scoped Kubernetes TLS Secret reference. */ -export type ManagerRetryResponseTlsSecretRef2 = { +export type ManagerRetryResponseTlsSecretRef1 = { /** * Secret namespace. Defaults to the release namespace when omitted. */ @@ -1263,35 +705,35 @@ export type ManagerRetryResponseTlsSecretRef2 = { secretName: string; }; -export type ManagerRetryResponseDomainsKubernetes2 = { +export type ManagerRetryResponseDomainsKubernetes1 = { /** * Namespace-scoped Kubernetes TLS Secret reference. */ - tlsSecretRef: ManagerRetryResponseTlsSecretRef2; + tlsSecretRef: ManagerRetryResponseTlsSecretRef1; }; -export type ManagerRetryResponseDomainsKubernetesUnion2 = - | ManagerRetryResponseDomainsKubernetes2 +export type ManagerRetryResponseDomainsKubernetesUnion1 = + | ManagerRetryResponseDomainsKubernetes1 | any; /** * Platform-specific certificate references for custom domains. */ -export type ManagerRetryResponseDomainsCertificate2 = { - aws?: ManagerRetryResponseAws2 | any | null | undefined; - azure?: ManagerRetryResponseAzure2 | any | null | undefined; - gcp?: ManagerRetryResponseGcp2 | any | null | undefined; - kubernetes?: ManagerRetryResponseDomainsKubernetes2 | any | null | undefined; +export type ManagerRetryResponseDomainsCertificate1 = { + aws?: ManagerRetryResponseAws1 | any | null | undefined; + azure?: ManagerRetryResponseAzure1 | any | null | undefined; + gcp?: ManagerRetryResponseGcp1 | any | null | undefined; + kubernetes?: ManagerRetryResponseDomainsKubernetes1 | any | null | undefined; }; /** * Custom domain configuration for a single resource. */ -export type ManagerRetryResponseCustomDomains2 = { +export type ManagerRetryResponseCustomDomains1 = { /** * Platform-specific certificate references for custom domains. */ - certificate: ManagerRetryResponseDomainsCertificate2; + certificate: ManagerRetryResponseDomainsCertificate1; /** * Fully qualified domain name to use. */ @@ -1306,18 +748,18 @@ export type ManagerRetryResponseCustomDomains2 = { * When `custom_domains` is set, the specified resources use customer-provided * domains and certificates. Otherwise, Alien auto-generates domains. */ -export type ManagerRetryResponseDomains2 = { +export type ManagerRetryResponseDomains1 = { /** * Custom domain configuration per resource ID. */ customDomains?: - | { [k: string]: ManagerRetryResponseCustomDomains2 } + | { [k: string]: ManagerRetryResponseCustomDomains1 } | null | undefined; }; -export type ManagerRetryResponseDomainsUnion2 = - | ManagerRetryResponseDomains2 +export type ManagerRetryResponseDomainsUnion1 = + | ManagerRetryResponseDomains1 | any; /** @@ -1328,26 +770,26 @@ export type ManagerRetryResponseDomainsUnion2 = * Environment, etc.) instead of having Alien provision them. * Required for Kubernetes platform, optional for cloud platforms. */ -export type ManagerRetryResponseExternalBindings2 = {}; +export type ManagerRetryResponseExternalBindings1 = {}; /** * How heartbeat health checks are handled. */ -export const ManagerRetryResponseHeartbeats2 = { +export const ManagerRetryResponseHeartbeats1 = { Off: "off", On: "on", } as const; /** * How heartbeat health checks are handled. */ -export type ManagerRetryResponseHeartbeats2 = ClosedEnum< - typeof ManagerRetryResponseHeartbeats2 +export type ManagerRetryResponseHeartbeats1 = ClosedEnum< + typeof ManagerRetryResponseHeartbeats1 >; /** * Optional provider-specific identity for a cloud-backed Kubernetes cluster. */ -export type ManagerRetryResponseCloud2 = { +export type ManagerRetryResponseCloud1 = { accountId?: string | null | undefined; clusterId?: string | null | undefined; clusterName?: string | null | undefined; @@ -1357,12 +799,12 @@ export type ManagerRetryResponseCloud2 = { subscriptionId?: string | null | undefined; }; -export type ManagerRetryResponseCloudUnion2 = ManagerRetryResponseCloud2 | any; +export type ManagerRetryResponseCloudUnion1 = ManagerRetryResponseCloud1 | any; /** * Ownership model for the Kubernetes cluster. */ -export const ManagerRetryResponseOwnership2 = { +export const ManagerRetryResponseOwnership1 = { Managed: "managed", Existing: "existing", External: "external", @@ -1370,15 +812,15 @@ export const ManagerRetryResponseOwnership2 = { /** * Ownership model for the Kubernetes cluster. */ -export type ManagerRetryResponseOwnership2 = ClosedEnum< - typeof ManagerRetryResponseOwnership2 +export type ManagerRetryResponseOwnership1 = ClosedEnum< + typeof ManagerRetryResponseOwnership1 >; /** * Kubernetes cluster setup settings. */ -export type ManagerRetryResponseCluster2 = { - cloud?: ManagerRetryResponseCloud2 | any | null | undefined; +export type ManagerRetryResponseCluster1 = { + cloud?: ManagerRetryResponseCloud1 | any | null | undefined; /** * Namespace where the Alien chart and application resources run. */ @@ -1386,18 +828,18 @@ export type ManagerRetryResponseCluster2 = { /** * Ownership model for the Kubernetes cluster. */ - ownership: ManagerRetryResponseOwnership2; + ownership: ManagerRetryResponseOwnership1; }; -export type ManagerRetryResponseClusterUnion2 = - | ManagerRetryResponseCluster2 +export type ManagerRetryResponseClusterUnion1 = + | ManagerRetryResponseCluster1 | any; -export type ManagerRetryResponseCertificateNone4 = { +export type ManagerRetryResponseCertificateNone2 = { mode: "none"; }; -export type ManagerRetryResponseCertificateManagedTLSSecret4 = { +export type ManagerRetryResponseCertificateManagedTLSSecret2 = { mode: "managedTlsSecret"; /** * Secret name template. Runtime may substitute resource/deployment tokens. @@ -1405,7 +847,7 @@ export type ManagerRetryResponseCertificateManagedTLSSecret4 = { secretNameTemplate: string; }; -export type ManagerRetryResponseCertificateAwsAcmArn4 = { +export type ManagerRetryResponseCertificateAwsAcmArn2 = { /** * Existing ACM certificate ARN. */ @@ -1413,7 +855,7 @@ export type ManagerRetryResponseCertificateAwsAcmArn4 = { mode: "awsAcmArn"; }; -export type ManagerRetryResponseCertificateManagedAcmImport4 = { +export type ManagerRetryResponseCertificateManagedAcmImport2 = { mode: "managedAcmImport"; /** * ACM region. Defaults to the deployment region when omitted. @@ -1428,7 +870,7 @@ export type ManagerRetryResponseCertificateManagedAcmImport4 = { /** * Namespace-scoped Kubernetes TLS Secret reference. */ -export type ManagerRetryResponseCertificateTLSSecretRef4 = { +export type ManagerRetryResponseCertificateTLSSecretRef2 = { /** * Secret namespace. Defaults to the release namespace when omitted. */ @@ -1443,31 +885,31 @@ export type ManagerRetryResponseCertificateTLSSecretRef4 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ -export type ManagerRetryResponseCertificateUnion4 = - | ManagerRetryResponseCertificateTLSSecretRef4 - | ManagerRetryResponseCertificateManagedAcmImport4 - | ManagerRetryResponseCertificateAwsAcmArn4 - | ManagerRetryResponseCertificateManagedTLSSecret4 - | ManagerRetryResponseCertificateNone4; - -export const ManagerRetryResponseModeCustom2 = { - Custom: "custom", -} as const; -export type ManagerRetryResponseModeCustom2 = ClosedEnum< - typeof ManagerRetryResponseModeCustom2 ->; - -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", +export type ManagerRetryResponseCertificateUnion2 = + | ManagerRetryResponseCertificateTLSSecretRef2 + | ManagerRetryResponseCertificateManagedAcmImport2 + | ManagerRetryResponseCertificateAwsAcmArn2 + | ManagerRetryResponseCertificateManagedTLSSecret2 + | ManagerRetryResponseCertificateNone2; + +export const ManagerRetryResponseModeCustom1 = { + Custom: "custom", +} as const; +export type ManagerRetryResponseModeCustom1 = ClosedEnum< + typeof ManagerRetryResponseModeCustom1 +>; + +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum4 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum4 = ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8 + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum4 >; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers8 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers4 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -1482,37 +924,37 @@ export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers8 = */ frontend: string; provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8; + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum4; }; -export const ManagerRetryResponseProviderGkeGatewayEnum8 = { +export const ManagerRetryResponseProviderGkeGatewayEnum4 = { GkeGateway: "gkeGateway", } as const; -export type ManagerRetryResponseProviderGkeGatewayEnum8 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum8 +export type ManagerRetryResponseProviderGkeGatewayEnum4 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum4 >; -export type ManagerRetryResponseProviderGkeGateway8 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum8; +export type ManagerRetryResponseProviderGkeGateway4 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum4; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const ManagerRetryResponseProviderAwsAlbEnum8 = { +export const ManagerRetryResponseProviderAwsAlbEnum4 = { AwsAlb: "awsAlb", } as const; -export type ManagerRetryResponseProviderAwsAlbEnum8 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum8 +export type ManagerRetryResponseProviderAwsAlbEnum4 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum4 >; -export type ManagerRetryResponseProviderAwsAlb8 = { +export type ManagerRetryResponseProviderAwsAlb4 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum8; + provider: ManagerRetryResponseProviderAwsAlbEnum4; /** * Internet-facing or internal ALB scheme. */ @@ -1527,16 +969,16 @@ export type ManagerRetryResponseProviderAwsAlb8 = { targetType: string; }; -export type ManagerRetryResponseProviderUnion8 = - | ManagerRetryResponseProviderAwsAlb8 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers8 - | ManagerRetryResponseProviderGkeGateway8 +export type ManagerRetryResponseProviderUnion4 = + | ManagerRetryResponseProviderAwsAlb4 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers4 + | ManagerRetryResponseProviderGkeGateway4 | any; /** * Shared Gateway API route profile values. */ -export type ManagerRetryResponseRouteGateway4 = { +export type ManagerRetryResponseRouteGateway2 = { /** * Annotations applied to route objects. */ @@ -1558,26 +1000,26 @@ export type ManagerRetryResponseRouteGateway4 = { */ listenerPort: number; provider?: - | ManagerRetryResponseProviderAwsAlb8 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers8 - | ManagerRetryResponseProviderGkeGateway8 + | ManagerRetryResponseProviderAwsAlb4 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers4 + | ManagerRetryResponseProviderGkeGateway4 | any | null | undefined; routeApi: "gateway"; }; -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7 = +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum3 = { AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum3 = ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7 + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum3 >; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers7 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers3 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -1592,37 +1034,37 @@ export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers7 = */ frontend: string; provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7; + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum3; }; -export const ManagerRetryResponseProviderGkeGatewayEnum7 = { +export const ManagerRetryResponseProviderGkeGatewayEnum3 = { GkeGateway: "gkeGateway", } as const; -export type ManagerRetryResponseProviderGkeGatewayEnum7 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum7 +export type ManagerRetryResponseProviderGkeGatewayEnum3 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum3 >; -export type ManagerRetryResponseProviderGkeGateway7 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum7; +export type ManagerRetryResponseProviderGkeGateway3 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum3; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const ManagerRetryResponseProviderAwsAlbEnum7 = { +export const ManagerRetryResponseProviderAwsAlbEnum3 = { AwsAlb: "awsAlb", } as const; -export type ManagerRetryResponseProviderAwsAlbEnum7 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum7 +export type ManagerRetryResponseProviderAwsAlbEnum3 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum3 >; -export type ManagerRetryResponseProviderAwsAlb7 = { +export type ManagerRetryResponseProviderAwsAlb3 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum7; + provider: ManagerRetryResponseProviderAwsAlbEnum3; /** * Internet-facing or internal ALB scheme. */ @@ -1637,16 +1079,16 @@ export type ManagerRetryResponseProviderAwsAlb7 = { targetType: string; }; -export type ManagerRetryResponseProviderUnion7 = - | ManagerRetryResponseProviderAwsAlb7 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers7 - | ManagerRetryResponseProviderGkeGateway7 +export type ManagerRetryResponseProviderUnion3 = + | ManagerRetryResponseProviderAwsAlb3 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers3 + | ManagerRetryResponseProviderGkeGateway3 | any; /** * Shared Ingress route profile values. */ -export type ManagerRetryResponseRouteIngress4 = { +export type ManagerRetryResponseRouteIngress2 = { /** * Annotations applied to route objects. */ @@ -1664,9 +1106,9 @@ export type ManagerRetryResponseRouteIngress4 = { */ labels?: { [k: string]: string } | undefined; provider?: - | ManagerRetryResponseProviderAwsAlb7 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers7 - | ManagerRetryResponseProviderGkeGateway7 + | ManagerRetryResponseProviderAwsAlb3 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers3 + | ManagerRetryResponseProviderGkeGateway3 | any | null | undefined; @@ -1676,36 +1118,36 @@ export type ManagerRetryResponseRouteIngress4 = { /** * Kubernetes route API selected for public endpoints. */ -export type ManagerRetryResponseRouteUnion4 = - | ManagerRetryResponseRouteIngress4 - | ManagerRetryResponseRouteGateway4; +export type ManagerRetryResponseRouteUnion2 = + | ManagerRetryResponseRouteIngress2 + | ManagerRetryResponseRouteGateway2; -export type ManagerRetryResponseExposureCustom2 = { +export type ManagerRetryResponseExposureCustom1 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ certificate: - | ManagerRetryResponseCertificateTLSSecretRef4 - | ManagerRetryResponseCertificateManagedAcmImport4 - | ManagerRetryResponseCertificateAwsAcmArn4 - | ManagerRetryResponseCertificateManagedTLSSecret4 - | ManagerRetryResponseCertificateNone4; + | ManagerRetryResponseCertificateTLSSecretRef2 + | ManagerRetryResponseCertificateManagedAcmImport2 + | ManagerRetryResponseCertificateAwsAcmArn2 + | ManagerRetryResponseCertificateManagedTLSSecret2 + | ManagerRetryResponseCertificateNone2; /** * Hostname routed by the Kubernetes public endpoint. */ domain: string; - mode: ManagerRetryResponseModeCustom2; + mode: ManagerRetryResponseModeCustom1; /** * Kubernetes route API selected for public endpoints. */ - route: ManagerRetryResponseRouteIngress4 | ManagerRetryResponseRouteGateway4; + route: ManagerRetryResponseRouteIngress2 | ManagerRetryResponseRouteGateway2; }; -export type ManagerRetryResponseCertificateNone3 = { +export type ManagerRetryResponseCertificateNone1 = { mode: "none"; }; -export type ManagerRetryResponseCertificateManagedTLSSecret3 = { +export type ManagerRetryResponseCertificateManagedTLSSecret1 = { mode: "managedTlsSecret"; /** * Secret name template. Runtime may substitute resource/deployment tokens. @@ -1713,7 +1155,7 @@ export type ManagerRetryResponseCertificateManagedTLSSecret3 = { secretNameTemplate: string; }; -export type ManagerRetryResponseCertificateAwsAcmArn3 = { +export type ManagerRetryResponseCertificateAwsAcmArn1 = { /** * Existing ACM certificate ARN. */ @@ -1721,7 +1163,7 @@ export type ManagerRetryResponseCertificateAwsAcmArn3 = { mode: "awsAcmArn"; }; -export type ManagerRetryResponseCertificateManagedAcmImport3 = { +export type ManagerRetryResponseCertificateManagedAcmImport1 = { mode: "managedAcmImport"; /** * ACM region. Defaults to the deployment region when omitted. @@ -1736,7 +1178,7 @@ export type ManagerRetryResponseCertificateManagedAcmImport3 = { /** * Namespace-scoped Kubernetes TLS Secret reference. */ -export type ManagerRetryResponseCertificateTLSSecretRef3 = { +export type ManagerRetryResponseCertificateTLSSecretRef1 = { /** * Secret namespace. Defaults to the release namespace when omitted. */ @@ -1751,31 +1193,31 @@ export type ManagerRetryResponseCertificateTLSSecretRef3 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ -export type ManagerRetryResponseCertificateUnion3 = - | ManagerRetryResponseCertificateTLSSecretRef3 - | ManagerRetryResponseCertificateManagedAcmImport3 - | ManagerRetryResponseCertificateAwsAcmArn3 - | ManagerRetryResponseCertificateManagedTLSSecret3 - | ManagerRetryResponseCertificateNone3; +export type ManagerRetryResponseCertificateUnion1 = + | ManagerRetryResponseCertificateTLSSecretRef1 + | ManagerRetryResponseCertificateManagedAcmImport1 + | ManagerRetryResponseCertificateAwsAcmArn1 + | ManagerRetryResponseCertificateManagedTLSSecret1 + | ManagerRetryResponseCertificateNone1; -export const ManagerRetryResponseModeGenerated2 = { +export const ManagerRetryResponseModeGenerated1 = { Generated: "generated", } as const; -export type ManagerRetryResponseModeGenerated2 = ClosedEnum< - typeof ManagerRetryResponseModeGenerated2 +export type ManagerRetryResponseModeGenerated1 = ClosedEnum< + typeof ManagerRetryResponseModeGenerated1 >; -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum6 = +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum2 = { AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum6 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum2 = ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum6 + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum2 >; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers6 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers2 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -1790,37 +1232,37 @@ export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers6 = */ frontend: string; provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum6; + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum2; }; -export const ManagerRetryResponseProviderGkeGatewayEnum6 = { +export const ManagerRetryResponseProviderGkeGatewayEnum2 = { GkeGateway: "gkeGateway", } as const; -export type ManagerRetryResponseProviderGkeGatewayEnum6 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum6 +export type ManagerRetryResponseProviderGkeGatewayEnum2 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum2 >; -export type ManagerRetryResponseProviderGkeGateway6 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum6; +export type ManagerRetryResponseProviderGkeGateway2 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum2; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const ManagerRetryResponseProviderAwsAlbEnum6 = { +export const ManagerRetryResponseProviderAwsAlbEnum2 = { AwsAlb: "awsAlb", } as const; -export type ManagerRetryResponseProviderAwsAlbEnum6 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum6 +export type ManagerRetryResponseProviderAwsAlbEnum2 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum2 >; -export type ManagerRetryResponseProviderAwsAlb6 = { +export type ManagerRetryResponseProviderAwsAlb2 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum6; + provider: ManagerRetryResponseProviderAwsAlbEnum2; /** * Internet-facing or internal ALB scheme. */ @@ -1835,16 +1277,16 @@ export type ManagerRetryResponseProviderAwsAlb6 = { targetType: string; }; -export type ManagerRetryResponseProviderUnion6 = - | ManagerRetryResponseProviderAwsAlb6 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers6 - | ManagerRetryResponseProviderGkeGateway6 +export type ManagerRetryResponseProviderUnion2 = + | ManagerRetryResponseProviderAwsAlb2 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers2 + | ManagerRetryResponseProviderGkeGateway2 | any; /** * Shared Gateway API route profile values. */ -export type ManagerRetryResponseRouteGateway3 = { +export type ManagerRetryResponseRouteGateway1 = { /** * Annotations applied to route objects. */ @@ -1866,26 +1308,26 @@ export type ManagerRetryResponseRouteGateway3 = { */ listenerPort: number; provider?: - | ManagerRetryResponseProviderAwsAlb6 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers6 - | ManagerRetryResponseProviderGkeGateway6 + | ManagerRetryResponseProviderAwsAlb2 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers2 + | ManagerRetryResponseProviderGkeGateway2 | any | null | undefined; routeApi: "gateway"; }; -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum5 = +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum1 = { AzureApplicationGatewayForContainers: "azureApplicationGatewayForContainers", } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum5 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum1 = ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum5 + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum1 >; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers5 = +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers1 = { /** * Optional ALB name when using BYO Application Gateway resources. @@ -1900,37 +1342,37 @@ export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers5 = */ frontend: string; provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum5; + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum1; }; -export const ManagerRetryResponseProviderGkeGatewayEnum5 = { +export const ManagerRetryResponseProviderGkeGatewayEnum1 = { GkeGateway: "gkeGateway", } as const; -export type ManagerRetryResponseProviderGkeGatewayEnum5 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum5 +export type ManagerRetryResponseProviderGkeGatewayEnum1 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum1 >; -export type ManagerRetryResponseProviderGkeGateway5 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum5; +export type ManagerRetryResponseProviderGkeGateway1 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum1; /** * Optional static address name for the Gateway frontend. */ staticAddressName?: string | null | undefined; }; -export const ManagerRetryResponseProviderAwsAlbEnum5 = { +export const ManagerRetryResponseProviderAwsAlbEnum1 = { AwsAlb: "awsAlb", } as const; -export type ManagerRetryResponseProviderAwsAlbEnum5 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum5 +export type ManagerRetryResponseProviderAwsAlbEnum1 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum1 >; -export type ManagerRetryResponseProviderAwsAlb5 = { +export type ManagerRetryResponseProviderAwsAlb1 = { /** * Optional ALB IP address type, such as `dualstack`. */ ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum5; + provider: ManagerRetryResponseProviderAwsAlbEnum1; /** * Internet-facing or internal ALB scheme. */ @@ -1945,16 +1387,16 @@ export type ManagerRetryResponseProviderAwsAlb5 = { targetType: string; }; -export type ManagerRetryResponseProviderUnion5 = - | ManagerRetryResponseProviderAwsAlb5 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers5 - | ManagerRetryResponseProviderGkeGateway5 +export type ManagerRetryResponseProviderUnion1 = + | ManagerRetryResponseProviderAwsAlb1 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers1 + | ManagerRetryResponseProviderGkeGateway1 | any; /** * Shared Ingress route profile values. */ -export type ManagerRetryResponseRouteIngress3 = { +export type ManagerRetryResponseRouteIngress1 = { /** * Annotations applied to route objects. */ @@ -1972,9 +1414,9 @@ export type ManagerRetryResponseRouteIngress3 = { */ labels?: { [k: string]: string } | undefined; provider?: - | ManagerRetryResponseProviderAwsAlb5 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers5 - | ManagerRetryResponseProviderGkeGateway5 + | ManagerRetryResponseProviderAwsAlb1 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers1 + | ManagerRetryResponseProviderGkeGateway1 | any | null | undefined; @@ -1984,42 +1426,42 @@ export type ManagerRetryResponseRouteIngress3 = { /** * Kubernetes route API selected for public endpoints. */ -export type ManagerRetryResponseRouteUnion3 = - | ManagerRetryResponseRouteIngress3 - | ManagerRetryResponseRouteGateway3; +export type ManagerRetryResponseRouteUnion1 = + | ManagerRetryResponseRouteIngress1 + | ManagerRetryResponseRouteGateway1; -export type ManagerRetryResponseExposureGenerated2 = { +export type ManagerRetryResponseExposureGenerated1 = { /** * Certificate publication or reference mode for Kubernetes public endpoints. */ certificate: - | ManagerRetryResponseCertificateTLSSecretRef3 - | ManagerRetryResponseCertificateManagedAcmImport3 - | ManagerRetryResponseCertificateAwsAcmArn3 - | ManagerRetryResponseCertificateManagedTLSSecret3 - | ManagerRetryResponseCertificateNone3; - mode: ManagerRetryResponseModeGenerated2; + | ManagerRetryResponseCertificateTLSSecretRef1 + | ManagerRetryResponseCertificateManagedAcmImport1 + | ManagerRetryResponseCertificateAwsAcmArn1 + | ManagerRetryResponseCertificateManagedTLSSecret1 + | ManagerRetryResponseCertificateNone1; + mode: ManagerRetryResponseModeGenerated1; /** * Kubernetes route API selected for public endpoints. */ - route: ManagerRetryResponseRouteIngress3 | ManagerRetryResponseRouteGateway3; + route: ManagerRetryResponseRouteIngress1 | ManagerRetryResponseRouteGateway1; }; -export const ManagerRetryResponseModeDisabled2 = { +export const ManagerRetryResponseModeDisabled1 = { Disabled: "disabled", } as const; -export type ManagerRetryResponseModeDisabled2 = ClosedEnum< - typeof ManagerRetryResponseModeDisabled2 +export type ManagerRetryResponseModeDisabled1 = ClosedEnum< + typeof ManagerRetryResponseModeDisabled1 >; -export type ManagerRetryResponseExposureDisabled2 = { - mode: ManagerRetryResponseModeDisabled2; +export type ManagerRetryResponseExposureDisabled1 = { + mode: ManagerRetryResponseModeDisabled1; }; -export type ManagerRetryResponseExposureUnion2 = - | ManagerRetryResponseExposureCustom2 - | ManagerRetryResponseExposureGenerated2 - | ManagerRetryResponseExposureDisabled2 +export type ManagerRetryResponseExposureUnion1 = + | ManagerRetryResponseExposureCustom1 + | ManagerRetryResponseExposureGenerated1 + | ManagerRetryResponseExposureDisabled1 | any; /** @@ -2032,29 +1474,29 @@ export type ManagerRetryResponseExposureUnion2 = * managed cluster and generic/on-prem Kubernetes defaults to an external * cluster. */ -export type ManagerRetryResponseKubernetes2 = { - cluster?: ManagerRetryResponseCluster2 | any | null | undefined; +export type ManagerRetryResponseKubernetes1 = { + cluster?: ManagerRetryResponseCluster1 | any | null | undefined; exposure?: - | ManagerRetryResponseExposureCustom2 - | ManagerRetryResponseExposureGenerated2 - | ManagerRetryResponseExposureDisabled2 + | ManagerRetryResponseExposureCustom1 + | ManagerRetryResponseExposureGenerated1 + | ManagerRetryResponseExposureDisabled1 | any | null | undefined; }; -export type ManagerRetryResponseKubernetesUnion2 = - | ManagerRetryResponseKubernetes2 +export type ManagerRetryResponseKubernetesUnion1 = + | ManagerRetryResponseKubernetes1 | any; -export const ManagerRetryResponseTypeByoVnetAzure2 = { +export const ManagerRetryResponseTypeByoVnetAzure1 = { ByoVnetAzure: "byo-vnet-azure", } as const; -export type ManagerRetryResponseTypeByoVnetAzure2 = ClosedEnum< - typeof ManagerRetryResponseTypeByoVnetAzure2 +export type ManagerRetryResponseTypeByoVnetAzure1 = ClosedEnum< + typeof ManagerRetryResponseTypeByoVnetAzure1 >; -export type ManagerRetryResponseNetworkByoVnetAzure2 = { +export type ManagerRetryResponseNetworkByoVnetAzure1 = { /** * Name of the dedicated classic Application Gateway subnet within the VNet. */ @@ -2067,21 +1509,21 @@ export type ManagerRetryResponseNetworkByoVnetAzure2 = { * Name of the public subnet within the VNet */ publicSubnetName: string; - type: ManagerRetryResponseTypeByoVnetAzure2; + type: ManagerRetryResponseTypeByoVnetAzure1; /** * The full resource ID of the existing VNet */ vnetResourceId: string; }; -export const ManagerRetryResponseTypeByoVpcGcp2 = { +export const ManagerRetryResponseTypeByoVpcGcp1 = { ByoVpcGcp: "byo-vpc-gcp", } as const; -export type ManagerRetryResponseTypeByoVpcGcp2 = ClosedEnum< - typeof ManagerRetryResponseTypeByoVpcGcp2 +export type ManagerRetryResponseTypeByoVpcGcp1 = ClosedEnum< + typeof ManagerRetryResponseTypeByoVpcGcp1 >; -export type ManagerRetryResponseNetworkByoVpcGcp2 = { +export type ManagerRetryResponseNetworkByoVpcGcp1 = { /** * The name of the existing VPC network */ @@ -2094,17 +1536,17 @@ export type ManagerRetryResponseNetworkByoVpcGcp2 = { * The name of the subnet to use */ subnetName: string; - type: ManagerRetryResponseTypeByoVpcGcp2; + type: ManagerRetryResponseTypeByoVpcGcp1; }; -export const ManagerRetryResponseTypeByoVpcAws2 = { +export const ManagerRetryResponseTypeByoVpcAws1 = { ByoVpcAws: "byo-vpc-aws", } as const; -export type ManagerRetryResponseTypeByoVpcAws2 = ClosedEnum< - typeof ManagerRetryResponseTypeByoVpcAws2 +export type ManagerRetryResponseTypeByoVpcAws1 = ClosedEnum< + typeof ManagerRetryResponseTypeByoVpcAws1 >; -export type ManagerRetryResponseNetworkByoVpcAws2 = { +export type ManagerRetryResponseNetworkByoVpcAws1 = { /** * IDs of private subnets */ @@ -2117,4195 +1559,184 @@ export type ManagerRetryResponseNetworkByoVpcAws2 = { * Optional security group IDs to use */ securityGroupIds?: Array | undefined; - type: ManagerRetryResponseTypeByoVpcAws2; + type: ManagerRetryResponseTypeByoVpcAws1; /** * The ID of the existing VPC */ vpcId: string; }; -export const ManagerRetryResponseTypeCreate2 = { - Create: "create", -} as const; -export type ManagerRetryResponseTypeCreate2 = ClosedEnum< - typeof ManagerRetryResponseTypeCreate2 ->; - -export type ManagerRetryResponseNetworkCreate2 = { - /** - * Number of availability zones (default: 2). - */ - availabilityZones?: number | undefined; - /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). - */ - cidr?: string | null | undefined; - type: ManagerRetryResponseTypeCreate2; -}; - -export const ManagerRetryResponseTypeUseDefault2 = { - UseDefault: "use-default", -} as const; -export type ManagerRetryResponseTypeUseDefault2 = ClosedEnum< - typeof ManagerRetryResponseTypeUseDefault2 ->; - -export type ManagerRetryResponseNetworkUseDefault2 = { - type: ManagerRetryResponseTypeUseDefault2; -}; - -export type ManagerRetryResponseNetworkUnion2 = - | ManagerRetryResponseNetworkByoVpcAws2 - | ManagerRetryResponseNetworkByoVpcGcp2 - | ManagerRetryResponseNetworkByoVnetAzure2 - | ManagerRetryResponseNetworkUseDefault2 - | ManagerRetryResponseNetworkCreate2 - | any; - -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export const ManagerRetryResponseTelemetry2 = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export type ManagerRetryResponseTelemetry2 = ClosedEnum< - typeof ManagerRetryResponseTelemetry2 ->; - -/** - * How updates are delivered to the deployment. - */ -export const ManagerRetryResponseUpdates2 = { - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How updates are delivered to the deployment. - */ -export type ManagerRetryResponseUpdates2 = ClosedEnum< - typeof ManagerRetryResponseUpdates2 ->; - -/** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ -export type ManagerRetryResponseStackSettings2 = { - compute?: ManagerRetryResponseCompute2 | any | null | undefined; - /** - * Deployment model: how updates are delivered to the remote environment. - */ - deploymentModel?: ManagerRetryResponseDeploymentModel2 | undefined; - domains?: ManagerRetryResponseDomains2 | any | null | undefined; - /** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ - externalBindings?: ManagerRetryResponseExternalBindings2 | null | undefined; - /** - * How heartbeat health checks are handled. - */ - heartbeats?: ManagerRetryResponseHeartbeats2 | undefined; - kubernetes?: ManagerRetryResponseKubernetes2 | any | null | undefined; - network?: - | ManagerRetryResponseNetworkByoVpcAws2 - | ManagerRetryResponseNetworkByoVpcGcp2 - | ManagerRetryResponseNetworkByoVnetAzure2 - | ManagerRetryResponseNetworkUseDefault2 - | ManagerRetryResponseNetworkCreate2 - | any - | null - | undefined; - /** - * How telemetry (logs, metrics, traces) is handled. - */ - telemetry?: ManagerRetryResponseTelemetry2 | undefined; - /** - * How updates are delivered to the deployment. - */ - updates?: ManagerRetryResponseUpdates2 | undefined; -}; - -export type ManagerRetryResponseSetupGoogleOauth = { - method: "google-oauth"; - deploymentPortalUrl: string; - managerUrl: string; - oauthStartUrl: string; - region: string; - /** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ - stackSettings: ManagerRetryResponseStackSettings2; -}; - -export type ManagerRetryResponsePoolsAutoscale1 = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Maximum machine count. - */ - max: number; - /** - * Minimum machine count. - */ - min: number; - mode: "autoscale"; -}; - -export type ManagerRetryResponsePoolsFixed1 = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Number of machines to run. - */ - machines: number; - mode: "fixed"; -}; - -/** - * User-selected deployment settings for one compute pool. - */ -export type ManagerRetryResponsePoolsUnion1 = - | ManagerRetryResponsePoolsFixed1 - | ManagerRetryResponsePoolsAutoscale1; - -/** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. - */ -export type ManagerRetryResponseCompute1 = { - /** - * Selected compute choices keyed by pool ID. - */ - pools?: { - [k: string]: - | ManagerRetryResponsePoolsFixed1 - | ManagerRetryResponsePoolsAutoscale1; - } | undefined; -}; - -export type ManagerRetryResponseComputeUnion1 = - | ManagerRetryResponseCompute1 - | any; - -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export const ManagerRetryResponseDeploymentModel1 = { - Push: "push", - Pull: "pull", -} as const; -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export type ManagerRetryResponseDeploymentModel1 = ClosedEnum< - typeof ManagerRetryResponseDeploymentModel1 ->; - -export type ManagerRetryResponseAws1 = { - certificateArn: string; -}; - -export type ManagerRetryResponseAwsUnion1 = ManagerRetryResponseAws1 | any; - -export type ManagerRetryResponseAzure1 = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; -}; - -export type ManagerRetryResponseAzureUnion1 = ManagerRetryResponseAzure1 | any; - -export type ManagerRetryResponseGcp1 = { - certificateName: string; -}; - -export type ManagerRetryResponseGcpUnion1 = ManagerRetryResponseGcp1 | any; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type ManagerRetryResponseTlsSecretRef1 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; -}; - -export type ManagerRetryResponseDomainsKubernetes1 = { - /** - * Namespace-scoped Kubernetes TLS Secret reference. - */ - tlsSecretRef: ManagerRetryResponseTlsSecretRef1; -}; - -export type ManagerRetryResponseDomainsKubernetesUnion1 = - | ManagerRetryResponseDomainsKubernetes1 - | any; - -/** - * Platform-specific certificate references for custom domains. - */ -export type ManagerRetryResponseDomainsCertificate1 = { - aws?: ManagerRetryResponseAws1 | any | null | undefined; - azure?: ManagerRetryResponseAzure1 | any | null | undefined; - gcp?: ManagerRetryResponseGcp1 | any | null | undefined; - kubernetes?: ManagerRetryResponseDomainsKubernetes1 | any | null | undefined; -}; - -/** - * Custom domain configuration for a single resource. - */ -export type ManagerRetryResponseCustomDomains1 = { - /** - * Platform-specific certificate references for custom domains. - */ - certificate: ManagerRetryResponseDomainsCertificate1; - /** - * Fully qualified domain name to use. - */ - domain: string; -}; - -/** - * Domain configuration for the stack. - * - * @remarks - * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. - */ -export type ManagerRetryResponseDomains1 = { - /** - * Custom domain configuration per resource ID. - */ - customDomains?: - | { [k: string]: ManagerRetryResponseCustomDomains1 } - | null - | undefined; -}; - -export type ManagerRetryResponseDomainsUnion1 = - | ManagerRetryResponseDomains1 - | any; - -/** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ -export type ManagerRetryResponseExternalBindings1 = {}; - -/** - * How heartbeat health checks are handled. - */ -export const ManagerRetryResponseHeartbeats1 = { - Off: "off", - On: "on", -} as const; -/** - * How heartbeat health checks are handled. - */ -export type ManagerRetryResponseHeartbeats1 = ClosedEnum< - typeof ManagerRetryResponseHeartbeats1 ->; - -/** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. - */ -export type ManagerRetryResponseCloud1 = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; -}; - -export type ManagerRetryResponseCloudUnion1 = ManagerRetryResponseCloud1 | any; - -/** - * Ownership model for the Kubernetes cluster. - */ -export const ManagerRetryResponseOwnership1 = { - Managed: "managed", - Existing: "existing", - External: "external", -} as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type ManagerRetryResponseOwnership1 = ClosedEnum< - typeof ManagerRetryResponseOwnership1 ->; - -/** - * Kubernetes cluster setup settings. - */ -export type ManagerRetryResponseCluster1 = { - cloud?: ManagerRetryResponseCloud1 | any | null | undefined; - /** - * Namespace where the Alien chart and application resources run. - */ - namespace?: string | null | undefined; - /** - * Ownership model for the Kubernetes cluster. - */ - ownership: ManagerRetryResponseOwnership1; -}; - -export type ManagerRetryResponseClusterUnion1 = - | ManagerRetryResponseCluster1 - | any; - -export type ManagerRetryResponseCertificateNone2 = { - mode: "none"; -}; - -export type ManagerRetryResponseCertificateManagedTLSSecret2 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; -}; - -export type ManagerRetryResponseCertificateAwsAcmArn2 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; -}; - -export type ManagerRetryResponseCertificateManagedAcmImport2 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; - /** - * Tags applied to runtime-imported ACM certificates. - */ - tags?: { [k: string]: string } | undefined; -}; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type ManagerRetryResponseCertificateTLSSecretRef2 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; - mode: "tlsSecretRef"; -}; - -/** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ -export type ManagerRetryResponseCertificateUnion2 = - | ManagerRetryResponseCertificateTLSSecretRef2 - | ManagerRetryResponseCertificateManagedAcmImport2 - | ManagerRetryResponseCertificateAwsAcmArn2 - | ManagerRetryResponseCertificateManagedTLSSecret2 - | ManagerRetryResponseCertificateNone2; - -export const ManagerRetryResponseModeCustom1 = { - Custom: "custom", -} as const; -export type ManagerRetryResponseModeCustom1 = ClosedEnum< - typeof ManagerRetryResponseModeCustom1 ->; - -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum4 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum4 = - ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum4 - >; - -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers4 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum4; - }; - -export const ManagerRetryResponseProviderGkeGatewayEnum4 = { - GkeGateway: "gkeGateway", -} as const; -export type ManagerRetryResponseProviderGkeGatewayEnum4 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum4 ->; - -export type ManagerRetryResponseProviderGkeGateway4 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum4; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const ManagerRetryResponseProviderAwsAlbEnum4 = { - AwsAlb: "awsAlb", -} as const; -export type ManagerRetryResponseProviderAwsAlbEnum4 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum4 ->; - -export type ManagerRetryResponseProviderAwsAlb4 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum4; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type ManagerRetryResponseProviderUnion4 = - | ManagerRetryResponseProviderAwsAlb4 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers4 - | ManagerRetryResponseProviderGkeGateway4 - | any; - -/** - * Shared Gateway API route profile values. - */ -export type ManagerRetryResponseRouteGateway2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - /** - * Listener port, usually 443. - */ - listenerPort: number; - provider?: - | ManagerRetryResponseProviderAwsAlb4 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers4 - | ManagerRetryResponseProviderGkeGateway4 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum3 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum3 = - ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum3 - >; - -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers3 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum3; - }; - -export const ManagerRetryResponseProviderGkeGatewayEnum3 = { - GkeGateway: "gkeGateway", -} as const; -export type ManagerRetryResponseProviderGkeGatewayEnum3 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum3 ->; - -export type ManagerRetryResponseProviderGkeGateway3 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum3; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const ManagerRetryResponseProviderAwsAlbEnum3 = { - AwsAlb: "awsAlb", -} as const; -export type ManagerRetryResponseProviderAwsAlbEnum3 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum3 ->; - -export type ManagerRetryResponseProviderAwsAlb3 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum3; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type ManagerRetryResponseProviderUnion3 = - | ManagerRetryResponseProviderAwsAlb3 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers3 - | ManagerRetryResponseProviderGkeGateway3 - | any; - -/** - * Shared Ingress route profile values. - */ -export type ManagerRetryResponseRouteIngress2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - provider?: - | ManagerRetryResponseProviderAwsAlb3 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers3 - | ManagerRetryResponseProviderGkeGateway3 - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** - * Kubernetes route API selected for public endpoints. - */ -export type ManagerRetryResponseRouteUnion2 = - | ManagerRetryResponseRouteIngress2 - | ManagerRetryResponseRouteGateway2; - -export type ManagerRetryResponseExposureCustom1 = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | ManagerRetryResponseCertificateTLSSecretRef2 - | ManagerRetryResponseCertificateManagedAcmImport2 - | ManagerRetryResponseCertificateAwsAcmArn2 - | ManagerRetryResponseCertificateManagedTLSSecret2 - | ManagerRetryResponseCertificateNone2; - /** - * Hostname routed by the Kubernetes public endpoint. - */ - domain: string; - mode: ManagerRetryResponseModeCustom1; - /** - * Kubernetes route API selected for public endpoints. - */ - route: ManagerRetryResponseRouteIngress2 | ManagerRetryResponseRouteGateway2; -}; - -export type ManagerRetryResponseCertificateNone1 = { - mode: "none"; -}; - -export type ManagerRetryResponseCertificateManagedTLSSecret1 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; -}; - -export type ManagerRetryResponseCertificateAwsAcmArn1 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; -}; - -export type ManagerRetryResponseCertificateManagedAcmImport1 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; - /** - * Tags applied to runtime-imported ACM certificates. - */ - tags?: { [k: string]: string } | undefined; -}; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type ManagerRetryResponseCertificateTLSSecretRef1 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; - mode: "tlsSecretRef"; -}; - -/** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ -export type ManagerRetryResponseCertificateUnion1 = - | ManagerRetryResponseCertificateTLSSecretRef1 - | ManagerRetryResponseCertificateManagedAcmImport1 - | ManagerRetryResponseCertificateAwsAcmArn1 - | ManagerRetryResponseCertificateManagedTLSSecret1 - | ManagerRetryResponseCertificateNone1; - -export const ManagerRetryResponseModeGenerated1 = { - Generated: "generated", -} as const; -export type ManagerRetryResponseModeGenerated1 = ClosedEnum< - typeof ManagerRetryResponseModeGenerated1 ->; - -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum2 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum2 = - ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum2 - >; - -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers2 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum2; - }; - -export const ManagerRetryResponseProviderGkeGatewayEnum2 = { - GkeGateway: "gkeGateway", -} as const; -export type ManagerRetryResponseProviderGkeGatewayEnum2 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum2 ->; - -export type ManagerRetryResponseProviderGkeGateway2 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum2; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const ManagerRetryResponseProviderAwsAlbEnum2 = { - AwsAlb: "awsAlb", -} as const; -export type ManagerRetryResponseProviderAwsAlbEnum2 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum2 ->; - -export type ManagerRetryResponseProviderAwsAlb2 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum2; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type ManagerRetryResponseProviderUnion2 = - | ManagerRetryResponseProviderAwsAlb2 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers2 - | ManagerRetryResponseProviderGkeGateway2 - | any; - -/** - * Shared Gateway API route profile values. - */ -export type ManagerRetryResponseRouteGateway1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - /** - * Listener port, usually 443. - */ - listenerPort: number; - provider?: - | ManagerRetryResponseProviderAwsAlb2 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers2 - | ManagerRetryResponseProviderGkeGateway2 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum1 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum1 = - ClosedEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum1 - >; - -export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers1 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum1; - }; - -export const ManagerRetryResponseProviderGkeGatewayEnum1 = { - GkeGateway: "gkeGateway", -} as const; -export type ManagerRetryResponseProviderGkeGatewayEnum1 = ClosedEnum< - typeof ManagerRetryResponseProviderGkeGatewayEnum1 ->; - -export type ManagerRetryResponseProviderGkeGateway1 = { - provider: ManagerRetryResponseProviderGkeGatewayEnum1; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const ManagerRetryResponseProviderAwsAlbEnum1 = { - AwsAlb: "awsAlb", -} as const; -export type ManagerRetryResponseProviderAwsAlbEnum1 = ClosedEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum1 ->; - -export type ManagerRetryResponseProviderAwsAlb1 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: ManagerRetryResponseProviderAwsAlbEnum1; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type ManagerRetryResponseProviderUnion1 = - | ManagerRetryResponseProviderAwsAlb1 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers1 - | ManagerRetryResponseProviderGkeGateway1 - | any; - -/** - * Shared Ingress route profile values. - */ -export type ManagerRetryResponseRouteIngress1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - provider?: - | ManagerRetryResponseProviderAwsAlb1 - | ManagerRetryResponseProviderAzureApplicationGatewayForContainers1 - | ManagerRetryResponseProviderGkeGateway1 - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** - * Kubernetes route API selected for public endpoints. - */ -export type ManagerRetryResponseRouteUnion1 = - | ManagerRetryResponseRouteIngress1 - | ManagerRetryResponseRouteGateway1; - -export type ManagerRetryResponseExposureGenerated1 = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | ManagerRetryResponseCertificateTLSSecretRef1 - | ManagerRetryResponseCertificateManagedAcmImport1 - | ManagerRetryResponseCertificateAwsAcmArn1 - | ManagerRetryResponseCertificateManagedTLSSecret1 - | ManagerRetryResponseCertificateNone1; - mode: ManagerRetryResponseModeGenerated1; - /** - * Kubernetes route API selected for public endpoints. - */ - route: ManagerRetryResponseRouteIngress1 | ManagerRetryResponseRouteGateway1; -}; - -export const ManagerRetryResponseModeDisabled1 = { - Disabled: "disabled", -} as const; -export type ManagerRetryResponseModeDisabled1 = ClosedEnum< - typeof ManagerRetryResponseModeDisabled1 ->; - -export type ManagerRetryResponseExposureDisabled1 = { - mode: ManagerRetryResponseModeDisabled1; -}; - -export type ManagerRetryResponseExposureUnion1 = - | ManagerRetryResponseExposureCustom1 - | ManagerRetryResponseExposureGenerated1 - | ManagerRetryResponseExposureDisabled1 - | any; - -/** - * Kubernetes runtime substrate configuration. - * - * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. - */ -export type ManagerRetryResponseKubernetes1 = { - cluster?: ManagerRetryResponseCluster1 | any | null | undefined; - exposure?: - | ManagerRetryResponseExposureCustom1 - | ManagerRetryResponseExposureGenerated1 - | ManagerRetryResponseExposureDisabled1 - | any - | null - | undefined; -}; - -export type ManagerRetryResponseKubernetesUnion1 = - | ManagerRetryResponseKubernetes1 - | any; - -export const ManagerRetryResponseTypeByoVnetAzure1 = { - ByoVnetAzure: "byo-vnet-azure", -} as const; -export type ManagerRetryResponseTypeByoVnetAzure1 = ClosedEnum< - typeof ManagerRetryResponseTypeByoVnetAzure1 ->; - -export type ManagerRetryResponseNetworkByoVnetAzure1 = { - /** - * Name of the dedicated classic Application Gateway subnet within the VNet. - */ - applicationGatewaySubnetName?: string | null | undefined; - /** - * Name of the private subnet within the VNet - */ - privateSubnetName: string; - /** - * Name of the public subnet within the VNet - */ - publicSubnetName: string; - type: ManagerRetryResponseTypeByoVnetAzure1; - /** - * The full resource ID of the existing VNet - */ - vnetResourceId: string; -}; - -export const ManagerRetryResponseTypeByoVpcGcp1 = { - ByoVpcGcp: "byo-vpc-gcp", -} as const; -export type ManagerRetryResponseTypeByoVpcGcp1 = ClosedEnum< - typeof ManagerRetryResponseTypeByoVpcGcp1 ->; - -export type ManagerRetryResponseNetworkByoVpcGcp1 = { - /** - * The name of the existing VPC network - */ - networkName: string; - /** - * The region of the subnet - */ - region: string; - /** - * The name of the subnet to use - */ - subnetName: string; - type: ManagerRetryResponseTypeByoVpcGcp1; -}; - -export const ManagerRetryResponseTypeByoVpcAws1 = { - ByoVpcAws: "byo-vpc-aws", -} as const; -export type ManagerRetryResponseTypeByoVpcAws1 = ClosedEnum< - typeof ManagerRetryResponseTypeByoVpcAws1 ->; - -export type ManagerRetryResponseNetworkByoVpcAws1 = { - /** - * IDs of private subnets - */ - privateSubnetIds: Array; - /** - * IDs of public subnets (required for public ingress) - */ - publicSubnetIds: Array; - /** - * Optional security group IDs to use - */ - securityGroupIds?: Array | undefined; - type: ManagerRetryResponseTypeByoVpcAws1; - /** - * The ID of the existing VPC - */ - vpcId: string; -}; - -export const ManagerRetryResponseTypeCreate1 = { - Create: "create", -} as const; -export type ManagerRetryResponseTypeCreate1 = ClosedEnum< - typeof ManagerRetryResponseTypeCreate1 ->; - -export type ManagerRetryResponseNetworkCreate1 = { - /** - * Number of availability zones (default: 2). - */ - availabilityZones?: number | undefined; - /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). - */ - cidr?: string | null | undefined; - type: ManagerRetryResponseTypeCreate1; -}; - -export const ManagerRetryResponseTypeUseDefault1 = { - UseDefault: "use-default", -} as const; -export type ManagerRetryResponseTypeUseDefault1 = ClosedEnum< - typeof ManagerRetryResponseTypeUseDefault1 ->; - -export type ManagerRetryResponseNetworkUseDefault1 = { - type: ManagerRetryResponseTypeUseDefault1; -}; - -export type ManagerRetryResponseNetworkUnion1 = - | ManagerRetryResponseNetworkByoVpcAws1 - | ManagerRetryResponseNetworkByoVpcGcp1 - | ManagerRetryResponseNetworkByoVnetAzure1 - | ManagerRetryResponseNetworkUseDefault1 - | ManagerRetryResponseNetworkCreate1 - | any; - -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export const ManagerRetryResponseTelemetry1 = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export type ManagerRetryResponseTelemetry1 = ClosedEnum< - typeof ManagerRetryResponseTelemetry1 ->; - -/** - * How updates are delivered to the deployment. - */ -export const ManagerRetryResponseUpdates1 = { - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How updates are delivered to the deployment. - */ -export type ManagerRetryResponseUpdates1 = ClosedEnum< - typeof ManagerRetryResponseUpdates1 ->; - -/** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ -export type ManagerRetryResponseStackSettings1 = { - compute?: ManagerRetryResponseCompute1 | any | null | undefined; - /** - * Deployment model: how updates are delivered to the remote environment. - */ - deploymentModel?: ManagerRetryResponseDeploymentModel1 | undefined; - domains?: ManagerRetryResponseDomains1 | any | null | undefined; - /** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ - externalBindings?: ManagerRetryResponseExternalBindings1 | null | undefined; - /** - * How heartbeat health checks are handled. - */ - heartbeats?: ManagerRetryResponseHeartbeats1 | undefined; - kubernetes?: ManagerRetryResponseKubernetes1 | any | null | undefined; - network?: - | ManagerRetryResponseNetworkByoVpcAws1 - | ManagerRetryResponseNetworkByoVpcGcp1 - | ManagerRetryResponseNetworkByoVnetAzure1 - | ManagerRetryResponseNetworkUseDefault1 - | ManagerRetryResponseNetworkCreate1 - | any - | null - | undefined; - /** - * How telemetry (logs, metrics, traces) is handled. - */ - telemetry?: ManagerRetryResponseTelemetry1 | undefined; - /** - * How updates are delivered to the deployment. - */ - updates?: ManagerRetryResponseUpdates1 | undefined; -}; - -export type ManagerRetryResponseSetupCloudformation = { - method: "cloudformation"; - deploymentPortalUrl: string; - launchUrl: string; - templateUrl: string; - stackName: string; - region: string; - /** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ - stackSettings: ManagerRetryResponseStackSettings1; -}; - -export type ManagerRetryResponseSetupUnion = - | ManagerRetryResponseSetupCloudformation - | ManagerRetryResponseSetupGoogleOauth - | ManagerRetryResponseSetupTerraform; - -export const ModeSetup = { - Setup: "setup", -} as const; -export type ModeSetup = ClosedEnum; - -export type ManagerRetryResponseSetup = { - managerId: string; - setupStatus: "pending"; - setupToken: string; - setupTokenId: string; - deploymentLink: string; - setupConfig: ManagerRetryResponseSetupConfig; - setup: - | ManagerRetryResponseSetupCloudformation - | ManagerRetryResponseSetupGoogleOauth - | ManagerRetryResponseSetupTerraform; - mode: ModeSetup; -}; - -export type ManagerRetryResponse = - | ManagerRetryResponseSetup - | ManagerRetryDeploymentResponse; - -/** @internal */ -export const ManagerRetryResponseEnvironmentVariableType$inboundSchema: - z.ZodEnum = z.enum( - ManagerRetryResponseEnvironmentVariableType, - ); - -/** @internal */ -export const ManagerRetryResponseEnvironmentVariable$inboundSchema: z.ZodType< - ManagerRetryResponseEnvironmentVariable, - unknown -> = z.object({ - name: z.string(), - type: ManagerRetryResponseEnvironmentVariableType$inboundSchema, - targetResources: z.nullable(z.array(z.string())), -}); - -export function managerRetryResponseEnvironmentVariableFromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseEnvironmentVariable, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseEnvironmentVariable$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseEnvironmentVariable' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseSetupConfig$inboundSchema: z.ZodType< - ManagerRetryResponseSetupConfig, - unknown -> = z.object({ - metadata: z.record(z.string(), z.nullable(z.any())), - policy: DeploymentSetupPolicy$inboundSchema, - inputValues: z.record(z.string(), EncryptedStackInputValue$inboundSchema) - .optional(), - environmentVariables: z.array( - z.lazy(() => ManagerRetryResponseEnvironmentVariable$inboundSchema), - ), -}); - -export function managerRetryResponseSetupConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseSetupConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseSetupConfig' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponsePoolsAutoscale3$inboundSchema: z.ZodType< - ManagerRetryResponsePoolsAutoscale3, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); - -export function managerRetryResponsePoolsAutoscale3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponsePoolsAutoscale3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponsePoolsAutoscale3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponsePoolsFixed3$inboundSchema: z.ZodType< - ManagerRetryResponsePoolsFixed3, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); - -export function managerRetryResponsePoolsFixed3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponsePoolsFixed3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponsePoolsFixed3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponsePoolsUnion3$inboundSchema: z.ZodType< - ManagerRetryResponsePoolsUnion3, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponsePoolsFixed3$inboundSchema), - z.lazy(() => ManagerRetryResponsePoolsAutoscale3$inboundSchema), -]); - -export function managerRetryResponsePoolsUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponsePoolsUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponsePoolsUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCompute3$inboundSchema: z.ZodType< - ManagerRetryResponseCompute3, - unknown -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => ManagerRetryResponsePoolsFixed3$inboundSchema), - z.lazy(() => ManagerRetryResponsePoolsAutoscale3$inboundSchema), - ]), - ).optional(), -}); - -export function managerRetryResponseCompute3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseCompute3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCompute3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseComputeUnion3$inboundSchema: z.ZodType< - ManagerRetryResponseComputeUnion3, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseCompute3$inboundSchema), - z.any(), -]); - -export function managerRetryResponseComputeUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseComputeUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseComputeUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDeploymentModel3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseDeploymentModel3 -> = z.enum(ManagerRetryResponseDeploymentModel3); - -/** @internal */ -export const ManagerRetryResponseAws3$inboundSchema: z.ZodType< - ManagerRetryResponseAws3, - unknown -> = z.object({ - certificateArn: z.string(), -}); - -export function managerRetryResponseAws3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseAws3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseAws3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseAwsUnion3$inboundSchema: z.ZodType< - ManagerRetryResponseAwsUnion3, - unknown -> = z.union([z.lazy(() => ManagerRetryResponseAws3$inboundSchema), z.any()]); - -export function managerRetryResponseAwsUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseAwsUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseAwsUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseAzure3$inboundSchema: z.ZodType< - ManagerRetryResponseAzure3, - unknown -> = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), -}); - -export function managerRetryResponseAzure3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseAzure3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseAzure3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseAzureUnion3$inboundSchema: z.ZodType< - ManagerRetryResponseAzureUnion3, - unknown -> = z.union([z.lazy(() => ManagerRetryResponseAzure3$inboundSchema), z.any()]); - -export function managerRetryResponseAzureUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseAzureUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseAzureUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseGcp3$inboundSchema: z.ZodType< - ManagerRetryResponseGcp3, - unknown -> = z.object({ - certificateName: z.string(), -}); - -export function managerRetryResponseGcp3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseGcp3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseGcp3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseGcpUnion3$inboundSchema: z.ZodType< - ManagerRetryResponseGcpUnion3, - unknown -> = z.union([z.lazy(() => ManagerRetryResponseGcp3$inboundSchema), z.any()]); - -export function managerRetryResponseGcpUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseGcpUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseGcpUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseTlsSecretRef3$inboundSchema: z.ZodType< - ManagerRetryResponseTlsSecretRef3, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), -}); - -export function managerRetryResponseTlsSecretRef3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseTlsSecretRef3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseTlsSecretRef3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDomainsKubernetes3$inboundSchema: z.ZodType< - ManagerRetryResponseDomainsKubernetes3, - unknown -> = z.object({ - tlsSecretRef: z.lazy(() => ManagerRetryResponseTlsSecretRef3$inboundSchema), -}); - -export function managerRetryResponseDomainsKubernetes3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseDomainsKubernetes3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseDomainsKubernetes3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDomainsKubernetesUnion3$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => ManagerRetryResponseDomainsKubernetes3$inboundSchema), - z.any(), - ]); - -export function managerRetryResponseDomainsKubernetesUnion3FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseDomainsKubernetesUnion3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseDomainsKubernetesUnion3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseDomainsKubernetesUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDomainsCertificate3$inboundSchema: z.ZodType< - ManagerRetryResponseDomainsCertificate3, - unknown -> = z.object({ - aws: z.nullable( - z.union([z.lazy(() => ManagerRetryResponseAws3$inboundSchema), z.any()]), - ).optional(), - azure: z.nullable( - z.union([z.lazy(() => ManagerRetryResponseAzure3$inboundSchema), z.any()]), - ).optional(), - gcp: z.nullable( - z.union([z.lazy(() => ManagerRetryResponseGcp3$inboundSchema), z.any()]), - ).optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseDomainsKubernetes3$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function managerRetryResponseDomainsCertificate3FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseDomainsCertificate3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseDomainsCertificate3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseDomainsCertificate3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCustomDomains3$inboundSchema: z.ZodType< - ManagerRetryResponseCustomDomains3, - unknown -> = z.object({ - certificate: z.lazy(() => - ManagerRetryResponseDomainsCertificate3$inboundSchema - ), - domain: z.string(), -}); - -export function managerRetryResponseCustomDomains3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCustomDomains3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCustomDomains3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDomains3$inboundSchema: z.ZodType< - ManagerRetryResponseDomains3, - unknown -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => ManagerRetryResponseCustomDomains3$inboundSchema), - ), - ).optional(), -}); - -export function managerRetryResponseDomains3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseDomains3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseDomains3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDomainsUnion3$inboundSchema: z.ZodType< - ManagerRetryResponseDomainsUnion3, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseDomains3$inboundSchema), - z.any(), -]); - -export function managerRetryResponseDomainsUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseDomainsUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseDomainsUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseExternalBindings3$inboundSchema: z.ZodType< - ManagerRetryResponseExternalBindings3, - unknown -> = z.object({}); - -export function managerRetryResponseExternalBindings3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseExternalBindings3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseExternalBindings3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseHeartbeats3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseHeartbeats3 -> = z.enum(ManagerRetryResponseHeartbeats3); - -/** @internal */ -export const ManagerRetryResponseCloud3$inboundSchema: z.ZodType< - ManagerRetryResponseCloud3, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); - -export function managerRetryResponseCloud3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseCloud3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCloud3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCloudUnion3$inboundSchema: z.ZodType< - ManagerRetryResponseCloudUnion3, - unknown -> = z.union([z.lazy(() => ManagerRetryResponseCloud3$inboundSchema), z.any()]); - -export function managerRetryResponseCloudUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseCloudUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCloudUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseOwnership3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseOwnership3 -> = z.enum(ManagerRetryResponseOwnership3); - -/** @internal */ -export const ManagerRetryResponseCluster3$inboundSchema: z.ZodType< - ManagerRetryResponseCluster3, - unknown -> = z.object({ - cloud: z.nullable( - z.union([z.lazy(() => ManagerRetryResponseCloud3$inboundSchema), z.any()]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: ManagerRetryResponseOwnership3$inboundSchema, -}); - -export function managerRetryResponseCluster3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseCluster3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCluster3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseClusterUnion3$inboundSchema: z.ZodType< - ManagerRetryResponseClusterUnion3, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseCluster3$inboundSchema), - z.any(), -]); - -export function managerRetryResponseClusterUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseClusterUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseClusterUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateNone6$inboundSchema: z.ZodType< - ManagerRetryResponseCertificateNone6, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function managerRetryResponseCertificateNone6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateNone6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCertificateNone6' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateManagedTLSSecret6$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function managerRetryResponseCertificateManagedTLSSecret6FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateManagedTLSSecret6, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateManagedTLSSecret6$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateManagedTLSSecret6' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateAwsAcmArn6$inboundSchema: z.ZodType< - ManagerRetryResponseCertificateAwsAcmArn6, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); - -export function managerRetryResponseCertificateAwsAcmArn6FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateAwsAcmArn6, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateAwsAcmArn6$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateAwsAcmArn6' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateManagedAcmImport6$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function managerRetryResponseCertificateManagedAcmImport6FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateManagedAcmImport6, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateManagedAcmImport6$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateManagedAcmImport6' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateTLSSecretRef6$inboundSchema: - z.ZodType = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function managerRetryResponseCertificateTLSSecretRef6FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateTLSSecretRef6, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateTLSSecretRef6$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateTLSSecretRef6' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateUnion6$inboundSchema: z.ZodType< - ManagerRetryResponseCertificateUnion6, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef6$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateManagedAcmImport6$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn6$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateManagedTLSSecret6$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateNone6$inboundSchema), -]); - -export function managerRetryResponseCertificateUnion6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateUnion6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCertificateUnion6' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseModeCustom3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseModeCustom3 -> = z.enum(ManagerRetryResponseModeCustom3); - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12$inboundSchema: - z.ZodEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12 - > = z.enum( - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12, - ); - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers12$inboundSchema: - z.ZodType< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers12, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12$inboundSchema, - }); - -export function managerRetryResponseProviderAzureApplicationGatewayForContainers12FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers12, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers12$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers12' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderGkeGatewayEnum12$inboundSchema: - z.ZodEnum = z.enum( - ManagerRetryResponseProviderGkeGatewayEnum12, - ); - -/** @internal */ -export const ManagerRetryResponseProviderGkeGateway12$inboundSchema: z.ZodType< - ManagerRetryResponseProviderGkeGateway12, - unknown -> = z.object({ - provider: ManagerRetryResponseProviderGkeGatewayEnum12$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function managerRetryResponseProviderGkeGateway12FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderGkeGateway12, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderGkeGateway12$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseProviderGkeGateway12' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderAwsAlbEnum12$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum12 -> = z.enum(ManagerRetryResponseProviderAwsAlbEnum12); - -/** @internal */ -export const ManagerRetryResponseProviderAwsAlb12$inboundSchema: z.ZodType< - ManagerRetryResponseProviderAwsAlb12, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: ManagerRetryResponseProviderAwsAlbEnum12$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function managerRetryResponseProviderAwsAlb12FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAwsAlb12$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAwsAlb12' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderUnion12$inboundSchema: z.ZodType< - ManagerRetryResponseProviderUnion12, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb12$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers12$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway12$inboundSchema), - z.any(), -]); - -export function managerRetryResponseProviderUnion12FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderUnion12$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderUnion12' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseRouteGateway6$inboundSchema: z.ZodType< - ManagerRetryResponseRouteGateway6, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb12$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers12$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway12$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function managerRetryResponseRouteGateway6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseRouteGateway6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseRouteGateway6' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11$inboundSchema: - z.ZodEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11 - > = z.enum( - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11, - ); - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers11$inboundSchema: - z.ZodType< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers11, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11$inboundSchema, - }); - -export function managerRetryResponseProviderAzureApplicationGatewayForContainers11FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers11, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers11$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers11' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderGkeGatewayEnum11$inboundSchema: - z.ZodEnum = z.enum( - ManagerRetryResponseProviderGkeGatewayEnum11, - ); - -/** @internal */ -export const ManagerRetryResponseProviderGkeGateway11$inboundSchema: z.ZodType< - ManagerRetryResponseProviderGkeGateway11, - unknown -> = z.object({ - provider: ManagerRetryResponseProviderGkeGatewayEnum11$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function managerRetryResponseProviderGkeGateway11FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderGkeGateway11, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderGkeGateway11$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseProviderGkeGateway11' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderAwsAlbEnum11$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum11 -> = z.enum(ManagerRetryResponseProviderAwsAlbEnum11); - -/** @internal */ -export const ManagerRetryResponseProviderAwsAlb11$inboundSchema: z.ZodType< - ManagerRetryResponseProviderAwsAlb11, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: ManagerRetryResponseProviderAwsAlbEnum11$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function managerRetryResponseProviderAwsAlb11FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAwsAlb11$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAwsAlb11' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderUnion11$inboundSchema: z.ZodType< - ManagerRetryResponseProviderUnion11, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb11$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers11$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway11$inboundSchema), - z.any(), -]); - -export function managerRetryResponseProviderUnion11FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderUnion11$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderUnion11' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseRouteIngress6$inboundSchema: z.ZodType< - ManagerRetryResponseRouteIngress6, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb11$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers11$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway11$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function managerRetryResponseRouteIngress6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseRouteIngress6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseRouteIngress6' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseRouteUnion6$inboundSchema: z.ZodType< - ManagerRetryResponseRouteUnion6, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseRouteIngress6$inboundSchema), - z.lazy(() => ManagerRetryResponseRouteGateway6$inboundSchema), -]); - -export function managerRetryResponseRouteUnion6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseRouteUnion6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseRouteUnion6' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseExposureCustom3$inboundSchema: z.ZodType< - ManagerRetryResponseExposureCustom3, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef6$inboundSchema), - z.lazy(() => - ManagerRetryResponseCertificateManagedAcmImport6$inboundSchema - ), - z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn6$inboundSchema), - z.lazy(() => - ManagerRetryResponseCertificateManagedTLSSecret6$inboundSchema - ), - z.lazy(() => ManagerRetryResponseCertificateNone6$inboundSchema), - ]), - domain: z.string(), - mode: ManagerRetryResponseModeCustom3$inboundSchema, - route: z.union([ - z.lazy(() => ManagerRetryResponseRouteIngress6$inboundSchema), - z.lazy(() => ManagerRetryResponseRouteGateway6$inboundSchema), - ]), -}); - -export function managerRetryResponseExposureCustom3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseExposureCustom3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseExposureCustom3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateNone5$inboundSchema: z.ZodType< - ManagerRetryResponseCertificateNone5, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function managerRetryResponseCertificateNone5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateNone5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCertificateNone5' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateManagedTLSSecret5$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function managerRetryResponseCertificateManagedTLSSecret5FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateManagedTLSSecret5, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateManagedTLSSecret5$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateManagedTLSSecret5' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateAwsAcmArn5$inboundSchema: z.ZodType< - ManagerRetryResponseCertificateAwsAcmArn5, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); - -export function managerRetryResponseCertificateAwsAcmArn5FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateAwsAcmArn5, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateAwsAcmArn5$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateAwsAcmArn5' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateManagedAcmImport5$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function managerRetryResponseCertificateManagedAcmImport5FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateManagedAcmImport5, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateManagedAcmImport5$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateManagedAcmImport5' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateTLSSecretRef5$inboundSchema: - z.ZodType = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function managerRetryResponseCertificateTLSSecretRef5FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateTLSSecretRef5, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateTLSSecretRef5$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateTLSSecretRef5' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateUnion5$inboundSchema: z.ZodType< - ManagerRetryResponseCertificateUnion5, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef5$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateManagedAcmImport5$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn5$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateManagedTLSSecret5$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateNone5$inboundSchema), -]); - -export function managerRetryResponseCertificateUnion5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateUnion5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCertificateUnion5' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseModeGenerated3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseModeGenerated3 -> = z.enum(ManagerRetryResponseModeGenerated3); - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10$inboundSchema: - z.ZodEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10 - > = z.enum( - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10, - ); - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers10$inboundSchema: - z.ZodType< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers10, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10$inboundSchema, - }); - -export function managerRetryResponseProviderAzureApplicationGatewayForContainers10FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers10, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers10$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers10' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderGkeGatewayEnum10$inboundSchema: - z.ZodEnum = z.enum( - ManagerRetryResponseProviderGkeGatewayEnum10, - ); - -/** @internal */ -export const ManagerRetryResponseProviderGkeGateway10$inboundSchema: z.ZodType< - ManagerRetryResponseProviderGkeGateway10, - unknown -> = z.object({ - provider: ManagerRetryResponseProviderGkeGatewayEnum10$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function managerRetryResponseProviderGkeGateway10FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderGkeGateway10, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderGkeGateway10$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseProviderGkeGateway10' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderAwsAlbEnum10$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum10 -> = z.enum(ManagerRetryResponseProviderAwsAlbEnum10); - -/** @internal */ -export const ManagerRetryResponseProviderAwsAlb10$inboundSchema: z.ZodType< - ManagerRetryResponseProviderAwsAlb10, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: ManagerRetryResponseProviderAwsAlbEnum10$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function managerRetryResponseProviderAwsAlb10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAwsAlb10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAwsAlb10' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderUnion10$inboundSchema: z.ZodType< - ManagerRetryResponseProviderUnion10, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb10$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers10$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway10$inboundSchema), - z.any(), -]); - -export function managerRetryResponseProviderUnion10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderUnion10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderUnion10' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseRouteGateway5$inboundSchema: z.ZodType< - ManagerRetryResponseRouteGateway5, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb10$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers10$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway10$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function managerRetryResponseRouteGateway5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseRouteGateway5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseRouteGateway5' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9$inboundSchema: - z.ZodEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9 - > = z.enum( - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9, - ); - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers9$inboundSchema: - z.ZodType< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers9, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9$inboundSchema, - }); - -export function managerRetryResponseProviderAzureApplicationGatewayForContainers9FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers9, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers9$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers9' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderGkeGatewayEnum9$inboundSchema: - z.ZodEnum = z.enum( - ManagerRetryResponseProviderGkeGatewayEnum9, - ); - -/** @internal */ -export const ManagerRetryResponseProviderGkeGateway9$inboundSchema: z.ZodType< - ManagerRetryResponseProviderGkeGateway9, - unknown -> = z.object({ - provider: ManagerRetryResponseProviderGkeGatewayEnum9$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function managerRetryResponseProviderGkeGateway9FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderGkeGateway9, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderGkeGateway9$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseProviderGkeGateway9' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderAwsAlbEnum9$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum9 -> = z.enum(ManagerRetryResponseProviderAwsAlbEnum9); - -/** @internal */ -export const ManagerRetryResponseProviderAwsAlb9$inboundSchema: z.ZodType< - ManagerRetryResponseProviderAwsAlb9, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: ManagerRetryResponseProviderAwsAlbEnum9$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function managerRetryResponseProviderAwsAlb9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAwsAlb9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAwsAlb9' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderUnion9$inboundSchema: z.ZodType< - ManagerRetryResponseProviderUnion9, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb9$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers9$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway9$inboundSchema), - z.any(), -]); - -export function managerRetryResponseProviderUnion9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderUnion9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderUnion9' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseRouteIngress5$inboundSchema: z.ZodType< - ManagerRetryResponseRouteIngress5, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb9$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers9$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway9$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function managerRetryResponseRouteIngress5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseRouteIngress5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseRouteIngress5' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseRouteUnion5$inboundSchema: z.ZodType< - ManagerRetryResponseRouteUnion5, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseRouteIngress5$inboundSchema), - z.lazy(() => ManagerRetryResponseRouteGateway5$inboundSchema), -]); - -export function managerRetryResponseRouteUnion5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseRouteUnion5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseRouteUnion5' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseExposureGenerated3$inboundSchema: z.ZodType< - ManagerRetryResponseExposureGenerated3, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef5$inboundSchema), - z.lazy(() => - ManagerRetryResponseCertificateManagedAcmImport5$inboundSchema - ), - z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn5$inboundSchema), - z.lazy(() => - ManagerRetryResponseCertificateManagedTLSSecret5$inboundSchema - ), - z.lazy(() => ManagerRetryResponseCertificateNone5$inboundSchema), - ]), - mode: ManagerRetryResponseModeGenerated3$inboundSchema, - route: z.union([ - z.lazy(() => ManagerRetryResponseRouteIngress5$inboundSchema), - z.lazy(() => ManagerRetryResponseRouteGateway5$inboundSchema), - ]), -}); - -export function managerRetryResponseExposureGenerated3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseExposureGenerated3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseExposureGenerated3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseModeDisabled3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseModeDisabled3 -> = z.enum(ManagerRetryResponseModeDisabled3); - -/** @internal */ -export const ManagerRetryResponseExposureDisabled3$inboundSchema: z.ZodType< - ManagerRetryResponseExposureDisabled3, - unknown -> = z.object({ - mode: ManagerRetryResponseModeDisabled3$inboundSchema, -}); - -export function managerRetryResponseExposureDisabled3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseExposureDisabled3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseExposureDisabled3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseExposureUnion3$inboundSchema: z.ZodType< - ManagerRetryResponseExposureUnion3, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseExposureCustom3$inboundSchema), - z.lazy(() => ManagerRetryResponseExposureGenerated3$inboundSchema), - z.lazy(() => ManagerRetryResponseExposureDisabled3$inboundSchema), - z.any(), -]); - -export function managerRetryResponseExposureUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseExposureUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseExposureUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseKubernetes3$inboundSchema: z.ZodType< - ManagerRetryResponseKubernetes3, - unknown -> = z.object({ - cluster: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseCluster3$inboundSchema), - z.any(), - ]), - ).optional(), - exposure: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseExposureCustom3$inboundSchema), - z.lazy(() => ManagerRetryResponseExposureGenerated3$inboundSchema), - z.lazy(() => ManagerRetryResponseExposureDisabled3$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function managerRetryResponseKubernetes3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseKubernetes3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseKubernetes3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseKubernetesUnion3$inboundSchema: z.ZodType< - ManagerRetryResponseKubernetesUnion3, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseKubernetes3$inboundSchema), - z.any(), -]); - -export function managerRetryResponseKubernetesUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseKubernetesUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseKubernetesUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseTypeByoVnetAzure3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseTypeByoVnetAzure3 -> = z.enum(ManagerRetryResponseTypeByoVnetAzure3); - -/** @internal */ -export const ManagerRetryResponseNetworkByoVnetAzure3$inboundSchema: z.ZodType< - ManagerRetryResponseNetworkByoVnetAzure3, - unknown -> = z.object({ - application_gateway_subnet_name: z.nullable(z.string()).optional(), - private_subnet_name: z.string(), - public_subnet_name: z.string(), - type: ManagerRetryResponseTypeByoVnetAzure3$inboundSchema, - vnet_resource_id: z.string(), -}).transform((v) => { - return remap$(v, { - "application_gateway_subnet_name": "applicationGatewaySubnetName", - "private_subnet_name": "privateSubnetName", - "public_subnet_name": "publicSubnetName", - "vnet_resource_id": "vnetResourceId", - }); -}); - -export function managerRetryResponseNetworkByoVnetAzure3FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseNetworkByoVnetAzure3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseNetworkByoVnetAzure3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseNetworkByoVnetAzure3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseTypeByoVpcGcp3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseTypeByoVpcGcp3 -> = z.enum(ManagerRetryResponseTypeByoVpcGcp3); - -/** @internal */ -export const ManagerRetryResponseNetworkByoVpcGcp3$inboundSchema: z.ZodType< - ManagerRetryResponseNetworkByoVpcGcp3, - unknown -> = z.object({ - network_name: z.string(), - region: z.string(), - subnet_name: z.string(), - type: ManagerRetryResponseTypeByoVpcGcp3$inboundSchema, -}).transform((v) => { - return remap$(v, { - "network_name": "networkName", - "subnet_name": "subnetName", - }); -}); - -export function managerRetryResponseNetworkByoVpcGcp3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseNetworkByoVpcGcp3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseNetworkByoVpcGcp3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseTypeByoVpcAws3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseTypeByoVpcAws3 -> = z.enum(ManagerRetryResponseTypeByoVpcAws3); - -/** @internal */ -export const ManagerRetryResponseNetworkByoVpcAws3$inboundSchema: z.ZodType< - ManagerRetryResponseNetworkByoVpcAws3, - unknown -> = z.object({ - private_subnet_ids: z.array(z.string()), - public_subnet_ids: z.array(z.string()), - security_group_ids: z.array(z.string()).optional(), - type: ManagerRetryResponseTypeByoVpcAws3$inboundSchema, - vpc_id: z.string(), -}).transform((v) => { - return remap$(v, { - "private_subnet_ids": "privateSubnetIds", - "public_subnet_ids": "publicSubnetIds", - "security_group_ids": "securityGroupIds", - "vpc_id": "vpcId", - }); -}); - -export function managerRetryResponseNetworkByoVpcAws3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseNetworkByoVpcAws3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseNetworkByoVpcAws3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseTypeCreate3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseTypeCreate3 -> = z.enum(ManagerRetryResponseTypeCreate3); - -/** @internal */ -export const ManagerRetryResponseNetworkCreate3$inboundSchema: z.ZodType< - ManagerRetryResponseNetworkCreate3, - unknown -> = z.object({ - availability_zones: z.int().optional(), - cidr: z.nullable(z.string()).optional(), - type: ManagerRetryResponseTypeCreate3$inboundSchema, -}).transform((v) => { - return remap$(v, { - "availability_zones": "availabilityZones", - }); -}); - -export function managerRetryResponseNetworkCreate3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseNetworkCreate3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseNetworkCreate3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseTypeUseDefault3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseTypeUseDefault3 -> = z.enum(ManagerRetryResponseTypeUseDefault3); - -/** @internal */ -export const ManagerRetryResponseNetworkUseDefault3$inboundSchema: z.ZodType< - ManagerRetryResponseNetworkUseDefault3, - unknown -> = z.object({ - type: ManagerRetryResponseTypeUseDefault3$inboundSchema, -}); - -export function managerRetryResponseNetworkUseDefault3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseNetworkUseDefault3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseNetworkUseDefault3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseNetworkUnion3$inboundSchema: z.ZodType< - ManagerRetryResponseNetworkUnion3, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseNetworkByoVpcAws3$inboundSchema), - z.lazy(() => ManagerRetryResponseNetworkByoVpcGcp3$inboundSchema), - z.lazy(() => ManagerRetryResponseNetworkByoVnetAzure3$inboundSchema), - z.lazy(() => ManagerRetryResponseNetworkUseDefault3$inboundSchema), - z.lazy(() => ManagerRetryResponseNetworkCreate3$inboundSchema), - z.any(), -]); - -export function managerRetryResponseNetworkUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseNetworkUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseNetworkUnion3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseTelemetry3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseTelemetry3 -> = z.enum(ManagerRetryResponseTelemetry3); - -/** @internal */ -export const ManagerRetryResponseUpdates3$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseUpdates3 -> = z.enum(ManagerRetryResponseUpdates3); - -/** @internal */ -export const ManagerRetryResponseStackSettings3$inboundSchema: z.ZodType< - ManagerRetryResponseStackSettings3, - unknown -> = z.object({ - compute: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseCompute3$inboundSchema), - z.any(), - ]), - ).optional(), - deploymentModel: ManagerRetryResponseDeploymentModel3$inboundSchema - .optional(), - domains: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseDomains3$inboundSchema), - z.any(), - ]), - ).optional(), - externalBindings: z.nullable( - z.lazy(() => ManagerRetryResponseExternalBindings3$inboundSchema), - ).optional(), - heartbeats: ManagerRetryResponseHeartbeats3$inboundSchema.optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseKubernetes3$inboundSchema), - z.any(), - ]), - ).optional(), - network: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseNetworkByoVpcAws3$inboundSchema), - z.lazy(() => ManagerRetryResponseNetworkByoVpcGcp3$inboundSchema), - z.lazy(() => ManagerRetryResponseNetworkByoVnetAzure3$inboundSchema), - z.lazy(() => ManagerRetryResponseNetworkUseDefault3$inboundSchema), - z.lazy(() => ManagerRetryResponseNetworkCreate3$inboundSchema), - z.any(), - ]), - ).optional(), - telemetry: ManagerRetryResponseTelemetry3$inboundSchema.optional(), - updates: ManagerRetryResponseUpdates3$inboundSchema.optional(), -}); - -export function managerRetryResponseStackSettings3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseStackSettings3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseStackSettings3' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseSetupTerraform$inboundSchema: z.ZodType< - ManagerRetryResponseSetupTerraform, - unknown -> = z.object({ - method: z.literal("terraform"), - deploymentPortalUrl: z.string(), - managerUrl: z.string(), - providerSource: z.string(), - moduleSource: z.string(), - moduleVersion: z.string().optional(), - moduleInputs: z.record(z.string(), z.string()), - mainTf: z.string(), - tfvars: z.string(), - commands: z.string(), - stackSettings: z.lazy(() => ManagerRetryResponseStackSettings3$inboundSchema), -}); - -export function managerRetryResponseSetupTerraformFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseSetupTerraform$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseSetupTerraform' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponsePoolsAutoscale2$inboundSchema: z.ZodType< - ManagerRetryResponsePoolsAutoscale2, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); - -export function managerRetryResponsePoolsAutoscale2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponsePoolsAutoscale2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponsePoolsAutoscale2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponsePoolsFixed2$inboundSchema: z.ZodType< - ManagerRetryResponsePoolsFixed2, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); - -export function managerRetryResponsePoolsFixed2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponsePoolsFixed2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponsePoolsFixed2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponsePoolsUnion2$inboundSchema: z.ZodType< - ManagerRetryResponsePoolsUnion2, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponsePoolsFixed2$inboundSchema), - z.lazy(() => ManagerRetryResponsePoolsAutoscale2$inboundSchema), -]); - -export function managerRetryResponsePoolsUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponsePoolsUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponsePoolsUnion2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCompute2$inboundSchema: z.ZodType< - ManagerRetryResponseCompute2, - unknown -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => ManagerRetryResponsePoolsFixed2$inboundSchema), - z.lazy(() => ManagerRetryResponsePoolsAutoscale2$inboundSchema), - ]), - ).optional(), -}); - -export function managerRetryResponseCompute2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseCompute2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCompute2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseComputeUnion2$inboundSchema: z.ZodType< - ManagerRetryResponseComputeUnion2, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseCompute2$inboundSchema), - z.any(), -]); - -export function managerRetryResponseComputeUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseComputeUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseComputeUnion2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDeploymentModel2$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseDeploymentModel2 -> = z.enum(ManagerRetryResponseDeploymentModel2); - -/** @internal */ -export const ManagerRetryResponseAws2$inboundSchema: z.ZodType< - ManagerRetryResponseAws2, - unknown -> = z.object({ - certificateArn: z.string(), -}); - -export function managerRetryResponseAws2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseAws2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseAws2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseAwsUnion2$inboundSchema: z.ZodType< - ManagerRetryResponseAwsUnion2, - unknown -> = z.union([z.lazy(() => ManagerRetryResponseAws2$inboundSchema), z.any()]); - -export function managerRetryResponseAwsUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseAwsUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseAwsUnion2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseAzure2$inboundSchema: z.ZodType< - ManagerRetryResponseAzure2, - unknown -> = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), -}); - -export function managerRetryResponseAzure2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseAzure2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseAzure2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseAzureUnion2$inboundSchema: z.ZodType< - ManagerRetryResponseAzureUnion2, - unknown -> = z.union([z.lazy(() => ManagerRetryResponseAzure2$inboundSchema), z.any()]); - -export function managerRetryResponseAzureUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseAzureUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseAzureUnion2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseGcp2$inboundSchema: z.ZodType< - ManagerRetryResponseGcp2, - unknown -> = z.object({ - certificateName: z.string(), -}); - -export function managerRetryResponseGcp2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseGcp2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseGcp2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseGcpUnion2$inboundSchema: z.ZodType< - ManagerRetryResponseGcpUnion2, - unknown -> = z.union([z.lazy(() => ManagerRetryResponseGcp2$inboundSchema), z.any()]); - -export function managerRetryResponseGcpUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseGcpUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseGcpUnion2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseTlsSecretRef2$inboundSchema: z.ZodType< - ManagerRetryResponseTlsSecretRef2, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), -}); - -export function managerRetryResponseTlsSecretRef2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseTlsSecretRef2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseTlsSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDomainsKubernetes2$inboundSchema: z.ZodType< - ManagerRetryResponseDomainsKubernetes2, - unknown -> = z.object({ - tlsSecretRef: z.lazy(() => ManagerRetryResponseTlsSecretRef2$inboundSchema), -}); - -export function managerRetryResponseDomainsKubernetes2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseDomainsKubernetes2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseDomainsKubernetes2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDomainsKubernetesUnion2$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => ManagerRetryResponseDomainsKubernetes2$inboundSchema), - z.any(), - ]); - -export function managerRetryResponseDomainsKubernetesUnion2FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseDomainsKubernetesUnion2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseDomainsKubernetesUnion2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseDomainsKubernetesUnion2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDomainsCertificate2$inboundSchema: z.ZodType< - ManagerRetryResponseDomainsCertificate2, - unknown -> = z.object({ - aws: z.nullable( - z.union([z.lazy(() => ManagerRetryResponseAws2$inboundSchema), z.any()]), - ).optional(), - azure: z.nullable( - z.union([z.lazy(() => ManagerRetryResponseAzure2$inboundSchema), z.any()]), - ).optional(), - gcp: z.nullable( - z.union([z.lazy(() => ManagerRetryResponseGcp2$inboundSchema), z.any()]), - ).optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseDomainsKubernetes2$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function managerRetryResponseDomainsCertificate2FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseDomainsCertificate2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseDomainsCertificate2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseDomainsCertificate2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCustomDomains2$inboundSchema: z.ZodType< - ManagerRetryResponseCustomDomains2, - unknown -> = z.object({ - certificate: z.lazy(() => - ManagerRetryResponseDomainsCertificate2$inboundSchema - ), - domain: z.string(), -}); - -export function managerRetryResponseCustomDomains2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCustomDomains2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCustomDomains2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDomains2$inboundSchema: z.ZodType< - ManagerRetryResponseDomains2, - unknown -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => ManagerRetryResponseCustomDomains2$inboundSchema), - ), - ).optional(), -}); - -export function managerRetryResponseDomains2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseDomains2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseDomains2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseDomainsUnion2$inboundSchema: z.ZodType< - ManagerRetryResponseDomainsUnion2, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseDomains2$inboundSchema), - z.any(), -]); - -export function managerRetryResponseDomainsUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseDomainsUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseDomainsUnion2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseExternalBindings2$inboundSchema: z.ZodType< - ManagerRetryResponseExternalBindings2, - unknown -> = z.object({}); - -export function managerRetryResponseExternalBindings2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseExternalBindings2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseExternalBindings2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseHeartbeats2$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseHeartbeats2 -> = z.enum(ManagerRetryResponseHeartbeats2); - -/** @internal */ -export const ManagerRetryResponseCloud2$inboundSchema: z.ZodType< - ManagerRetryResponseCloud2, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); - -export function managerRetryResponseCloud2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseCloud2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCloud2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCloudUnion2$inboundSchema: z.ZodType< - ManagerRetryResponseCloudUnion2, - unknown -> = z.union([z.lazy(() => ManagerRetryResponseCloud2$inboundSchema), z.any()]); - -export function managerRetryResponseCloudUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseCloudUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCloudUnion2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseOwnership2$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseOwnership2 -> = z.enum(ManagerRetryResponseOwnership2); - -/** @internal */ -export const ManagerRetryResponseCluster2$inboundSchema: z.ZodType< - ManagerRetryResponseCluster2, - unknown -> = z.object({ - cloud: z.nullable( - z.union([z.lazy(() => ManagerRetryResponseCloud2$inboundSchema), z.any()]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: ManagerRetryResponseOwnership2$inboundSchema, -}); - -export function managerRetryResponseCluster2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseCluster2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCluster2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseClusterUnion2$inboundSchema: z.ZodType< - ManagerRetryResponseClusterUnion2, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseCluster2$inboundSchema), - z.any(), -]); - -export function managerRetryResponseClusterUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseClusterUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseClusterUnion2' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateNone4$inboundSchema: z.ZodType< - ManagerRetryResponseCertificateNone4, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function managerRetryResponseCertificateNone4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateNone4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCertificateNone4' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateManagedTLSSecret4$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function managerRetryResponseCertificateManagedTLSSecret4FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateManagedTLSSecret4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateManagedTLSSecret4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateManagedTLSSecret4' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateAwsAcmArn4$inboundSchema: z.ZodType< - ManagerRetryResponseCertificateAwsAcmArn4, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); - -export function managerRetryResponseCertificateAwsAcmArn4FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateAwsAcmArn4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateAwsAcmArn4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateAwsAcmArn4' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateManagedAcmImport4$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function managerRetryResponseCertificateManagedAcmImport4FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateManagedAcmImport4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateManagedAcmImport4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateManagedAcmImport4' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateTLSSecretRef4$inboundSchema: - z.ZodType = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function managerRetryResponseCertificateTLSSecretRef4FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseCertificateTLSSecretRef4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateTLSSecretRef4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseCertificateTLSSecretRef4' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseCertificateUnion4$inboundSchema: z.ZodType< - ManagerRetryResponseCertificateUnion4, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef4$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateManagedAcmImport4$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn4$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateManagedTLSSecret4$inboundSchema), - z.lazy(() => ManagerRetryResponseCertificateNone4$inboundSchema), -]); - -export function managerRetryResponseCertificateUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseCertificateUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseCertificateUnion4' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseModeCustom2$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseModeCustom2 -> = z.enum(ManagerRetryResponseModeCustom2); - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8$inboundSchema: - z.ZodEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8 - > = z.enum( - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8, - ); - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers8$inboundSchema: - z.ZodType< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers8, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8$inboundSchema, - }); - -export function managerRetryResponseProviderAzureApplicationGatewayForContainers8FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers8, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers8$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers8' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderGkeGatewayEnum8$inboundSchema: - z.ZodEnum = z.enum( - ManagerRetryResponseProviderGkeGatewayEnum8, - ); - -/** @internal */ -export const ManagerRetryResponseProviderGkeGateway8$inboundSchema: z.ZodType< - ManagerRetryResponseProviderGkeGateway8, - unknown -> = z.object({ - provider: ManagerRetryResponseProviderGkeGatewayEnum8$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function managerRetryResponseProviderGkeGateway8FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderGkeGateway8, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderGkeGateway8$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseProviderGkeGateway8' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderAwsAlbEnum8$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum8 -> = z.enum(ManagerRetryResponseProviderAwsAlbEnum8); - -/** @internal */ -export const ManagerRetryResponseProviderAwsAlb8$inboundSchema: z.ZodType< - ManagerRetryResponseProviderAwsAlb8, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: ManagerRetryResponseProviderAwsAlbEnum8$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function managerRetryResponseProviderAwsAlb8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAwsAlb8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAwsAlb8' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderUnion8$inboundSchema: z.ZodType< - ManagerRetryResponseProviderUnion8, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb8$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers8$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway8$inboundSchema), - z.any(), -]); - -export function managerRetryResponseProviderUnion8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderUnion8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderUnion8' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseRouteGateway4$inboundSchema: z.ZodType< - ManagerRetryResponseRouteGateway4, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb8$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers8$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway8$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function managerRetryResponseRouteGateway4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseRouteGateway4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseRouteGateway4' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7$inboundSchema: - z.ZodEnum< - typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7 - > = z.enum( - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7, - ); - -/** @internal */ -export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers7$inboundSchema: - z.ZodType< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers7, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7$inboundSchema, - }); - -export function managerRetryResponseProviderAzureApplicationGatewayForContainers7FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderAzureApplicationGatewayForContainers7, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers7$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers7' from JSON`, - ); -} - -/** @internal */ -export const ManagerRetryResponseProviderGkeGatewayEnum7$inboundSchema: - z.ZodEnum = z.enum( - ManagerRetryResponseProviderGkeGatewayEnum7, - ); - -/** @internal */ -export const ManagerRetryResponseProviderGkeGateway7$inboundSchema: z.ZodType< - ManagerRetryResponseProviderGkeGateway7, - unknown -> = z.object({ - provider: ManagerRetryResponseProviderGkeGatewayEnum7$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function managerRetryResponseProviderGkeGateway7FromJSON( - jsonString: string, -): SafeParseResult< - ManagerRetryResponseProviderGkeGateway7, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderGkeGateway7$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ManagerRetryResponseProviderGkeGateway7' from JSON`, - ); -} +export const ManagerRetryResponseTypeCreate1 = { + Create: "create", +} as const; +export type ManagerRetryResponseTypeCreate1 = ClosedEnum< + typeof ManagerRetryResponseTypeCreate1 +>; -/** @internal */ -export const ManagerRetryResponseProviderAwsAlbEnum7$inboundSchema: z.ZodEnum< - typeof ManagerRetryResponseProviderAwsAlbEnum7 -> = z.enum(ManagerRetryResponseProviderAwsAlbEnum7); +export type ManagerRetryResponseNetworkCreate1 = { + /** + * Number of availability zones (default: 2). + */ + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: ManagerRetryResponseTypeCreate1; +}; -/** @internal */ -export const ManagerRetryResponseProviderAwsAlb7$inboundSchema: z.ZodType< - ManagerRetryResponseProviderAwsAlb7, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: ManagerRetryResponseProviderAwsAlbEnum7$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); +export const ManagerRetryResponseTypeUseDefault1 = { + UseDefault: "use-default", +} as const; +export type ManagerRetryResponseTypeUseDefault1 = ClosedEnum< + typeof ManagerRetryResponseTypeUseDefault1 +>; -export function managerRetryResponseProviderAwsAlb7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderAwsAlb7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderAwsAlb7' from JSON`, - ); -} +export type ManagerRetryResponseNetworkUseDefault1 = { + type: ManagerRetryResponseTypeUseDefault1; +}; -/** @internal */ -export const ManagerRetryResponseProviderUnion7$inboundSchema: z.ZodType< - ManagerRetryResponseProviderUnion7, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb7$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers7$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway7$inboundSchema), - z.any(), -]); +export type ManagerRetryResponseNetworkUnion1 = + | ManagerRetryResponseNetworkByoVpcAws1 + | ManagerRetryResponseNetworkByoVpcGcp1 + | ManagerRetryResponseNetworkByoVnetAzure1 + | ManagerRetryResponseNetworkUseDefault1 + | ManagerRetryResponseNetworkCreate1 + | any; -export function managerRetryResponseProviderUnion7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseProviderUnion7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseProviderUnion7' from JSON`, - ); -} +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export const ManagerRetryResponseTelemetry1 = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export type ManagerRetryResponseTelemetry1 = ClosedEnum< + typeof ManagerRetryResponseTelemetry1 +>; -/** @internal */ -export const ManagerRetryResponseRouteIngress4$inboundSchema: z.ZodType< - ManagerRetryResponseRouteIngress4, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseProviderAwsAlb7$inboundSchema), - z.lazy(() => - ManagerRetryResponseProviderAzureApplicationGatewayForContainers7$inboundSchema - ), - z.lazy(() => ManagerRetryResponseProviderGkeGateway7$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); +/** + * How updates are delivered to the deployment. + */ +export const ManagerRetryResponseUpdates1 = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How updates are delivered to the deployment. + */ +export type ManagerRetryResponseUpdates1 = ClosedEnum< + typeof ManagerRetryResponseUpdates1 +>; -export function managerRetryResponseRouteIngress4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseRouteIngress4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseRouteIngress4' from JSON`, - ); -} +/** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ +export type ManagerRetryResponseStackSettings1 = { + compute?: ManagerRetryResponseCompute1 | any | null | undefined; + /** + * Deployment model: how updates are delivered to the remote environment. + */ + deploymentModel?: ManagerRetryResponseDeploymentModel1 | undefined; + domains?: ManagerRetryResponseDomains1 | any | null | undefined; + /** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ + externalBindings?: ManagerRetryResponseExternalBindings1 | null | undefined; + /** + * How heartbeat health checks are handled. + */ + heartbeats?: ManagerRetryResponseHeartbeats1 | undefined; + kubernetes?: ManagerRetryResponseKubernetes1 | any | null | undefined; + network?: + | ManagerRetryResponseNetworkByoVpcAws1 + | ManagerRetryResponseNetworkByoVpcGcp1 + | ManagerRetryResponseNetworkByoVnetAzure1 + | ManagerRetryResponseNetworkUseDefault1 + | ManagerRetryResponseNetworkCreate1 + | any + | null + | undefined; + /** + * How telemetry (logs, metrics, traces) is handled. + */ + telemetry?: ManagerRetryResponseTelemetry1 | undefined; + /** + * How updates are delivered to the deployment. + */ + updates?: ManagerRetryResponseUpdates1 | undefined; +}; -/** @internal */ -export const ManagerRetryResponseRouteUnion4$inboundSchema: z.ZodType< - ManagerRetryResponseRouteUnion4, - unknown -> = z.union([ - z.lazy(() => ManagerRetryResponseRouteIngress4$inboundSchema), - z.lazy(() => ManagerRetryResponseRouteGateway4$inboundSchema), -]); +export type ManagerRetryResponseSetupCloudformation = { + method: "cloudformation"; + deploymentPortalUrl: string; + launchUrl: string; + templateUrl: string; + stackName: string; + region: string; + /** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ + stackSettings: ManagerRetryResponseStackSettings1; +}; -export function managerRetryResponseRouteUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagerRetryResponseRouteUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseRouteUnion4' from JSON`, - ); -} +export type ManagerRetryResponseSetupUnion = + | ManagerRetryResponseSetupCloudformation + | ManagerRetryResponseSetupGoogleOauth + | ManagerRetryResponseSetupTerraform; -/** @internal */ -export const ManagerRetryResponseExposureCustom2$inboundSchema: z.ZodType< - ManagerRetryResponseExposureCustom2, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef4$inboundSchema), - z.lazy(() => - ManagerRetryResponseCertificateManagedAcmImport4$inboundSchema - ), - z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn4$inboundSchema), - z.lazy(() => - ManagerRetryResponseCertificateManagedTLSSecret4$inboundSchema - ), - z.lazy(() => ManagerRetryResponseCertificateNone4$inboundSchema), - ]), - domain: z.string(), - mode: ManagerRetryResponseModeCustom2$inboundSchema, - route: z.union([ - z.lazy(() => ManagerRetryResponseRouteIngress4$inboundSchema), - z.lazy(() => ManagerRetryResponseRouteGateway4$inboundSchema), - ]), -}); +export const ModeSetup = { + Setup: "setup", +} as const; +export type ModeSetup = ClosedEnum; -export function managerRetryResponseExposureCustom2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ManagerRetryResponseExposureCustom2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagerRetryResponseExposureCustom2' from JSON`, - ); -} +export type ManagerRetryResponseSetup = { + managerId: string; + setupStatus: "pending"; + setupToken: string; + setupTokenId: string; + deploymentLink: string; + setupConfig: ManagerRetryResponseSetupConfig; + setup: + | ManagerRetryResponseSetupCloudformation + | ManagerRetryResponseSetupGoogleOauth + | ManagerRetryResponseSetupTerraform; + mode: ModeSetup; +}; + +export type ManagerRetryResponse = + | ManagerRetryResponseSetup + | ManagerRetryDeploymentResponse; /** @internal */ export const ManagerRetryResponseCertificateNone3$inboundSchema: z.ZodType< @@ -6837,7 +2268,7 @@ export const ManagerRetryResponseExposureUnion2$inboundSchema: z.ZodType< ManagerRetryResponseExposureUnion2, unknown > = z.union([ - z.lazy(() => ManagerRetryResponseExposureCustom2$inboundSchema), + ManagerRetryResponseExposureCustom2$inboundSchema, z.lazy(() => ManagerRetryResponseExposureGenerated2$inboundSchema), z.lazy(() => ManagerRetryResponseExposureDisabled2$inboundSchema), z.any(), @@ -6859,15 +2290,11 @@ export const ManagerRetryResponseKubernetes2$inboundSchema: z.ZodType< ManagerRetryResponseKubernetes2, unknown > = z.object({ - cluster: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseCluster2$inboundSchema), - z.any(), - ]), - ).optional(), + cluster: z.nullable(ManagerRetryResponseClusterUnion2$inboundSchema) + .optional(), exposure: z.nullable( z.union([ - z.lazy(() => ManagerRetryResponseExposureCustom2$inboundSchema), + ManagerRetryResponseExposureCustom2$inboundSchema, z.lazy(() => ManagerRetryResponseExposureGenerated2$inboundSchema), z.lazy(() => ManagerRetryResponseExposureDisabled2$inboundSchema), z.any(), @@ -7104,22 +2531,14 @@ export const ManagerRetryResponseStackSettings2$inboundSchema: z.ZodType< ManagerRetryResponseStackSettings2, unknown > = z.object({ - compute: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseCompute2$inboundSchema), - z.any(), - ]), - ).optional(), + compute: z.nullable(ManagerRetryResponseComputeUnion2$inboundSchema) + .optional(), deploymentModel: ManagerRetryResponseDeploymentModel2$inboundSchema .optional(), - domains: z.nullable( - z.union([ - z.lazy(() => ManagerRetryResponseDomains2$inboundSchema), - z.any(), - ]), - ).optional(), + domains: z.nullable(ManagerRetryResponseDomainsUnion2$inboundSchema) + .optional(), externalBindings: z.nullable( - z.lazy(() => ManagerRetryResponseExternalBindings2$inboundSchema), + ManagerRetryResponseExternalBindings2$inboundSchema, ).optional(), heartbeats: ManagerRetryResponseHeartbeats2$inboundSchema.optional(), kubernetes: z.nullable( @@ -9045,7 +4464,7 @@ export const ManagerRetryResponseSetupUnion$inboundSchema: z.ZodType< > = z.union([ z.lazy(() => ManagerRetryResponseSetupCloudformation$inboundSchema), z.lazy(() => ManagerRetryResponseSetupGoogleOauth$inboundSchema), - z.lazy(() => ManagerRetryResponseSetupTerraform$inboundSchema), + ManagerRetryResponseSetupTerraform$inboundSchema, ]); export function managerRetryResponseSetupUnionFromJSON( @@ -9073,11 +4492,11 @@ export const ManagerRetryResponseSetup$inboundSchema: z.ZodType< setupToken: z.string(), setupTokenId: z.string(), deploymentLink: z.string(), - setupConfig: z.lazy(() => ManagerRetryResponseSetupConfig$inboundSchema), + setupConfig: ManagerRetryResponseSetupConfig$inboundSchema, setup: z.union([ z.lazy(() => ManagerRetryResponseSetupCloudformation$inboundSchema), z.lazy(() => ManagerRetryResponseSetupGoogleOauth$inboundSchema), - z.lazy(() => ManagerRetryResponseSetupTerraform$inboundSchema), + ManagerRetryResponseSetupTerraform$inboundSchema, ]), mode: ModeSetup$inboundSchema, }); diff --git a/client-sdks/platform/typescript/src/models/managerretryresponseexposurecustom2.ts b/client-sdks/platform/typescript/src/models/managerretryresponseexposurecustom2.ts new file mode 100644 index 000000000..abe6ce42f --- /dev/null +++ b/client-sdks/platform/typescript/src/models/managerretryresponseexposurecustom2.ts @@ -0,0 +1,4599 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { + DeploymentSetupPolicy, + DeploymentSetupPolicy$inboundSchema, +} from "./deploymentsetuppolicy.js"; +import { + EncryptedStackInputValue, + EncryptedStackInputValue$inboundSchema, +} from "./encryptedstackinputvalue.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const ManagerRetryResponseEnvironmentVariableType = { + Plain: "plain", + Secret: "secret", +} as const; +export type ManagerRetryResponseEnvironmentVariableType = ClosedEnum< + typeof ManagerRetryResponseEnvironmentVariableType +>; + +export type ManagerRetryResponseEnvironmentVariable = { + name: string; + type: ManagerRetryResponseEnvironmentVariableType; + targetResources: Array | null; +}; + +export type ManagerRetryResponseSetupConfig = { + metadata: { [k: string]: any | null }; + policy: DeploymentSetupPolicy; + inputValues?: { [k: string]: EncryptedStackInputValue } | undefined; + environmentVariables: Array; +}; + +export type ManagerRetryResponsePoolsAutoscale3 = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Maximum machine count. + */ + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; +}; + +export type ManagerRetryResponsePoolsFixed3 = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Number of machines to run. + */ + machines: number; + mode: "fixed"; +}; + +/** + * User-selected deployment settings for one compute pool. + */ +export type ManagerRetryResponsePoolsUnion3 = + | ManagerRetryResponsePoolsFixed3 + | ManagerRetryResponsePoolsAutoscale3; + +/** + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. + */ +export type ManagerRetryResponseCompute3 = { + /** + * Selected compute choices keyed by pool ID. + */ + pools?: { + [k: string]: + | ManagerRetryResponsePoolsFixed3 + | ManagerRetryResponsePoolsAutoscale3; + } | undefined; +}; + +export type ManagerRetryResponseComputeUnion3 = + | ManagerRetryResponseCompute3 + | any; + +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export const ManagerRetryResponseDeploymentModel3 = { + Push: "push", + Pull: "pull", +} as const; +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export type ManagerRetryResponseDeploymentModel3 = ClosedEnum< + typeof ManagerRetryResponseDeploymentModel3 +>; + +export type ManagerRetryResponseAws3 = { + certificateArn: string; +}; + +export type ManagerRetryResponseAwsUnion3 = ManagerRetryResponseAws3 | any; + +export type ManagerRetryResponseAzure3 = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +export type ManagerRetryResponseAzureUnion3 = ManagerRetryResponseAzure3 | any; + +export type ManagerRetryResponseGcp3 = { + certificateName: string; +}; + +export type ManagerRetryResponseGcpUnion3 = ManagerRetryResponseGcp3 | any; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type ManagerRetryResponseTlsSecretRef3 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; +}; + +export type ManagerRetryResponseDomainsKubernetes3 = { + /** + * Namespace-scoped Kubernetes TLS Secret reference. + */ + tlsSecretRef: ManagerRetryResponseTlsSecretRef3; +}; + +export type ManagerRetryResponseDomainsKubernetesUnion3 = + | ManagerRetryResponseDomainsKubernetes3 + | any; + +/** + * Platform-specific certificate references for custom domains. + */ +export type ManagerRetryResponseDomainsCertificate3 = { + aws?: ManagerRetryResponseAws3 | any | null | undefined; + azure?: ManagerRetryResponseAzure3 | any | null | undefined; + gcp?: ManagerRetryResponseGcp3 | any | null | undefined; + kubernetes?: ManagerRetryResponseDomainsKubernetes3 | any | null | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type ManagerRetryResponseCustomDomains3 = { + /** + * Platform-specific certificate references for custom domains. + */ + certificate: ManagerRetryResponseDomainsCertificate3; + /** + * Fully qualified domain name to use. + */ + domain: string; +}; + +/** + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. + */ +export type ManagerRetryResponseDomains3 = { + /** + * Custom domain configuration per resource ID. + */ + customDomains?: + | { [k: string]: ManagerRetryResponseCustomDomains3 } + | null + | undefined; +}; + +export type ManagerRetryResponseDomainsUnion3 = + | ManagerRetryResponseDomains3 + | any; + +/** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ +export type ManagerRetryResponseExternalBindings3 = {}; + +/** + * How heartbeat health checks are handled. + */ +export const ManagerRetryResponseHeartbeats3 = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type ManagerRetryResponseHeartbeats3 = ClosedEnum< + typeof ManagerRetryResponseHeartbeats3 +>; + +/** + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + */ +export type ManagerRetryResponseCloud3 = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +export type ManagerRetryResponseCloudUnion3 = ManagerRetryResponseCloud3 | any; + +/** + * Ownership model for the Kubernetes cluster. + */ +export const ManagerRetryResponseOwnership3 = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type ManagerRetryResponseOwnership3 = ClosedEnum< + typeof ManagerRetryResponseOwnership3 +>; + +/** + * Kubernetes cluster setup settings. + */ +export type ManagerRetryResponseCluster3 = { + cloud?: ManagerRetryResponseCloud3 | any | null | undefined; + /** + * Namespace where the Alien chart and application resources run. + */ + namespace?: string | null | undefined; + /** + * Ownership model for the Kubernetes cluster. + */ + ownership: ManagerRetryResponseOwnership3; +}; + +export type ManagerRetryResponseClusterUnion3 = + | ManagerRetryResponseCluster3 + | any; + +export type ManagerRetryResponseCertificateNone6 = { + mode: "none"; +}; + +export type ManagerRetryResponseCertificateManagedTLSSecret6 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type ManagerRetryResponseCertificateAwsAcmArn6 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type ManagerRetryResponseCertificateManagedAcmImport6 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type ManagerRetryResponseCertificateTLSSecretRef6 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type ManagerRetryResponseCertificateUnion6 = + | ManagerRetryResponseCertificateTLSSecretRef6 + | ManagerRetryResponseCertificateManagedAcmImport6 + | ManagerRetryResponseCertificateAwsAcmArn6 + | ManagerRetryResponseCertificateManagedTLSSecret6 + | ManagerRetryResponseCertificateNone6; + +export const ManagerRetryResponseModeCustom3 = { + Custom: "custom", +} as const; +export type ManagerRetryResponseModeCustom3 = ClosedEnum< + typeof ManagerRetryResponseModeCustom3 +>; + +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12 = + ClosedEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12 + >; + +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers12 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12; + }; + +export const ManagerRetryResponseProviderGkeGatewayEnum12 = { + GkeGateway: "gkeGateway", +} as const; +export type ManagerRetryResponseProviderGkeGatewayEnum12 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum12 +>; + +export type ManagerRetryResponseProviderGkeGateway12 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum12; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const ManagerRetryResponseProviderAwsAlbEnum12 = { + AwsAlb: "awsAlb", +} as const; +export type ManagerRetryResponseProviderAwsAlbEnum12 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum12 +>; + +export type ManagerRetryResponseProviderAwsAlb12 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: ManagerRetryResponseProviderAwsAlbEnum12; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type ManagerRetryResponseProviderUnion12 = + | ManagerRetryResponseProviderAwsAlb12 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers12 + | ManagerRetryResponseProviderGkeGateway12 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type ManagerRetryResponseRouteGateway6 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | ManagerRetryResponseProviderAwsAlb12 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers12 + | ManagerRetryResponseProviderGkeGateway12 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11 = + ClosedEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11 + >; + +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers11 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11; + }; + +export const ManagerRetryResponseProviderGkeGatewayEnum11 = { + GkeGateway: "gkeGateway", +} as const; +export type ManagerRetryResponseProviderGkeGatewayEnum11 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum11 +>; + +export type ManagerRetryResponseProviderGkeGateway11 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum11; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const ManagerRetryResponseProviderAwsAlbEnum11 = { + AwsAlb: "awsAlb", +} as const; +export type ManagerRetryResponseProviderAwsAlbEnum11 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum11 +>; + +export type ManagerRetryResponseProviderAwsAlb11 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: ManagerRetryResponseProviderAwsAlbEnum11; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type ManagerRetryResponseProviderUnion11 = + | ManagerRetryResponseProviderAwsAlb11 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers11 + | ManagerRetryResponseProviderGkeGateway11 + | any; + +/** + * Shared Ingress route profile values. + */ +export type ManagerRetryResponseRouteIngress6 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | ManagerRetryResponseProviderAwsAlb11 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers11 + | ManagerRetryResponseProviderGkeGateway11 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type ManagerRetryResponseRouteUnion6 = + | ManagerRetryResponseRouteIngress6 + | ManagerRetryResponseRouteGateway6; + +export type ManagerRetryResponseExposureCustom3 = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | ManagerRetryResponseCertificateTLSSecretRef6 + | ManagerRetryResponseCertificateManagedAcmImport6 + | ManagerRetryResponseCertificateAwsAcmArn6 + | ManagerRetryResponseCertificateManagedTLSSecret6 + | ManagerRetryResponseCertificateNone6; + /** + * Hostname routed by the Kubernetes public endpoint. + */ + domain: string; + mode: ManagerRetryResponseModeCustom3; + /** + * Kubernetes route API selected for public endpoints. + */ + route: ManagerRetryResponseRouteIngress6 | ManagerRetryResponseRouteGateway6; +}; + +export type ManagerRetryResponseCertificateNone5 = { + mode: "none"; +}; + +export type ManagerRetryResponseCertificateManagedTLSSecret5 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type ManagerRetryResponseCertificateAwsAcmArn5 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type ManagerRetryResponseCertificateManagedAcmImport5 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type ManagerRetryResponseCertificateTLSSecretRef5 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type ManagerRetryResponseCertificateUnion5 = + | ManagerRetryResponseCertificateTLSSecretRef5 + | ManagerRetryResponseCertificateManagedAcmImport5 + | ManagerRetryResponseCertificateAwsAcmArn5 + | ManagerRetryResponseCertificateManagedTLSSecret5 + | ManagerRetryResponseCertificateNone5; + +export const ManagerRetryResponseModeGenerated3 = { + Generated: "generated", +} as const; +export type ManagerRetryResponseModeGenerated3 = ClosedEnum< + typeof ManagerRetryResponseModeGenerated3 +>; + +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10 = + ClosedEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10 + >; + +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers10 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10; + }; + +export const ManagerRetryResponseProviderGkeGatewayEnum10 = { + GkeGateway: "gkeGateway", +} as const; +export type ManagerRetryResponseProviderGkeGatewayEnum10 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum10 +>; + +export type ManagerRetryResponseProviderGkeGateway10 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum10; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const ManagerRetryResponseProviderAwsAlbEnum10 = { + AwsAlb: "awsAlb", +} as const; +export type ManagerRetryResponseProviderAwsAlbEnum10 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum10 +>; + +export type ManagerRetryResponseProviderAwsAlb10 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: ManagerRetryResponseProviderAwsAlbEnum10; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type ManagerRetryResponseProviderUnion10 = + | ManagerRetryResponseProviderAwsAlb10 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers10 + | ManagerRetryResponseProviderGkeGateway10 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type ManagerRetryResponseRouteGateway5 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | ManagerRetryResponseProviderAwsAlb10 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers10 + | ManagerRetryResponseProviderGkeGateway10 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9 = + ClosedEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9 + >; + +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers9 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9; + }; + +export const ManagerRetryResponseProviderGkeGatewayEnum9 = { + GkeGateway: "gkeGateway", +} as const; +export type ManagerRetryResponseProviderGkeGatewayEnum9 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum9 +>; + +export type ManagerRetryResponseProviderGkeGateway9 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum9; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const ManagerRetryResponseProviderAwsAlbEnum9 = { + AwsAlb: "awsAlb", +} as const; +export type ManagerRetryResponseProviderAwsAlbEnum9 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum9 +>; + +export type ManagerRetryResponseProviderAwsAlb9 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: ManagerRetryResponseProviderAwsAlbEnum9; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type ManagerRetryResponseProviderUnion9 = + | ManagerRetryResponseProviderAwsAlb9 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers9 + | ManagerRetryResponseProviderGkeGateway9 + | any; + +/** + * Shared Ingress route profile values. + */ +export type ManagerRetryResponseRouteIngress5 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | ManagerRetryResponseProviderAwsAlb9 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers9 + | ManagerRetryResponseProviderGkeGateway9 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type ManagerRetryResponseRouteUnion5 = + | ManagerRetryResponseRouteIngress5 + | ManagerRetryResponseRouteGateway5; + +export type ManagerRetryResponseExposureGenerated3 = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | ManagerRetryResponseCertificateTLSSecretRef5 + | ManagerRetryResponseCertificateManagedAcmImport5 + | ManagerRetryResponseCertificateAwsAcmArn5 + | ManagerRetryResponseCertificateManagedTLSSecret5 + | ManagerRetryResponseCertificateNone5; + mode: ManagerRetryResponseModeGenerated3; + /** + * Kubernetes route API selected for public endpoints. + */ + route: ManagerRetryResponseRouteIngress5 | ManagerRetryResponseRouteGateway5; +}; + +export const ManagerRetryResponseModeDisabled3 = { + Disabled: "disabled", +} as const; +export type ManagerRetryResponseModeDisabled3 = ClosedEnum< + typeof ManagerRetryResponseModeDisabled3 +>; + +export type ManagerRetryResponseExposureDisabled3 = { + mode: ManagerRetryResponseModeDisabled3; +}; + +export type ManagerRetryResponseExposureUnion3 = + | ManagerRetryResponseExposureCustom3 + | ManagerRetryResponseExposureGenerated3 + | ManagerRetryResponseExposureDisabled3 + | any; + +/** + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. + */ +export type ManagerRetryResponseKubernetes3 = { + cluster?: ManagerRetryResponseCluster3 | any | null | undefined; + exposure?: + | ManagerRetryResponseExposureCustom3 + | ManagerRetryResponseExposureGenerated3 + | ManagerRetryResponseExposureDisabled3 + | any + | null + | undefined; +}; + +export type ManagerRetryResponseKubernetesUnion3 = + | ManagerRetryResponseKubernetes3 + | any; + +export const ManagerRetryResponseTypeByoVnetAzure3 = { + ByoVnetAzure: "byo-vnet-azure", +} as const; +export type ManagerRetryResponseTypeByoVnetAzure3 = ClosedEnum< + typeof ManagerRetryResponseTypeByoVnetAzure3 +>; + +export type ManagerRetryResponseNetworkByoVnetAzure3 = { + /** + * Name of the dedicated classic Application Gateway subnet within the VNet. + */ + applicationGatewaySubnetName?: string | null | undefined; + /** + * Name of the private subnet within the VNet + */ + privateSubnetName: string; + /** + * Name of the public subnet within the VNet + */ + publicSubnetName: string; + type: ManagerRetryResponseTypeByoVnetAzure3; + /** + * The full resource ID of the existing VNet + */ + vnetResourceId: string; +}; + +export const ManagerRetryResponseTypeByoVpcGcp3 = { + ByoVpcGcp: "byo-vpc-gcp", +} as const; +export type ManagerRetryResponseTypeByoVpcGcp3 = ClosedEnum< + typeof ManagerRetryResponseTypeByoVpcGcp3 +>; + +export type ManagerRetryResponseNetworkByoVpcGcp3 = { + /** + * The name of the existing VPC network + */ + networkName: string; + /** + * The region of the subnet + */ + region: string; + /** + * The name of the subnet to use + */ + subnetName: string; + type: ManagerRetryResponseTypeByoVpcGcp3; +}; + +export const ManagerRetryResponseTypeByoVpcAws3 = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type ManagerRetryResponseTypeByoVpcAws3 = ClosedEnum< + typeof ManagerRetryResponseTypeByoVpcAws3 +>; + +export type ManagerRetryResponseNetworkByoVpcAws3 = { + /** + * IDs of private subnets + */ + privateSubnetIds: Array; + /** + * IDs of public subnets (required for public ingress) + */ + publicSubnetIds: Array; + /** + * Optional security group IDs to use + */ + securityGroupIds?: Array | undefined; + type: ManagerRetryResponseTypeByoVpcAws3; + /** + * The ID of the existing VPC + */ + vpcId: string; +}; + +export const ManagerRetryResponseTypeCreate3 = { + Create: "create", +} as const; +export type ManagerRetryResponseTypeCreate3 = ClosedEnum< + typeof ManagerRetryResponseTypeCreate3 +>; + +export type ManagerRetryResponseNetworkCreate3 = { + /** + * Number of availability zones (default: 2). + */ + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: ManagerRetryResponseTypeCreate3; +}; + +export const ManagerRetryResponseTypeUseDefault3 = { + UseDefault: "use-default", +} as const; +export type ManagerRetryResponseTypeUseDefault3 = ClosedEnum< + typeof ManagerRetryResponseTypeUseDefault3 +>; + +export type ManagerRetryResponseNetworkUseDefault3 = { + type: ManagerRetryResponseTypeUseDefault3; +}; + +export type ManagerRetryResponseNetworkUnion3 = + | ManagerRetryResponseNetworkByoVpcAws3 + | ManagerRetryResponseNetworkByoVpcGcp3 + | ManagerRetryResponseNetworkByoVnetAzure3 + | ManagerRetryResponseNetworkUseDefault3 + | ManagerRetryResponseNetworkCreate3 + | any; + +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export const ManagerRetryResponseTelemetry3 = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export type ManagerRetryResponseTelemetry3 = ClosedEnum< + typeof ManagerRetryResponseTelemetry3 +>; + +/** + * How updates are delivered to the deployment. + */ +export const ManagerRetryResponseUpdates3 = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How updates are delivered to the deployment. + */ +export type ManagerRetryResponseUpdates3 = ClosedEnum< + typeof ManagerRetryResponseUpdates3 +>; + +/** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ +export type ManagerRetryResponseStackSettings3 = { + compute?: ManagerRetryResponseCompute3 | any | null | undefined; + /** + * Deployment model: how updates are delivered to the remote environment. + */ + deploymentModel?: ManagerRetryResponseDeploymentModel3 | undefined; + domains?: ManagerRetryResponseDomains3 | any | null | undefined; + /** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ + externalBindings?: ManagerRetryResponseExternalBindings3 | null | undefined; + /** + * How heartbeat health checks are handled. + */ + heartbeats?: ManagerRetryResponseHeartbeats3 | undefined; + kubernetes?: ManagerRetryResponseKubernetes3 | any | null | undefined; + network?: + | ManagerRetryResponseNetworkByoVpcAws3 + | ManagerRetryResponseNetworkByoVpcGcp3 + | ManagerRetryResponseNetworkByoVnetAzure3 + | ManagerRetryResponseNetworkUseDefault3 + | ManagerRetryResponseNetworkCreate3 + | any + | null + | undefined; + /** + * How telemetry (logs, metrics, traces) is handled. + */ + telemetry?: ManagerRetryResponseTelemetry3 | undefined; + /** + * How updates are delivered to the deployment. + */ + updates?: ManagerRetryResponseUpdates3 | undefined; +}; + +export type ManagerRetryResponseSetupTerraform = { + method: "terraform"; + deploymentPortalUrl: string; + managerUrl: string; + providerSource: string; + moduleSource: string; + moduleVersion?: string | undefined; + moduleInputs: { [k: string]: string }; + mainTf: string; + tfvars: string; + commands: string; + /** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ + stackSettings: ManagerRetryResponseStackSettings3; +}; + +export type ManagerRetryResponsePoolsAutoscale2 = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Maximum machine count. + */ + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; +}; + +export type ManagerRetryResponsePoolsFixed2 = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Number of machines to run. + */ + machines: number; + mode: "fixed"; +}; + +/** + * User-selected deployment settings for one compute pool. + */ +export type ManagerRetryResponsePoolsUnion2 = + | ManagerRetryResponsePoolsFixed2 + | ManagerRetryResponsePoolsAutoscale2; + +/** + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. + */ +export type ManagerRetryResponseCompute2 = { + /** + * Selected compute choices keyed by pool ID. + */ + pools?: { + [k: string]: + | ManagerRetryResponsePoolsFixed2 + | ManagerRetryResponsePoolsAutoscale2; + } | undefined; +}; + +export type ManagerRetryResponseComputeUnion2 = + | ManagerRetryResponseCompute2 + | any; + +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export const ManagerRetryResponseDeploymentModel2 = { + Push: "push", + Pull: "pull", +} as const; +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export type ManagerRetryResponseDeploymentModel2 = ClosedEnum< + typeof ManagerRetryResponseDeploymentModel2 +>; + +export type ManagerRetryResponseAws2 = { + certificateArn: string; +}; + +export type ManagerRetryResponseAwsUnion2 = ManagerRetryResponseAws2 | any; + +export type ManagerRetryResponseAzure2 = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +export type ManagerRetryResponseAzureUnion2 = ManagerRetryResponseAzure2 | any; + +export type ManagerRetryResponseGcp2 = { + certificateName: string; +}; + +export type ManagerRetryResponseGcpUnion2 = ManagerRetryResponseGcp2 | any; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type ManagerRetryResponseTlsSecretRef2 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; +}; + +export type ManagerRetryResponseDomainsKubernetes2 = { + /** + * Namespace-scoped Kubernetes TLS Secret reference. + */ + tlsSecretRef: ManagerRetryResponseTlsSecretRef2; +}; + +export type ManagerRetryResponseDomainsKubernetesUnion2 = + | ManagerRetryResponseDomainsKubernetes2 + | any; + +/** + * Platform-specific certificate references for custom domains. + */ +export type ManagerRetryResponseDomainsCertificate2 = { + aws?: ManagerRetryResponseAws2 | any | null | undefined; + azure?: ManagerRetryResponseAzure2 | any | null | undefined; + gcp?: ManagerRetryResponseGcp2 | any | null | undefined; + kubernetes?: ManagerRetryResponseDomainsKubernetes2 | any | null | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type ManagerRetryResponseCustomDomains2 = { + /** + * Platform-specific certificate references for custom domains. + */ + certificate: ManagerRetryResponseDomainsCertificate2; + /** + * Fully qualified domain name to use. + */ + domain: string; +}; + +/** + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. + */ +export type ManagerRetryResponseDomains2 = { + /** + * Custom domain configuration per resource ID. + */ + customDomains?: + | { [k: string]: ManagerRetryResponseCustomDomains2 } + | null + | undefined; +}; + +export type ManagerRetryResponseDomainsUnion2 = + | ManagerRetryResponseDomains2 + | any; + +/** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ +export type ManagerRetryResponseExternalBindings2 = {}; + +/** + * How heartbeat health checks are handled. + */ +export const ManagerRetryResponseHeartbeats2 = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type ManagerRetryResponseHeartbeats2 = ClosedEnum< + typeof ManagerRetryResponseHeartbeats2 +>; + +/** + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + */ +export type ManagerRetryResponseCloud2 = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +export type ManagerRetryResponseCloudUnion2 = ManagerRetryResponseCloud2 | any; + +/** + * Ownership model for the Kubernetes cluster. + */ +export const ManagerRetryResponseOwnership2 = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type ManagerRetryResponseOwnership2 = ClosedEnum< + typeof ManagerRetryResponseOwnership2 +>; + +/** + * Kubernetes cluster setup settings. + */ +export type ManagerRetryResponseCluster2 = { + cloud?: ManagerRetryResponseCloud2 | any | null | undefined; + /** + * Namespace where the Alien chart and application resources run. + */ + namespace?: string | null | undefined; + /** + * Ownership model for the Kubernetes cluster. + */ + ownership: ManagerRetryResponseOwnership2; +}; + +export type ManagerRetryResponseClusterUnion2 = + | ManagerRetryResponseCluster2 + | any; + +export type ManagerRetryResponseCertificateNone4 = { + mode: "none"; +}; + +export type ManagerRetryResponseCertificateManagedTLSSecret4 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type ManagerRetryResponseCertificateAwsAcmArn4 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type ManagerRetryResponseCertificateManagedAcmImport4 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type ManagerRetryResponseCertificateTLSSecretRef4 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type ManagerRetryResponseCertificateUnion4 = + | ManagerRetryResponseCertificateTLSSecretRef4 + | ManagerRetryResponseCertificateManagedAcmImport4 + | ManagerRetryResponseCertificateAwsAcmArn4 + | ManagerRetryResponseCertificateManagedTLSSecret4 + | ManagerRetryResponseCertificateNone4; + +export const ManagerRetryResponseModeCustom2 = { + Custom: "custom", +} as const; +export type ManagerRetryResponseModeCustom2 = ClosedEnum< + typeof ManagerRetryResponseModeCustom2 +>; + +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8 = + ClosedEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8 + >; + +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers8 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8; + }; + +export const ManagerRetryResponseProviderGkeGatewayEnum8 = { + GkeGateway: "gkeGateway", +} as const; +export type ManagerRetryResponseProviderGkeGatewayEnum8 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum8 +>; + +export type ManagerRetryResponseProviderGkeGateway8 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum8; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const ManagerRetryResponseProviderAwsAlbEnum8 = { + AwsAlb: "awsAlb", +} as const; +export type ManagerRetryResponseProviderAwsAlbEnum8 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum8 +>; + +export type ManagerRetryResponseProviderAwsAlb8 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: ManagerRetryResponseProviderAwsAlbEnum8; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type ManagerRetryResponseProviderUnion8 = + | ManagerRetryResponseProviderAwsAlb8 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers8 + | ManagerRetryResponseProviderGkeGateway8 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type ManagerRetryResponseRouteGateway4 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | ManagerRetryResponseProviderAwsAlb8 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers8 + | ManagerRetryResponseProviderGkeGateway8 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7 = + ClosedEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7 + >; + +export type ManagerRetryResponseProviderAzureApplicationGatewayForContainers7 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7; + }; + +export const ManagerRetryResponseProviderGkeGatewayEnum7 = { + GkeGateway: "gkeGateway", +} as const; +export type ManagerRetryResponseProviderGkeGatewayEnum7 = ClosedEnum< + typeof ManagerRetryResponseProviderGkeGatewayEnum7 +>; + +export type ManagerRetryResponseProviderGkeGateway7 = { + provider: ManagerRetryResponseProviderGkeGatewayEnum7; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const ManagerRetryResponseProviderAwsAlbEnum7 = { + AwsAlb: "awsAlb", +} as const; +export type ManagerRetryResponseProviderAwsAlbEnum7 = ClosedEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum7 +>; + +export type ManagerRetryResponseProviderAwsAlb7 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: ManagerRetryResponseProviderAwsAlbEnum7; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type ManagerRetryResponseProviderUnion7 = + | ManagerRetryResponseProviderAwsAlb7 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers7 + | ManagerRetryResponseProviderGkeGateway7 + | any; + +/** + * Shared Ingress route profile values. + */ +export type ManagerRetryResponseRouteIngress4 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | ManagerRetryResponseProviderAwsAlb7 + | ManagerRetryResponseProviderAzureApplicationGatewayForContainers7 + | ManagerRetryResponseProviderGkeGateway7 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type ManagerRetryResponseRouteUnion4 = + | ManagerRetryResponseRouteIngress4 + | ManagerRetryResponseRouteGateway4; + +export type ManagerRetryResponseExposureCustom2 = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | ManagerRetryResponseCertificateTLSSecretRef4 + | ManagerRetryResponseCertificateManagedAcmImport4 + | ManagerRetryResponseCertificateAwsAcmArn4 + | ManagerRetryResponseCertificateManagedTLSSecret4 + | ManagerRetryResponseCertificateNone4; + /** + * Hostname routed by the Kubernetes public endpoint. + */ + domain: string; + mode: ManagerRetryResponseModeCustom2; + /** + * Kubernetes route API selected for public endpoints. + */ + route: ManagerRetryResponseRouteIngress4 | ManagerRetryResponseRouteGateway4; +}; + +/** @internal */ +export const ManagerRetryResponseEnvironmentVariableType$inboundSchema: + z.ZodEnum = z.enum( + ManagerRetryResponseEnvironmentVariableType, + ); + +/** @internal */ +export const ManagerRetryResponseEnvironmentVariable$inboundSchema: z.ZodType< + ManagerRetryResponseEnvironmentVariable, + unknown +> = z.object({ + name: z.string(), + type: ManagerRetryResponseEnvironmentVariableType$inboundSchema, + targetResources: z.nullable(z.array(z.string())), +}); + +export function managerRetryResponseEnvironmentVariableFromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseEnvironmentVariable, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseEnvironmentVariable$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseEnvironmentVariable' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseSetupConfig$inboundSchema: z.ZodType< + ManagerRetryResponseSetupConfig, + unknown +> = z.object({ + metadata: z.record(z.string(), z.nullable(z.any())), + policy: DeploymentSetupPolicy$inboundSchema, + inputValues: z.record(z.string(), EncryptedStackInputValue$inboundSchema) + .optional(), + environmentVariables: z.array( + z.lazy(() => ManagerRetryResponseEnvironmentVariable$inboundSchema), + ), +}); + +export function managerRetryResponseSetupConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseSetupConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseSetupConfig' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponsePoolsAutoscale3$inboundSchema: z.ZodType< + ManagerRetryResponsePoolsAutoscale3, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}); + +export function managerRetryResponsePoolsAutoscale3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponsePoolsAutoscale3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponsePoolsAutoscale3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponsePoolsFixed3$inboundSchema: z.ZodType< + ManagerRetryResponsePoolsFixed3, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}); + +export function managerRetryResponsePoolsFixed3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponsePoolsFixed3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponsePoolsFixed3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponsePoolsUnion3$inboundSchema: z.ZodType< + ManagerRetryResponsePoolsUnion3, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponsePoolsFixed3$inboundSchema), + z.lazy(() => ManagerRetryResponsePoolsAutoscale3$inboundSchema), +]); + +export function managerRetryResponsePoolsUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponsePoolsUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponsePoolsUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCompute3$inboundSchema: z.ZodType< + ManagerRetryResponseCompute3, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => ManagerRetryResponsePoolsFixed3$inboundSchema), + z.lazy(() => ManagerRetryResponsePoolsAutoscale3$inboundSchema), + ]), + ).optional(), +}); + +export function managerRetryResponseCompute3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseCompute3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCompute3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseComputeUnion3$inboundSchema: z.ZodType< + ManagerRetryResponseComputeUnion3, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseCompute3$inboundSchema), + z.any(), +]); + +export function managerRetryResponseComputeUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseComputeUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseComputeUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDeploymentModel3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseDeploymentModel3 +> = z.enum(ManagerRetryResponseDeploymentModel3); + +/** @internal */ +export const ManagerRetryResponseAws3$inboundSchema: z.ZodType< + ManagerRetryResponseAws3, + unknown +> = z.object({ + certificateArn: z.string(), +}); + +export function managerRetryResponseAws3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseAws3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseAws3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseAwsUnion3$inboundSchema: z.ZodType< + ManagerRetryResponseAwsUnion3, + unknown +> = z.union([z.lazy(() => ManagerRetryResponseAws3$inboundSchema), z.any()]); + +export function managerRetryResponseAwsUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseAwsUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseAwsUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseAzure3$inboundSchema: z.ZodType< + ManagerRetryResponseAzure3, + unknown +> = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), +}); + +export function managerRetryResponseAzure3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseAzure3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseAzure3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseAzureUnion3$inboundSchema: z.ZodType< + ManagerRetryResponseAzureUnion3, + unknown +> = z.union([z.lazy(() => ManagerRetryResponseAzure3$inboundSchema), z.any()]); + +export function managerRetryResponseAzureUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseAzureUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseAzureUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseGcp3$inboundSchema: z.ZodType< + ManagerRetryResponseGcp3, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function managerRetryResponseGcp3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseGcp3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseGcp3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseGcpUnion3$inboundSchema: z.ZodType< + ManagerRetryResponseGcpUnion3, + unknown +> = z.union([z.lazy(() => ManagerRetryResponseGcp3$inboundSchema), z.any()]); + +export function managerRetryResponseGcpUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseGcpUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseGcpUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseTlsSecretRef3$inboundSchema: z.ZodType< + ManagerRetryResponseTlsSecretRef3, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function managerRetryResponseTlsSecretRef3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseTlsSecretRef3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseTlsSecretRef3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDomainsKubernetes3$inboundSchema: z.ZodType< + ManagerRetryResponseDomainsKubernetes3, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => ManagerRetryResponseTlsSecretRef3$inboundSchema), +}); + +export function managerRetryResponseDomainsKubernetes3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseDomainsKubernetes3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseDomainsKubernetes3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDomainsKubernetesUnion3$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => ManagerRetryResponseDomainsKubernetes3$inboundSchema), + z.any(), + ]); + +export function managerRetryResponseDomainsKubernetesUnion3FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseDomainsKubernetesUnion3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseDomainsKubernetesUnion3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseDomainsKubernetesUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDomainsCertificate3$inboundSchema: z.ZodType< + ManagerRetryResponseDomainsCertificate3, + unknown +> = z.object({ + aws: z.nullable( + z.union([z.lazy(() => ManagerRetryResponseAws3$inboundSchema), z.any()]), + ).optional(), + azure: z.nullable( + z.union([z.lazy(() => ManagerRetryResponseAzure3$inboundSchema), z.any()]), + ).optional(), + gcp: z.nullable( + z.union([z.lazy(() => ManagerRetryResponseGcp3$inboundSchema), z.any()]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseDomainsKubernetes3$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function managerRetryResponseDomainsCertificate3FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseDomainsCertificate3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseDomainsCertificate3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseDomainsCertificate3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCustomDomains3$inboundSchema: z.ZodType< + ManagerRetryResponseCustomDomains3, + unknown +> = z.object({ + certificate: z.lazy(() => + ManagerRetryResponseDomainsCertificate3$inboundSchema + ), + domain: z.string(), +}); + +export function managerRetryResponseCustomDomains3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCustomDomains3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCustomDomains3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDomains3$inboundSchema: z.ZodType< + ManagerRetryResponseDomains3, + unknown +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => ManagerRetryResponseCustomDomains3$inboundSchema), + ), + ).optional(), +}); + +export function managerRetryResponseDomains3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseDomains3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseDomains3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDomainsUnion3$inboundSchema: z.ZodType< + ManagerRetryResponseDomainsUnion3, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseDomains3$inboundSchema), + z.any(), +]); + +export function managerRetryResponseDomainsUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseDomainsUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseDomainsUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseExternalBindings3$inboundSchema: z.ZodType< + ManagerRetryResponseExternalBindings3, + unknown +> = z.object({}); + +export function managerRetryResponseExternalBindings3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseExternalBindings3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseExternalBindings3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseHeartbeats3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseHeartbeats3 +> = z.enum(ManagerRetryResponseHeartbeats3); + +/** @internal */ +export const ManagerRetryResponseCloud3$inboundSchema: z.ZodType< + ManagerRetryResponseCloud3, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function managerRetryResponseCloud3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseCloud3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCloud3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCloudUnion3$inboundSchema: z.ZodType< + ManagerRetryResponseCloudUnion3, + unknown +> = z.union([z.lazy(() => ManagerRetryResponseCloud3$inboundSchema), z.any()]); + +export function managerRetryResponseCloudUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseCloudUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCloudUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseOwnership3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseOwnership3 +> = z.enum(ManagerRetryResponseOwnership3); + +/** @internal */ +export const ManagerRetryResponseCluster3$inboundSchema: z.ZodType< + ManagerRetryResponseCluster3, + unknown +> = z.object({ + cloud: z.nullable( + z.union([z.lazy(() => ManagerRetryResponseCloud3$inboundSchema), z.any()]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: ManagerRetryResponseOwnership3$inboundSchema, +}); + +export function managerRetryResponseCluster3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseCluster3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCluster3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseClusterUnion3$inboundSchema: z.ZodType< + ManagerRetryResponseClusterUnion3, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseCluster3$inboundSchema), + z.any(), +]); + +export function managerRetryResponseClusterUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseClusterUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseClusterUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateNone6$inboundSchema: z.ZodType< + ManagerRetryResponseCertificateNone6, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function managerRetryResponseCertificateNone6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateNone6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCertificateNone6' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateManagedTLSSecret6$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function managerRetryResponseCertificateManagedTLSSecret6FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateManagedTLSSecret6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateManagedTLSSecret6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateManagedTLSSecret6' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateAwsAcmArn6$inboundSchema: z.ZodType< + ManagerRetryResponseCertificateAwsAcmArn6, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function managerRetryResponseCertificateAwsAcmArn6FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateAwsAcmArn6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateAwsAcmArn6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateAwsAcmArn6' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateManagedAcmImport6$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function managerRetryResponseCertificateManagedAcmImport6FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateManagedAcmImport6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateManagedAcmImport6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateManagedAcmImport6' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateTLSSecretRef6$inboundSchema: + z.ZodType = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function managerRetryResponseCertificateTLSSecretRef6FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateTLSSecretRef6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateTLSSecretRef6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateTLSSecretRef6' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateUnion6$inboundSchema: z.ZodType< + ManagerRetryResponseCertificateUnion6, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef6$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateManagedAcmImport6$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn6$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateManagedTLSSecret6$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateNone6$inboundSchema), +]); + +export function managerRetryResponseCertificateUnion6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateUnion6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCertificateUnion6' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseModeCustom3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseModeCustom3 +> = z.enum(ManagerRetryResponseModeCustom3); + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12$inboundSchema: + z.ZodEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12 + > = z.enum( + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12, + ); + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers12$inboundSchema: + z.ZodType< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers12, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum12$inboundSchema, + }); + +export function managerRetryResponseProviderAzureApplicationGatewayForContainers12FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers12, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers12$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers12' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderGkeGatewayEnum12$inboundSchema: + z.ZodEnum = z.enum( + ManagerRetryResponseProviderGkeGatewayEnum12, + ); + +/** @internal */ +export const ManagerRetryResponseProviderGkeGateway12$inboundSchema: z.ZodType< + ManagerRetryResponseProviderGkeGateway12, + unknown +> = z.object({ + provider: ManagerRetryResponseProviderGkeGatewayEnum12$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function managerRetryResponseProviderGkeGateway12FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderGkeGateway12, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderGkeGateway12$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseProviderGkeGateway12' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlbEnum12$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum12 +> = z.enum(ManagerRetryResponseProviderAwsAlbEnum12); + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlb12$inboundSchema: z.ZodType< + ManagerRetryResponseProviderAwsAlb12, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: ManagerRetryResponseProviderAwsAlbEnum12$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function managerRetryResponseProviderAwsAlb12FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAwsAlb12$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAwsAlb12' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderUnion12$inboundSchema: z.ZodType< + ManagerRetryResponseProviderUnion12, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb12$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers12$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway12$inboundSchema), + z.any(), +]); + +export function managerRetryResponseProviderUnion12FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderUnion12$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderUnion12' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseRouteGateway6$inboundSchema: z.ZodType< + ManagerRetryResponseRouteGateway6, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb12$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers12$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway12$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function managerRetryResponseRouteGateway6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseRouteGateway6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseRouteGateway6' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11$inboundSchema: + z.ZodEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11 + > = z.enum( + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11, + ); + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers11$inboundSchema: + z.ZodType< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers11, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum11$inboundSchema, + }); + +export function managerRetryResponseProviderAzureApplicationGatewayForContainers11FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers11, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers11$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers11' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderGkeGatewayEnum11$inboundSchema: + z.ZodEnum = z.enum( + ManagerRetryResponseProviderGkeGatewayEnum11, + ); + +/** @internal */ +export const ManagerRetryResponseProviderGkeGateway11$inboundSchema: z.ZodType< + ManagerRetryResponseProviderGkeGateway11, + unknown +> = z.object({ + provider: ManagerRetryResponseProviderGkeGatewayEnum11$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function managerRetryResponseProviderGkeGateway11FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderGkeGateway11, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderGkeGateway11$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseProviderGkeGateway11' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlbEnum11$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum11 +> = z.enum(ManagerRetryResponseProviderAwsAlbEnum11); + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlb11$inboundSchema: z.ZodType< + ManagerRetryResponseProviderAwsAlb11, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: ManagerRetryResponseProviderAwsAlbEnum11$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function managerRetryResponseProviderAwsAlb11FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAwsAlb11$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAwsAlb11' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderUnion11$inboundSchema: z.ZodType< + ManagerRetryResponseProviderUnion11, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb11$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers11$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway11$inboundSchema), + z.any(), +]); + +export function managerRetryResponseProviderUnion11FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderUnion11$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderUnion11' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseRouteIngress6$inboundSchema: z.ZodType< + ManagerRetryResponseRouteIngress6, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb11$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers11$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway11$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function managerRetryResponseRouteIngress6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseRouteIngress6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseRouteIngress6' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseRouteUnion6$inboundSchema: z.ZodType< + ManagerRetryResponseRouteUnion6, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseRouteIngress6$inboundSchema), + z.lazy(() => ManagerRetryResponseRouteGateway6$inboundSchema), +]); + +export function managerRetryResponseRouteUnion6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseRouteUnion6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseRouteUnion6' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseExposureCustom3$inboundSchema: z.ZodType< + ManagerRetryResponseExposureCustom3, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef6$inboundSchema), + z.lazy(() => + ManagerRetryResponseCertificateManagedAcmImport6$inboundSchema + ), + z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn6$inboundSchema), + z.lazy(() => + ManagerRetryResponseCertificateManagedTLSSecret6$inboundSchema + ), + z.lazy(() => ManagerRetryResponseCertificateNone6$inboundSchema), + ]), + domain: z.string(), + mode: ManagerRetryResponseModeCustom3$inboundSchema, + route: z.union([ + z.lazy(() => ManagerRetryResponseRouteIngress6$inboundSchema), + z.lazy(() => ManagerRetryResponseRouteGateway6$inboundSchema), + ]), +}); + +export function managerRetryResponseExposureCustom3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseExposureCustom3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseExposureCustom3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateNone5$inboundSchema: z.ZodType< + ManagerRetryResponseCertificateNone5, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function managerRetryResponseCertificateNone5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateNone5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCertificateNone5' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateManagedTLSSecret5$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function managerRetryResponseCertificateManagedTLSSecret5FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateManagedTLSSecret5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateManagedTLSSecret5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateManagedTLSSecret5' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateAwsAcmArn5$inboundSchema: z.ZodType< + ManagerRetryResponseCertificateAwsAcmArn5, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function managerRetryResponseCertificateAwsAcmArn5FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateAwsAcmArn5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateAwsAcmArn5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateAwsAcmArn5' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateManagedAcmImport5$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function managerRetryResponseCertificateManagedAcmImport5FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateManagedAcmImport5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateManagedAcmImport5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateManagedAcmImport5' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateTLSSecretRef5$inboundSchema: + z.ZodType = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function managerRetryResponseCertificateTLSSecretRef5FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateTLSSecretRef5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateTLSSecretRef5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateTLSSecretRef5' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateUnion5$inboundSchema: z.ZodType< + ManagerRetryResponseCertificateUnion5, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef5$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateManagedAcmImport5$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn5$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateManagedTLSSecret5$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateNone5$inboundSchema), +]); + +export function managerRetryResponseCertificateUnion5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateUnion5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCertificateUnion5' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseModeGenerated3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseModeGenerated3 +> = z.enum(ManagerRetryResponseModeGenerated3); + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10$inboundSchema: + z.ZodEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10 + > = z.enum( + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10, + ); + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers10$inboundSchema: + z.ZodType< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers10, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum10$inboundSchema, + }); + +export function managerRetryResponseProviderAzureApplicationGatewayForContainers10FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers10, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers10$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers10' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderGkeGatewayEnum10$inboundSchema: + z.ZodEnum = z.enum( + ManagerRetryResponseProviderGkeGatewayEnum10, + ); + +/** @internal */ +export const ManagerRetryResponseProviderGkeGateway10$inboundSchema: z.ZodType< + ManagerRetryResponseProviderGkeGateway10, + unknown +> = z.object({ + provider: ManagerRetryResponseProviderGkeGatewayEnum10$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function managerRetryResponseProviderGkeGateway10FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderGkeGateway10, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderGkeGateway10$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseProviderGkeGateway10' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlbEnum10$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum10 +> = z.enum(ManagerRetryResponseProviderAwsAlbEnum10); + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlb10$inboundSchema: z.ZodType< + ManagerRetryResponseProviderAwsAlb10, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: ManagerRetryResponseProviderAwsAlbEnum10$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function managerRetryResponseProviderAwsAlb10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAwsAlb10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAwsAlb10' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderUnion10$inboundSchema: z.ZodType< + ManagerRetryResponseProviderUnion10, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb10$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers10$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway10$inboundSchema), + z.any(), +]); + +export function managerRetryResponseProviderUnion10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderUnion10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderUnion10' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseRouteGateway5$inboundSchema: z.ZodType< + ManagerRetryResponseRouteGateway5, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb10$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers10$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway10$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function managerRetryResponseRouteGateway5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseRouteGateway5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseRouteGateway5' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9$inboundSchema: + z.ZodEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9 + > = z.enum( + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9, + ); + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers9$inboundSchema: + z.ZodType< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers9, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum9$inboundSchema, + }); + +export function managerRetryResponseProviderAzureApplicationGatewayForContainers9FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers9, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers9$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers9' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderGkeGatewayEnum9$inboundSchema: + z.ZodEnum = z.enum( + ManagerRetryResponseProviderGkeGatewayEnum9, + ); + +/** @internal */ +export const ManagerRetryResponseProviderGkeGateway9$inboundSchema: z.ZodType< + ManagerRetryResponseProviderGkeGateway9, + unknown +> = z.object({ + provider: ManagerRetryResponseProviderGkeGatewayEnum9$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function managerRetryResponseProviderGkeGateway9FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderGkeGateway9, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderGkeGateway9$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseProviderGkeGateway9' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlbEnum9$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum9 +> = z.enum(ManagerRetryResponseProviderAwsAlbEnum9); + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlb9$inboundSchema: z.ZodType< + ManagerRetryResponseProviderAwsAlb9, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: ManagerRetryResponseProviderAwsAlbEnum9$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function managerRetryResponseProviderAwsAlb9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAwsAlb9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAwsAlb9' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderUnion9$inboundSchema: z.ZodType< + ManagerRetryResponseProviderUnion9, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb9$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers9$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway9$inboundSchema), + z.any(), +]); + +export function managerRetryResponseProviderUnion9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderUnion9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderUnion9' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseRouteIngress5$inboundSchema: z.ZodType< + ManagerRetryResponseRouteIngress5, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb9$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers9$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway9$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function managerRetryResponseRouteIngress5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseRouteIngress5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseRouteIngress5' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseRouteUnion5$inboundSchema: z.ZodType< + ManagerRetryResponseRouteUnion5, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseRouteIngress5$inboundSchema), + z.lazy(() => ManagerRetryResponseRouteGateway5$inboundSchema), +]); + +export function managerRetryResponseRouteUnion5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseRouteUnion5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseRouteUnion5' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseExposureGenerated3$inboundSchema: z.ZodType< + ManagerRetryResponseExposureGenerated3, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef5$inboundSchema), + z.lazy(() => + ManagerRetryResponseCertificateManagedAcmImport5$inboundSchema + ), + z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn5$inboundSchema), + z.lazy(() => + ManagerRetryResponseCertificateManagedTLSSecret5$inboundSchema + ), + z.lazy(() => ManagerRetryResponseCertificateNone5$inboundSchema), + ]), + mode: ManagerRetryResponseModeGenerated3$inboundSchema, + route: z.union([ + z.lazy(() => ManagerRetryResponseRouteIngress5$inboundSchema), + z.lazy(() => ManagerRetryResponseRouteGateway5$inboundSchema), + ]), +}); + +export function managerRetryResponseExposureGenerated3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseExposureGenerated3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseExposureGenerated3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseModeDisabled3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseModeDisabled3 +> = z.enum(ManagerRetryResponseModeDisabled3); + +/** @internal */ +export const ManagerRetryResponseExposureDisabled3$inboundSchema: z.ZodType< + ManagerRetryResponseExposureDisabled3, + unknown +> = z.object({ + mode: ManagerRetryResponseModeDisabled3$inboundSchema, +}); + +export function managerRetryResponseExposureDisabled3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseExposureDisabled3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseExposureDisabled3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseExposureUnion3$inboundSchema: z.ZodType< + ManagerRetryResponseExposureUnion3, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseExposureCustom3$inboundSchema), + z.lazy(() => ManagerRetryResponseExposureGenerated3$inboundSchema), + z.lazy(() => ManagerRetryResponseExposureDisabled3$inboundSchema), + z.any(), +]); + +export function managerRetryResponseExposureUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseExposureUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseExposureUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseKubernetes3$inboundSchema: z.ZodType< + ManagerRetryResponseKubernetes3, + unknown +> = z.object({ + cluster: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseCluster3$inboundSchema), + z.any(), + ]), + ).optional(), + exposure: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseExposureCustom3$inboundSchema), + z.lazy(() => ManagerRetryResponseExposureGenerated3$inboundSchema), + z.lazy(() => ManagerRetryResponseExposureDisabled3$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function managerRetryResponseKubernetes3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseKubernetes3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseKubernetes3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseKubernetesUnion3$inboundSchema: z.ZodType< + ManagerRetryResponseKubernetesUnion3, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseKubernetes3$inboundSchema), + z.any(), +]); + +export function managerRetryResponseKubernetesUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseKubernetesUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseKubernetesUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseTypeByoVnetAzure3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseTypeByoVnetAzure3 +> = z.enum(ManagerRetryResponseTypeByoVnetAzure3); + +/** @internal */ +export const ManagerRetryResponseNetworkByoVnetAzure3$inboundSchema: z.ZodType< + ManagerRetryResponseNetworkByoVnetAzure3, + unknown +> = z.object({ + application_gateway_subnet_name: z.nullable(z.string()).optional(), + private_subnet_name: z.string(), + public_subnet_name: z.string(), + type: ManagerRetryResponseTypeByoVnetAzure3$inboundSchema, + vnet_resource_id: z.string(), +}).transform((v) => { + return remap$(v, { + "application_gateway_subnet_name": "applicationGatewaySubnetName", + "private_subnet_name": "privateSubnetName", + "public_subnet_name": "publicSubnetName", + "vnet_resource_id": "vnetResourceId", + }); +}); + +export function managerRetryResponseNetworkByoVnetAzure3FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseNetworkByoVnetAzure3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseNetworkByoVnetAzure3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseNetworkByoVnetAzure3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseTypeByoVpcGcp3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseTypeByoVpcGcp3 +> = z.enum(ManagerRetryResponseTypeByoVpcGcp3); + +/** @internal */ +export const ManagerRetryResponseNetworkByoVpcGcp3$inboundSchema: z.ZodType< + ManagerRetryResponseNetworkByoVpcGcp3, + unknown +> = z.object({ + network_name: z.string(), + region: z.string(), + subnet_name: z.string(), + type: ManagerRetryResponseTypeByoVpcGcp3$inboundSchema, +}).transform((v) => { + return remap$(v, { + "network_name": "networkName", + "subnet_name": "subnetName", + }); +}); + +export function managerRetryResponseNetworkByoVpcGcp3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseNetworkByoVpcGcp3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseNetworkByoVpcGcp3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseTypeByoVpcAws3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseTypeByoVpcAws3 +> = z.enum(ManagerRetryResponseTypeByoVpcAws3); + +/** @internal */ +export const ManagerRetryResponseNetworkByoVpcAws3$inboundSchema: z.ZodType< + ManagerRetryResponseNetworkByoVpcAws3, + unknown +> = z.object({ + private_subnet_ids: z.array(z.string()), + public_subnet_ids: z.array(z.string()), + security_group_ids: z.array(z.string()).optional(), + type: ManagerRetryResponseTypeByoVpcAws3$inboundSchema, + vpc_id: z.string(), +}).transform((v) => { + return remap$(v, { + "private_subnet_ids": "privateSubnetIds", + "public_subnet_ids": "publicSubnetIds", + "security_group_ids": "securityGroupIds", + "vpc_id": "vpcId", + }); +}); + +export function managerRetryResponseNetworkByoVpcAws3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseNetworkByoVpcAws3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseNetworkByoVpcAws3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseTypeCreate3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseTypeCreate3 +> = z.enum(ManagerRetryResponseTypeCreate3); + +/** @internal */ +export const ManagerRetryResponseNetworkCreate3$inboundSchema: z.ZodType< + ManagerRetryResponseNetworkCreate3, + unknown +> = z.object({ + availability_zones: z.int().optional(), + cidr: z.nullable(z.string()).optional(), + type: ManagerRetryResponseTypeCreate3$inboundSchema, +}).transform((v) => { + return remap$(v, { + "availability_zones": "availabilityZones", + }); +}); + +export function managerRetryResponseNetworkCreate3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseNetworkCreate3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseNetworkCreate3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseTypeUseDefault3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseTypeUseDefault3 +> = z.enum(ManagerRetryResponseTypeUseDefault3); + +/** @internal */ +export const ManagerRetryResponseNetworkUseDefault3$inboundSchema: z.ZodType< + ManagerRetryResponseNetworkUseDefault3, + unknown +> = z.object({ + type: ManagerRetryResponseTypeUseDefault3$inboundSchema, +}); + +export function managerRetryResponseNetworkUseDefault3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseNetworkUseDefault3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseNetworkUseDefault3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseNetworkUnion3$inboundSchema: z.ZodType< + ManagerRetryResponseNetworkUnion3, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseNetworkByoVpcAws3$inboundSchema), + z.lazy(() => ManagerRetryResponseNetworkByoVpcGcp3$inboundSchema), + z.lazy(() => ManagerRetryResponseNetworkByoVnetAzure3$inboundSchema), + z.lazy(() => ManagerRetryResponseNetworkUseDefault3$inboundSchema), + z.lazy(() => ManagerRetryResponseNetworkCreate3$inboundSchema), + z.any(), +]); + +export function managerRetryResponseNetworkUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseNetworkUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseNetworkUnion3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseTelemetry3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseTelemetry3 +> = z.enum(ManagerRetryResponseTelemetry3); + +/** @internal */ +export const ManagerRetryResponseUpdates3$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseUpdates3 +> = z.enum(ManagerRetryResponseUpdates3); + +/** @internal */ +export const ManagerRetryResponseStackSettings3$inboundSchema: z.ZodType< + ManagerRetryResponseStackSettings3, + unknown +> = z.object({ + compute: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseCompute3$inboundSchema), + z.any(), + ]), + ).optional(), + deploymentModel: ManagerRetryResponseDeploymentModel3$inboundSchema + .optional(), + domains: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseDomains3$inboundSchema), + z.any(), + ]), + ).optional(), + externalBindings: z.nullable( + z.lazy(() => ManagerRetryResponseExternalBindings3$inboundSchema), + ).optional(), + heartbeats: ManagerRetryResponseHeartbeats3$inboundSchema.optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseKubernetes3$inboundSchema), + z.any(), + ]), + ).optional(), + network: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseNetworkByoVpcAws3$inboundSchema), + z.lazy(() => ManagerRetryResponseNetworkByoVpcGcp3$inboundSchema), + z.lazy(() => ManagerRetryResponseNetworkByoVnetAzure3$inboundSchema), + z.lazy(() => ManagerRetryResponseNetworkUseDefault3$inboundSchema), + z.lazy(() => ManagerRetryResponseNetworkCreate3$inboundSchema), + z.any(), + ]), + ).optional(), + telemetry: ManagerRetryResponseTelemetry3$inboundSchema.optional(), + updates: ManagerRetryResponseUpdates3$inboundSchema.optional(), +}); + +export function managerRetryResponseStackSettings3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseStackSettings3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseStackSettings3' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseSetupTerraform$inboundSchema: z.ZodType< + ManagerRetryResponseSetupTerraform, + unknown +> = z.object({ + method: z.literal("terraform"), + deploymentPortalUrl: z.string(), + managerUrl: z.string(), + providerSource: z.string(), + moduleSource: z.string(), + moduleVersion: z.string().optional(), + moduleInputs: z.record(z.string(), z.string()), + mainTf: z.string(), + tfvars: z.string(), + commands: z.string(), + stackSettings: z.lazy(() => ManagerRetryResponseStackSettings3$inboundSchema), +}); + +export function managerRetryResponseSetupTerraformFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseSetupTerraform$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseSetupTerraform' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponsePoolsAutoscale2$inboundSchema: z.ZodType< + ManagerRetryResponsePoolsAutoscale2, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}); + +export function managerRetryResponsePoolsAutoscale2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponsePoolsAutoscale2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponsePoolsAutoscale2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponsePoolsFixed2$inboundSchema: z.ZodType< + ManagerRetryResponsePoolsFixed2, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}); + +export function managerRetryResponsePoolsFixed2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponsePoolsFixed2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponsePoolsFixed2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponsePoolsUnion2$inboundSchema: z.ZodType< + ManagerRetryResponsePoolsUnion2, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponsePoolsFixed2$inboundSchema), + z.lazy(() => ManagerRetryResponsePoolsAutoscale2$inboundSchema), +]); + +export function managerRetryResponsePoolsUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponsePoolsUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponsePoolsUnion2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCompute2$inboundSchema: z.ZodType< + ManagerRetryResponseCompute2, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => ManagerRetryResponsePoolsFixed2$inboundSchema), + z.lazy(() => ManagerRetryResponsePoolsAutoscale2$inboundSchema), + ]), + ).optional(), +}); + +export function managerRetryResponseCompute2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseCompute2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCompute2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseComputeUnion2$inboundSchema: z.ZodType< + ManagerRetryResponseComputeUnion2, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseCompute2$inboundSchema), + z.any(), +]); + +export function managerRetryResponseComputeUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseComputeUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseComputeUnion2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDeploymentModel2$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseDeploymentModel2 +> = z.enum(ManagerRetryResponseDeploymentModel2); + +/** @internal */ +export const ManagerRetryResponseAws2$inboundSchema: z.ZodType< + ManagerRetryResponseAws2, + unknown +> = z.object({ + certificateArn: z.string(), +}); + +export function managerRetryResponseAws2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseAws2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseAws2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseAwsUnion2$inboundSchema: z.ZodType< + ManagerRetryResponseAwsUnion2, + unknown +> = z.union([z.lazy(() => ManagerRetryResponseAws2$inboundSchema), z.any()]); + +export function managerRetryResponseAwsUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseAwsUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseAwsUnion2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseAzure2$inboundSchema: z.ZodType< + ManagerRetryResponseAzure2, + unknown +> = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), +}); + +export function managerRetryResponseAzure2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseAzure2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseAzure2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseAzureUnion2$inboundSchema: z.ZodType< + ManagerRetryResponseAzureUnion2, + unknown +> = z.union([z.lazy(() => ManagerRetryResponseAzure2$inboundSchema), z.any()]); + +export function managerRetryResponseAzureUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseAzureUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseAzureUnion2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseGcp2$inboundSchema: z.ZodType< + ManagerRetryResponseGcp2, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function managerRetryResponseGcp2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseGcp2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseGcp2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseGcpUnion2$inboundSchema: z.ZodType< + ManagerRetryResponseGcpUnion2, + unknown +> = z.union([z.lazy(() => ManagerRetryResponseGcp2$inboundSchema), z.any()]); + +export function managerRetryResponseGcpUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseGcpUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseGcpUnion2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseTlsSecretRef2$inboundSchema: z.ZodType< + ManagerRetryResponseTlsSecretRef2, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function managerRetryResponseTlsSecretRef2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseTlsSecretRef2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseTlsSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDomainsKubernetes2$inboundSchema: z.ZodType< + ManagerRetryResponseDomainsKubernetes2, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => ManagerRetryResponseTlsSecretRef2$inboundSchema), +}); + +export function managerRetryResponseDomainsKubernetes2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseDomainsKubernetes2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseDomainsKubernetes2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDomainsKubernetesUnion2$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => ManagerRetryResponseDomainsKubernetes2$inboundSchema), + z.any(), + ]); + +export function managerRetryResponseDomainsKubernetesUnion2FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseDomainsKubernetesUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseDomainsKubernetesUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseDomainsKubernetesUnion2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDomainsCertificate2$inboundSchema: z.ZodType< + ManagerRetryResponseDomainsCertificate2, + unknown +> = z.object({ + aws: z.nullable( + z.union([z.lazy(() => ManagerRetryResponseAws2$inboundSchema), z.any()]), + ).optional(), + azure: z.nullable( + z.union([z.lazy(() => ManagerRetryResponseAzure2$inboundSchema), z.any()]), + ).optional(), + gcp: z.nullable( + z.union([z.lazy(() => ManagerRetryResponseGcp2$inboundSchema), z.any()]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseDomainsKubernetes2$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function managerRetryResponseDomainsCertificate2FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseDomainsCertificate2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseDomainsCertificate2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseDomainsCertificate2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCustomDomains2$inboundSchema: z.ZodType< + ManagerRetryResponseCustomDomains2, + unknown +> = z.object({ + certificate: z.lazy(() => + ManagerRetryResponseDomainsCertificate2$inboundSchema + ), + domain: z.string(), +}); + +export function managerRetryResponseCustomDomains2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCustomDomains2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCustomDomains2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDomains2$inboundSchema: z.ZodType< + ManagerRetryResponseDomains2, + unknown +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => ManagerRetryResponseCustomDomains2$inboundSchema), + ), + ).optional(), +}); + +export function managerRetryResponseDomains2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseDomains2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseDomains2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseDomainsUnion2$inboundSchema: z.ZodType< + ManagerRetryResponseDomainsUnion2, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseDomains2$inboundSchema), + z.any(), +]); + +export function managerRetryResponseDomainsUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseDomainsUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseDomainsUnion2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseExternalBindings2$inboundSchema: z.ZodType< + ManagerRetryResponseExternalBindings2, + unknown +> = z.object({}); + +export function managerRetryResponseExternalBindings2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseExternalBindings2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseExternalBindings2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseHeartbeats2$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseHeartbeats2 +> = z.enum(ManagerRetryResponseHeartbeats2); + +/** @internal */ +export const ManagerRetryResponseCloud2$inboundSchema: z.ZodType< + ManagerRetryResponseCloud2, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function managerRetryResponseCloud2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseCloud2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCloud2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCloudUnion2$inboundSchema: z.ZodType< + ManagerRetryResponseCloudUnion2, + unknown +> = z.union([z.lazy(() => ManagerRetryResponseCloud2$inboundSchema), z.any()]); + +export function managerRetryResponseCloudUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseCloudUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCloudUnion2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseOwnership2$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseOwnership2 +> = z.enum(ManagerRetryResponseOwnership2); + +/** @internal */ +export const ManagerRetryResponseCluster2$inboundSchema: z.ZodType< + ManagerRetryResponseCluster2, + unknown +> = z.object({ + cloud: z.nullable( + z.union([z.lazy(() => ManagerRetryResponseCloud2$inboundSchema), z.any()]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: ManagerRetryResponseOwnership2$inboundSchema, +}); + +export function managerRetryResponseCluster2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseCluster2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCluster2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseClusterUnion2$inboundSchema: z.ZodType< + ManagerRetryResponseClusterUnion2, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseCluster2$inboundSchema), + z.any(), +]); + +export function managerRetryResponseClusterUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseClusterUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseClusterUnion2' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateNone4$inboundSchema: z.ZodType< + ManagerRetryResponseCertificateNone4, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function managerRetryResponseCertificateNone4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateNone4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCertificateNone4' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateManagedTLSSecret4$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function managerRetryResponseCertificateManagedTLSSecret4FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateManagedTLSSecret4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateManagedTLSSecret4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateManagedTLSSecret4' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateAwsAcmArn4$inboundSchema: z.ZodType< + ManagerRetryResponseCertificateAwsAcmArn4, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function managerRetryResponseCertificateAwsAcmArn4FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateAwsAcmArn4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateAwsAcmArn4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateAwsAcmArn4' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateManagedAcmImport4$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function managerRetryResponseCertificateManagedAcmImport4FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateManagedAcmImport4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateManagedAcmImport4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateManagedAcmImport4' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateTLSSecretRef4$inboundSchema: + z.ZodType = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function managerRetryResponseCertificateTLSSecretRef4FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseCertificateTLSSecretRef4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateTLSSecretRef4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseCertificateTLSSecretRef4' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseCertificateUnion4$inboundSchema: z.ZodType< + ManagerRetryResponseCertificateUnion4, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef4$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateManagedAcmImport4$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn4$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateManagedTLSSecret4$inboundSchema), + z.lazy(() => ManagerRetryResponseCertificateNone4$inboundSchema), +]); + +export function managerRetryResponseCertificateUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseCertificateUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseCertificateUnion4' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseModeCustom2$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseModeCustom2 +> = z.enum(ManagerRetryResponseModeCustom2); + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8$inboundSchema: + z.ZodEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8 + > = z.enum( + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8, + ); + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers8$inboundSchema: + z.ZodType< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers8, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum8$inboundSchema, + }); + +export function managerRetryResponseProviderAzureApplicationGatewayForContainers8FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers8, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers8$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers8' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderGkeGatewayEnum8$inboundSchema: + z.ZodEnum = z.enum( + ManagerRetryResponseProviderGkeGatewayEnum8, + ); + +/** @internal */ +export const ManagerRetryResponseProviderGkeGateway8$inboundSchema: z.ZodType< + ManagerRetryResponseProviderGkeGateway8, + unknown +> = z.object({ + provider: ManagerRetryResponseProviderGkeGatewayEnum8$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function managerRetryResponseProviderGkeGateway8FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderGkeGateway8, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderGkeGateway8$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseProviderGkeGateway8' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlbEnum8$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum8 +> = z.enum(ManagerRetryResponseProviderAwsAlbEnum8); + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlb8$inboundSchema: z.ZodType< + ManagerRetryResponseProviderAwsAlb8, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: ManagerRetryResponseProviderAwsAlbEnum8$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function managerRetryResponseProviderAwsAlb8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAwsAlb8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAwsAlb8' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderUnion8$inboundSchema: z.ZodType< + ManagerRetryResponseProviderUnion8, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb8$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers8$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway8$inboundSchema), + z.any(), +]); + +export function managerRetryResponseProviderUnion8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderUnion8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderUnion8' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseRouteGateway4$inboundSchema: z.ZodType< + ManagerRetryResponseRouteGateway4, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb8$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers8$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway8$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function managerRetryResponseRouteGateway4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseRouteGateway4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseRouteGateway4' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7$inboundSchema: + z.ZodEnum< + typeof ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7 + > = z.enum( + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7, + ); + +/** @internal */ +export const ManagerRetryResponseProviderAzureApplicationGatewayForContainers7$inboundSchema: + z.ZodType< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers7, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + ManagerRetryResponseProviderAzureApplicationGatewayForContainersEnum7$inboundSchema, + }); + +export function managerRetryResponseProviderAzureApplicationGatewayForContainers7FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderAzureApplicationGatewayForContainers7, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers7$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAzureApplicationGatewayForContainers7' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderGkeGatewayEnum7$inboundSchema: + z.ZodEnum = z.enum( + ManagerRetryResponseProviderGkeGatewayEnum7, + ); + +/** @internal */ +export const ManagerRetryResponseProviderGkeGateway7$inboundSchema: z.ZodType< + ManagerRetryResponseProviderGkeGateway7, + unknown +> = z.object({ + provider: ManagerRetryResponseProviderGkeGatewayEnum7$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function managerRetryResponseProviderGkeGateway7FromJSON( + jsonString: string, +): SafeParseResult< + ManagerRetryResponseProviderGkeGateway7, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderGkeGateway7$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ManagerRetryResponseProviderGkeGateway7' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlbEnum7$inboundSchema: z.ZodEnum< + typeof ManagerRetryResponseProviderAwsAlbEnum7 +> = z.enum(ManagerRetryResponseProviderAwsAlbEnum7); + +/** @internal */ +export const ManagerRetryResponseProviderAwsAlb7$inboundSchema: z.ZodType< + ManagerRetryResponseProviderAwsAlb7, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: ManagerRetryResponseProviderAwsAlbEnum7$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function managerRetryResponseProviderAwsAlb7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderAwsAlb7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderAwsAlb7' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseProviderUnion7$inboundSchema: z.ZodType< + ManagerRetryResponseProviderUnion7, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb7$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers7$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway7$inboundSchema), + z.any(), +]); + +export function managerRetryResponseProviderUnion7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseProviderUnion7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseProviderUnion7' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseRouteIngress4$inboundSchema: z.ZodType< + ManagerRetryResponseRouteIngress4, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => ManagerRetryResponseProviderAwsAlb7$inboundSchema), + z.lazy(() => + ManagerRetryResponseProviderAzureApplicationGatewayForContainers7$inboundSchema + ), + z.lazy(() => ManagerRetryResponseProviderGkeGateway7$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function managerRetryResponseRouteIngress4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseRouteIngress4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseRouteIngress4' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseRouteUnion4$inboundSchema: z.ZodType< + ManagerRetryResponseRouteUnion4, + unknown +> = z.union([ + z.lazy(() => ManagerRetryResponseRouteIngress4$inboundSchema), + z.lazy(() => ManagerRetryResponseRouteGateway4$inboundSchema), +]); + +export function managerRetryResponseRouteUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagerRetryResponseRouteUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseRouteUnion4' from JSON`, + ); +} + +/** @internal */ +export const ManagerRetryResponseExposureCustom2$inboundSchema: z.ZodType< + ManagerRetryResponseExposureCustom2, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => ManagerRetryResponseCertificateTLSSecretRef4$inboundSchema), + z.lazy(() => + ManagerRetryResponseCertificateManagedAcmImport4$inboundSchema + ), + z.lazy(() => ManagerRetryResponseCertificateAwsAcmArn4$inboundSchema), + z.lazy(() => + ManagerRetryResponseCertificateManagedTLSSecret4$inboundSchema + ), + z.lazy(() => ManagerRetryResponseCertificateNone4$inboundSchema), + ]), + domain: z.string(), + mode: ManagerRetryResponseModeCustom2$inboundSchema, + route: z.union([ + z.lazy(() => ManagerRetryResponseRouteIngress4$inboundSchema), + z.lazy(() => ManagerRetryResponseRouteGateway4$inboundSchema), + ]), +}); + +export function managerRetryResponseExposureCustom2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ManagerRetryResponseExposureCustom2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagerRetryResponseExposureCustom2' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/memoryunion4.ts b/client-sdks/platform/typescript/src/models/memoryunion4.ts new file mode 100644 index 000000000..ea076a1aa --- /dev/null +++ b/client-sdks/platform/typescript/src/models/memoryunion4.ts @@ -0,0 +1,4211 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; +import { + CapacityGroup1, + CapacityGroup1$Outbound, + CapacityGroup1$outboundSchema, + CollectionIssue18, + CollectionIssue18$Outbound, + CollectionIssue18$outboundSchema, + CpuUnion7, + CpuUnion7$Outbound, + CpuUnion7$outboundSchema, + DataAzure2, + DataAzure2$Outbound, + DataAzure2$outboundSchema, + DataGcp2, + DataGcp2$Outbound, + DataGcp2$outboundSchema, + DataLocal5, + DataLocal5$Outbound, + DataLocal5$outboundSchema, + Health18, + Health18$outboundSchema, + MemoryUnion7, + MemoryUnion7$Outbound, + MemoryUnion7$outboundSchema, + Nodes1, + Nodes1$Outbound, + Nodes1$outboundSchema, + ProviderFleet1, + ProviderFleet1$Outbound, + ProviderFleet1$outboundSchema, + StatusLifecycle18, + StatusLifecycle18$outboundSchema, +} from "./statuslifecycle18.js"; + +export type HeartbeatStatus18 = { + collectionIssues: Array; + health: Health18; + lifecycle: StatusLifecycle18; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAws2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: CpuUnion7 | null | undefined; + memory?: MemoryUnion7 | null | undefined; + name: string; + nodes: Nodes1; + providerFleets: Array; + region?: string | null | undefined; + status: HeartbeatStatus18; + backend: "aws"; +}; + +export type SyncReconcileRequestDataUnion5 = + | DataAws2 + | DataGcp2 + | DataAzure2 + | DataLocal5; + +export type DataComputeCluster = { + data: DataAws2 | DataGcp2 | DataAzure2 | DataLocal5; + resourceType: "compute-cluster"; +}; + +export const DaemonInstanceCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type DaemonInstanceCpuUnit = ClosedEnum; + +export type DaemonInstanceCpu = { + unit: DaemonInstanceCpuUnit; + value: number; +}; + +export type DaemonInstanceCpuUnion4 = DaemonInstanceCpu | any; + +export const DaemonInstanceKind = { + Container: "container", + Process: "process", + Daemon: "daemon", +} as const; +export type DaemonInstanceKind = ClosedEnum; + +export const DaemonInstanceMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type DaemonInstanceMemoryUnit = ClosedEnum< + typeof DaemonInstanceMemoryUnit +>; + +export type DaemonInstanceMemory = { + unit: DaemonInstanceMemoryUnit; + value: number; +}; + +export type DaemonInstanceMemoryUnion4 = DaemonInstanceMemory | any; + +export type DaemonInstance4 = { + cpu?: DaemonInstanceCpu | any | null | undefined; + kind: DaemonInstanceKind; + memory?: DaemonInstanceMemory | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +export type DaemonInstanceUnion = DaemonInstance4 | any; + +export const EventSeverity3 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type EventSeverity3 = ClosedEnum; + +export type SyncReconcileRequestSubject3 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +export type SyncReconcileRequestSubjectUnion3 = + | SyncReconcileRequestSubject3 + | any; + +export type SyncReconcileRequestEvent10 = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: EventSeverity3; + subject?: SyncReconcileRequestSubject3 | any | null | undefined; + timestamp: Date; +}; + +export const Reason17 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason17 = ClosedEnum; + +export const CollectionIssueSeverity17 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity17 = ClosedEnum< + typeof CollectionIssueSeverity17 +>; + +export type CollectionIssue17 = { + message: string; + reason: Reason17; + severity: CollectionIssueSeverity17; + source: string; +}; + +export const Health17 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health17 = ClosedEnum; + +export const StatusLifecycle17 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle17 = ClosedEnum; + +export type HeartbeatStatus17 = { + collectionIssues: Array; + health: Health17; + lifecycle: StatusLifecycle17; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal4 = { + commandSupported: boolean; + daemonInstance?: DaemonInstance4 | any | null | undefined; + daemonName: string; + events: Array; + exitReason?: string | null | undefined; + imagePathPresent: boolean; + pid?: number | null | undefined; + restartCount?: number | null | undefined; + runtimeId: string; + status: HeartbeatStatus17; + backend: "local"; +}; + +export const CpuUnit6 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit6 = ClosedEnum; + +export type Cpu6 = { + unit: CpuUnit6; + value: number; +}; + +export type CpuUnion6 = Cpu6 | any; + +export type InvolvedObject7 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion7 = InvolvedObject7 | any; + +export type SyncReconcileRequestSource7 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion7 = SyncReconcileRequestSource7 | any; + +export type SyncReconcileRequestEvent9 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject7 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource7 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit6 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit6 = ClosedEnum; + +export type Memory6 = { + unit: MemoryUnit6; + value: number; +}; + +export type MemoryUnion6 = Memory6 | any; + +export const CpuPodUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuPodUnit3 = ClosedEnum; + +export type CpuPod3 = { + unit: CpuPodUnit3; + value: number; +}; + +export type PodCpuUnion3 = CpuPod3 | any; + +export const MemoryPodUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryPodUnit3 = ClosedEnum; + +export type MemoryPod3 = { + unit: MemoryPodUnit3; + value: number; +}; + +export type PodMemoryUnion3 = MemoryPod3 | any; + +export type OwnerReference3 = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +export type Pod3 = { + cpu?: CpuPod3 | any | null | undefined; + memory?: MemoryPod3 | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas4 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const Reason16 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason16 = ClosedEnum; + +export const CollectionIssueSeverity16 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity16 = ClosedEnum< + typeof CollectionIssueSeverity16 +>; + +export type CollectionIssue16 = { + message: string; + reason: Reason16; + severity: CollectionIssueSeverity16; + source: string; +}; + +export const Health16 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health16 = ClosedEnum; + +export const StatusLifecycle16 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle16 = ClosedEnum; + +export type HeartbeatStatus16 = { + collectionIssues: Array; + health: Health16; + lifecycle: StatusLifecycle16; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type WorkloadCondition3 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export type Workload3 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion3 = Workload3 | any; + +export type DataKubernetes3 = { + commandSupported: boolean; + cpu?: Cpu6 | any | null | undefined; + events: Array; + memory?: Memory6 | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas4; + restarts?: number | null | undefined; + status: HeartbeatStatus16; + workload?: Workload3 | any | null | undefined; + backend: "kubernetes"; +}; + +export const CpuDaemonInstanceUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuDaemonInstanceUnit3 = ClosedEnum; + +export type CpuDaemonInstance3 = { + unit: CpuDaemonInstanceUnit3; + value: number; +}; + +export type DaemonInstanceCpuUnion3 = CpuDaemonInstance3 | any; + +export const MemoryDaemonInstanceUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit3 = ClosedEnum< + typeof MemoryDaemonInstanceUnit3 +>; + +export type MemoryDaemonInstance3 = { + unit: MemoryDaemonInstanceUnit3; + value: number; +}; + +export type DaemonInstanceMemoryUnion3 = MemoryDaemonInstance3 | any; + +export type DaemonInstance3 = { + cpu?: CpuDaemonInstance3 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance3 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type InvolvedObject6 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion6 = InvolvedObject6 | any; + +export type SyncReconcileRequestSource6 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion6 = SyncReconcileRequestSource6 | any; + +export type SyncReconcileRequestEvent8 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject6 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource6 | any | null | undefined; + type?: string | null | undefined; +}; + +export const Reason15 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason15 = ClosedEnum; + +export const CollectionIssueSeverity15 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity15 = ClosedEnum< + typeof CollectionIssueSeverity15 +>; + +export type CollectionIssue15 = { + message: string; + reason: Reason15; + severity: CollectionIssueSeverity15; + source: string; +}; + +export const Health15 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health15 = ClosedEnum; + +export const StatusLifecycle15 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle15 = ClosedEnum; + +export type HeartbeatStatus15 = { + collectionIssues: Array; + health: Health15; + lifecycle: StatusLifecycle15; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzure1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName: string; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + status: HeartbeatStatus15; + unavailableInstances: number; + backend: "azure"; +}; + +export const CpuDaemonInstanceUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuDaemonInstanceUnit2 = ClosedEnum; + +export type CpuDaemonInstance2 = { + unit: CpuDaemonInstanceUnit2; + value: number; +}; + +export type DaemonInstanceCpuUnion2 = CpuDaemonInstance2 | any; + +export const MemoryDaemonInstanceUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit2 = ClosedEnum< + typeof MemoryDaemonInstanceUnit2 +>; + +export type MemoryDaemonInstance2 = { + unit: MemoryDaemonInstanceUnit2; + value: number; +}; + +export type DaemonInstanceMemoryUnion2 = MemoryDaemonInstance2 | any; + +export type DaemonInstance2 = { + cpu?: CpuDaemonInstance2 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance2 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type InvolvedObject5 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion5 = InvolvedObject5 | any; + +export type SyncReconcileRequestSource5 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion5 = SyncReconcileRequestSource5 | any; + +export type SyncReconcileRequestEvent7 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject5 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource5 | any | null | undefined; + type?: string | null | undefined; +}; + +export const Reason14 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason14 = ClosedEnum; + +export const CollectionIssueSeverity14 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity14 = ClosedEnum< + typeof CollectionIssueSeverity14 +>; + +export type CollectionIssue14 = { + message: string; + reason: Reason14; + severity: CollectionIssueSeverity14; + source: string; +}; + +export const Health14 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health14 = ClosedEnum; + +export const StatusLifecycle14 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle14 = ClosedEnum; + +export type HeartbeatStatus14 = { + collectionIssues: Array; + health: Health14; + lifecycle: StatusLifecycle14; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcp1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName: string; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + status: HeartbeatStatus14; + unavailableInstances: number; + backend: "gcp"; +}; + +export const CpuDaemonInstanceUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuDaemonInstanceUnit1 = ClosedEnum; + +export type CpuDaemonInstance1 = { + unit: CpuDaemonInstanceUnit1; + value: number; +}; + +export type DaemonInstanceCpuUnion1 = CpuDaemonInstance1 | any; + +export const MemoryDaemonInstanceUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit1 = ClosedEnum< + typeof MemoryDaemonInstanceUnit1 +>; + +export type MemoryDaemonInstance1 = { + unit: MemoryDaemonInstanceUnit1; + value: number; +}; + +export type DaemonInstanceMemoryUnion1 = MemoryDaemonInstance1 | any; + +export type DaemonInstance1 = { + cpu?: CpuDaemonInstance1 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance1 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type InvolvedObject4 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion4 = InvolvedObject4 | any; + +export type SyncReconcileRequestSource4 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion4 = SyncReconcileRequestSource4 | any; + +export type SyncReconcileRequestEvent6 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject4 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource4 | any | null | undefined; + type?: string | null | undefined; +}; + +export const Reason13 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason13 = ClosedEnum; + +export const CollectionIssueSeverity13 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity13 = ClosedEnum< + typeof CollectionIssueSeverity13 +>; + +export type CollectionIssue13 = { + message: string; + reason: Reason13; + severity: CollectionIssueSeverity13; + source: string; +}; + +export const Health13 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health13 = ClosedEnum; + +export const StatusLifecycle13 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle13 = ClosedEnum; + +export type HeartbeatStatus13 = { + collectionIssues: Array; + health: Health13; + lifecycle: StatusLifecycle13; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAws1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName: string; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + status: HeartbeatStatus13; + unavailableInstances: number; + backend: "aws"; +}; + +export type SyncReconcileRequestDataUnion4 = + | DataAws1 + | DataGcp1 + | DataAzure1 + | DataKubernetes3 + | DataLocal4; + +export type DataDaemon = { + data: DataAws1 | DataGcp1 | DataAzure1 | DataKubernetes3 | DataLocal4; + resourceType: "daemon"; +}; + +export const ContainerUnitCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ContainerUnitCpuUnit = ClosedEnum; + +export type ContainerUnitCpu = { + unit: ContainerUnitCpuUnit; + value: number; +}; + +export type ContainerUnitCpuUnion = ContainerUnitCpu | any; + +export const ContainerUnitKind = { + Container: "container", + Process: "process", + Daemon: "daemon", +} as const; +export type ContainerUnitKind = ClosedEnum; + +export const ContainerUnitMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ContainerUnitMemoryUnit = ClosedEnum< + typeof ContainerUnitMemoryUnit +>; + +export type ContainerUnitMemory = { + unit: ContainerUnitMemoryUnit; + value: number; +}; + +export type ContainerUnitMemoryUnion = ContainerUnitMemory | any; + +export type ContainerUnit = { + cpu?: ContainerUnitCpu | any | null | undefined; + kind: ContainerUnitKind; + memory?: ContainerUnitMemory | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +export type ContainerUnitUnion = ContainerUnit | any; + +export const CpuUnit5 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit5 = ClosedEnum; + +export type Cpu5 = { + unit: CpuUnit5; + value: number; +}; + +export type CpuUnion5 = Cpu5 | any; + +export const EventSeverity2 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type EventSeverity2 = ClosedEnum; + +export type SyncReconcileRequestSubject2 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +export type SyncReconcileRequestSubjectUnion2 = + | SyncReconcileRequestSubject2 + | any; + +export type SyncReconcileRequestEvent5 = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: EventSeverity2; + subject?: SyncReconcileRequestSubject2 | any | null | undefined; + timestamp: Date; +}; + +export const MemoryUnit5 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit5 = ClosedEnum; + +export type Memory5 = { + unit: MemoryUnit5; + value: number; +}; + +export type MemoryUnion5 = Memory5 | any; + +export const Reason12 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason12 = ClosedEnum; + +export const CollectionIssueSeverity12 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity12 = ClosedEnum< + typeof CollectionIssueSeverity12 +>; + +export type CollectionIssue12 = { + message: string; + reason: Reason12; + severity: CollectionIssueSeverity12; + source: string; +}; + +export const Health12 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health12 = ClosedEnum; + +export const StatusLifecycle12 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle12 = ClosedEnum; + +export type HeartbeatStatus12 = { + collectionIssues: Array; + health: Health12; + lifecycle: StatusLifecycle12; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal3 = { + bindMountCount: number; + containerId?: string | null | undefined; + containerUnit?: ContainerUnit | any | null | undefined; + cpu?: Cpu5 | any | null | undefined; + events: Array; + image?: string | null | undefined; + localUrl?: string | null | undefined; + memory?: Memory5 | any | null | undefined; + name?: string | null | undefined; + portCount: number; + restartCount?: number | null | undefined; + runtimeReachable: boolean; + runtimeStatus?: string | null | undefined; + status: HeartbeatStatus12; + backend: "local"; +}; + +export const CpuUnit4 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit4 = ClosedEnum; + +export type Cpu4 = { + unit: CpuUnit4; + value: number; +}; + +export type CpuUnion4 = Cpu4 | any; + +export type InvolvedObject3 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion3 = InvolvedObject3 | any; + +export type SyncReconcileRequestSource3 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion3 = SyncReconcileRequestSource3 | any; + +export type SyncReconcileRequestEvent4 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject3 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource3 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit4 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit4 = ClosedEnum; + +export type Memory4 = { + unit: MemoryUnit4; + value: number; +}; + +export type MemoryUnion4 = Memory4 | any; + +/** @internal */ +export type HeartbeatStatus18$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus18$outboundSchema: z.ZodType< + HeartbeatStatus18$Outbound, + HeartbeatStatus18 +> = z.object({ + collectionIssues: z.array(CollectionIssue18$outboundSchema), + health: Health18$outboundSchema, + lifecycle: StatusLifecycle18$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus18ToJSON( + heartbeatStatus18: HeartbeatStatus18, +): string { + return JSON.stringify( + HeartbeatStatus18$outboundSchema.parse(heartbeatStatus18), + ); +} + +/** @internal */ +export type DataAws2$Outbound = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: CpuUnion7$Outbound | null | undefined; + memory?: MemoryUnion7$Outbound | null | undefined; + name: string; + nodes: Nodes1$Outbound; + providerFleets: Array; + region?: string | null | undefined; + status: HeartbeatStatus18$Outbound; + backend: "aws"; +}; + +/** @internal */ +export const DataAws2$outboundSchema: z.ZodType = z + .object({ + backendClusterId: z.nullable(z.string()).optional(), + capacityGroups: z.array(CapacityGroup1$outboundSchema), + cpu: z.nullable(CpuUnion7$outboundSchema).optional(), + memory: z.nullable(MemoryUnion7$outboundSchema).optional(), + name: z.string(), + nodes: Nodes1$outboundSchema, + providerFleets: z.array(ProviderFleet1$outboundSchema), + region: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus18$outboundSchema), + backend: z.literal("aws"), + }); + +export function dataAws2ToJSON(dataAws2: DataAws2): string { + return JSON.stringify(DataAws2$outboundSchema.parse(dataAws2)); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion5$Outbound = + | DataAws2$Outbound + | DataGcp2$Outbound + | DataAzure2$Outbound + | DataLocal5$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion5$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion5$Outbound, + SyncReconcileRequestDataUnion5 +> = z.union([ + z.lazy(() => DataAws2$outboundSchema), + DataGcp2$outboundSchema, + DataAzure2$outboundSchema, + DataLocal5$outboundSchema, +]); + +export function syncReconcileRequestDataUnion5ToJSON( + syncReconcileRequestDataUnion5: SyncReconcileRequestDataUnion5, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion5$outboundSchema.parse( + syncReconcileRequestDataUnion5, + ), + ); +} + +/** @internal */ +export type DataComputeCluster$Outbound = { + data: + | DataAws2$Outbound + | DataGcp2$Outbound + | DataAzure2$Outbound + | DataLocal5$Outbound; + resourceType: "compute-cluster"; +}; + +/** @internal */ +export const DataComputeCluster$outboundSchema: z.ZodType< + DataComputeCluster$Outbound, + DataComputeCluster +> = z.object({ + data: z.union([ + z.lazy(() => DataAws2$outboundSchema), + DataGcp2$outboundSchema, + DataAzure2$outboundSchema, + DataLocal5$outboundSchema, + ]), + resourceType: z.literal("compute-cluster"), +}); + +export function dataComputeClusterToJSON( + dataComputeCluster: DataComputeCluster, +): string { + return JSON.stringify( + DataComputeCluster$outboundSchema.parse(dataComputeCluster), + ); +} + +/** @internal */ +export const DaemonInstanceCpuUnit$outboundSchema: z.ZodEnum< + typeof DaemonInstanceCpuUnit +> = z.enum(DaemonInstanceCpuUnit); + +/** @internal */ +export type DaemonInstanceCpu$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const DaemonInstanceCpu$outboundSchema: z.ZodType< + DaemonInstanceCpu$Outbound, + DaemonInstanceCpu +> = z.object({ + unit: DaemonInstanceCpuUnit$outboundSchema, + value: z.number(), +}); + +export function daemonInstanceCpuToJSON( + daemonInstanceCpu: DaemonInstanceCpu, +): string { + return JSON.stringify( + DaemonInstanceCpu$outboundSchema.parse(daemonInstanceCpu), + ); +} + +/** @internal */ +export type DaemonInstanceCpuUnion4$Outbound = DaemonInstanceCpu$Outbound | any; + +/** @internal */ +export const DaemonInstanceCpuUnion4$outboundSchema: z.ZodType< + DaemonInstanceCpuUnion4$Outbound, + DaemonInstanceCpuUnion4 +> = z.union([z.lazy(() => DaemonInstanceCpu$outboundSchema), z.any()]); + +export function daemonInstanceCpuUnion4ToJSON( + daemonInstanceCpuUnion4: DaemonInstanceCpuUnion4, +): string { + return JSON.stringify( + DaemonInstanceCpuUnion4$outboundSchema.parse(daemonInstanceCpuUnion4), + ); +} + +/** @internal */ +export const DaemonInstanceKind$outboundSchema: z.ZodEnum< + typeof DaemonInstanceKind +> = z.enum(DaemonInstanceKind); + +/** @internal */ +export const DaemonInstanceMemoryUnit$outboundSchema: z.ZodEnum< + typeof DaemonInstanceMemoryUnit +> = z.enum(DaemonInstanceMemoryUnit); + +/** @internal */ +export type DaemonInstanceMemory$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const DaemonInstanceMemory$outboundSchema: z.ZodType< + DaemonInstanceMemory$Outbound, + DaemonInstanceMemory +> = z.object({ + unit: DaemonInstanceMemoryUnit$outboundSchema, + value: z.number(), +}); + +export function daemonInstanceMemoryToJSON( + daemonInstanceMemory: DaemonInstanceMemory, +): string { + return JSON.stringify( + DaemonInstanceMemory$outboundSchema.parse(daemonInstanceMemory), + ); +} + +/** @internal */ +export type DaemonInstanceMemoryUnion4$Outbound = + | DaemonInstanceMemory$Outbound + | any; + +/** @internal */ +export const DaemonInstanceMemoryUnion4$outboundSchema: z.ZodType< + DaemonInstanceMemoryUnion4$Outbound, + DaemonInstanceMemoryUnion4 +> = z.union([z.lazy(() => DaemonInstanceMemory$outboundSchema), z.any()]); + +export function daemonInstanceMemoryUnion4ToJSON( + daemonInstanceMemoryUnion4: DaemonInstanceMemoryUnion4, +): string { + return JSON.stringify( + DaemonInstanceMemoryUnion4$outboundSchema.parse(daemonInstanceMemoryUnion4), + ); +} + +/** @internal */ +export type DaemonInstance4$Outbound = { + cpu?: DaemonInstanceCpu$Outbound | any | null | undefined; + kind: string; + memory?: DaemonInstanceMemory$Outbound | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +/** @internal */ +export const DaemonInstance4$outboundSchema: z.ZodType< + DaemonInstance4$Outbound, + DaemonInstance4 +> = z.object({ + cpu: z.nullable( + z.union([z.lazy(() => DaemonInstanceCpu$outboundSchema), z.any()]), + ).optional(), + kind: DaemonInstanceKind$outboundSchema, + memory: z.nullable( + z.union([z.lazy(() => DaemonInstanceMemory$outboundSchema), z.any()]), + ).optional(), + name: z.string(), + phase: z.nullable(z.string()).optional(), + pid: z.nullable(z.int()).optional(), + ready: z.boolean(), + restartCount: z.nullable(z.int()).optional(), + unitId: z.string(), +}); + +export function daemonInstance4ToJSON( + daemonInstance4: DaemonInstance4, +): string { + return JSON.stringify(DaemonInstance4$outboundSchema.parse(daemonInstance4)); +} + +/** @internal */ +export type DaemonInstanceUnion$Outbound = DaemonInstance4$Outbound | any; + +/** @internal */ +export const DaemonInstanceUnion$outboundSchema: z.ZodType< + DaemonInstanceUnion$Outbound, + DaemonInstanceUnion +> = z.union([z.lazy(() => DaemonInstance4$outboundSchema), z.any()]); + +export function daemonInstanceUnionToJSON( + daemonInstanceUnion: DaemonInstanceUnion, +): string { + return JSON.stringify( + DaemonInstanceUnion$outboundSchema.parse(daemonInstanceUnion), + ); +} + +/** @internal */ +export const EventSeverity3$outboundSchema: z.ZodEnum = z + .enum(EventSeverity3); + +/** @internal */ +export type SyncReconcileRequestSubject3$Outbound = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSubject3$outboundSchema: z.ZodType< + SyncReconcileRequestSubject3$Outbound, + SyncReconcileRequestSubject3 +> = z.object({ + id: z.nullable(z.string()).optional(), + kind: z.string(), + name: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSubject3ToJSON( + syncReconcileRequestSubject3: SyncReconcileRequestSubject3, +): string { + return JSON.stringify( + SyncReconcileRequestSubject3$outboundSchema.parse( + syncReconcileRequestSubject3, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestSubjectUnion3$Outbound = + | SyncReconcileRequestSubject3$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestSubjectUnion3$outboundSchema: z.ZodType< + SyncReconcileRequestSubjectUnion3$Outbound, + SyncReconcileRequestSubjectUnion3 +> = z.union([ + z.lazy(() => SyncReconcileRequestSubject3$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestSubjectUnion3ToJSON( + syncReconcileRequestSubjectUnion3: SyncReconcileRequestSubjectUnion3, +): string { + return JSON.stringify( + SyncReconcileRequestSubjectUnion3$outboundSchema.parse( + syncReconcileRequestSubjectUnion3, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestEvent10$Outbound = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: string; + subject?: SyncReconcileRequestSubject3$Outbound | any | null | undefined; + timestamp: string; +}; + +/** @internal */ +export const SyncReconcileRequestEvent10$outboundSchema: z.ZodType< + SyncReconcileRequestEvent10$Outbound, + SyncReconcileRequestEvent10 +> = z.object({ + kind: z.string(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + severity: EventSeverity3$outboundSchema, + subject: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSubject3$outboundSchema), + z.any(), + ]), + ).optional(), + timestamp: z.date().transform(v => v.toISOString()), +}); + +export function syncReconcileRequestEvent10ToJSON( + syncReconcileRequestEvent10: SyncReconcileRequestEvent10, +): string { + return JSON.stringify( + SyncReconcileRequestEvent10$outboundSchema.parse( + syncReconcileRequestEvent10, + ), + ); +} + +/** @internal */ +export const Reason17$outboundSchema: z.ZodEnum = z.enum( + Reason17, +); + +/** @internal */ +export const CollectionIssueSeverity17$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity17 +> = z.enum(CollectionIssueSeverity17); + +/** @internal */ +export type CollectionIssue17$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue17$outboundSchema: z.ZodType< + CollectionIssue17$Outbound, + CollectionIssue17 +> = z.object({ + message: z.string(), + reason: Reason17$outboundSchema, + severity: CollectionIssueSeverity17$outboundSchema, + source: z.string(), +}); + +export function collectionIssue17ToJSON( + collectionIssue17: CollectionIssue17, +): string { + return JSON.stringify( + CollectionIssue17$outboundSchema.parse(collectionIssue17), + ); +} + +/** @internal */ +export const Health17$outboundSchema: z.ZodEnum = z.enum( + Health17, +); + +/** @internal */ +export const StatusLifecycle17$outboundSchema: z.ZodEnum< + typeof StatusLifecycle17 +> = z.enum(StatusLifecycle17); + +/** @internal */ +export type HeartbeatStatus17$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus17$outboundSchema: z.ZodType< + HeartbeatStatus17$Outbound, + HeartbeatStatus17 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue17$outboundSchema)), + health: Health17$outboundSchema, + lifecycle: StatusLifecycle17$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus17ToJSON( + heartbeatStatus17: HeartbeatStatus17, +): string { + return JSON.stringify( + HeartbeatStatus17$outboundSchema.parse(heartbeatStatus17), + ); +} + +/** @internal */ +export type DataLocal4$Outbound = { + commandSupported: boolean; + daemonInstance?: DaemonInstance4$Outbound | any | null | undefined; + daemonName: string; + events: Array; + exitReason?: string | null | undefined; + imagePathPresent: boolean; + pid?: number | null | undefined; + restartCount?: number | null | undefined; + runtimeId: string; + status: HeartbeatStatus17$Outbound; + backend: "local"; +}; + +/** @internal */ +export const DataLocal4$outboundSchema: z.ZodType< + DataLocal4$Outbound, + DataLocal4 +> = z.object({ + commandSupported: z.boolean(), + daemonInstance: z.nullable( + z.union([z.lazy(() => DaemonInstance4$outboundSchema), z.any()]), + ).optional(), + daemonName: z.string(), + events: z.array(z.lazy(() => SyncReconcileRequestEvent10$outboundSchema)), + exitReason: z.nullable(z.string()).optional(), + imagePathPresent: z.boolean(), + pid: z.nullable(z.int()).optional(), + restartCount: z.nullable(z.int()).optional(), + runtimeId: z.string(), + status: z.lazy(() => HeartbeatStatus17$outboundSchema), + backend: z.literal("local"), +}); + +export function dataLocal4ToJSON(dataLocal4: DataLocal4): string { + return JSON.stringify(DataLocal4$outboundSchema.parse(dataLocal4)); +} + +/** @internal */ +export const CpuUnit6$outboundSchema: z.ZodEnum = z.enum( + CpuUnit6, +); + +/** @internal */ +export type Cpu6$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Cpu6$outboundSchema: z.ZodType = z.object({ + unit: CpuUnit6$outboundSchema, + value: z.number(), +}); + +export function cpu6ToJSON(cpu6: Cpu6): string { + return JSON.stringify(Cpu6$outboundSchema.parse(cpu6)); +} + +/** @internal */ +export type CpuUnion6$Outbound = Cpu6$Outbound | any; + +/** @internal */ +export const CpuUnion6$outboundSchema: z.ZodType< + CpuUnion6$Outbound, + CpuUnion6 +> = z.union([z.lazy(() => Cpu6$outboundSchema), z.any()]); + +export function cpuUnion6ToJSON(cpuUnion6: CpuUnion6): string { + return JSON.stringify(CpuUnion6$outboundSchema.parse(cpuUnion6)); +} + +/** @internal */ +export type InvolvedObject7$Outbound = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +/** @internal */ +export const InvolvedObject7$outboundSchema: z.ZodType< + InvolvedObject7$Outbound, + InvolvedObject7 +> = z.object({ + apiVersion: z.nullable(z.string()).optional(), + fieldPath: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + namespace: z.nullable(z.string()).optional(), + resourceVersion: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), +}); + +export function involvedObject7ToJSON( + involvedObject7: InvolvedObject7, +): string { + return JSON.stringify(InvolvedObject7$outboundSchema.parse(involvedObject7)); +} + +/** @internal */ +export type InvolvedObjectUnion7$Outbound = InvolvedObject7$Outbound | any; + +/** @internal */ +export const InvolvedObjectUnion7$outboundSchema: z.ZodType< + InvolvedObjectUnion7$Outbound, + InvolvedObjectUnion7 +> = z.union([z.lazy(() => InvolvedObject7$outboundSchema), z.any()]); + +export function involvedObjectUnion7ToJSON( + involvedObjectUnion7: InvolvedObjectUnion7, +): string { + return JSON.stringify( + InvolvedObjectUnion7$outboundSchema.parse(involvedObjectUnion7), + ); +} + +/** @internal */ +export type SyncReconcileRequestSource7$Outbound = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSource7$outboundSchema: z.ZodType< + SyncReconcileRequestSource7$Outbound, + SyncReconcileRequestSource7 +> = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSource7ToJSON( + syncReconcileRequestSource7: SyncReconcileRequestSource7, +): string { + return JSON.stringify( + SyncReconcileRequestSource7$outboundSchema.parse( + syncReconcileRequestSource7, + ), + ); +} + +/** @internal */ +export type SourceUnion7$Outbound = SyncReconcileRequestSource7$Outbound | any; + +/** @internal */ +export const SourceUnion7$outboundSchema: z.ZodType< + SourceUnion7$Outbound, + SourceUnion7 +> = z.union([ + z.lazy(() => SyncReconcileRequestSource7$outboundSchema), + z.any(), +]); + +export function sourceUnion7ToJSON(sourceUnion7: SourceUnion7): string { + return JSON.stringify(SourceUnion7$outboundSchema.parse(sourceUnion7)); +} + +/** @internal */ +export type SyncReconcileRequestEvent9$Outbound = { + count?: number | null | undefined; + eventTime?: string | null | undefined; + firstTimestamp?: string | null | undefined; + involvedObject?: InvolvedObject7$Outbound | any | null | undefined; + lastTimestamp?: string | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource7$Outbound | any | null | undefined; + type?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestEvent9$outboundSchema: z.ZodType< + SyncReconcileRequestEvent9$Outbound, + SyncReconcileRequestEvent9 +> = z.object({ + count: z.nullable(z.int()).optional(), + eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), + firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject7$outboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSource7$outboundSchema), + z.any(), + ]), + ).optional(), + type: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestEvent9ToJSON( + syncReconcileRequestEvent9: SyncReconcileRequestEvent9, +): string { + return JSON.stringify( + SyncReconcileRequestEvent9$outboundSchema.parse(syncReconcileRequestEvent9), + ); +} + +/** @internal */ +export const MemoryUnit6$outboundSchema: z.ZodEnum = z.enum( + MemoryUnit6, +); + +/** @internal */ +export type Memory6$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Memory6$outboundSchema: z.ZodType = z + .object({ + unit: MemoryUnit6$outboundSchema, + value: z.number(), + }); + +export function memory6ToJSON(memory6: Memory6): string { + return JSON.stringify(Memory6$outboundSchema.parse(memory6)); +} + +/** @internal */ +export type MemoryUnion6$Outbound = Memory6$Outbound | any; + +/** @internal */ +export const MemoryUnion6$outboundSchema: z.ZodType< + MemoryUnion6$Outbound, + MemoryUnion6 +> = z.union([z.lazy(() => Memory6$outboundSchema), z.any()]); + +export function memoryUnion6ToJSON(memoryUnion6: MemoryUnion6): string { + return JSON.stringify(MemoryUnion6$outboundSchema.parse(memoryUnion6)); +} + +/** @internal */ +export const CpuPodUnit3$outboundSchema: z.ZodEnum = z.enum( + CpuPodUnit3, +); + +/** @internal */ +export type CpuPod3$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const CpuPod3$outboundSchema: z.ZodType = z + .object({ + unit: CpuPodUnit3$outboundSchema, + value: z.number(), + }); + +export function cpuPod3ToJSON(cpuPod3: CpuPod3): string { + return JSON.stringify(CpuPod3$outboundSchema.parse(cpuPod3)); +} + +/** @internal */ +export type PodCpuUnion3$Outbound = CpuPod3$Outbound | any; + +/** @internal */ +export const PodCpuUnion3$outboundSchema: z.ZodType< + PodCpuUnion3$Outbound, + PodCpuUnion3 +> = z.union([z.lazy(() => CpuPod3$outboundSchema), z.any()]); + +export function podCpuUnion3ToJSON(podCpuUnion3: PodCpuUnion3): string { + return JSON.stringify(PodCpuUnion3$outboundSchema.parse(podCpuUnion3)); +} + +/** @internal */ +export const MemoryPodUnit3$outboundSchema: z.ZodEnum = z + .enum(MemoryPodUnit3); + +/** @internal */ +export type MemoryPod3$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const MemoryPod3$outboundSchema: z.ZodType< + MemoryPod3$Outbound, + MemoryPod3 +> = z.object({ + unit: MemoryPodUnit3$outboundSchema, + value: z.number(), +}); + +export function memoryPod3ToJSON(memoryPod3: MemoryPod3): string { + return JSON.stringify(MemoryPod3$outboundSchema.parse(memoryPod3)); +} + +/** @internal */ +export type PodMemoryUnion3$Outbound = MemoryPod3$Outbound | any; + +/** @internal */ +export const PodMemoryUnion3$outboundSchema: z.ZodType< + PodMemoryUnion3$Outbound, + PodMemoryUnion3 +> = z.union([z.lazy(() => MemoryPod3$outboundSchema), z.any()]); + +export function podMemoryUnion3ToJSON( + podMemoryUnion3: PodMemoryUnion3, +): string { + return JSON.stringify(PodMemoryUnion3$outboundSchema.parse(podMemoryUnion3)); +} + +/** @internal */ +export type OwnerReference3$Outbound = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +/** @internal */ +export const OwnerReference3$outboundSchema: z.ZodType< + OwnerReference3$Outbound, + OwnerReference3 +> = z.object({ + controller: z.boolean(), + kind: z.string(), + name: z.string(), + uid: z.string(), +}); + +export function ownerReference3ToJSON( + ownerReference3: OwnerReference3, +): string { + return JSON.stringify(OwnerReference3$outboundSchema.parse(ownerReference3)); +} + +/** @internal */ +export type Pod3$Outbound = { + cpu?: CpuPod3$Outbound | any | null | undefined; + memory?: MemoryPod3$Outbound | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +/** @internal */ +export const Pod3$outboundSchema: z.ZodType = z.object({ + cpu: z.nullable(z.union([z.lazy(() => CpuPod3$outboundSchema), z.any()])) + .optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryPod3$outboundSchema), z.any()]), + ).optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + ownerReferences: z.array(z.lazy(() => OwnerReference3$outboundSchema)), + phase: z.nullable(z.string()).optional(), + podIp: z.nullable(z.string()).optional(), + ready: z.boolean(), + restartCount: z.int(), + terminatedReason: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function pod3ToJSON(pod3: Pod3): string { + return JSON.stringify(Pod3$outboundSchema.parse(pod3)); +} + +/** @internal */ +export type Replicas4$Outbound = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +/** @internal */ +export const Replicas4$outboundSchema: z.ZodType< + Replicas4$Outbound, + Replicas4 +> = z.object({ + available: z.nullable(z.int()).optional(), + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + misscheduled: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + updated: z.nullable(z.int()).optional(), +}); + +export function replicas4ToJSON(replicas4: Replicas4): string { + return JSON.stringify(Replicas4$outboundSchema.parse(replicas4)); +} + +/** @internal */ +export const Reason16$outboundSchema: z.ZodEnum = z.enum( + Reason16, +); + +/** @internal */ +export const CollectionIssueSeverity16$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity16 +> = z.enum(CollectionIssueSeverity16); + +/** @internal */ +export type CollectionIssue16$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue16$outboundSchema: z.ZodType< + CollectionIssue16$Outbound, + CollectionIssue16 +> = z.object({ + message: z.string(), + reason: Reason16$outboundSchema, + severity: CollectionIssueSeverity16$outboundSchema, + source: z.string(), +}); + +export function collectionIssue16ToJSON( + collectionIssue16: CollectionIssue16, +): string { + return JSON.stringify( + CollectionIssue16$outboundSchema.parse(collectionIssue16), + ); +} + +/** @internal */ +export const Health16$outboundSchema: z.ZodEnum = z.enum( + Health16, +); + +/** @internal */ +export const StatusLifecycle16$outboundSchema: z.ZodEnum< + typeof StatusLifecycle16 +> = z.enum(StatusLifecycle16); + +/** @internal */ +export type HeartbeatStatus16$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus16$outboundSchema: z.ZodType< + HeartbeatStatus16$Outbound, + HeartbeatStatus16 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue16$outboundSchema)), + health: Health16$outboundSchema, + lifecycle: StatusLifecycle16$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus16ToJSON( + heartbeatStatus16: HeartbeatStatus16, +): string { + return JSON.stringify( + HeartbeatStatus16$outboundSchema.parse(heartbeatStatus16), + ); +} + +/** @internal */ +export type WorkloadCondition3$Outbound = { + lastTransitionTime?: string | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +/** @internal */ +export const WorkloadCondition3$outboundSchema: z.ZodType< + WorkloadCondition3$Outbound, + WorkloadCondition3 +> = z.object({ + lastTransitionTime: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.nullable(z.string()).optional(), + reason: z.nullable(z.string()).optional(), + status: z.string(), + type: z.string(), +}); + +export function workloadCondition3ToJSON( + workloadCondition3: WorkloadCondition3, +): string { + return JSON.stringify( + WorkloadCondition3$outboundSchema.parse(workloadCondition3), + ); +} + +/** @internal */ +export type Workload3$Outbound = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +/** @internal */ +export const Workload3$outboundSchema: z.ZodType< + Workload3$Outbound, + Workload3 +> = z.object({ + availableReplicas: z.nullable(z.int()).optional(), + conditions: z.array(z.lazy(() => WorkloadCondition3$outboundSchema)), + desiredGeneration: z.nullable(z.int()).optional(), + desiredReplicas: z.nullable(z.int()).optional(), + observedGeneration: z.nullable(z.int()).optional(), + readyReplicas: z.nullable(z.int()).optional(), + rolloutReason: z.nullable(z.string()).optional(), + updatedReplicas: z.nullable(z.int()).optional(), +}); + +export function workload3ToJSON(workload3: Workload3): string { + return JSON.stringify(Workload3$outboundSchema.parse(workload3)); +} + +/** @internal */ +export type WorkloadUnion3$Outbound = Workload3$Outbound | any; + +/** @internal */ +export const WorkloadUnion3$outboundSchema: z.ZodType< + WorkloadUnion3$Outbound, + WorkloadUnion3 +> = z.union([z.lazy(() => Workload3$outboundSchema), z.any()]); + +export function workloadUnion3ToJSON(workloadUnion3: WorkloadUnion3): string { + return JSON.stringify(WorkloadUnion3$outboundSchema.parse(workloadUnion3)); +} + +/** @internal */ +export type DataKubernetes3$Outbound = { + commandSupported: boolean; + cpu?: Cpu6$Outbound | any | null | undefined; + events: Array; + memory?: Memory6$Outbound | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas4$Outbound; + restarts?: number | null | undefined; + status: HeartbeatStatus16$Outbound; + workload?: Workload3$Outbound | any | null | undefined; + backend: "kubernetes"; +}; + +/** @internal */ +export const DataKubernetes3$outboundSchema: z.ZodType< + DataKubernetes3$Outbound, + DataKubernetes3 +> = z.object({ + commandSupported: z.boolean(), + cpu: z.nullable(z.union([z.lazy(() => Cpu6$outboundSchema), z.any()])) + .optional(), + events: z.array(z.lazy(() => SyncReconcileRequestEvent9$outboundSchema)), + memory: z.nullable(z.union([z.lazy(() => Memory6$outboundSchema), z.any()])) + .optional(), + name: z.string(), + namespace: z.string(), + pods: z.array(z.lazy(() => Pod3$outboundSchema)), + replicas: z.lazy(() => Replicas4$outboundSchema), + restarts: z.nullable(z.int()).optional(), + status: z.lazy(() => HeartbeatStatus16$outboundSchema), + workload: z.nullable( + z.union([z.lazy(() => Workload3$outboundSchema), z.any()]), + ).optional(), + backend: z.literal("kubernetes"), +}); + +export function dataKubernetes3ToJSON( + dataKubernetes3: DataKubernetes3, +): string { + return JSON.stringify(DataKubernetes3$outboundSchema.parse(dataKubernetes3)); +} + +/** @internal */ +export const CpuDaemonInstanceUnit3$outboundSchema: z.ZodEnum< + typeof CpuDaemonInstanceUnit3 +> = z.enum(CpuDaemonInstanceUnit3); + +/** @internal */ +export type CpuDaemonInstance3$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const CpuDaemonInstance3$outboundSchema: z.ZodType< + CpuDaemonInstance3$Outbound, + CpuDaemonInstance3 +> = z.object({ + unit: CpuDaemonInstanceUnit3$outboundSchema, + value: z.number(), +}); + +export function cpuDaemonInstance3ToJSON( + cpuDaemonInstance3: CpuDaemonInstance3, +): string { + return JSON.stringify( + CpuDaemonInstance3$outboundSchema.parse(cpuDaemonInstance3), + ); +} + +/** @internal */ +export type DaemonInstanceCpuUnion3$Outbound = + | CpuDaemonInstance3$Outbound + | any; + +/** @internal */ +export const DaemonInstanceCpuUnion3$outboundSchema: z.ZodType< + DaemonInstanceCpuUnion3$Outbound, + DaemonInstanceCpuUnion3 +> = z.union([z.lazy(() => CpuDaemonInstance3$outboundSchema), z.any()]); + +export function daemonInstanceCpuUnion3ToJSON( + daemonInstanceCpuUnion3: DaemonInstanceCpuUnion3, +): string { + return JSON.stringify( + DaemonInstanceCpuUnion3$outboundSchema.parse(daemonInstanceCpuUnion3), + ); +} + +/** @internal */ +export const MemoryDaemonInstanceUnit3$outboundSchema: z.ZodEnum< + typeof MemoryDaemonInstanceUnit3 +> = z.enum(MemoryDaemonInstanceUnit3); + +/** @internal */ +export type MemoryDaemonInstance3$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const MemoryDaemonInstance3$outboundSchema: z.ZodType< + MemoryDaemonInstance3$Outbound, + MemoryDaemonInstance3 +> = z.object({ + unit: MemoryDaemonInstanceUnit3$outboundSchema, + value: z.number(), +}); + +export function memoryDaemonInstance3ToJSON( + memoryDaemonInstance3: MemoryDaemonInstance3, +): string { + return JSON.stringify( + MemoryDaemonInstance3$outboundSchema.parse(memoryDaemonInstance3), + ); +} + +/** @internal */ +export type DaemonInstanceMemoryUnion3$Outbound = + | MemoryDaemonInstance3$Outbound + | any; + +/** @internal */ +export const DaemonInstanceMemoryUnion3$outboundSchema: z.ZodType< + DaemonInstanceMemoryUnion3$Outbound, + DaemonInstanceMemoryUnion3 +> = z.union([z.lazy(() => MemoryDaemonInstance3$outboundSchema), z.any()]); + +export function daemonInstanceMemoryUnion3ToJSON( + daemonInstanceMemoryUnion3: DaemonInstanceMemoryUnion3, +): string { + return JSON.stringify( + DaemonInstanceMemoryUnion3$outboundSchema.parse(daemonInstanceMemoryUnion3), + ); +} + +/** @internal */ +export type DaemonInstance3$Outbound = { + cpu?: CpuDaemonInstance3$Outbound | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance3$Outbound | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +/** @internal */ +export const DaemonInstance3$outboundSchema: z.ZodType< + DaemonInstance3$Outbound, + DaemonInstance3 +> = z.object({ + cpu: z.nullable( + z.union([z.lazy(() => CpuDaemonInstance3$outboundSchema), z.any()]), + ).optional(), + ip: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryDaemonInstance3$outboundSchema), z.any()]), + ).optional(), + message: z.nullable(z.string()).optional(), + metricsHealthy: z.nullable(z.boolean()).optional(), + metricsLastUpdated: z.nullable(z.string()).optional(), + metricsStatus: z.nullable(z.string()).optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + phase: z.nullable(z.string()).optional(), + ready: z.boolean(), + reason: z.nullable(z.string()).optional(), + replicaId: z.string(), + restartCount: z.nullable(z.int()).optional(), + status: z.nullable(z.string()).optional(), + terminatedReason: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function daemonInstance3ToJSON( + daemonInstance3: DaemonInstance3, +): string { + return JSON.stringify(DaemonInstance3$outboundSchema.parse(daemonInstance3)); +} + +/** @internal */ +export type InvolvedObject6$Outbound = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +/** @internal */ +export const InvolvedObject6$outboundSchema: z.ZodType< + InvolvedObject6$Outbound, + InvolvedObject6 +> = z.object({ + details: z.nullable(z.any()).optional(), + id: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + replicaId: z.nullable(z.string()).optional(), +}); + +export function involvedObject6ToJSON( + involvedObject6: InvolvedObject6, +): string { + return JSON.stringify(InvolvedObject6$outboundSchema.parse(involvedObject6)); +} + +/** @internal */ +export type InvolvedObjectUnion6$Outbound = InvolvedObject6$Outbound | any; + +/** @internal */ +export const InvolvedObjectUnion6$outboundSchema: z.ZodType< + InvolvedObjectUnion6$Outbound, + InvolvedObjectUnion6 +> = z.union([z.lazy(() => InvolvedObject6$outboundSchema), z.any()]); + +export function involvedObjectUnion6ToJSON( + involvedObjectUnion6: InvolvedObjectUnion6, +): string { + return JSON.stringify( + InvolvedObjectUnion6$outboundSchema.parse(involvedObjectUnion6), + ); +} + +/** @internal */ +export type SyncReconcileRequestSource6$Outbound = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSource6$outboundSchema: z.ZodType< + SyncReconcileRequestSource6$Outbound, + SyncReconcileRequestSource6 +> = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSource6ToJSON( + syncReconcileRequestSource6: SyncReconcileRequestSource6, +): string { + return JSON.stringify( + SyncReconcileRequestSource6$outboundSchema.parse( + syncReconcileRequestSource6, + ), + ); +} + +/** @internal */ +export type SourceUnion6$Outbound = SyncReconcileRequestSource6$Outbound | any; + +/** @internal */ +export const SourceUnion6$outboundSchema: z.ZodType< + SourceUnion6$Outbound, + SourceUnion6 +> = z.union([ + z.lazy(() => SyncReconcileRequestSource6$outboundSchema), + z.any(), +]); + +export function sourceUnion6ToJSON(sourceUnion6: SourceUnion6): string { + return JSON.stringify(SourceUnion6$outboundSchema.parse(sourceUnion6)); +} + +/** @internal */ +export type SyncReconcileRequestEvent8$Outbound = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: string | null | undefined; + firstTimestamp?: string | null | undefined; + involvedObject?: InvolvedObject6$Outbound | any | null | undefined; + lastTimestamp?: string | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource6$Outbound | any | null | undefined; + type?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestEvent8$outboundSchema: z.ZodType< + SyncReconcileRequestEvent8$Outbound, + SyncReconcileRequestEvent8 +> = z.object({ + count: z.nullable(z.int()).optional(), + details: z.nullable(z.any()).optional(), + eventId: z.nullable(z.string()).optional(), + eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), + firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject6$outboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSource6$outboundSchema), + z.any(), + ]), + ).optional(), + type: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestEvent8ToJSON( + syncReconcileRequestEvent8: SyncReconcileRequestEvent8, +): string { + return JSON.stringify( + SyncReconcileRequestEvent8$outboundSchema.parse(syncReconcileRequestEvent8), + ); +} + +/** @internal */ +export const Reason15$outboundSchema: z.ZodEnum = z.enum( + Reason15, +); + +/** @internal */ +export const CollectionIssueSeverity15$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity15 +> = z.enum(CollectionIssueSeverity15); + +/** @internal */ +export type CollectionIssue15$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue15$outboundSchema: z.ZodType< + CollectionIssue15$Outbound, + CollectionIssue15 +> = z.object({ + message: z.string(), + reason: Reason15$outboundSchema, + severity: CollectionIssueSeverity15$outboundSchema, + source: z.string(), +}); + +export function collectionIssue15ToJSON( + collectionIssue15: CollectionIssue15, +): string { + return JSON.stringify( + CollectionIssue15$outboundSchema.parse(collectionIssue15), + ); +} + +/** @internal */ +export const Health15$outboundSchema: z.ZodEnum = z.enum( + Health15, +); + +/** @internal */ +export const StatusLifecycle15$outboundSchema: z.ZodEnum< + typeof StatusLifecycle15 +> = z.enum(StatusLifecycle15); + +/** @internal */ +export type HeartbeatStatus15$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus15$outboundSchema: z.ZodType< + HeartbeatStatus15$Outbound, + HeartbeatStatus15 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue15$outboundSchema)), + health: Health15$outboundSchema, + lifecycle: StatusLifecycle15$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus15ToJSON( + heartbeatStatus15: HeartbeatStatus15, +): string { + return JSON.stringify( + HeartbeatStatus15$outboundSchema.parse(heartbeatStatus15), + ); +} + +/** @internal */ +export type DataAzure1$Outbound = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName: string; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + status: HeartbeatStatus15$Outbound; + unavailableInstances: number; + backend: "azure"; +}; + +/** @internal */ +export const DataAzure1$outboundSchema: z.ZodType< + DataAzure1$Outbound, + DataAzure1 +> = z.object({ + assignedMachines: z.int(), + capacityGroup: z.string(), + commandSupported: z.boolean(), + daemonInstances: z.array(z.lazy(() => DaemonInstance3$outboundSchema)), + daemonName: z.string(), + desiredMachines: z.int(), + events: z.array(z.lazy(() => SyncReconcileRequestEvent8$outboundSchema)), + healthyInstances: z.int(), + horizonClusterId: z.string(), + horizonStatus: z.string(), + horizonStatusMessage: z.nullable(z.string()).optional(), + horizonStatusReason: z.nullable(z.string()).optional(), + latestUpdateTimestamp: z.string(), + status: z.lazy(() => HeartbeatStatus15$outboundSchema), + unavailableInstances: z.int(), + backend: z.literal("azure"), +}); + +export function dataAzure1ToJSON(dataAzure1: DataAzure1): string { + return JSON.stringify(DataAzure1$outboundSchema.parse(dataAzure1)); +} + +/** @internal */ +export const CpuDaemonInstanceUnit2$outboundSchema: z.ZodEnum< + typeof CpuDaemonInstanceUnit2 +> = z.enum(CpuDaemonInstanceUnit2); + +/** @internal */ +export type CpuDaemonInstance2$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const CpuDaemonInstance2$outboundSchema: z.ZodType< + CpuDaemonInstance2$Outbound, + CpuDaemonInstance2 +> = z.object({ + unit: CpuDaemonInstanceUnit2$outboundSchema, + value: z.number(), +}); + +export function cpuDaemonInstance2ToJSON( + cpuDaemonInstance2: CpuDaemonInstance2, +): string { + return JSON.stringify( + CpuDaemonInstance2$outboundSchema.parse(cpuDaemonInstance2), + ); +} + +/** @internal */ +export type DaemonInstanceCpuUnion2$Outbound = + | CpuDaemonInstance2$Outbound + | any; + +/** @internal */ +export const DaemonInstanceCpuUnion2$outboundSchema: z.ZodType< + DaemonInstanceCpuUnion2$Outbound, + DaemonInstanceCpuUnion2 +> = z.union([z.lazy(() => CpuDaemonInstance2$outboundSchema), z.any()]); + +export function daemonInstanceCpuUnion2ToJSON( + daemonInstanceCpuUnion2: DaemonInstanceCpuUnion2, +): string { + return JSON.stringify( + DaemonInstanceCpuUnion2$outboundSchema.parse(daemonInstanceCpuUnion2), + ); +} + +/** @internal */ +export const MemoryDaemonInstanceUnit2$outboundSchema: z.ZodEnum< + typeof MemoryDaemonInstanceUnit2 +> = z.enum(MemoryDaemonInstanceUnit2); + +/** @internal */ +export type MemoryDaemonInstance2$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const MemoryDaemonInstance2$outboundSchema: z.ZodType< + MemoryDaemonInstance2$Outbound, + MemoryDaemonInstance2 +> = z.object({ + unit: MemoryDaemonInstanceUnit2$outboundSchema, + value: z.number(), +}); + +export function memoryDaemonInstance2ToJSON( + memoryDaemonInstance2: MemoryDaemonInstance2, +): string { + return JSON.stringify( + MemoryDaemonInstance2$outboundSchema.parse(memoryDaemonInstance2), + ); +} + +/** @internal */ +export type DaemonInstanceMemoryUnion2$Outbound = + | MemoryDaemonInstance2$Outbound + | any; + +/** @internal */ +export const DaemonInstanceMemoryUnion2$outboundSchema: z.ZodType< + DaemonInstanceMemoryUnion2$Outbound, + DaemonInstanceMemoryUnion2 +> = z.union([z.lazy(() => MemoryDaemonInstance2$outboundSchema), z.any()]); + +export function daemonInstanceMemoryUnion2ToJSON( + daemonInstanceMemoryUnion2: DaemonInstanceMemoryUnion2, +): string { + return JSON.stringify( + DaemonInstanceMemoryUnion2$outboundSchema.parse(daemonInstanceMemoryUnion2), + ); +} + +/** @internal */ +export type DaemonInstance2$Outbound = { + cpu?: CpuDaemonInstance2$Outbound | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance2$Outbound | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +/** @internal */ +export const DaemonInstance2$outboundSchema: z.ZodType< + DaemonInstance2$Outbound, + DaemonInstance2 +> = z.object({ + cpu: z.nullable( + z.union([z.lazy(() => CpuDaemonInstance2$outboundSchema), z.any()]), + ).optional(), + ip: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryDaemonInstance2$outboundSchema), z.any()]), + ).optional(), + message: z.nullable(z.string()).optional(), + metricsHealthy: z.nullable(z.boolean()).optional(), + metricsLastUpdated: z.nullable(z.string()).optional(), + metricsStatus: z.nullable(z.string()).optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + phase: z.nullable(z.string()).optional(), + ready: z.boolean(), + reason: z.nullable(z.string()).optional(), + replicaId: z.string(), + restartCount: z.nullable(z.int()).optional(), + status: z.nullable(z.string()).optional(), + terminatedReason: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function daemonInstance2ToJSON( + daemonInstance2: DaemonInstance2, +): string { + return JSON.stringify(DaemonInstance2$outboundSchema.parse(daemonInstance2)); +} + +/** @internal */ +export type InvolvedObject5$Outbound = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +/** @internal */ +export const InvolvedObject5$outboundSchema: z.ZodType< + InvolvedObject5$Outbound, + InvolvedObject5 +> = z.object({ + details: z.nullable(z.any()).optional(), + id: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + replicaId: z.nullable(z.string()).optional(), +}); + +export function involvedObject5ToJSON( + involvedObject5: InvolvedObject5, +): string { + return JSON.stringify(InvolvedObject5$outboundSchema.parse(involvedObject5)); +} + +/** @internal */ +export type InvolvedObjectUnion5$Outbound = InvolvedObject5$Outbound | any; + +/** @internal */ +export const InvolvedObjectUnion5$outboundSchema: z.ZodType< + InvolvedObjectUnion5$Outbound, + InvolvedObjectUnion5 +> = z.union([z.lazy(() => InvolvedObject5$outboundSchema), z.any()]); + +export function involvedObjectUnion5ToJSON( + involvedObjectUnion5: InvolvedObjectUnion5, +): string { + return JSON.stringify( + InvolvedObjectUnion5$outboundSchema.parse(involvedObjectUnion5), + ); +} + +/** @internal */ +export type SyncReconcileRequestSource5$Outbound = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSource5$outboundSchema: z.ZodType< + SyncReconcileRequestSource5$Outbound, + SyncReconcileRequestSource5 +> = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSource5ToJSON( + syncReconcileRequestSource5: SyncReconcileRequestSource5, +): string { + return JSON.stringify( + SyncReconcileRequestSource5$outboundSchema.parse( + syncReconcileRequestSource5, + ), + ); +} + +/** @internal */ +export type SourceUnion5$Outbound = SyncReconcileRequestSource5$Outbound | any; + +/** @internal */ +export const SourceUnion5$outboundSchema: z.ZodType< + SourceUnion5$Outbound, + SourceUnion5 +> = z.union([ + z.lazy(() => SyncReconcileRequestSource5$outboundSchema), + z.any(), +]); + +export function sourceUnion5ToJSON(sourceUnion5: SourceUnion5): string { + return JSON.stringify(SourceUnion5$outboundSchema.parse(sourceUnion5)); +} + +/** @internal */ +export type SyncReconcileRequestEvent7$Outbound = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: string | null | undefined; + firstTimestamp?: string | null | undefined; + involvedObject?: InvolvedObject5$Outbound | any | null | undefined; + lastTimestamp?: string | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource5$Outbound | any | null | undefined; + type?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestEvent7$outboundSchema: z.ZodType< + SyncReconcileRequestEvent7$Outbound, + SyncReconcileRequestEvent7 +> = z.object({ + count: z.nullable(z.int()).optional(), + details: z.nullable(z.any()).optional(), + eventId: z.nullable(z.string()).optional(), + eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), + firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject5$outboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSource5$outboundSchema), + z.any(), + ]), + ).optional(), + type: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestEvent7ToJSON( + syncReconcileRequestEvent7: SyncReconcileRequestEvent7, +): string { + return JSON.stringify( + SyncReconcileRequestEvent7$outboundSchema.parse(syncReconcileRequestEvent7), + ); +} + +/** @internal */ +export const Reason14$outboundSchema: z.ZodEnum = z.enum( + Reason14, +); + +/** @internal */ +export const CollectionIssueSeverity14$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity14 +> = z.enum(CollectionIssueSeverity14); + +/** @internal */ +export type CollectionIssue14$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue14$outboundSchema: z.ZodType< + CollectionIssue14$Outbound, + CollectionIssue14 +> = z.object({ + message: z.string(), + reason: Reason14$outboundSchema, + severity: CollectionIssueSeverity14$outboundSchema, + source: z.string(), +}); + +export function collectionIssue14ToJSON( + collectionIssue14: CollectionIssue14, +): string { + return JSON.stringify( + CollectionIssue14$outboundSchema.parse(collectionIssue14), + ); +} + +/** @internal */ +export const Health14$outboundSchema: z.ZodEnum = z.enum( + Health14, +); + +/** @internal */ +export const StatusLifecycle14$outboundSchema: z.ZodEnum< + typeof StatusLifecycle14 +> = z.enum(StatusLifecycle14); + +/** @internal */ +export type HeartbeatStatus14$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus14$outboundSchema: z.ZodType< + HeartbeatStatus14$Outbound, + HeartbeatStatus14 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue14$outboundSchema)), + health: Health14$outboundSchema, + lifecycle: StatusLifecycle14$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus14ToJSON( + heartbeatStatus14: HeartbeatStatus14, +): string { + return JSON.stringify( + HeartbeatStatus14$outboundSchema.parse(heartbeatStatus14), + ); +} + +/** @internal */ +export type DataGcp1$Outbound = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName: string; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + status: HeartbeatStatus14$Outbound; + unavailableInstances: number; + backend: "gcp"; +}; + +/** @internal */ +export const DataGcp1$outboundSchema: z.ZodType = z + .object({ + assignedMachines: z.int(), + capacityGroup: z.string(), + commandSupported: z.boolean(), + daemonInstances: z.array(z.lazy(() => DaemonInstance2$outboundSchema)), + daemonName: z.string(), + desiredMachines: z.int(), + events: z.array(z.lazy(() => SyncReconcileRequestEvent7$outboundSchema)), + healthyInstances: z.int(), + horizonClusterId: z.string(), + horizonStatus: z.string(), + horizonStatusMessage: z.nullable(z.string()).optional(), + horizonStatusReason: z.nullable(z.string()).optional(), + latestUpdateTimestamp: z.string(), + status: z.lazy(() => HeartbeatStatus14$outboundSchema), + unavailableInstances: z.int(), + backend: z.literal("gcp"), + }); + +export function dataGcp1ToJSON(dataGcp1: DataGcp1): string { + return JSON.stringify(DataGcp1$outboundSchema.parse(dataGcp1)); +} + +/** @internal */ +export const CpuDaemonInstanceUnit1$outboundSchema: z.ZodEnum< + typeof CpuDaemonInstanceUnit1 +> = z.enum(CpuDaemonInstanceUnit1); + +/** @internal */ +export type CpuDaemonInstance1$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const CpuDaemonInstance1$outboundSchema: z.ZodType< + CpuDaemonInstance1$Outbound, + CpuDaemonInstance1 +> = z.object({ + unit: CpuDaemonInstanceUnit1$outboundSchema, + value: z.number(), +}); + +export function cpuDaemonInstance1ToJSON( + cpuDaemonInstance1: CpuDaemonInstance1, +): string { + return JSON.stringify( + CpuDaemonInstance1$outboundSchema.parse(cpuDaemonInstance1), + ); +} + +/** @internal */ +export type DaemonInstanceCpuUnion1$Outbound = + | CpuDaemonInstance1$Outbound + | any; + +/** @internal */ +export const DaemonInstanceCpuUnion1$outboundSchema: z.ZodType< + DaemonInstanceCpuUnion1$Outbound, + DaemonInstanceCpuUnion1 +> = z.union([z.lazy(() => CpuDaemonInstance1$outboundSchema), z.any()]); + +export function daemonInstanceCpuUnion1ToJSON( + daemonInstanceCpuUnion1: DaemonInstanceCpuUnion1, +): string { + return JSON.stringify( + DaemonInstanceCpuUnion1$outboundSchema.parse(daemonInstanceCpuUnion1), + ); +} + +/** @internal */ +export const MemoryDaemonInstanceUnit1$outboundSchema: z.ZodEnum< + typeof MemoryDaemonInstanceUnit1 +> = z.enum(MemoryDaemonInstanceUnit1); + +/** @internal */ +export type MemoryDaemonInstance1$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const MemoryDaemonInstance1$outboundSchema: z.ZodType< + MemoryDaemonInstance1$Outbound, + MemoryDaemonInstance1 +> = z.object({ + unit: MemoryDaemonInstanceUnit1$outboundSchema, + value: z.number(), +}); + +export function memoryDaemonInstance1ToJSON( + memoryDaemonInstance1: MemoryDaemonInstance1, +): string { + return JSON.stringify( + MemoryDaemonInstance1$outboundSchema.parse(memoryDaemonInstance1), + ); +} + +/** @internal */ +export type DaemonInstanceMemoryUnion1$Outbound = + | MemoryDaemonInstance1$Outbound + | any; + +/** @internal */ +export const DaemonInstanceMemoryUnion1$outboundSchema: z.ZodType< + DaemonInstanceMemoryUnion1$Outbound, + DaemonInstanceMemoryUnion1 +> = z.union([z.lazy(() => MemoryDaemonInstance1$outboundSchema), z.any()]); + +export function daemonInstanceMemoryUnion1ToJSON( + daemonInstanceMemoryUnion1: DaemonInstanceMemoryUnion1, +): string { + return JSON.stringify( + DaemonInstanceMemoryUnion1$outboundSchema.parse(daemonInstanceMemoryUnion1), + ); +} + +/** @internal */ +export type DaemonInstance1$Outbound = { + cpu?: CpuDaemonInstance1$Outbound | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance1$Outbound | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +/** @internal */ +export const DaemonInstance1$outboundSchema: z.ZodType< + DaemonInstance1$Outbound, + DaemonInstance1 +> = z.object({ + cpu: z.nullable( + z.union([z.lazy(() => CpuDaemonInstance1$outboundSchema), z.any()]), + ).optional(), + ip: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryDaemonInstance1$outboundSchema), z.any()]), + ).optional(), + message: z.nullable(z.string()).optional(), + metricsHealthy: z.nullable(z.boolean()).optional(), + metricsLastUpdated: z.nullable(z.string()).optional(), + metricsStatus: z.nullable(z.string()).optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + phase: z.nullable(z.string()).optional(), + ready: z.boolean(), + reason: z.nullable(z.string()).optional(), + replicaId: z.string(), + restartCount: z.nullable(z.int()).optional(), + status: z.nullable(z.string()).optional(), + terminatedReason: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function daemonInstance1ToJSON( + daemonInstance1: DaemonInstance1, +): string { + return JSON.stringify(DaemonInstance1$outboundSchema.parse(daemonInstance1)); +} + +/** @internal */ +export type InvolvedObject4$Outbound = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +/** @internal */ +export const InvolvedObject4$outboundSchema: z.ZodType< + InvolvedObject4$Outbound, + InvolvedObject4 +> = z.object({ + details: z.nullable(z.any()).optional(), + id: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + replicaId: z.nullable(z.string()).optional(), +}); + +export function involvedObject4ToJSON( + involvedObject4: InvolvedObject4, +): string { + return JSON.stringify(InvolvedObject4$outboundSchema.parse(involvedObject4)); +} + +/** @internal */ +export type InvolvedObjectUnion4$Outbound = InvolvedObject4$Outbound | any; + +/** @internal */ +export const InvolvedObjectUnion4$outboundSchema: z.ZodType< + InvolvedObjectUnion4$Outbound, + InvolvedObjectUnion4 +> = z.union([z.lazy(() => InvolvedObject4$outboundSchema), z.any()]); + +export function involvedObjectUnion4ToJSON( + involvedObjectUnion4: InvolvedObjectUnion4, +): string { + return JSON.stringify( + InvolvedObjectUnion4$outboundSchema.parse(involvedObjectUnion4), + ); +} + +/** @internal */ +export type SyncReconcileRequestSource4$Outbound = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSource4$outboundSchema: z.ZodType< + SyncReconcileRequestSource4$Outbound, + SyncReconcileRequestSource4 +> = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSource4ToJSON( + syncReconcileRequestSource4: SyncReconcileRequestSource4, +): string { + return JSON.stringify( + SyncReconcileRequestSource4$outboundSchema.parse( + syncReconcileRequestSource4, + ), + ); +} + +/** @internal */ +export type SourceUnion4$Outbound = SyncReconcileRequestSource4$Outbound | any; + +/** @internal */ +export const SourceUnion4$outboundSchema: z.ZodType< + SourceUnion4$Outbound, + SourceUnion4 +> = z.union([ + z.lazy(() => SyncReconcileRequestSource4$outboundSchema), + z.any(), +]); + +export function sourceUnion4ToJSON(sourceUnion4: SourceUnion4): string { + return JSON.stringify(SourceUnion4$outboundSchema.parse(sourceUnion4)); +} + +/** @internal */ +export type SyncReconcileRequestEvent6$Outbound = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: string | null | undefined; + firstTimestamp?: string | null | undefined; + involvedObject?: InvolvedObject4$Outbound | any | null | undefined; + lastTimestamp?: string | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource4$Outbound | any | null | undefined; + type?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestEvent6$outboundSchema: z.ZodType< + SyncReconcileRequestEvent6$Outbound, + SyncReconcileRequestEvent6 +> = z.object({ + count: z.nullable(z.int()).optional(), + details: z.nullable(z.any()).optional(), + eventId: z.nullable(z.string()).optional(), + eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), + firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject4$outboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSource4$outboundSchema), + z.any(), + ]), + ).optional(), + type: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestEvent6ToJSON( + syncReconcileRequestEvent6: SyncReconcileRequestEvent6, +): string { + return JSON.stringify( + SyncReconcileRequestEvent6$outboundSchema.parse(syncReconcileRequestEvent6), + ); +} + +/** @internal */ +export const Reason13$outboundSchema: z.ZodEnum = z.enum( + Reason13, +); + +/** @internal */ +export const CollectionIssueSeverity13$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity13 +> = z.enum(CollectionIssueSeverity13); + +/** @internal */ +export type CollectionIssue13$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue13$outboundSchema: z.ZodType< + CollectionIssue13$Outbound, + CollectionIssue13 +> = z.object({ + message: z.string(), + reason: Reason13$outboundSchema, + severity: CollectionIssueSeverity13$outboundSchema, + source: z.string(), +}); + +export function collectionIssue13ToJSON( + collectionIssue13: CollectionIssue13, +): string { + return JSON.stringify( + CollectionIssue13$outboundSchema.parse(collectionIssue13), + ); +} + +/** @internal */ +export const Health13$outboundSchema: z.ZodEnum = z.enum( + Health13, +); + +/** @internal */ +export const StatusLifecycle13$outboundSchema: z.ZodEnum< + typeof StatusLifecycle13 +> = z.enum(StatusLifecycle13); + +/** @internal */ +export type HeartbeatStatus13$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus13$outboundSchema: z.ZodType< + HeartbeatStatus13$Outbound, + HeartbeatStatus13 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue13$outboundSchema)), + health: Health13$outboundSchema, + lifecycle: StatusLifecycle13$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus13ToJSON( + heartbeatStatus13: HeartbeatStatus13, +): string { + return JSON.stringify( + HeartbeatStatus13$outboundSchema.parse(heartbeatStatus13), + ); +} + +/** @internal */ +export type DataAws1$Outbound = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName: string; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + status: HeartbeatStatus13$Outbound; + unavailableInstances: number; + backend: "aws"; +}; + +/** @internal */ +export const DataAws1$outboundSchema: z.ZodType = z + .object({ + assignedMachines: z.int(), + capacityGroup: z.string(), + commandSupported: z.boolean(), + daemonInstances: z.array(z.lazy(() => DaemonInstance1$outboundSchema)), + daemonName: z.string(), + desiredMachines: z.int(), + events: z.array(z.lazy(() => SyncReconcileRequestEvent6$outboundSchema)), + healthyInstances: z.int(), + horizonClusterId: z.string(), + horizonStatus: z.string(), + horizonStatusMessage: z.nullable(z.string()).optional(), + horizonStatusReason: z.nullable(z.string()).optional(), + latestUpdateTimestamp: z.string(), + status: z.lazy(() => HeartbeatStatus13$outboundSchema), + unavailableInstances: z.int(), + backend: z.literal("aws"), + }); + +export function dataAws1ToJSON(dataAws1: DataAws1): string { + return JSON.stringify(DataAws1$outboundSchema.parse(dataAws1)); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion4$Outbound = + | DataAws1$Outbound + | DataGcp1$Outbound + | DataAzure1$Outbound + | DataKubernetes3$Outbound + | DataLocal4$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion4$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion4$Outbound, + SyncReconcileRequestDataUnion4 +> = z.union([ + z.lazy(() => DataAws1$outboundSchema), + z.lazy(() => DataGcp1$outboundSchema), + z.lazy(() => DataAzure1$outboundSchema), + z.lazy(() => DataKubernetes3$outboundSchema), + z.lazy(() => DataLocal4$outboundSchema), +]); + +export function syncReconcileRequestDataUnion4ToJSON( + syncReconcileRequestDataUnion4: SyncReconcileRequestDataUnion4, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion4$outboundSchema.parse( + syncReconcileRequestDataUnion4, + ), + ); +} + +/** @internal */ +export type DataDaemon$Outbound = { + data: + | DataAws1$Outbound + | DataGcp1$Outbound + | DataAzure1$Outbound + | DataKubernetes3$Outbound + | DataLocal4$Outbound; + resourceType: "daemon"; +}; + +/** @internal */ +export const DataDaemon$outboundSchema: z.ZodType< + DataDaemon$Outbound, + DataDaemon +> = z.object({ + data: z.union([ + z.lazy(() => DataAws1$outboundSchema), + z.lazy(() => DataGcp1$outboundSchema), + z.lazy(() => DataAzure1$outboundSchema), + z.lazy(() => DataKubernetes3$outboundSchema), + z.lazy(() => DataLocal4$outboundSchema), + ]), + resourceType: z.literal("daemon"), +}); + +export function dataDaemonToJSON(dataDaemon: DataDaemon): string { + return JSON.stringify(DataDaemon$outboundSchema.parse(dataDaemon)); +} + +/** @internal */ +export const ContainerUnitCpuUnit$outboundSchema: z.ZodEnum< + typeof ContainerUnitCpuUnit +> = z.enum(ContainerUnitCpuUnit); + +/** @internal */ +export type ContainerUnitCpu$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const ContainerUnitCpu$outboundSchema: z.ZodType< + ContainerUnitCpu$Outbound, + ContainerUnitCpu +> = z.object({ + unit: ContainerUnitCpuUnit$outboundSchema, + value: z.number(), +}); + +export function containerUnitCpuToJSON( + containerUnitCpu: ContainerUnitCpu, +): string { + return JSON.stringify( + ContainerUnitCpu$outboundSchema.parse(containerUnitCpu), + ); +} + +/** @internal */ +export type ContainerUnitCpuUnion$Outbound = ContainerUnitCpu$Outbound | any; + +/** @internal */ +export const ContainerUnitCpuUnion$outboundSchema: z.ZodType< + ContainerUnitCpuUnion$Outbound, + ContainerUnitCpuUnion +> = z.union([z.lazy(() => ContainerUnitCpu$outboundSchema), z.any()]); + +export function containerUnitCpuUnionToJSON( + containerUnitCpuUnion: ContainerUnitCpuUnion, +): string { + return JSON.stringify( + ContainerUnitCpuUnion$outboundSchema.parse(containerUnitCpuUnion), + ); +} + +/** @internal */ +export const ContainerUnitKind$outboundSchema: z.ZodEnum< + typeof ContainerUnitKind +> = z.enum(ContainerUnitKind); + +/** @internal */ +export const ContainerUnitMemoryUnit$outboundSchema: z.ZodEnum< + typeof ContainerUnitMemoryUnit +> = z.enum(ContainerUnitMemoryUnit); + +/** @internal */ +export type ContainerUnitMemory$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const ContainerUnitMemory$outboundSchema: z.ZodType< + ContainerUnitMemory$Outbound, + ContainerUnitMemory +> = z.object({ + unit: ContainerUnitMemoryUnit$outboundSchema, + value: z.number(), +}); + +export function containerUnitMemoryToJSON( + containerUnitMemory: ContainerUnitMemory, +): string { + return JSON.stringify( + ContainerUnitMemory$outboundSchema.parse(containerUnitMemory), + ); +} + +/** @internal */ +export type ContainerUnitMemoryUnion$Outbound = + | ContainerUnitMemory$Outbound + | any; + +/** @internal */ +export const ContainerUnitMemoryUnion$outboundSchema: z.ZodType< + ContainerUnitMemoryUnion$Outbound, + ContainerUnitMemoryUnion +> = z.union([z.lazy(() => ContainerUnitMemory$outboundSchema), z.any()]); + +export function containerUnitMemoryUnionToJSON( + containerUnitMemoryUnion: ContainerUnitMemoryUnion, +): string { + return JSON.stringify( + ContainerUnitMemoryUnion$outboundSchema.parse(containerUnitMemoryUnion), + ); +} + +/** @internal */ +export type ContainerUnit$Outbound = { + cpu?: ContainerUnitCpu$Outbound | any | null | undefined; + kind: string; + memory?: ContainerUnitMemory$Outbound | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +/** @internal */ +export const ContainerUnit$outboundSchema: z.ZodType< + ContainerUnit$Outbound, + ContainerUnit +> = z.object({ + cpu: z.nullable( + z.union([z.lazy(() => ContainerUnitCpu$outboundSchema), z.any()]), + ).optional(), + kind: ContainerUnitKind$outboundSchema, + memory: z.nullable( + z.union([z.lazy(() => ContainerUnitMemory$outboundSchema), z.any()]), + ).optional(), + name: z.string(), + phase: z.nullable(z.string()).optional(), + pid: z.nullable(z.int()).optional(), + ready: z.boolean(), + restartCount: z.nullable(z.int()).optional(), + unitId: z.string(), +}); + +export function containerUnitToJSON(containerUnit: ContainerUnit): string { + return JSON.stringify(ContainerUnit$outboundSchema.parse(containerUnit)); +} + +/** @internal */ +export type ContainerUnitUnion$Outbound = ContainerUnit$Outbound | any; + +/** @internal */ +export const ContainerUnitUnion$outboundSchema: z.ZodType< + ContainerUnitUnion$Outbound, + ContainerUnitUnion +> = z.union([z.lazy(() => ContainerUnit$outboundSchema), z.any()]); + +export function containerUnitUnionToJSON( + containerUnitUnion: ContainerUnitUnion, +): string { + return JSON.stringify( + ContainerUnitUnion$outboundSchema.parse(containerUnitUnion), + ); +} + +/** @internal */ +export const CpuUnit5$outboundSchema: z.ZodEnum = z.enum( + CpuUnit5, +); + +/** @internal */ +export type Cpu5$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Cpu5$outboundSchema: z.ZodType = z.object({ + unit: CpuUnit5$outboundSchema, + value: z.number(), +}); + +export function cpu5ToJSON(cpu5: Cpu5): string { + return JSON.stringify(Cpu5$outboundSchema.parse(cpu5)); +} + +/** @internal */ +export type CpuUnion5$Outbound = Cpu5$Outbound | any; + +/** @internal */ +export const CpuUnion5$outboundSchema: z.ZodType< + CpuUnion5$Outbound, + CpuUnion5 +> = z.union([z.lazy(() => Cpu5$outboundSchema), z.any()]); + +export function cpuUnion5ToJSON(cpuUnion5: CpuUnion5): string { + return JSON.stringify(CpuUnion5$outboundSchema.parse(cpuUnion5)); +} + +/** @internal */ +export const EventSeverity2$outboundSchema: z.ZodEnum = z + .enum(EventSeverity2); + +/** @internal */ +export type SyncReconcileRequestSubject2$Outbound = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSubject2$outboundSchema: z.ZodType< + SyncReconcileRequestSubject2$Outbound, + SyncReconcileRequestSubject2 +> = z.object({ + id: z.nullable(z.string()).optional(), + kind: z.string(), + name: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSubject2ToJSON( + syncReconcileRequestSubject2: SyncReconcileRequestSubject2, +): string { + return JSON.stringify( + SyncReconcileRequestSubject2$outboundSchema.parse( + syncReconcileRequestSubject2, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestSubjectUnion2$Outbound = + | SyncReconcileRequestSubject2$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestSubjectUnion2$outboundSchema: z.ZodType< + SyncReconcileRequestSubjectUnion2$Outbound, + SyncReconcileRequestSubjectUnion2 +> = z.union([ + z.lazy(() => SyncReconcileRequestSubject2$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestSubjectUnion2ToJSON( + syncReconcileRequestSubjectUnion2: SyncReconcileRequestSubjectUnion2, +): string { + return JSON.stringify( + SyncReconcileRequestSubjectUnion2$outboundSchema.parse( + syncReconcileRequestSubjectUnion2, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestEvent5$Outbound = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: string; + subject?: SyncReconcileRequestSubject2$Outbound | any | null | undefined; + timestamp: string; +}; + +/** @internal */ +export const SyncReconcileRequestEvent5$outboundSchema: z.ZodType< + SyncReconcileRequestEvent5$Outbound, + SyncReconcileRequestEvent5 +> = z.object({ + kind: z.string(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + severity: EventSeverity2$outboundSchema, + subject: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSubject2$outboundSchema), + z.any(), + ]), + ).optional(), + timestamp: z.date().transform(v => v.toISOString()), +}); + +export function syncReconcileRequestEvent5ToJSON( + syncReconcileRequestEvent5: SyncReconcileRequestEvent5, +): string { + return JSON.stringify( + SyncReconcileRequestEvent5$outboundSchema.parse(syncReconcileRequestEvent5), + ); +} + +/** @internal */ +export const MemoryUnit5$outboundSchema: z.ZodEnum = z.enum( + MemoryUnit5, +); + +/** @internal */ +export type Memory5$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Memory5$outboundSchema: z.ZodType = z + .object({ + unit: MemoryUnit5$outboundSchema, + value: z.number(), + }); + +export function memory5ToJSON(memory5: Memory5): string { + return JSON.stringify(Memory5$outboundSchema.parse(memory5)); +} + +/** @internal */ +export type MemoryUnion5$Outbound = Memory5$Outbound | any; + +/** @internal */ +export const MemoryUnion5$outboundSchema: z.ZodType< + MemoryUnion5$Outbound, + MemoryUnion5 +> = z.union([z.lazy(() => Memory5$outboundSchema), z.any()]); + +export function memoryUnion5ToJSON(memoryUnion5: MemoryUnion5): string { + return JSON.stringify(MemoryUnion5$outboundSchema.parse(memoryUnion5)); +} + +/** @internal */ +export const Reason12$outboundSchema: z.ZodEnum = z.enum( + Reason12, +); + +/** @internal */ +export const CollectionIssueSeverity12$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity12 +> = z.enum(CollectionIssueSeverity12); + +/** @internal */ +export type CollectionIssue12$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue12$outboundSchema: z.ZodType< + CollectionIssue12$Outbound, + CollectionIssue12 +> = z.object({ + message: z.string(), + reason: Reason12$outboundSchema, + severity: CollectionIssueSeverity12$outboundSchema, + source: z.string(), +}); + +export function collectionIssue12ToJSON( + collectionIssue12: CollectionIssue12, +): string { + return JSON.stringify( + CollectionIssue12$outboundSchema.parse(collectionIssue12), + ); +} + +/** @internal */ +export const Health12$outboundSchema: z.ZodEnum = z.enum( + Health12, +); + +/** @internal */ +export const StatusLifecycle12$outboundSchema: z.ZodEnum< + typeof StatusLifecycle12 +> = z.enum(StatusLifecycle12); + +/** @internal */ +export type HeartbeatStatus12$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus12$outboundSchema: z.ZodType< + HeartbeatStatus12$Outbound, + HeartbeatStatus12 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue12$outboundSchema)), + health: Health12$outboundSchema, + lifecycle: StatusLifecycle12$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus12ToJSON( + heartbeatStatus12: HeartbeatStatus12, +): string { + return JSON.stringify( + HeartbeatStatus12$outboundSchema.parse(heartbeatStatus12), + ); +} + +/** @internal */ +export type DataLocal3$Outbound = { + bindMountCount: number; + containerId?: string | null | undefined; + containerUnit?: ContainerUnit$Outbound | any | null | undefined; + cpu?: Cpu5$Outbound | any | null | undefined; + events: Array; + image?: string | null | undefined; + localUrl?: string | null | undefined; + memory?: Memory5$Outbound | any | null | undefined; + name?: string | null | undefined; + portCount: number; + restartCount?: number | null | undefined; + runtimeReachable: boolean; + runtimeStatus?: string | null | undefined; + status: HeartbeatStatus12$Outbound; + backend: "local"; +}; + +/** @internal */ +export const DataLocal3$outboundSchema: z.ZodType< + DataLocal3$Outbound, + DataLocal3 +> = z.object({ + bindMountCount: z.int(), + containerId: z.nullable(z.string()).optional(), + containerUnit: z.nullable( + z.union([z.lazy(() => ContainerUnit$outboundSchema), z.any()]), + ).optional(), + cpu: z.nullable(z.union([z.lazy(() => Cpu5$outboundSchema), z.any()])) + .optional(), + events: z.array(z.lazy(() => SyncReconcileRequestEvent5$outboundSchema)), + image: z.nullable(z.string()).optional(), + localUrl: z.nullable(z.string()).optional(), + memory: z.nullable(z.union([z.lazy(() => Memory5$outboundSchema), z.any()])) + .optional(), + name: z.nullable(z.string()).optional(), + portCount: z.int(), + restartCount: z.nullable(z.int()).optional(), + runtimeReachable: z.boolean(), + runtimeStatus: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus12$outboundSchema), + backend: z.literal("local"), +}); + +export function dataLocal3ToJSON(dataLocal3: DataLocal3): string { + return JSON.stringify(DataLocal3$outboundSchema.parse(dataLocal3)); +} + +/** @internal */ +export const CpuUnit4$outboundSchema: z.ZodEnum = z.enum( + CpuUnit4, +); + +/** @internal */ +export type Cpu4$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Cpu4$outboundSchema: z.ZodType = z.object({ + unit: CpuUnit4$outboundSchema, + value: z.number(), +}); + +export function cpu4ToJSON(cpu4: Cpu4): string { + return JSON.stringify(Cpu4$outboundSchema.parse(cpu4)); +} + +/** @internal */ +export type CpuUnion4$Outbound = Cpu4$Outbound | any; + +/** @internal */ +export const CpuUnion4$outboundSchema: z.ZodType< + CpuUnion4$Outbound, + CpuUnion4 +> = z.union([z.lazy(() => Cpu4$outboundSchema), z.any()]); + +export function cpuUnion4ToJSON(cpuUnion4: CpuUnion4): string { + return JSON.stringify(CpuUnion4$outboundSchema.parse(cpuUnion4)); +} + +/** @internal */ +export type InvolvedObject3$Outbound = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +/** @internal */ +export const InvolvedObject3$outboundSchema: z.ZodType< + InvolvedObject3$Outbound, + InvolvedObject3 +> = z.object({ + apiVersion: z.nullable(z.string()).optional(), + fieldPath: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + namespace: z.nullable(z.string()).optional(), + resourceVersion: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), +}); + +export function involvedObject3ToJSON( + involvedObject3: InvolvedObject3, +): string { + return JSON.stringify(InvolvedObject3$outboundSchema.parse(involvedObject3)); +} + +/** @internal */ +export type InvolvedObjectUnion3$Outbound = InvolvedObject3$Outbound | any; + +/** @internal */ +export const InvolvedObjectUnion3$outboundSchema: z.ZodType< + InvolvedObjectUnion3$Outbound, + InvolvedObjectUnion3 +> = z.union([z.lazy(() => InvolvedObject3$outboundSchema), z.any()]); + +export function involvedObjectUnion3ToJSON( + involvedObjectUnion3: InvolvedObjectUnion3, +): string { + return JSON.stringify( + InvolvedObjectUnion3$outboundSchema.parse(involvedObjectUnion3), + ); +} + +/** @internal */ +export type SyncReconcileRequestSource3$Outbound = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSource3$outboundSchema: z.ZodType< + SyncReconcileRequestSource3$Outbound, + SyncReconcileRequestSource3 +> = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSource3ToJSON( + syncReconcileRequestSource3: SyncReconcileRequestSource3, +): string { + return JSON.stringify( + SyncReconcileRequestSource3$outboundSchema.parse( + syncReconcileRequestSource3, + ), + ); +} + +/** @internal */ +export type SourceUnion3$Outbound = SyncReconcileRequestSource3$Outbound | any; + +/** @internal */ +export const SourceUnion3$outboundSchema: z.ZodType< + SourceUnion3$Outbound, + SourceUnion3 +> = z.union([ + z.lazy(() => SyncReconcileRequestSource3$outboundSchema), + z.any(), +]); + +export function sourceUnion3ToJSON(sourceUnion3: SourceUnion3): string { + return JSON.stringify(SourceUnion3$outboundSchema.parse(sourceUnion3)); +} + +/** @internal */ +export type SyncReconcileRequestEvent4$Outbound = { + count?: number | null | undefined; + eventTime?: string | null | undefined; + firstTimestamp?: string | null | undefined; + involvedObject?: InvolvedObject3$Outbound | any | null | undefined; + lastTimestamp?: string | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource3$Outbound | any | null | undefined; + type?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestEvent4$outboundSchema: z.ZodType< + SyncReconcileRequestEvent4$Outbound, + SyncReconcileRequestEvent4 +> = z.object({ + count: z.nullable(z.int()).optional(), + eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), + firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject3$outboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSource3$outboundSchema), + z.any(), + ]), + ).optional(), + type: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestEvent4ToJSON( + syncReconcileRequestEvent4: SyncReconcileRequestEvent4, +): string { + return JSON.stringify( + SyncReconcileRequestEvent4$outboundSchema.parse(syncReconcileRequestEvent4), + ); +} + +/** @internal */ +export const MemoryUnit4$outboundSchema: z.ZodEnum = z.enum( + MemoryUnit4, +); + +/** @internal */ +export type Memory4$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Memory4$outboundSchema: z.ZodType = z + .object({ + unit: MemoryUnit4$outboundSchema, + value: z.number(), + }); + +export function memory4ToJSON(memory4: Memory4): string { + return JSON.stringify(Memory4$outboundSchema.parse(memory4)); +} + +/** @internal */ +export type MemoryUnion4$Outbound = Memory4$Outbound | any; + +/** @internal */ +export const MemoryUnion4$outboundSchema: z.ZodType< + MemoryUnion4$Outbound, + MemoryUnion4 +> = z.union([z.lazy(() => Memory4$outboundSchema), z.any()]); + +export function memoryUnion4ToJSON(memoryUnion4: MemoryUnion4): string { + return JSON.stringify(MemoryUnion4$outboundSchema.parse(memoryUnion4)); +} diff --git a/client-sdks/platform/typescript/src/models/operations/cpuunion10.ts b/client-sdks/platform/typescript/src/models/operations/cpuunion10.ts new file mode 100644 index 000000000..ea7a096f4 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/cpuunion10.ts @@ -0,0 +1,3648 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import { + CollectionIssue42, + CollectionIssue42$inboundSchema, + Health42, + Health42$inboundSchema, +} from "./health42.js"; + +export const Lifecycle42 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle42 = ClosedEnum; + +export type DataStatus42 = { + collectionIssues: Array; + health: Health42; + lifecycle: Lifecycle42; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureVnet = { + applicationGatewaySubnetName?: string | null | undefined; + cidrBlock?: string | null | undefined; + isByoVnet: boolean; + lastByoVnetVerificationErrorCode?: string | null | undefined; + location?: string | null | undefined; + natGatewayId?: string | null | undefined; + nsgId?: string | null | undefined; + privateSubnetName?: string | null | undefined; + publicIpId?: string | null | undefined; + publicSubnetName?: string | null | undefined; + resourceGroup?: string | null | undefined; + status: DataStatus42; + vnetName?: string | null | undefined; + vnetResourceId?: string | null | undefined; + backend: "azureVnet"; +}; + +export const Reason41 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason41 = ClosedEnum; + +export const CollectionIssueSeverity41 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity41 = ClosedEnum< + typeof CollectionIssueSeverity41 +>; + +export type CollectionIssue41 = { + message: string; + reason: Reason41; + severity: CollectionIssueSeverity41; + source: string; +}; + +export const Health41 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health41 = ClosedEnum; + +export const Lifecycle41 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle41 = ClosedEnum; + +export type DataStatus41 = { + collectionIssues: Array; + health: Health41; + lifecycle: Lifecycle41; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpVpc = { + cidrBlock?: string | null | undefined; + cloudNatName?: string | null | undefined; + firewallName?: string | null | undefined; + isByoVpc: boolean; + networkName?: string | null | undefined; + networkSelfLink?: string | null | undefined; + region?: string | null | undefined; + routerName?: string | null | undefined; + status: DataStatus41; + subnetworkName?: string | null | undefined; + subnetworkSelfLink?: string | null | undefined; + backend: "gcpVpc"; +}; + +export const Reason40 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason40 = ClosedEnum; + +export const CollectionIssueSeverity40 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity40 = ClosedEnum< + typeof CollectionIssueSeverity40 +>; + +export type CollectionIssue40 = { + message: string; + reason: Reason40; + severity: CollectionIssueSeverity40; + source: string; +}; + +export const Health40 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health40 = ClosedEnum; + +export const Lifecycle40 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle40 = ClosedEnum; + +export type DataStatus40 = { + collectionIssues: Array; + health: Health40; + lifecycle: Lifecycle40; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsVpc = { + availabilityZones: Array; + cidrBlock?: string | null | undefined; + internetGatewayId?: string | null | undefined; + isByoVpc: boolean; + natGatewayId?: string | null | undefined; + privateSubnetIds: Array; + publicSubnetIds: Array; + routeTableCount: number; + securityGroupId?: string | null | undefined; + status: DataStatus40; + vpcId?: string | null | undefined; + vpcState?: string | null | undefined; + backend: "awsVpc"; +}; + +export type DataUnion10 = DataAwsVpc | DataGcpVpc | DataAzureVnet; + +export type DataNetwork = { + data: DataAwsVpc | DataGcpVpc | DataAzureVnet; + resourceType: "network"; +}; + +export const Reason39 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason39 = ClosedEnum; + +export const CollectionIssueSeverity39 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity39 = ClosedEnum< + typeof CollectionIssueSeverity39 +>; + +export type CollectionIssue39 = { + message: string; + reason: Reason39; + severity: CollectionIssueSeverity39; + source: string; +}; + +export const Health39 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health39 = ClosedEnum; + +export const Lifecycle39 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle39 = ClosedEnum; + +export type DataStatus39 = { + collectionIssues: Array; + health: Health39; + lifecycle: Lifecycle39; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal9 = { + configured: boolean; + identity: string; + status: DataStatus39; + backend: "local"; +}; + +export const Reason38 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason38 = ClosedEnum; + +export const CollectionIssueSeverity38 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity38 = ClosedEnum< + typeof CollectionIssueSeverity38 +>; + +export type CollectionIssue38 = { + message: string; + reason: Reason38; + severity: CollectionIssueSeverity38; + source: string; +}; + +export const Health38 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health38 = ClosedEnum; + +export const Lifecycle38 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle38 = ClosedEnum; + +export type DataStatus38 = { + collectionIssues: Array; + health: Health38; + lifecycle: Lifecycle38; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureManagedIdentity1 = { + clientId?: string | null | undefined; + customRoleDefinitionCount: number; + customRoleDefinitionIds: Array; + isolationScope?: string | null | undefined; + location: string; + managedTagCount: number; + name: string; + principalId?: string | null | undefined; + resourceGroup: string; + resourceId: string; + roleAssignmentCount: number; + roleAssignmentIds: Array; + stackPermissionsApplied: boolean; + status: DataStatus38; + tenantId?: string | null | undefined; + type?: string | null | undefined; + backend: "azureManagedIdentity"; +}; + +export const Reason37 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason37 = ClosedEnum; + +export const CollectionIssueSeverity37 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity37 = ClosedEnum< + typeof CollectionIssueSeverity37 +>; + +export type CollectionIssue37 = { + message: string; + reason: Reason37; + severity: CollectionIssueSeverity37; + source: string; +}; + +export const Health37 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health37 = ClosedEnum; + +export const Lifecycle37 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle37 = ClosedEnum; + +export type DataStatus37 = { + collectionIssues: Array; + health: Health37; + lifecycle: Lifecycle37; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpServiceAccount1 = { + description?: string | null | undefined; + disabled?: boolean | null | undefined; + displayName?: string | null | undefined; + email: string; + etag?: string | null | undefined; + name?: string | null | undefined; + oauth2ClientId?: string | null | undefined; + projectBindingCount: number; + projectId?: string | null | undefined; + projectRoles: Array; + serviceAccountBindingCount: number; + serviceAccountRoles: Array; + status: DataStatus37; + uniqueId?: string | null | undefined; + backend: "gcpServiceAccount"; +}; + +export const Reason36 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason36 = ClosedEnum; + +export const CollectionIssueSeverity36 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity36 = ClosedEnum< + typeof CollectionIssueSeverity36 +>; + +export type CollectionIssue36 = { + message: string; + reason: Reason36; + severity: CollectionIssueSeverity36; + source: string; +}; + +export const Health36 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health36 = ClosedEnum; + +export const Lifecycle36 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle36 = ClosedEnum; + +export type DataStatus36 = { + collectionIssues: Array; + health: Health36; + lifecycle: Lifecycle36; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsIamRole1 = { + assumeRolePolicyPresent: boolean; + attachedPolicyCount: number; + attachedPolicyNames: Array; + createDate: string; + description?: string | null | undefined; + inlinePolicyCount: number; + inlinePolicyNames: Array; + lastUsedDate?: string | null | undefined; + lastUsedRegion?: string | null | undefined; + managedTagCount: number; + maxSessionDuration?: number | null | undefined; + path: string; + permissionsBoundaryArn?: string | null | undefined; + permissionsBoundaryType?: string | null | undefined; + roleArn: string; + roleId: string; + roleName: string; + stackPermissionsApplied: boolean; + status: DataStatus36; + tagCount: number; + backend: "awsIamRole"; +}; + +export type DataUnion9 = + | DataAwsIamRole1 + | DataGcpServiceAccount1 + | DataAzureManagedIdentity1 + | DataLocal9; + +export type DataServiceAccount = { + data: + | DataAwsIamRole1 + | DataGcpServiceAccount1 + | DataAzureManagedIdentity1 + | DataLocal9; + resourceType: "service-account"; +}; + +export const Reason35 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason35 = ClosedEnum; + +export const CollectionIssueSeverity35 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity35 = ClosedEnum< + typeof CollectionIssueSeverity35 +>; + +export type CollectionIssue35 = { + message: string; + reason: Reason35; + severity: CollectionIssueSeverity35; + source: string; +}; + +export const Health35 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health35 = ClosedEnum; + +export const Lifecycle35 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle35 = ClosedEnum; + +export type DataStatus35 = { + collectionIssues: Array; + health: Health35; + lifecycle: Lifecycle35; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal8 = { + isDirectory?: boolean | null | undefined; + modifiedAt?: Date | null | undefined; + path: string; + pathExists: boolean; + readonly?: boolean | null | undefined; + secretMetadataListed: boolean; + status: DataStatus35; + backend: "local"; +}; + +export const Reason34 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason34 = ClosedEnum; + +export const CollectionIssueSeverity34 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity34 = ClosedEnum< + typeof CollectionIssueSeverity34 +>; + +export type CollectionIssue34 = { + message: string; + reason: Reason34; + severity: CollectionIssueSeverity34; + source: string; +}; + +export const Health34 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health34 = ClosedEnum; + +export const Lifecycle34 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle34 = ClosedEnum; + +export type DataStatus34 = { + collectionIssues: Array; + health: Health34; + lifecycle: Lifecycle34; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataKubernetesSecret = { + namespace: string; + prefix: string; + secretMetadataListed: boolean; + status: DataStatus34; + backend: "kubernetesSecret"; +}; + +export const Reason33 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason33 = ClosedEnum; + +export const CollectionIssueSeverity33 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity33 = ClosedEnum< + typeof CollectionIssueSeverity33 +>; + +export type CollectionIssue33 = { + message: string; + reason: Reason33; + severity: CollectionIssueSeverity33; + source: string; +}; + +export const Health33 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health33 = ClosedEnum; + +export const Lifecycle33 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle33 = ClosedEnum; + +export type DataStatus33 = { + collectionIssues: Array; + health: Health33; + lifecycle: Lifecycle33; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureKeyVault = { + accessPolicyCount: number; + location?: string | null | undefined; + name: string; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess: string; + purgeProtectionEnabled?: boolean | null | undefined; + rbacAuthorizationEnabled: boolean; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + secretMetadataListed: boolean; + skuFamily?: string | null | undefined; + skuName?: string | null | undefined; + softDeleteEnabled: boolean; + softDeleteRetentionDays: number; + status: DataStatus33; + vaultUri?: string | null | undefined; + backend: "azureKeyVault"; +}; + +export const Reason32 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason32 = ClosedEnum; + +export const CollectionIssueSeverity32 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity32 = ClosedEnum< + typeof CollectionIssueSeverity32 +>; + +export type CollectionIssue32 = { + message: string; + reason: Reason32; + severity: CollectionIssueSeverity32; + source: string; +}; + +export const Health32 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health32 = ClosedEnum; + +export const Lifecycle32 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle32 = ClosedEnum; + +export type DataStatus32 = { + collectionIssues: Array; + health: Health32; + lifecycle: Lifecycle32; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpSecretManager = { + location: string; + prefix: string; + projectId: string; + secretMetadataListed: boolean; + status: DataStatus32; + backend: "gcpSecretManager"; +}; + +export const Reason31 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason31 = ClosedEnum; + +export const CollectionIssueSeverity31 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity31 = ClosedEnum< + typeof CollectionIssueSeverity31 +>; + +export type CollectionIssue31 = { + message: string; + reason: Reason31; + severity: CollectionIssueSeverity31; + source: string; +}; + +export const Health31 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health31 = ClosedEnum; + +export const Lifecycle31 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle31 = ClosedEnum; + +export type DataStatus31 = { + collectionIssues: Array; + health: Health31; + lifecycle: Lifecycle31; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsParameterStore = { + accountId: string; + hasMoreParameters?: boolean | null | undefined; + latestModifiedAt?: Date | null | undefined; + parameterMetadataSampled: boolean; + prefix: string; + region: string; + sampledAdvancedTierCount?: number | null | undefined; + sampledKmsKeyMetadataPresentCount?: number | null | undefined; + sampledParameterCount?: number | null | undefined; + sampledSecureStringCount?: number | null | undefined; + sampledStringCount?: number | null | undefined; + sampledStringListCount?: number | null | undefined; + status: DataStatus31; + backend: "awsParameterStore"; +}; + +export type DataUnion8 = + | DataAwsParameterStore + | DataGcpSecretManager + | DataAzureKeyVault + | DataKubernetesSecret + | DataLocal8; + +export type DataVault = { + data: + | DataAwsParameterStore + | DataGcpSecretManager + | DataAzureKeyVault + | DataKubernetesSecret + | DataLocal8; + resourceType: "vault"; +}; + +export const Reason30 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason30 = ClosedEnum; + +export const CollectionIssueSeverity30 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity30 = ClosedEnum< + typeof CollectionIssueSeverity30 +>; + +export type CollectionIssue30 = { + message: string; + reason: Reason30; + severity: CollectionIssueSeverity30; + source: string; +}; + +export const Health30 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health30 = ClosedEnum; + +export const Lifecycle30 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle30 = ClosedEnum; + +export type DataStatus30 = { + collectionIssues: Array; + health: Health30; + lifecycle: Lifecycle30; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal7 = { + cloudMetadataSupported: boolean; + isDirectory?: boolean | null | undefined; + name: string; + path: string; + pathExists: boolean; + status: DataStatus30; + backend: "local"; +}; + +export const Reason29 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason29 = ClosedEnum; + +export const CollectionIssueSeverity29 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity29 = ClosedEnum< + typeof CollectionIssueSeverity29 +>; + +export type CollectionIssue29 = { + message: string; + reason: Reason29; + severity: CollectionIssueSeverity29; + source: string; +}; + +export const Health29 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health29 = ClosedEnum; + +export const Lifecycle29 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle29 = ClosedEnum; + +export type DataStatus29 = { + collectionIssues: Array; + health: Health29; + lifecycle: Lifecycle29; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureTable = { + endpoint?: string | null | undefined; + resourceGroup?: string | null | undefined; + signedIdentifierCount?: number | null | undefined; + status: DataStatus29; + storageAccountKind?: string | null | undefined; + storageAccountLocation?: string | null | undefined; + storageAccountName: string; + storageAccountPrimaryStatus?: string | null | undefined; + storageAccountProvisioningState?: string | null | undefined; + storageAccountResourceId?: string | null | undefined; + tableExists: boolean; + tableName: string; + backend: "azureTable"; +}; + +export const Reason28 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason28 = ClosedEnum; + +export const CollectionIssueSeverity28 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity28 = ClosedEnum< + typeof CollectionIssueSeverity28 +>; + +export type CollectionIssue28 = { + message: string; + reason: Reason28; + severity: CollectionIssueSeverity28; + source: string; +}; + +export const Health28 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health28 = ClosedEnum; + +export const Lifecycle28 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle28 = ClosedEnum; + +export type DataStatus28 = { + collectionIssues: Array; + health: Health28; + lifecycle: Lifecycle28; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpFirestore = { + appEngineIntegrationMode?: string | null | undefined; + cmekEnabled: boolean; + concurrencyMode?: string | null | undefined; + createTime?: string | null | undefined; + databaseEdition?: string | null | undefined; + databaseName: string; + databaseType?: string | null | undefined; + deleteProtectionState?: string | null | undefined; + deleteTime?: string | null | undefined; + earliestVersionTime?: string | null | undefined; + endpoint?: string | null | undefined; + locationId?: string | null | undefined; + pointInTimeRecoveryEnablement?: string | null | undefined; + projectId?: string | null | undefined; + sourceInfoPresent: boolean; + status: DataStatus28; + updateTime?: string | null | undefined; + versionRetentionPeriod?: string | null | undefined; + backend: "gcpFirestore"; +}; + +export type KeySchema = { + attributeName: string; + keyType: string; +}; + +export const Reason27 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason27 = ClosedEnum; + +export const CollectionIssueSeverity27 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity27 = ClosedEnum< + typeof CollectionIssueSeverity27 +>; + +export type CollectionIssue27 = { + message: string; + reason: Reason27; + severity: CollectionIssueSeverity27; + source: string; +}; + +export const Health27 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health27 = ClosedEnum; + +export const Lifecycle27 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle27 = ClosedEnum; + +export type DataStatus27 = { + collectionIssues: Array; + health: Health27; + lifecycle: Lifecycle27; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsDynamoDb = { + billingMode?: string | null | undefined; + deletionProtectionEnabled?: boolean | null | undefined; + globalSecondaryIndexCount?: number | null | undefined; + itemCount?: number | null | undefined; + keySchema: Array; + localSecondaryIndexCount?: number | null | undefined; + name: string; + region?: string | null | undefined; + replicaCount?: number | null | undefined; + restoreInProgress?: boolean | null | undefined; + sseStatus?: string | null | undefined; + sseType?: string | null | undefined; + status: DataStatus27; + streamEnabled?: boolean | null | undefined; + streamViewType?: string | null | undefined; + tableArn?: string | null | undefined; + tableClass?: string | null | undefined; + tableSizeBytes?: number | null | undefined; + tableStatus?: string | null | undefined; + ttlAttributeName?: string | null | undefined; + ttlStatus?: string | null | undefined; + backend: "awsDynamoDb"; +}; + +export type DataUnion7 = + | DataAwsDynamoDb + | DataGcpFirestore + | DataAzureTable + | DataLocal7; + +export type DataKv = { + data: DataAwsDynamoDb | DataGcpFirestore | DataAzureTable | DataLocal7; + resourceType: "kv"; +}; + +export const Reason26 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason26 = ClosedEnum; + +export const CollectionIssueSeverity26 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity26 = ClosedEnum< + typeof CollectionIssueSeverity26 +>; + +export type CollectionIssue26 = { + message: string; + reason: Reason26; + severity: CollectionIssueSeverity26; + source: string; +}; + +export const Health26 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health26 = ClosedEnum; + +export const Lifecycle26 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle26 = ClosedEnum; + +export type DataStatus26 = { + collectionIssues: Array; + health: Health26; + lifecycle: Lifecycle26; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal6 = { + name: string; + path?: string | null | undefined; + serviceStatus?: string | null | undefined; + status: DataStatus26; + backend: "local"; +}; + +export const Reason25 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason25 = ClosedEnum; + +export const CollectionIssueSeverity25 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity25 = ClosedEnum< + typeof CollectionIssueSeverity25 +>; + +export type CollectionIssue25 = { + message: string; + reason: Reason25; + severity: CollectionIssueSeverity25; + source: string; +}; + +export const Health25 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health25 = ClosedEnum; + +export const Lifecycle25 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle25 = ClosedEnum; + +export type DataStatus25 = { + collectionIssues: Array; + health: Health25; + lifecycle: Lifecycle25; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureServiceBus = { + accessedAt?: string | null | undefined; + activeMessageCount?: number | null | undefined; + autoDeleteOnIdle?: string | null | undefined; + createdAt?: string | null | undefined; + deadLetterMessageCount?: number | null | undefined; + deadLetteringOnMessageExpiration?: boolean | null | undefined; + defaultMessageTimeToLive?: string | null | undefined; + duplicateDetectionHistoryTimeWindow?: string | null | undefined; + enableBatchedOperations?: boolean | null | undefined; + enableExpress?: boolean | null | undefined; + enablePartitioning?: boolean | null | undefined; + endpoint?: string | null | undefined; + forwardDeadLetteredMessagesTo?: string | null | undefined; + forwardTo?: string | null | undefined; + lockDuration?: string | null | undefined; + maxDeliveryCount?: number | null | undefined; + maxMessageSizeInKilobytes?: number | null | undefined; + maxSizeInMegabytes?: number | null | undefined; + messageCount?: number | null | undefined; + name: string; + namespaceName: string; + queueStatus?: string | null | undefined; + requiresDuplicateDetection?: boolean | null | undefined; + requiresSession?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + scheduledMessageCount?: number | null | undefined; + sizeInBytes?: number | null | undefined; + status: DataStatus25; + transferDeadLetterMessageCount?: number | null | undefined; + transferMessageCount?: number | null | undefined; + updatedAt?: string | null | undefined; + backend: "azureServiceBus"; +}; + +export const Reason24 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason24 = ClosedEnum; + +export const CollectionIssueSeverity24 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity24 = ClosedEnum< + typeof CollectionIssueSeverity24 +>; + +export type CollectionIssue24 = { + message: string; + reason: Reason24; + severity: CollectionIssueSeverity24; + source: string; +}; + +export const Health24 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health24 = ClosedEnum; + +export const Lifecycle24 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle24 = ClosedEnum; + +export type DataStatus24 = { + collectionIssues: Array; + health: Health24; + lifecycle: Lifecycle24; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpPubSub = { + endpoint?: string | null | undefined; + kmsKeyName?: string | null | undefined; + messageStorageAllowedPersistenceRegions: Array; + messageStorageEnforceInTransit?: boolean | null | undefined; + projectId?: string | null | undefined; + schemaEncoding?: string | null | undefined; + schemaFirstRevisionId?: string | null | undefined; + schemaLastRevisionId?: string | null | undefined; + schemaName?: string | null | undefined; + status: DataStatus24; + subscriptionAckDeadlineSeconds?: number | null | undefined; + subscriptionDeadLetterMaxDeliveryAttempts?: number | null | undefined; + subscriptionDeadLetterTopic?: string | null | undefined; + subscriptionDetached?: boolean | null | undefined; + subscriptionEnableMessageOrdering?: boolean | null | undefined; + subscriptionFilter?: string | null | undefined; + subscriptionFullName?: string | null | undefined; + subscriptionLabels: { [k: string]: string }; + subscriptionMessageRetentionDuration?: string | null | undefined; + subscriptionName?: string | null | undefined; + subscriptionPushAttributes: { [k: string]: string }; + subscriptionPushConfigPresent?: boolean | null | undefined; + subscriptionPushEndpoint?: string | null | undefined; + subscriptionPushNoWrapperWriteMetadata?: boolean | null | undefined; + subscriptionPushOidcAudience?: string | null | undefined; + subscriptionPushOidcServiceAccountEmail?: string | null | undefined; + subscriptionPushPubsubWrapperWriteMetadata?: boolean | null | undefined; + subscriptionRetainAckedMessages?: boolean | null | undefined; + subscriptionState?: string | null | undefined; + topicFullName?: string | null | undefined; + topicLabels: { [k: string]: string }; + topicMessageRetentionDuration?: string | null | undefined; + topicName: string; + topicState?: string | null | undefined; + backend: "gcpPubSub"; +}; + +export const Reason23 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason23 = ClosedEnum; + +export const CollectionIssueSeverity23 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity23 = ClosedEnum< + typeof CollectionIssueSeverity23 +>; + +export type CollectionIssue23 = { + message: string; + reason: Reason23; + severity: CollectionIssueSeverity23; + source: string; +}; + +export const Health23 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health23 = ClosedEnum; + +export const Lifecycle23 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle23 = ClosedEnum; + +export type DataStatus23 = { + collectionIssues: Array; + health: Health23; + lifecycle: Lifecycle23; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsSqs = { + approximateCounts: boolean; + approximateDelayedMessages?: number | null | undefined; + approximateInFlightMessages?: number | null | undefined; + approximateVisibleMessages?: number | null | undefined; + contentBasedDeduplication?: boolean | null | undefined; + deduplicationScope?: string | null | undefined; + delaySeconds?: number | null | undefined; + fifoQueue?: boolean | null | undefined; + fifoThroughputLimit?: string | null | undefined; + kmsDataKeyReusePeriodSeconds?: number | null | undefined; + kmsMasterKeyId?: string | null | undefined; + maximumMessageSize?: number | null | undefined; + messageRetentionPeriodSeconds?: number | null | undefined; + name: string; + queueArn?: string | null | undefined; + queueUrl?: string | null | undefined; + receiveMessageWaitTimeSeconds?: number | null | undefined; + redriveAllowPolicy?: string | null | undefined; + redrivePolicy?: string | null | undefined; + region?: string | null | undefined; + sqsManagedSseEnabled?: boolean | null | undefined; + sseEnabled?: boolean | null | undefined; + status: DataStatus23; + visibilityTimeoutSeconds?: number | null | undefined; + backend: "awsSqs"; +}; + +export type DataUnion6 = + | DataAwsSqs + | DataGcpPubSub + | DataAzureServiceBus + | DataLocal6; + +export type DataQueue = { + data: DataAwsSqs | DataGcpPubSub | DataAzureServiceBus | DataLocal6; + resourceType: "queue"; +}; + +export const CpuUnit10 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit10 = ClosedEnum; + +export type Cpu10 = { + unit: CpuUnit10; + value: number; +}; + +export type CpuUnion10 = Cpu10 | any; + +/** @internal */ +export const Lifecycle42$inboundSchema: z.ZodEnum = z.enum( + Lifecycle42, +); + +/** @internal */ +export const DataStatus42$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(CollectionIssue42$inboundSchema), + health: Health42$inboundSchema, + lifecycle: Lifecycle42$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus42FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus42$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus42' from JSON`, + ); +} + +/** @internal */ +export const DataAzureVnet$inboundSchema: z.ZodType = z + .object({ + applicationGatewaySubnetName: z.nullable(z.string()).optional(), + cidrBlock: z.nullable(z.string()).optional(), + isByoVnet: z.boolean(), + lastByoVnetVerificationErrorCode: z.nullable(z.string()).optional(), + location: z.nullable(z.string()).optional(), + natGatewayId: z.nullable(z.string()).optional(), + nsgId: z.nullable(z.string()).optional(), + privateSubnetName: z.nullable(z.string()).optional(), + publicIpId: z.nullable(z.string()).optional(), + publicSubnetName: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus42$inboundSchema), + vnetName: z.nullable(z.string()).optional(), + vnetResourceId: z.nullable(z.string()).optional(), + backend: z.literal("azureVnet"), + }); + +export function dataAzureVnetFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureVnet$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureVnet' from JSON`, + ); +} + +/** @internal */ +export const Reason41$inboundSchema: z.ZodEnum = z.enum( + Reason41, +); + +/** @internal */ +export const CollectionIssueSeverity41$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity41 +> = z.enum(CollectionIssueSeverity41); + +/** @internal */ +export const CollectionIssue41$inboundSchema: z.ZodType< + CollectionIssue41, + unknown +> = z.object({ + message: z.string(), + reason: Reason41$inboundSchema, + severity: CollectionIssueSeverity41$inboundSchema, + source: z.string(), +}); + +export function collectionIssue41FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue41$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue41' from JSON`, + ); +} + +/** @internal */ +export const Health41$inboundSchema: z.ZodEnum = z.enum( + Health41, +); + +/** @internal */ +export const Lifecycle41$inboundSchema: z.ZodEnum = z.enum( + Lifecycle41, +); + +/** @internal */ +export const DataStatus41$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue41$inboundSchema)), + health: Health41$inboundSchema, + lifecycle: Lifecycle41$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus41FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus41$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus41' from JSON`, + ); +} + +/** @internal */ +export const DataGcpVpc$inboundSchema: z.ZodType = z + .object({ + cidrBlock: z.nullable(z.string()).optional(), + cloudNatName: z.nullable(z.string()).optional(), + firewallName: z.nullable(z.string()).optional(), + isByoVpc: z.boolean(), + networkName: z.nullable(z.string()).optional(), + networkSelfLink: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + routerName: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus41$inboundSchema), + subnetworkName: z.nullable(z.string()).optional(), + subnetworkSelfLink: z.nullable(z.string()).optional(), + backend: z.literal("gcpVpc"), + }); + +export function dataGcpVpcFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpVpc$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpVpc' from JSON`, + ); +} + +/** @internal */ +export const Reason40$inboundSchema: z.ZodEnum = z.enum( + Reason40, +); + +/** @internal */ +export const CollectionIssueSeverity40$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity40 +> = z.enum(CollectionIssueSeverity40); + +/** @internal */ +export const CollectionIssue40$inboundSchema: z.ZodType< + CollectionIssue40, + unknown +> = z.object({ + message: z.string(), + reason: Reason40$inboundSchema, + severity: CollectionIssueSeverity40$inboundSchema, + source: z.string(), +}); + +export function collectionIssue40FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue40$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue40' from JSON`, + ); +} + +/** @internal */ +export const Health40$inboundSchema: z.ZodEnum = z.enum( + Health40, +); + +/** @internal */ +export const Lifecycle40$inboundSchema: z.ZodEnum = z.enum( + Lifecycle40, +); + +/** @internal */ +export const DataStatus40$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue40$inboundSchema)), + health: Health40$inboundSchema, + lifecycle: Lifecycle40$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus40FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus40$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus40' from JSON`, + ); +} + +/** @internal */ +export const DataAwsVpc$inboundSchema: z.ZodType = z + .object({ + availabilityZones: z.array(z.string()), + cidrBlock: z.nullable(z.string()).optional(), + internetGatewayId: z.nullable(z.string()).optional(), + isByoVpc: z.boolean(), + natGatewayId: z.nullable(z.string()).optional(), + privateSubnetIds: z.array(z.string()), + publicSubnetIds: z.array(z.string()), + routeTableCount: z.int(), + securityGroupId: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus40$inboundSchema), + vpcId: z.nullable(z.string()).optional(), + vpcState: z.nullable(z.string()).optional(), + backend: z.literal("awsVpc"), + }); + +export function dataAwsVpcFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsVpc$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsVpc' from JSON`, + ); +} + +/** @internal */ +export const DataUnion10$inboundSchema: z.ZodType = z + .union([ + z.lazy(() => DataAwsVpc$inboundSchema), + z.lazy(() => DataGcpVpc$inboundSchema), + z.lazy(() => DataAzureVnet$inboundSchema), + ]); + +export function dataUnion10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion10' from JSON`, + ); +} + +/** @internal */ +export const DataNetwork$inboundSchema: z.ZodType = z + .object({ + data: z.union([ + z.lazy(() => DataAwsVpc$inboundSchema), + z.lazy(() => DataGcpVpc$inboundSchema), + z.lazy(() => DataAzureVnet$inboundSchema), + ]), + resourceType: z.literal("network"), + }); + +export function dataNetworkFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataNetwork$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataNetwork' from JSON`, + ); +} + +/** @internal */ +export const Reason39$inboundSchema: z.ZodEnum = z.enum( + Reason39, +); + +/** @internal */ +export const CollectionIssueSeverity39$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity39 +> = z.enum(CollectionIssueSeverity39); + +/** @internal */ +export const CollectionIssue39$inboundSchema: z.ZodType< + CollectionIssue39, + unknown +> = z.object({ + message: z.string(), + reason: Reason39$inboundSchema, + severity: CollectionIssueSeverity39$inboundSchema, + source: z.string(), +}); + +export function collectionIssue39FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue39$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue39' from JSON`, + ); +} + +/** @internal */ +export const Health39$inboundSchema: z.ZodEnum = z.enum( + Health39, +); + +/** @internal */ +export const Lifecycle39$inboundSchema: z.ZodEnum = z.enum( + Lifecycle39, +); + +/** @internal */ +export const DataStatus39$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue39$inboundSchema)), + health: Health39$inboundSchema, + lifecycle: Lifecycle39$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus39FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus39$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus39' from JSON`, + ); +} + +/** @internal */ +export const DataLocal9$inboundSchema: z.ZodType = z + .object({ + configured: z.boolean(), + identity: z.string(), + status: z.lazy(() => DataStatus39$inboundSchema), + backend: z.literal("local"), + }); + +export function dataLocal9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataLocal9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataLocal9' from JSON`, + ); +} + +/** @internal */ +export const Reason38$inboundSchema: z.ZodEnum = z.enum( + Reason38, +); + +/** @internal */ +export const CollectionIssueSeverity38$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity38 +> = z.enum(CollectionIssueSeverity38); + +/** @internal */ +export const CollectionIssue38$inboundSchema: z.ZodType< + CollectionIssue38, + unknown +> = z.object({ + message: z.string(), + reason: Reason38$inboundSchema, + severity: CollectionIssueSeverity38$inboundSchema, + source: z.string(), +}); + +export function collectionIssue38FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue38$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue38' from JSON`, + ); +} + +/** @internal */ +export const Health38$inboundSchema: z.ZodEnum = z.enum( + Health38, +); + +/** @internal */ +export const Lifecycle38$inboundSchema: z.ZodEnum = z.enum( + Lifecycle38, +); + +/** @internal */ +export const DataStatus38$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue38$inboundSchema)), + health: Health38$inboundSchema, + lifecycle: Lifecycle38$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus38FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus38$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus38' from JSON`, + ); +} + +/** @internal */ +export const DataAzureManagedIdentity1$inboundSchema: z.ZodType< + DataAzureManagedIdentity1, + unknown +> = z.object({ + clientId: z.nullable(z.string()).optional(), + customRoleDefinitionCount: z.int(), + customRoleDefinitionIds: z.array(z.string()), + isolationScope: z.nullable(z.string()).optional(), + location: z.string(), + managedTagCount: z.int(), + name: z.string(), + principalId: z.nullable(z.string()).optional(), + resourceGroup: z.string(), + resourceId: z.string(), + roleAssignmentCount: z.int(), + roleAssignmentIds: z.array(z.string()), + stackPermissionsApplied: z.boolean(), + status: z.lazy(() => DataStatus38$inboundSchema), + tenantId: z.nullable(z.string()).optional(), + type: z.nullable(z.string()).optional(), + backend: z.literal("azureManagedIdentity"), +}); + +export function dataAzureManagedIdentity1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureManagedIdentity1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureManagedIdentity1' from JSON`, + ); +} + +/** @internal */ +export const Reason37$inboundSchema: z.ZodEnum = z.enum( + Reason37, +); + +/** @internal */ +export const CollectionIssueSeverity37$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity37 +> = z.enum(CollectionIssueSeverity37); + +/** @internal */ +export const CollectionIssue37$inboundSchema: z.ZodType< + CollectionIssue37, + unknown +> = z.object({ + message: z.string(), + reason: Reason37$inboundSchema, + severity: CollectionIssueSeverity37$inboundSchema, + source: z.string(), +}); + +export function collectionIssue37FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue37$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue37' from JSON`, + ); +} + +/** @internal */ +export const Health37$inboundSchema: z.ZodEnum = z.enum( + Health37, +); + +/** @internal */ +export const Lifecycle37$inboundSchema: z.ZodEnum = z.enum( + Lifecycle37, +); + +/** @internal */ +export const DataStatus37$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue37$inboundSchema)), + health: Health37$inboundSchema, + lifecycle: Lifecycle37$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus37FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus37$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus37' from JSON`, + ); +} + +/** @internal */ +export const DataGcpServiceAccount1$inboundSchema: z.ZodType< + DataGcpServiceAccount1, + unknown +> = z.object({ + description: z.nullable(z.string()).optional(), + disabled: z.nullable(z.boolean()).optional(), + displayName: z.nullable(z.string()).optional(), + email: z.string(), + etag: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + oauth2ClientId: z.nullable(z.string()).optional(), + projectBindingCount: z.int(), + projectId: z.nullable(z.string()).optional(), + projectRoles: z.array(z.string()), + serviceAccountBindingCount: z.int(), + serviceAccountRoles: z.array(z.string()), + status: z.lazy(() => DataStatus37$inboundSchema), + uniqueId: z.nullable(z.string()).optional(), + backend: z.literal("gcpServiceAccount"), +}); + +export function dataGcpServiceAccount1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpServiceAccount1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpServiceAccount1' from JSON`, + ); +} + +/** @internal */ +export const Reason36$inboundSchema: z.ZodEnum = z.enum( + Reason36, +); + +/** @internal */ +export const CollectionIssueSeverity36$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity36 +> = z.enum(CollectionIssueSeverity36); + +/** @internal */ +export const CollectionIssue36$inboundSchema: z.ZodType< + CollectionIssue36, + unknown +> = z.object({ + message: z.string(), + reason: Reason36$inboundSchema, + severity: CollectionIssueSeverity36$inboundSchema, + source: z.string(), +}); + +export function collectionIssue36FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue36$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue36' from JSON`, + ); +} + +/** @internal */ +export const Health36$inboundSchema: z.ZodEnum = z.enum( + Health36, +); + +/** @internal */ +export const Lifecycle36$inboundSchema: z.ZodEnum = z.enum( + Lifecycle36, +); + +/** @internal */ +export const DataStatus36$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue36$inboundSchema)), + health: Health36$inboundSchema, + lifecycle: Lifecycle36$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus36FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus36$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus36' from JSON`, + ); +} + +/** @internal */ +export const DataAwsIamRole1$inboundSchema: z.ZodType< + DataAwsIamRole1, + unknown +> = z.object({ + assumeRolePolicyPresent: z.boolean(), + attachedPolicyCount: z.int(), + attachedPolicyNames: z.array(z.string()), + createDate: z.string(), + description: z.nullable(z.string()).optional(), + inlinePolicyCount: z.int(), + inlinePolicyNames: z.array(z.string()), + lastUsedDate: z.nullable(z.string()).optional(), + lastUsedRegion: z.nullable(z.string()).optional(), + managedTagCount: z.int(), + maxSessionDuration: z.nullable(z.int()).optional(), + path: z.string(), + permissionsBoundaryArn: z.nullable(z.string()).optional(), + permissionsBoundaryType: z.nullable(z.string()).optional(), + roleArn: z.string(), + roleId: z.string(), + roleName: z.string(), + stackPermissionsApplied: z.boolean(), + status: z.lazy(() => DataStatus36$inboundSchema), + tagCount: z.int(), + backend: z.literal("awsIamRole"), +}); + +export function dataAwsIamRole1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsIamRole1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsIamRole1' from JSON`, + ); +} + +/** @internal */ +export const DataUnion9$inboundSchema: z.ZodType = z.union( + [ + z.lazy(() => DataAwsIamRole1$inboundSchema), + z.lazy(() => DataGcpServiceAccount1$inboundSchema), + z.lazy(() => DataAzureManagedIdentity1$inboundSchema), + z.lazy(() => DataLocal9$inboundSchema), + ], +); + +export function dataUnion9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion9' from JSON`, + ); +} + +/** @internal */ +export const DataServiceAccount$inboundSchema: z.ZodType< + DataServiceAccount, + unknown +> = z.object({ + data: z.union([ + z.lazy(() => DataAwsIamRole1$inboundSchema), + z.lazy(() => DataGcpServiceAccount1$inboundSchema), + z.lazy(() => DataAzureManagedIdentity1$inboundSchema), + z.lazy(() => DataLocal9$inboundSchema), + ]), + resourceType: z.literal("service-account"), +}); + +export function dataServiceAccountFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataServiceAccount$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataServiceAccount' from JSON`, + ); +} + +/** @internal */ +export const Reason35$inboundSchema: z.ZodEnum = z.enum( + Reason35, +); + +/** @internal */ +export const CollectionIssueSeverity35$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity35 +> = z.enum(CollectionIssueSeverity35); + +/** @internal */ +export const CollectionIssue35$inboundSchema: z.ZodType< + CollectionIssue35, + unknown +> = z.object({ + message: z.string(), + reason: Reason35$inboundSchema, + severity: CollectionIssueSeverity35$inboundSchema, + source: z.string(), +}); + +export function collectionIssue35FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue35$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue35' from JSON`, + ); +} + +/** @internal */ +export const Health35$inboundSchema: z.ZodEnum = z.enum( + Health35, +); + +/** @internal */ +export const Lifecycle35$inboundSchema: z.ZodEnum = z.enum( + Lifecycle35, +); + +/** @internal */ +export const DataStatus35$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue35$inboundSchema)), + health: Health35$inboundSchema, + lifecycle: Lifecycle35$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus35FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus35$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus35' from JSON`, + ); +} + +/** @internal */ +export const DataLocal8$inboundSchema: z.ZodType = z + .object({ + isDirectory: z.nullable(z.boolean()).optional(), + modifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + path: z.string(), + pathExists: z.boolean(), + readonly: z.nullable(z.boolean()).optional(), + secretMetadataListed: z.boolean(), + status: z.lazy(() => DataStatus35$inboundSchema), + backend: z.literal("local"), + }); + +export function dataLocal8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataLocal8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataLocal8' from JSON`, + ); +} + +/** @internal */ +export const Reason34$inboundSchema: z.ZodEnum = z.enum( + Reason34, +); + +/** @internal */ +export const CollectionIssueSeverity34$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity34 +> = z.enum(CollectionIssueSeverity34); + +/** @internal */ +export const CollectionIssue34$inboundSchema: z.ZodType< + CollectionIssue34, + unknown +> = z.object({ + message: z.string(), + reason: Reason34$inboundSchema, + severity: CollectionIssueSeverity34$inboundSchema, + source: z.string(), +}); + +export function collectionIssue34FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue34$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue34' from JSON`, + ); +} + +/** @internal */ +export const Health34$inboundSchema: z.ZodEnum = z.enum( + Health34, +); + +/** @internal */ +export const Lifecycle34$inboundSchema: z.ZodEnum = z.enum( + Lifecycle34, +); + +/** @internal */ +export const DataStatus34$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue34$inboundSchema)), + health: Health34$inboundSchema, + lifecycle: Lifecycle34$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus34FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus34$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus34' from JSON`, + ); +} + +/** @internal */ +export const DataKubernetesSecret$inboundSchema: z.ZodType< + DataKubernetesSecret, + unknown +> = z.object({ + namespace: z.string(), + prefix: z.string(), + secretMetadataListed: z.boolean(), + status: z.lazy(() => DataStatus34$inboundSchema), + backend: z.literal("kubernetesSecret"), +}); + +export function dataKubernetesSecretFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataKubernetesSecret$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataKubernetesSecret' from JSON`, + ); +} + +/** @internal */ +export const Reason33$inboundSchema: z.ZodEnum = z.enum( + Reason33, +); + +/** @internal */ +export const CollectionIssueSeverity33$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity33 +> = z.enum(CollectionIssueSeverity33); + +/** @internal */ +export const CollectionIssue33$inboundSchema: z.ZodType< + CollectionIssue33, + unknown +> = z.object({ + message: z.string(), + reason: Reason33$inboundSchema, + severity: CollectionIssueSeverity33$inboundSchema, + source: z.string(), +}); + +export function collectionIssue33FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue33$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue33' from JSON`, + ); +} + +/** @internal */ +export const Health33$inboundSchema: z.ZodEnum = z.enum( + Health33, +); + +/** @internal */ +export const Lifecycle33$inboundSchema: z.ZodEnum = z.enum( + Lifecycle33, +); + +/** @internal */ +export const DataStatus33$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue33$inboundSchema)), + health: Health33$inboundSchema, + lifecycle: Lifecycle33$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus33FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus33$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus33' from JSON`, + ); +} + +/** @internal */ +export const DataAzureKeyVault$inboundSchema: z.ZodType< + DataAzureKeyVault, + unknown +> = z.object({ + accessPolicyCount: z.int(), + location: z.nullable(z.string()).optional(), + name: z.string(), + privateEndpointConnectionCount: z.int(), + provisioningState: z.nullable(z.string()).optional(), + publicNetworkAccess: z.string(), + purgeProtectionEnabled: z.nullable(z.boolean()).optional(), + rbacAuthorizationEnabled: z.boolean(), + resourceGroup: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + secretMetadataListed: z.boolean(), + skuFamily: z.nullable(z.string()).optional(), + skuName: z.nullable(z.string()).optional(), + softDeleteEnabled: z.boolean(), + softDeleteRetentionDays: z.int(), + status: z.lazy(() => DataStatus33$inboundSchema), + vaultUri: z.nullable(z.string()).optional(), + backend: z.literal("azureKeyVault"), +}); + +export function dataAzureKeyVaultFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureKeyVault$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureKeyVault' from JSON`, + ); +} + +/** @internal */ +export const Reason32$inboundSchema: z.ZodEnum = z.enum( + Reason32, +); + +/** @internal */ +export const CollectionIssueSeverity32$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity32 +> = z.enum(CollectionIssueSeverity32); + +/** @internal */ +export const CollectionIssue32$inboundSchema: z.ZodType< + CollectionIssue32, + unknown +> = z.object({ + message: z.string(), + reason: Reason32$inboundSchema, + severity: CollectionIssueSeverity32$inboundSchema, + source: z.string(), +}); + +export function collectionIssue32FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue32$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue32' from JSON`, + ); +} + +/** @internal */ +export const Health32$inboundSchema: z.ZodEnum = z.enum( + Health32, +); + +/** @internal */ +export const Lifecycle32$inboundSchema: z.ZodEnum = z.enum( + Lifecycle32, +); + +/** @internal */ +export const DataStatus32$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue32$inboundSchema)), + health: Health32$inboundSchema, + lifecycle: Lifecycle32$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus32FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus32$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus32' from JSON`, + ); +} + +/** @internal */ +export const DataGcpSecretManager$inboundSchema: z.ZodType< + DataGcpSecretManager, + unknown +> = z.object({ + location: z.string(), + prefix: z.string(), + projectId: z.string(), + secretMetadataListed: z.boolean(), + status: z.lazy(() => DataStatus32$inboundSchema), + backend: z.literal("gcpSecretManager"), +}); + +export function dataGcpSecretManagerFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpSecretManager$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpSecretManager' from JSON`, + ); +} + +/** @internal */ +export const Reason31$inboundSchema: z.ZodEnum = z.enum( + Reason31, +); + +/** @internal */ +export const CollectionIssueSeverity31$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity31 +> = z.enum(CollectionIssueSeverity31); + +/** @internal */ +export const CollectionIssue31$inboundSchema: z.ZodType< + CollectionIssue31, + unknown +> = z.object({ + message: z.string(), + reason: Reason31$inboundSchema, + severity: CollectionIssueSeverity31$inboundSchema, + source: z.string(), +}); + +export function collectionIssue31FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue31$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue31' from JSON`, + ); +} + +/** @internal */ +export const Health31$inboundSchema: z.ZodEnum = z.enum( + Health31, +); + +/** @internal */ +export const Lifecycle31$inboundSchema: z.ZodEnum = z.enum( + Lifecycle31, +); + +/** @internal */ +export const DataStatus31$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue31$inboundSchema)), + health: Health31$inboundSchema, + lifecycle: Lifecycle31$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus31FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus31$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus31' from JSON`, + ); +} + +/** @internal */ +export const DataAwsParameterStore$inboundSchema: z.ZodType< + DataAwsParameterStore, + unknown +> = z.object({ + accountId: z.string(), + hasMoreParameters: z.nullable(z.boolean()).optional(), + latestModifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + parameterMetadataSampled: z.boolean(), + prefix: z.string(), + region: z.string(), + sampledAdvancedTierCount: z.nullable(z.int()).optional(), + sampledKmsKeyMetadataPresentCount: z.nullable(z.int()).optional(), + sampledParameterCount: z.nullable(z.int()).optional(), + sampledSecureStringCount: z.nullable(z.int()).optional(), + sampledStringCount: z.nullable(z.int()).optional(), + sampledStringListCount: z.nullable(z.int()).optional(), + status: z.lazy(() => DataStatus31$inboundSchema), + backend: z.literal("awsParameterStore"), +}); + +export function dataAwsParameterStoreFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsParameterStore$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsParameterStore' from JSON`, + ); +} + +/** @internal */ +export const DataUnion8$inboundSchema: z.ZodType = z.union( + [ + z.lazy(() => DataAwsParameterStore$inboundSchema), + z.lazy(() => DataGcpSecretManager$inboundSchema), + z.lazy(() => DataAzureKeyVault$inboundSchema), + z.lazy(() => DataKubernetesSecret$inboundSchema), + z.lazy(() => DataLocal8$inboundSchema), + ], +); + +export function dataUnion8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion8' from JSON`, + ); +} + +/** @internal */ +export const DataVault$inboundSchema: z.ZodType = z.object({ + data: z.union([ + z.lazy(() => DataAwsParameterStore$inboundSchema), + z.lazy(() => DataGcpSecretManager$inboundSchema), + z.lazy(() => DataAzureKeyVault$inboundSchema), + z.lazy(() => DataKubernetesSecret$inboundSchema), + z.lazy(() => DataLocal8$inboundSchema), + ]), + resourceType: z.literal("vault"), +}); + +export function dataVaultFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataVault$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataVault' from JSON`, + ); +} + +/** @internal */ +export const Reason30$inboundSchema: z.ZodEnum = z.enum( + Reason30, +); + +/** @internal */ +export const CollectionIssueSeverity30$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity30 +> = z.enum(CollectionIssueSeverity30); + +/** @internal */ +export const CollectionIssue30$inboundSchema: z.ZodType< + CollectionIssue30, + unknown +> = z.object({ + message: z.string(), + reason: Reason30$inboundSchema, + severity: CollectionIssueSeverity30$inboundSchema, + source: z.string(), +}); + +export function collectionIssue30FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue30$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue30' from JSON`, + ); +} + +/** @internal */ +export const Health30$inboundSchema: z.ZodEnum = z.enum( + Health30, +); + +/** @internal */ +export const Lifecycle30$inboundSchema: z.ZodEnum = z.enum( + Lifecycle30, +); + +/** @internal */ +export const DataStatus30$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue30$inboundSchema)), + health: Health30$inboundSchema, + lifecycle: Lifecycle30$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus30FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus30$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus30' from JSON`, + ); +} + +/** @internal */ +export const DataLocal7$inboundSchema: z.ZodType = z + .object({ + cloudMetadataSupported: z.boolean(), + isDirectory: z.nullable(z.boolean()).optional(), + name: z.string(), + path: z.string(), + pathExists: z.boolean(), + status: z.lazy(() => DataStatus30$inboundSchema), + backend: z.literal("local"), + }); + +export function dataLocal7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataLocal7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataLocal7' from JSON`, + ); +} + +/** @internal */ +export const Reason29$inboundSchema: z.ZodEnum = z.enum( + Reason29, +); + +/** @internal */ +export const CollectionIssueSeverity29$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity29 +> = z.enum(CollectionIssueSeverity29); + +/** @internal */ +export const CollectionIssue29$inboundSchema: z.ZodType< + CollectionIssue29, + unknown +> = z.object({ + message: z.string(), + reason: Reason29$inboundSchema, + severity: CollectionIssueSeverity29$inboundSchema, + source: z.string(), +}); + +export function collectionIssue29FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue29$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue29' from JSON`, + ); +} + +/** @internal */ +export const Health29$inboundSchema: z.ZodEnum = z.enum( + Health29, +); + +/** @internal */ +export const Lifecycle29$inboundSchema: z.ZodEnum = z.enum( + Lifecycle29, +); + +/** @internal */ +export const DataStatus29$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue29$inboundSchema)), + health: Health29$inboundSchema, + lifecycle: Lifecycle29$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus29FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus29$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus29' from JSON`, + ); +} + +/** @internal */ +export const DataAzureTable$inboundSchema: z.ZodType = + z.object({ + endpoint: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + signedIdentifierCount: z.nullable(z.int()).optional(), + status: z.lazy(() => DataStatus29$inboundSchema), + storageAccountKind: z.nullable(z.string()).optional(), + storageAccountLocation: z.nullable(z.string()).optional(), + storageAccountName: z.string(), + storageAccountPrimaryStatus: z.nullable(z.string()).optional(), + storageAccountProvisioningState: z.nullable(z.string()).optional(), + storageAccountResourceId: z.nullable(z.string()).optional(), + tableExists: z.boolean(), + tableName: z.string(), + backend: z.literal("azureTable"), + }); + +export function dataAzureTableFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureTable$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureTable' from JSON`, + ); +} + +/** @internal */ +export const Reason28$inboundSchema: z.ZodEnum = z.enum( + Reason28, +); + +/** @internal */ +export const CollectionIssueSeverity28$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity28 +> = z.enum(CollectionIssueSeverity28); + +/** @internal */ +export const CollectionIssue28$inboundSchema: z.ZodType< + CollectionIssue28, + unknown +> = z.object({ + message: z.string(), + reason: Reason28$inboundSchema, + severity: CollectionIssueSeverity28$inboundSchema, + source: z.string(), +}); + +export function collectionIssue28FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue28$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue28' from JSON`, + ); +} + +/** @internal */ +export const Health28$inboundSchema: z.ZodEnum = z.enum( + Health28, +); + +/** @internal */ +export const Lifecycle28$inboundSchema: z.ZodEnum = z.enum( + Lifecycle28, +); + +/** @internal */ +export const DataStatus28$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue28$inboundSchema)), + health: Health28$inboundSchema, + lifecycle: Lifecycle28$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus28FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus28$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus28' from JSON`, + ); +} + +/** @internal */ +export const DataGcpFirestore$inboundSchema: z.ZodType< + DataGcpFirestore, + unknown +> = z.object({ + appEngineIntegrationMode: z.nullable(z.string()).optional(), + cmekEnabled: z.boolean(), + concurrencyMode: z.nullable(z.string()).optional(), + createTime: z.nullable(z.string()).optional(), + databaseEdition: z.nullable(z.string()).optional(), + databaseName: z.string(), + databaseType: z.nullable(z.string()).optional(), + deleteProtectionState: z.nullable(z.string()).optional(), + deleteTime: z.nullable(z.string()).optional(), + earliestVersionTime: z.nullable(z.string()).optional(), + endpoint: z.nullable(z.string()).optional(), + locationId: z.nullable(z.string()).optional(), + pointInTimeRecoveryEnablement: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + sourceInfoPresent: z.boolean(), + status: z.lazy(() => DataStatus28$inboundSchema), + updateTime: z.nullable(z.string()).optional(), + versionRetentionPeriod: z.nullable(z.string()).optional(), + backend: z.literal("gcpFirestore"), +}); + +export function dataGcpFirestoreFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpFirestore$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpFirestore' from JSON`, + ); +} + +/** @internal */ +export const KeySchema$inboundSchema: z.ZodType = z.object({ + attributeName: z.string(), + keyType: z.string(), +}); + +export function keySchemaFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => KeySchema$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'KeySchema' from JSON`, + ); +} + +/** @internal */ +export const Reason27$inboundSchema: z.ZodEnum = z.enum( + Reason27, +); + +/** @internal */ +export const CollectionIssueSeverity27$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity27 +> = z.enum(CollectionIssueSeverity27); + +/** @internal */ +export const CollectionIssue27$inboundSchema: z.ZodType< + CollectionIssue27, + unknown +> = z.object({ + message: z.string(), + reason: Reason27$inboundSchema, + severity: CollectionIssueSeverity27$inboundSchema, + source: z.string(), +}); + +export function collectionIssue27FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue27$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue27' from JSON`, + ); +} + +/** @internal */ +export const Health27$inboundSchema: z.ZodEnum = z.enum( + Health27, +); + +/** @internal */ +export const Lifecycle27$inboundSchema: z.ZodEnum = z.enum( + Lifecycle27, +); + +/** @internal */ +export const DataStatus27$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue27$inboundSchema)), + health: Health27$inboundSchema, + lifecycle: Lifecycle27$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus27FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus27$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus27' from JSON`, + ); +} + +/** @internal */ +export const DataAwsDynamoDb$inboundSchema: z.ZodType< + DataAwsDynamoDb, + unknown +> = z.object({ + billingMode: z.nullable(z.string()).optional(), + deletionProtectionEnabled: z.nullable(z.boolean()).optional(), + globalSecondaryIndexCount: z.nullable(z.int()).optional(), + itemCount: z.nullable(z.int()).optional(), + keySchema: z.array(z.lazy(() => KeySchema$inboundSchema)), + localSecondaryIndexCount: z.nullable(z.int()).optional(), + name: z.string(), + region: z.nullable(z.string()).optional(), + replicaCount: z.nullable(z.int()).optional(), + restoreInProgress: z.nullable(z.boolean()).optional(), + sseStatus: z.nullable(z.string()).optional(), + sseType: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus27$inboundSchema), + streamEnabled: z.nullable(z.boolean()).optional(), + streamViewType: z.nullable(z.string()).optional(), + tableArn: z.nullable(z.string()).optional(), + tableClass: z.nullable(z.string()).optional(), + tableSizeBytes: z.nullable(z.int()).optional(), + tableStatus: z.nullable(z.string()).optional(), + ttlAttributeName: z.nullable(z.string()).optional(), + ttlStatus: z.nullable(z.string()).optional(), + backend: z.literal("awsDynamoDb"), +}); + +export function dataAwsDynamoDbFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsDynamoDb$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsDynamoDb' from JSON`, + ); +} + +/** @internal */ +export const DataUnion7$inboundSchema: z.ZodType = z.union( + [ + z.lazy(() => DataAwsDynamoDb$inboundSchema), + z.lazy(() => DataGcpFirestore$inboundSchema), + z.lazy(() => DataAzureTable$inboundSchema), + z.lazy(() => DataLocal7$inboundSchema), + ], +); + +export function dataUnion7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion7' from JSON`, + ); +} + +/** @internal */ +export const DataKv$inboundSchema: z.ZodType = z.object({ + data: z.union([ + z.lazy(() => DataAwsDynamoDb$inboundSchema), + z.lazy(() => DataGcpFirestore$inboundSchema), + z.lazy(() => DataAzureTable$inboundSchema), + z.lazy(() => DataLocal7$inboundSchema), + ]), + resourceType: z.literal("kv"), +}); + +export function dataKvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataKv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataKv' from JSON`, + ); +} + +/** @internal */ +export const Reason26$inboundSchema: z.ZodEnum = z.enum( + Reason26, +); + +/** @internal */ +export const CollectionIssueSeverity26$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity26 +> = z.enum(CollectionIssueSeverity26); + +/** @internal */ +export const CollectionIssue26$inboundSchema: z.ZodType< + CollectionIssue26, + unknown +> = z.object({ + message: z.string(), + reason: Reason26$inboundSchema, + severity: CollectionIssueSeverity26$inboundSchema, + source: z.string(), +}); + +export function collectionIssue26FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue26$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue26' from JSON`, + ); +} + +/** @internal */ +export const Health26$inboundSchema: z.ZodEnum = z.enum( + Health26, +); + +/** @internal */ +export const Lifecycle26$inboundSchema: z.ZodEnum = z.enum( + Lifecycle26, +); + +/** @internal */ +export const DataStatus26$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue26$inboundSchema)), + health: Health26$inboundSchema, + lifecycle: Lifecycle26$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus26FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus26$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus26' from JSON`, + ); +} + +/** @internal */ +export const DataLocal6$inboundSchema: z.ZodType = z + .object({ + name: z.string(), + path: z.nullable(z.string()).optional(), + serviceStatus: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus26$inboundSchema), + backend: z.literal("local"), + }); + +export function dataLocal6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataLocal6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataLocal6' from JSON`, + ); +} + +/** @internal */ +export const Reason25$inboundSchema: z.ZodEnum = z.enum( + Reason25, +); + +/** @internal */ +export const CollectionIssueSeverity25$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity25 +> = z.enum(CollectionIssueSeverity25); + +/** @internal */ +export const CollectionIssue25$inboundSchema: z.ZodType< + CollectionIssue25, + unknown +> = z.object({ + message: z.string(), + reason: Reason25$inboundSchema, + severity: CollectionIssueSeverity25$inboundSchema, + source: z.string(), +}); + +export function collectionIssue25FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue25$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue25' from JSON`, + ); +} + +/** @internal */ +export const Health25$inboundSchema: z.ZodEnum = z.enum( + Health25, +); + +/** @internal */ +export const Lifecycle25$inboundSchema: z.ZodEnum = z.enum( + Lifecycle25, +); + +/** @internal */ +export const DataStatus25$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue25$inboundSchema)), + health: Health25$inboundSchema, + lifecycle: Lifecycle25$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus25FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus25$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus25' from JSON`, + ); +} + +/** @internal */ +export const DataAzureServiceBus$inboundSchema: z.ZodType< + DataAzureServiceBus, + unknown +> = z.object({ + accessedAt: z.nullable(z.string()).optional(), + activeMessageCount: z.nullable(z.int()).optional(), + autoDeleteOnIdle: z.nullable(z.string()).optional(), + createdAt: z.nullable(z.string()).optional(), + deadLetterMessageCount: z.nullable(z.int()).optional(), + deadLetteringOnMessageExpiration: z.nullable(z.boolean()).optional(), + defaultMessageTimeToLive: z.nullable(z.string()).optional(), + duplicateDetectionHistoryTimeWindow: z.nullable(z.string()).optional(), + enableBatchedOperations: z.nullable(z.boolean()).optional(), + enableExpress: z.nullable(z.boolean()).optional(), + enablePartitioning: z.nullable(z.boolean()).optional(), + endpoint: z.nullable(z.string()).optional(), + forwardDeadLetteredMessagesTo: z.nullable(z.string()).optional(), + forwardTo: z.nullable(z.string()).optional(), + lockDuration: z.nullable(z.string()).optional(), + maxDeliveryCount: z.nullable(z.int()).optional(), + maxMessageSizeInKilobytes: z.nullable(z.int()).optional(), + maxSizeInMegabytes: z.nullable(z.int()).optional(), + messageCount: z.nullable(z.int()).optional(), + name: z.string(), + namespaceName: z.string(), + queueStatus: z.nullable(z.string()).optional(), + requiresDuplicateDetection: z.nullable(z.boolean()).optional(), + requiresSession: z.nullable(z.boolean()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + scheduledMessageCount: z.nullable(z.int()).optional(), + sizeInBytes: z.nullable(z.int()).optional(), + status: z.lazy(() => DataStatus25$inboundSchema), + transferDeadLetterMessageCount: z.nullable(z.int()).optional(), + transferMessageCount: z.nullable(z.int()).optional(), + updatedAt: z.nullable(z.string()).optional(), + backend: z.literal("azureServiceBus"), +}); + +export function dataAzureServiceBusFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureServiceBus$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureServiceBus' from JSON`, + ); +} + +/** @internal */ +export const Reason24$inboundSchema: z.ZodEnum = z.enum( + Reason24, +); + +/** @internal */ +export const CollectionIssueSeverity24$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity24 +> = z.enum(CollectionIssueSeverity24); + +/** @internal */ +export const CollectionIssue24$inboundSchema: z.ZodType< + CollectionIssue24, + unknown +> = z.object({ + message: z.string(), + reason: Reason24$inboundSchema, + severity: CollectionIssueSeverity24$inboundSchema, + source: z.string(), +}); + +export function collectionIssue24FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue24$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue24' from JSON`, + ); +} + +/** @internal */ +export const Health24$inboundSchema: z.ZodEnum = z.enum( + Health24, +); + +/** @internal */ +export const Lifecycle24$inboundSchema: z.ZodEnum = z.enum( + Lifecycle24, +); + +/** @internal */ +export const DataStatus24$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue24$inboundSchema)), + health: Health24$inboundSchema, + lifecycle: Lifecycle24$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus24FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus24$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus24' from JSON`, + ); +} + +/** @internal */ +export const DataGcpPubSub$inboundSchema: z.ZodType = z + .object({ + endpoint: z.nullable(z.string()).optional(), + kmsKeyName: z.nullable(z.string()).optional(), + messageStorageAllowedPersistenceRegions: z.array(z.string()), + messageStorageEnforceInTransit: z.nullable(z.boolean()).optional(), + projectId: z.nullable(z.string()).optional(), + schemaEncoding: z.nullable(z.string()).optional(), + schemaFirstRevisionId: z.nullable(z.string()).optional(), + schemaLastRevisionId: z.nullable(z.string()).optional(), + schemaName: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus24$inboundSchema), + subscriptionAckDeadlineSeconds: z.nullable(z.int()).optional(), + subscriptionDeadLetterMaxDeliveryAttempts: z.nullable(z.int()).optional(), + subscriptionDeadLetterTopic: z.nullable(z.string()).optional(), + subscriptionDetached: z.nullable(z.boolean()).optional(), + subscriptionEnableMessageOrdering: z.nullable(z.boolean()).optional(), + subscriptionFilter: z.nullable(z.string()).optional(), + subscriptionFullName: z.nullable(z.string()).optional(), + subscriptionLabels: z.record(z.string(), z.string()), + subscriptionMessageRetentionDuration: z.nullable(z.string()).optional(), + subscriptionName: z.nullable(z.string()).optional(), + subscriptionPushAttributes: z.record(z.string(), z.string()), + subscriptionPushConfigPresent: z.nullable(z.boolean()).optional(), + subscriptionPushEndpoint: z.nullable(z.string()).optional(), + subscriptionPushNoWrapperWriteMetadata: z.nullable(z.boolean()).optional(), + subscriptionPushOidcAudience: z.nullable(z.string()).optional(), + subscriptionPushOidcServiceAccountEmail: z.nullable(z.string()).optional(), + subscriptionPushPubsubWrapperWriteMetadata: z.nullable(z.boolean()) + .optional(), + subscriptionRetainAckedMessages: z.nullable(z.boolean()).optional(), + subscriptionState: z.nullable(z.string()).optional(), + topicFullName: z.nullable(z.string()).optional(), + topicLabels: z.record(z.string(), z.string()), + topicMessageRetentionDuration: z.nullable(z.string()).optional(), + topicName: z.string(), + topicState: z.nullable(z.string()).optional(), + backend: z.literal("gcpPubSub"), + }); + +export function dataGcpPubSubFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpPubSub$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpPubSub' from JSON`, + ); +} + +/** @internal */ +export const Reason23$inboundSchema: z.ZodEnum = z.enum( + Reason23, +); + +/** @internal */ +export const CollectionIssueSeverity23$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity23 +> = z.enum(CollectionIssueSeverity23); + +/** @internal */ +export const CollectionIssue23$inboundSchema: z.ZodType< + CollectionIssue23, + unknown +> = z.object({ + message: z.string(), + reason: Reason23$inboundSchema, + severity: CollectionIssueSeverity23$inboundSchema, + source: z.string(), +}); + +export function collectionIssue23FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue23$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue23' from JSON`, + ); +} + +/** @internal */ +export const Health23$inboundSchema: z.ZodEnum = z.enum( + Health23, +); + +/** @internal */ +export const Lifecycle23$inboundSchema: z.ZodEnum = z.enum( + Lifecycle23, +); + +/** @internal */ +export const DataStatus23$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue23$inboundSchema)), + health: Health23$inboundSchema, + lifecycle: Lifecycle23$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus23FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus23$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus23' from JSON`, + ); +} + +/** @internal */ +export const DataAwsSqs$inboundSchema: z.ZodType = z + .object({ + approximateCounts: z.boolean(), + approximateDelayedMessages: z.nullable(z.int()).optional(), + approximateInFlightMessages: z.nullable(z.int()).optional(), + approximateVisibleMessages: z.nullable(z.int()).optional(), + contentBasedDeduplication: z.nullable(z.boolean()).optional(), + deduplicationScope: z.nullable(z.string()).optional(), + delaySeconds: z.nullable(z.int()).optional(), + fifoQueue: z.nullable(z.boolean()).optional(), + fifoThroughputLimit: z.nullable(z.string()).optional(), + kmsDataKeyReusePeriodSeconds: z.nullable(z.int()).optional(), + kmsMasterKeyId: z.nullable(z.string()).optional(), + maximumMessageSize: z.nullable(z.int()).optional(), + messageRetentionPeriodSeconds: z.nullable(z.int()).optional(), + name: z.string(), + queueArn: z.nullable(z.string()).optional(), + queueUrl: z.nullable(z.string()).optional(), + receiveMessageWaitTimeSeconds: z.nullable(z.int()).optional(), + redriveAllowPolicy: z.nullable(z.string()).optional(), + redrivePolicy: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + sqsManagedSseEnabled: z.nullable(z.boolean()).optional(), + sseEnabled: z.nullable(z.boolean()).optional(), + status: z.lazy(() => DataStatus23$inboundSchema), + visibilityTimeoutSeconds: z.nullable(z.int()).optional(), + backend: z.literal("awsSqs"), + }); + +export function dataAwsSqsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsSqs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsSqs' from JSON`, + ); +} + +/** @internal */ +export const DataUnion6$inboundSchema: z.ZodType = z.union( + [ + z.lazy(() => DataAwsSqs$inboundSchema), + z.lazy(() => DataGcpPubSub$inboundSchema), + z.lazy(() => DataAzureServiceBus$inboundSchema), + z.lazy(() => DataLocal6$inboundSchema), + ], +); + +export function dataUnion6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion6' from JSON`, + ); +} + +/** @internal */ +export const DataQueue$inboundSchema: z.ZodType = z.object({ + data: z.union([ + z.lazy(() => DataAwsSqs$inboundSchema), + z.lazy(() => DataGcpPubSub$inboundSchema), + z.lazy(() => DataAzureServiceBus$inboundSchema), + z.lazy(() => DataLocal6$inboundSchema), + ]), + resourceType: z.literal("queue"), +}); + +export function dataQueueFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataQueue$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataQueue' from JSON`, + ); +} + +/** @internal */ +export const CpuUnit10$inboundSchema: z.ZodEnum = z.enum( + CpuUnit10, +); + +/** @internal */ +export const Cpu10$inboundSchema: z.ZodType = z.object({ + unit: CpuUnit10$inboundSchema, + value: z.number(), +}); + +export function cpu10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Cpu10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Cpu10' from JSON`, + ); +} + +/** @internal */ +export const CpuUnion10$inboundSchema: z.ZodType = z.union( + [z.lazy(() => Cpu10$inboundSchema), z.any()], +); + +export function cpuUnion10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuUnion10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuUnion10' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/createfirstpartydeploymentsession.ts b/client-sdks/platform/typescript/src/models/operations/createfirstpartydeploymentsession.ts new file mode 100644 index 000000000..cf959f740 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/createfirstpartydeploymentsession.ts @@ -0,0 +1,42 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +export type CreateFirstPartyDeploymentSessionRequest = { + /** + * Unique identifier for the deployment group. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; +}; + +/** @internal */ +export type CreateFirstPartyDeploymentSessionRequest$Outbound = { + id: string; + workspace?: string | undefined; +}; + +/** @internal */ +export const CreateFirstPartyDeploymentSessionRequest$outboundSchema: z.ZodType< + CreateFirstPartyDeploymentSessionRequest$Outbound, + CreateFirstPartyDeploymentSessionRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), +}); + +export function createFirstPartyDeploymentSessionRequestToJSON( + createFirstPartyDeploymentSessionRequest: + CreateFirstPartyDeploymentSessionRequest, +): string { + return JSON.stringify( + CreateFirstPartyDeploymentSessionRequest$outboundSchema.parse( + createFirstPartyDeploymentSessionRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/getresourcedeploymentdetail.ts b/client-sdks/platform/typescript/src/models/operations/getresourcedeploymentdetail.ts deleted file mode 100644 index 13501a118..000000000 --- a/client-sdks/platform/typescript/src/models/operations/getresourcedeploymentdetail.ts +++ /dev/null @@ -1,17226 +0,0 @@ -/* - * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - */ - -import * as z from "zod/v4"; -import { safeParse } from "../../lib/schemas.js"; -import { ClosedEnum } from "../../types/enums.js"; -import { Result as SafeParseResult } from "../../types/fp.js"; -import { SDKValidationError } from "../errors/sdkvalidationerror.js"; - -export const GetResourceDeploymentDetailArea = { - Container: "container", - Worker: "worker", - Daemon: "daemon", -} as const; -export type GetResourceDeploymentDetailArea = ClosedEnum< - typeof GetResourceDeploymentDetailArea ->; - -export type GetResourceDeploymentDetailRequest = { - area: GetResourceDeploymentDetailArea; - deploymentId: string; - resourceId: string; - /** - * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. - */ - workspace?: string | undefined; - /** - * Filter by project ID or name. - */ - project: string; -}; - -export type GetResourceDeploymentDetailDeployment = { - deploymentId: string; - deploymentName: string; - deploymentGroupId: string | null; - deploymentGroupName: string | null; - resourceType: string; - resourceId: string; - backend: string; - controllerPlatform: string; - health: string; - lifecycle: string; - message: string | null; - partial: boolean; - providerStale: boolean; - platformStale: boolean; - desiredCount: number | null; - currentCount: number | null; - readyCount: number | null; - observedAt: Date; -}; - -export type HeartbeatMissing = { - status: "missing"; - deploymentId: string; - resourceId: string; - resourceType: string; -}; - -export const BackendEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Managed: "managed", - External: "external", - Test: "test", -} as const; -export type BackendEnum = ClosedEnum; - -/** - * Represents the target cloud platform. - */ -export const ControllerPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type ControllerPlatform = ClosedEnum; - -export const Reason59 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason59 = ClosedEnum; - -export const CollectionIssueSeverity59 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity59 = ClosedEnum< - typeof CollectionIssueSeverity59 ->; - -export type CollectionIssue59 = { - message: string; - reason: Reason59; - severity: CollectionIssueSeverity59; - source: string; -}; - -export const Health59 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health59 = ClosedEnum; - -export const Lifecycle59 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle59 = ClosedEnum; - -export type DataStatus59 = { - collectionIssues: Array; - health: Health59; - lifecycle: Lifecycle59; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type Data5 = { - createdAt?: string | null | undefined; - disableLocalAuth?: boolean | null | undefined; - location?: string | null | undefined; - metricId?: string | null | undefined; - minimumTlsVersion?: string | null | undefined; - name: string; - namespaceStatus?: string | null | undefined; - premiumMessagingPartitions?: number | null | undefined; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - serviceBusEndpoint?: string | null | undefined; - skuCapacity?: number | null | undefined; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: DataStatus59; - updatedAt?: string | null | undefined; - zoneRedundant?: boolean | null | undefined; -}; - -export type DataAzureServiceBusNamespace = { - data: Data5; - resourceType: "azure_service_bus_namespace"; -}; - -export const Reason58 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason58 = ClosedEnum; - -export const CollectionIssueSeverity58 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity58 = ClosedEnum< - typeof CollectionIssueSeverity58 ->; - -export type CollectionIssue58 = { - message: string; - reason: Reason58; - severity: CollectionIssueSeverity58; - source: string; -}; - -export const Health58 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health58 = ClosedEnum; - -export const Lifecycle58 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle58 = ClosedEnum; - -export type DataStatus58 = { - collectionIssues: Array; - health: Health58; - lifecycle: Lifecycle58; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type WorkloadProfile = { - maximumCount?: number | null | undefined; - minimumCount?: number | null | undefined; - name: string; - workloadProfileType: string; -}; - -export type Data4 = { - customDomainVerificationId?: string | null | undefined; - defaultDomain?: string | null | undefined; - eventStreamEndpoint?: string | null | undefined; - infrastructureResourceGroup?: string | null | undefined; - kind?: string | null | undefined; - location?: string | null | undefined; - name: string; - provisioningState?: string | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - staticIp?: string | null | undefined; - status: DataStatus58; - workloadProfileCount: number; - workloadProfiles: Array; - zoneRedundant?: boolean | null | undefined; -}; - -export type DataAzureContainerAppsEnvironment = { - data: Data4; - resourceType: "azure_container_apps_environment"; -}; - -export type PrimaryEndpoints = { - blob?: string | null | undefined; - dfs?: string | null | undefined; - file?: string | null | undefined; - queue?: string | null | undefined; - table?: string | null | undefined; - web?: string | null | undefined; -}; - -export type SecondaryEndpoints = { - blob?: string | null | undefined; - dfs?: string | null | undefined; - file?: string | null | undefined; - queue?: string | null | undefined; - table?: string | null | undefined; - web?: string | null | undefined; -}; - -export const Reason57 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason57 = ClosedEnum; - -export const CollectionIssueSeverity57 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity57 = ClosedEnum< - typeof CollectionIssueSeverity57 ->; - -export type CollectionIssue57 = { - message: string; - reason: Reason57; - severity: CollectionIssueSeverity57; - source: string; -}; - -export const Health57 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health57 = ClosedEnum; - -export const Lifecycle57 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle57 = ClosedEnum; - -export type DataStatus57 = { - collectionIssues: Array; - health: Health57; - lifecycle: Lifecycle57; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type Data3 = { - allowBlobPublicAccess?: boolean | null | undefined; - allowSharedKeyAccess?: boolean | null | undefined; - encryptionKeySource?: string | null | undefined; - kind?: string | null | undefined; - location?: string | null | undefined; - minimumTlsVersion?: string | null | undefined; - name: string; - networkBypass?: string | null | undefined; - networkDefaultAction?: string | null | undefined; - networkIpRuleCount?: number | null | undefined; - networkResourceAccessRuleCount?: number | null | undefined; - networkVirtualNetworkRuleCount?: number | null | undefined; - primaryEndpoints: PrimaryEndpoints; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - requireInfrastructureEncryption?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - secondaryEndpoints: SecondaryEndpoints; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: DataStatus57; - supportsHttpsTrafficOnly?: boolean | null | undefined; -}; - -export type DataAzureStorageAccount = { - data: Data3; - resourceType: "azure_storage_account"; -}; - -export const Reason56 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason56 = ClosedEnum; - -export const CollectionIssueSeverity56 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity56 = ClosedEnum< - typeof CollectionIssueSeverity56 ->; - -export type CollectionIssue56 = { - message: string; - reason: Reason56; - severity: CollectionIssueSeverity56; - source: string; -}; - -export const Health56 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health56 = ClosedEnum; - -export const Lifecycle56 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle56 = ClosedEnum; - -export type DataStatus56 = { - collectionIssues: Array; - health: Health56; - lifecycle: Lifecycle56; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type Data2 = { - location?: string | null | undefined; - managedTags: { [k: string]: string }; - name: string; - provisioningState?: string | null | undefined; - resourceId?: string | null | undefined; - status: DataStatus56; -}; - -export type DataAzureResourceGroup = { - data: Data2; - resourceType: "azure_resource_group"; -}; - -export const Reason55 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason55 = ClosedEnum; - -export const CollectionIssueSeverity55 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity55 = ClosedEnum< - typeof CollectionIssueSeverity55 ->; - -export type CollectionIssue55 = { - message: string; - reason: Reason55; - severity: CollectionIssueSeverity55; - source: string; -}; - -export const Health55 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health55 = ClosedEnum; - -export const Lifecycle55 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle55 = ClosedEnum; - -export type DataStatus55 = { - collectionIssues: Array; - health: Health55; - lifecycle: Lifecycle55; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureResourceProvider = { - namespace: string; - providerId?: string | null | undefined; - registered: boolean; - registrationPolicy?: string | null | undefined; - registrationState?: string | null | undefined; - resourceTypeCount: number; - status: DataStatus55; - backend: "azureResourceProvider"; -}; - -export const Reason54 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason54 = ClosedEnum; - -export const CollectionIssueSeverity54 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity54 = ClosedEnum< - typeof CollectionIssueSeverity54 ->; - -export type CollectionIssue54 = { - message: string; - reason: Reason54; - severity: CollectionIssueSeverity54; - source: string; -}; - -export const Health54 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health54 = ClosedEnum; - -export const Lifecycle54 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle54 = ClosedEnum; - -export type DataStatus54 = { - collectionIssues: Array; - health: Health54; - lifecycle: Lifecycle54; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpServiceUsage = { - enabled: boolean; - lastOperationName?: string | null | undefined; - projectId: string; - serviceName: string; - serviceResourceName?: string | null | undefined; - state?: string | null | undefined; - status: DataStatus54; - title?: string | null | undefined; - backend: "gcpServiceUsage"; -}; - -export type DataUnion14 = DataGcpServiceUsage | DataAzureResourceProvider; - -export type DataServiceActivation = { - data: DataGcpServiceUsage | DataAzureResourceProvider; - resourceType: "service_activation"; -}; - -export type InvolvedObject9 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion9 = InvolvedObject9 | any; - -export type Source9 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion9 = Source9 | any; - -export type Event12 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject9 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: Source9 | any | null | undefined; - type?: string | null | undefined; -}; - -export const Reason53 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason53 = ClosedEnum; - -export const CollectionIssueSeverity53 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity53 = ClosedEnum< - typeof CollectionIssueSeverity53 ->; - -export type CollectionIssue53 = { - message: string; - reason: Reason53; - severity: CollectionIssueSeverity53; - source: string; -}; - -export const Health53 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health53 = ClosedEnum; - -export const Lifecycle53 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle53 = ClosedEnum; - -export type DataStatus53 = { - collectionIssues: Array; - health: Health53; - lifecycle: Lifecycle53; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataKubernetesJob = { - active?: number | null | undefined; - completionTime?: Date | null | undefined; - conditionCount: number; - events: Array; - failed?: number | null | undefined; - imageDigest?: string | null | undefined; - jobName: string; - namespace: string; - startTime?: Date | null | undefined; - status: DataStatus53; - succeeded?: number | null | undefined; - backend: "kubernetesJob"; -}; - -export const Reason52 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason52 = ClosedEnum; - -export const CollectionIssueSeverity52 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity52 = ClosedEnum< - typeof CollectionIssueSeverity52 ->; - -export type CollectionIssue52 = { - message: string; - reason: Reason52; - severity: CollectionIssueSeverity52; - source: string; -}; - -export const Health52 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health52 = ClosedEnum; - -export const Lifecycle52 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle52 = ClosedEnum; - -export type DataStatus52 = { - collectionIssues: Array; - health: Health52; - lifecycle: Lifecycle52; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureContainerApps2 = { - environmentVariableCount: number; - managedEnvironmentId: string; - managedIdentityId?: string | null | undefined; - resourceGroupName: string; - resourcePrefix?: string | null | undefined; - status: DataStatus52; - backend: "azureContainerApps"; -}; - -export const Reason51 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason51 = ClosedEnum; - -export const CollectionIssueSeverity51 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity51 = ClosedEnum< - typeof CollectionIssueSeverity51 ->; - -export type CollectionIssue51 = { - message: string; - reason: Reason51; - severity: CollectionIssueSeverity51; - source: string; -}; - -export const Health51 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health51 = ClosedEnum; - -export const Lifecycle51 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle51 = ClosedEnum; - -export type DataStatus51 = { - collectionIssues: Array; - health: Health51; - lifecycle: Lifecycle51; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpCloudBuild = { - buildConfigId: string; - environmentVariableCount: number; - location: string; - projectId: string; - serviceAccount?: string | null | undefined; - status: DataStatus51; - backend: "gcpCloudBuild"; -}; - -export const Reason50 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason50 = ClosedEnum; - -export const CollectionIssueSeverity50 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity50 = ClosedEnum< - typeof CollectionIssueSeverity50 ->; - -export type CollectionIssue50 = { - message: string; - reason: Reason50; - severity: CollectionIssueSeverity50; - source: string; -}; - -export const Health50 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health50 = ClosedEnum; - -export const Lifecycle50 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle50 = ClosedEnum; - -export type DataStatus50 = { - collectionIssues: Array; - health: Health50; - lifecycle: Lifecycle50; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsCodeBuild = { - artifactsEncryptionDisabled?: boolean | null | undefined; - artifactsType?: string | null | undefined; - cloudWatchLogsStatus?: string | null | undefined; - computeType?: string | null | undefined; - created?: number | null | undefined; - description?: string | null | undefined; - encryptionKeyPresent: boolean; - environmentImage?: string | null | undefined; - environmentType?: string | null | undefined; - environmentVariableCount: number; - imagePullCredentialsType?: string | null | undefined; - lastModified?: number | null | undefined; - privilegedMode?: boolean | null | undefined; - projectArn?: string | null | undefined; - projectName: string; - queuedTimeoutInMinutes?: number | null | undefined; - s3LogsStatus?: string | null | undefined; - serviceRolePresent: boolean; - sourceType?: string | null | undefined; - status: DataStatus50; - timeoutInMinutes?: number | null | undefined; - backend: "awsCodeBuild"; -}; - -export type DataUnion13 = - | DataAwsCodeBuild - | DataGcpCloudBuild - | DataAzureContainerApps2 - | DataKubernetesJob; - -export type DataBuild = { - data: - | DataAwsCodeBuild - | DataGcpCloudBuild - | DataAzureContainerApps2 - | DataKubernetesJob; - resourceType: "build"; -}; - -export const Reason49 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason49 = ClosedEnum; - -export const CollectionIssueSeverity49 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity49 = ClosedEnum< - typeof CollectionIssueSeverity49 ->; - -export type CollectionIssue49 = { - message: string; - reason: Reason49; - severity: CollectionIssueSeverity49; - source: string; -}; - -export const Health49 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health49 = ClosedEnum; - -export const Lifecycle49 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle49 = ClosedEnum; - -export type DataStatus49 = { - collectionIssues: Array; - health: Health49; - lifecycle: Lifecycle49; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal10 = { - reachable: boolean; - registryUrl: string; - status: DataStatus49; - backend: "local"; -}; - -export const Reason48 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason48 = ClosedEnum; - -export const CollectionIssueSeverity48 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity48 = ClosedEnum< - typeof CollectionIssueSeverity48 ->; - -export type CollectionIssue48 = { - message: string; - reason: Reason48; - severity: CollectionIssueSeverity48; - source: string; -}; - -export const Health48 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health48 = ClosedEnum; - -export const Lifecycle48 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle48 = ClosedEnum; - -export type DataStatus48 = { - collectionIssues: Array; - health: Health48; - lifecycle: Lifecycle48; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureContainerRegistry = { - adminUserEnabled: boolean; - anonymousPullEnabled: boolean; - creationDate?: string | null | undefined; - dataEndpointEnabled?: boolean | null | undefined; - dataEndpointHostNames: Array; - encryptionKeyIdentifierPresent: boolean; - encryptionKeyVaultUriPresent: boolean; - encryptionStatus?: string | null | undefined; - ipRuleCount: number; - location: string; - loginServer?: string | null | undefined; - managedTagCount: number; - name: string; - networkRuleBypassOptions: string; - networkRuleDefaultAction?: string | null | undefined; - policiesPresent: boolean; - policyCount: number; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess: string; - resourceGroup: string; - resourceId?: string | null | undefined; - skuName: string; - skuTier?: string | null | undefined; - status: DataStatus48; - type?: string | null | undefined; - zoneRedundancy: string; - backend: "azureContainerRegistry"; -}; - -export const Reason47 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason47 = ClosedEnum; - -export const CollectionIssueSeverity47 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity47 = ClosedEnum< - typeof CollectionIssueSeverity47 ->; - -export type CollectionIssue47 = { - message: string; - reason: Reason47; - severity: CollectionIssueSeverity47; - source: string; -}; - -export const Health47 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health47 = ClosedEnum; - -export const Lifecycle47 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle47 = ClosedEnum; - -export type DataStatus47 = { - collectionIssues: Array; - health: Health47; - lifecycle: Lifecycle47; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpArtifactRegistry = { - cleanupPolicyCount: number; - cleanupPolicyDryRun?: boolean | null | undefined; - createTime?: string | null | undefined; - description?: string | null | undefined; - format?: string | null | undefined; - iamBindingCount: number; - iamPolicyEtagPresent: boolean; - iamRoles: Array; - kmsKeyNamePresent: boolean; - labelCount: number; - location: string; - mode?: string | null | undefined; - name?: string | null | undefined; - projectId: string; - pullServiceAccountEmail?: string | null | undefined; - pushServiceAccountEmail?: string | null | undefined; - repositoryId: string; - satisfiesPzs?: boolean | null | undefined; - sizeBytes?: string | null | undefined; - status: DataStatus47; - updateTime?: string | null | undefined; - backend: "gcpArtifactRegistry"; -}; - -export type Repository = { - createdAt: number; - encryptionType?: string | null | undefined; - imageTagMutability?: string | null | undefined; - kmsKeyPresent: boolean; - registryId: string; - repositoryArn: string; - repositoryName: string; - repositoryUri: string; - scanOnPush?: boolean | null | undefined; -}; - -export const Reason46 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason46 = ClosedEnum; - -export const CollectionIssueSeverity46 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity46 = ClosedEnum< - typeof CollectionIssueSeverity46 ->; - -export type CollectionIssue46 = { - message: string; - reason: Reason46; - severity: CollectionIssueSeverity46; - source: string; -}; - -export const Health46 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health46 = ClosedEnum; - -export const Lifecycle46 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle46 = ClosedEnum; - -export type DataStatus46 = { - collectionIssues: Array; - health: Health46; - lifecycle: Lifecycle46; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsEcr = { - pullRoleArn?: string | null | undefined; - pushRoleArn?: string | null | undefined; - region: string; - registryId: string; - registryUri: string; - repositories: Array; - repositoriesTruncated: boolean; - repositoryCount: number; - repositoryPrefix: string; - status: DataStatus46; - backend: "awsEcr"; -}; - -export type DataUnion12 = - | DataAwsEcr - | DataGcpArtifactRegistry - | DataAzureContainerRegistry - | DataLocal10; - -export type DataArtifactRegistry = { - data: - | DataAwsEcr - | DataGcpArtifactRegistry - | DataAzureContainerRegistry - | DataLocal10; - resourceType: "artifact-registry"; -}; - -export const Reason45 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason45 = ClosedEnum; - -export const CollectionIssueSeverity45 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity45 = ClosedEnum< - typeof CollectionIssueSeverity45 ->; - -export type CollectionIssue45 = { - message: string; - reason: Reason45; - severity: CollectionIssueSeverity45; - source: string; -}; - -export const Health45 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health45 = ClosedEnum; - -export const Lifecycle45 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle45 = ClosedEnum; - -export type DataStatus45 = { - collectionIssues: Array; - health: Health45; - lifecycle: Lifecycle45; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureManagedIdentity2 = { - ficName?: string | null | undefined; - roleAssignmentIds: Array; - roleDefinitionId?: string | null | undefined; - status: DataStatus45; - tenantId?: string | null | undefined; - uamiClientId?: string | null | undefined; - uamiPrincipalId?: string | null | undefined; - uamiResourceId?: string | null | undefined; - backend: "azureManagedIdentity"; -}; - -export const Reason44 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason44 = ClosedEnum; - -export const CollectionIssueSeverity44 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity44 = ClosedEnum< - typeof CollectionIssueSeverity44 ->; - -export type CollectionIssue44 = { - message: string; - reason: Reason44; - severity: CollectionIssueSeverity44; - source: string; -}; - -export const Health44 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health44 = ClosedEnum; - -export const Lifecycle44 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle44 = ClosedEnum; - -export type DataStatus44 = { - collectionIssues: Array; - health: Health44; - lifecycle: Lifecycle44; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpServiceAccount2 = { - impersonationGranted: boolean; - roleBound: boolean; - serviceAccountEmail?: string | null | undefined; - serviceAccountUniqueId?: string | null | undefined; - status: DataStatus44; - backend: "gcpServiceAccount"; -}; - -export const Reason43 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason43 = ClosedEnum; - -export const CollectionIssueSeverity43 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity43 = ClosedEnum< - typeof CollectionIssueSeverity43 ->; - -export type CollectionIssue43 = { - message: string; - reason: Reason43; - severity: CollectionIssueSeverity43; - source: string; -}; - -export const Health43 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health43 = ClosedEnum; - -export const Lifecycle43 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle43 = ClosedEnum; - -export type DataStatus43 = { - collectionIssues: Array; - health: Health43; - lifecycle: Lifecycle43; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsIamRole2 = { - managementPermissionsApplied: boolean; - roleArn?: string | null | undefined; - roleName?: string | null | undefined; - status: DataStatus43; - backend: "awsIamRole"; -}; - -export type DataUnion11 = - | DataAwsIamRole2 - | DataGcpServiceAccount2 - | DataAzureManagedIdentity2; - -export type DataRemoteStackManagement = { - data: DataAwsIamRole2 | DataGcpServiceAccount2 | DataAzureManagedIdentity2; - resourceType: "remote-stack-management"; -}; - -export const Reason42 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason42 = ClosedEnum; - -export const CollectionIssueSeverity42 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity42 = ClosedEnum< - typeof CollectionIssueSeverity42 ->; - -export type CollectionIssue42 = { - message: string; - reason: Reason42; - severity: CollectionIssueSeverity42; - source: string; -}; - -export const Health42 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health42 = ClosedEnum; - -export const Lifecycle42 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle42 = ClosedEnum; - -export type DataStatus42 = { - collectionIssues: Array; - health: Health42; - lifecycle: Lifecycle42; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureVnet = { - applicationGatewaySubnetName?: string | null | undefined; - cidrBlock?: string | null | undefined; - isByoVnet: boolean; - lastByoVnetVerificationErrorCode?: string | null | undefined; - location?: string | null | undefined; - natGatewayId?: string | null | undefined; - nsgId?: string | null | undefined; - privateSubnetName?: string | null | undefined; - publicIpId?: string | null | undefined; - publicSubnetName?: string | null | undefined; - resourceGroup?: string | null | undefined; - status: DataStatus42; - vnetName?: string | null | undefined; - vnetResourceId?: string | null | undefined; - backend: "azureVnet"; -}; - -export const Reason41 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason41 = ClosedEnum; - -export const CollectionIssueSeverity41 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity41 = ClosedEnum< - typeof CollectionIssueSeverity41 ->; - -export type CollectionIssue41 = { - message: string; - reason: Reason41; - severity: CollectionIssueSeverity41; - source: string; -}; - -export const Health41 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health41 = ClosedEnum; - -export const Lifecycle41 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle41 = ClosedEnum; - -export type DataStatus41 = { - collectionIssues: Array; - health: Health41; - lifecycle: Lifecycle41; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpVpc = { - cidrBlock?: string | null | undefined; - cloudNatName?: string | null | undefined; - firewallName?: string | null | undefined; - isByoVpc: boolean; - networkName?: string | null | undefined; - networkSelfLink?: string | null | undefined; - region?: string | null | undefined; - routerName?: string | null | undefined; - status: DataStatus41; - subnetworkName?: string | null | undefined; - subnetworkSelfLink?: string | null | undefined; - backend: "gcpVpc"; -}; - -export const Reason40 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason40 = ClosedEnum; - -export const CollectionIssueSeverity40 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity40 = ClosedEnum< - typeof CollectionIssueSeverity40 ->; - -export type CollectionIssue40 = { - message: string; - reason: Reason40; - severity: CollectionIssueSeverity40; - source: string; -}; - -export const Health40 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health40 = ClosedEnum; - -export const Lifecycle40 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle40 = ClosedEnum; - -export type DataStatus40 = { - collectionIssues: Array; - health: Health40; - lifecycle: Lifecycle40; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsVpc = { - availabilityZones: Array; - cidrBlock?: string | null | undefined; - internetGatewayId?: string | null | undefined; - isByoVpc: boolean; - natGatewayId?: string | null | undefined; - privateSubnetIds: Array; - publicSubnetIds: Array; - routeTableCount: number; - securityGroupId?: string | null | undefined; - status: DataStatus40; - vpcId?: string | null | undefined; - vpcState?: string | null | undefined; - backend: "awsVpc"; -}; - -export type DataUnion10 = DataAwsVpc | DataGcpVpc | DataAzureVnet; - -export type DataNetwork = { - data: DataAwsVpc | DataGcpVpc | DataAzureVnet; - resourceType: "network"; -}; - -export const Reason39 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason39 = ClosedEnum; - -export const CollectionIssueSeverity39 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity39 = ClosedEnum< - typeof CollectionIssueSeverity39 ->; - -export type CollectionIssue39 = { - message: string; - reason: Reason39; - severity: CollectionIssueSeverity39; - source: string; -}; - -export const Health39 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health39 = ClosedEnum; - -export const Lifecycle39 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle39 = ClosedEnum; - -export type DataStatus39 = { - collectionIssues: Array; - health: Health39; - lifecycle: Lifecycle39; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal9 = { - configured: boolean; - identity: string; - status: DataStatus39; - backend: "local"; -}; - -export const Reason38 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason38 = ClosedEnum; - -export const CollectionIssueSeverity38 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity38 = ClosedEnum< - typeof CollectionIssueSeverity38 ->; - -export type CollectionIssue38 = { - message: string; - reason: Reason38; - severity: CollectionIssueSeverity38; - source: string; -}; - -export const Health38 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health38 = ClosedEnum; - -export const Lifecycle38 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle38 = ClosedEnum; - -export type DataStatus38 = { - collectionIssues: Array; - health: Health38; - lifecycle: Lifecycle38; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureManagedIdentity1 = { - clientId?: string | null | undefined; - customRoleDefinitionCount: number; - customRoleDefinitionIds: Array; - isolationScope?: string | null | undefined; - location: string; - managedTagCount: number; - name: string; - principalId?: string | null | undefined; - resourceGroup: string; - resourceId: string; - roleAssignmentCount: number; - roleAssignmentIds: Array; - stackPermissionsApplied: boolean; - status: DataStatus38; - tenantId?: string | null | undefined; - type?: string | null | undefined; - backend: "azureManagedIdentity"; -}; - -export const Reason37 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason37 = ClosedEnum; - -export const CollectionIssueSeverity37 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity37 = ClosedEnum< - typeof CollectionIssueSeverity37 ->; - -export type CollectionIssue37 = { - message: string; - reason: Reason37; - severity: CollectionIssueSeverity37; - source: string; -}; - -export const Health37 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health37 = ClosedEnum; - -export const Lifecycle37 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle37 = ClosedEnum; - -export type DataStatus37 = { - collectionIssues: Array; - health: Health37; - lifecycle: Lifecycle37; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpServiceAccount1 = { - description?: string | null | undefined; - disabled?: boolean | null | undefined; - displayName?: string | null | undefined; - email: string; - etag?: string | null | undefined; - name?: string | null | undefined; - oauth2ClientId?: string | null | undefined; - projectBindingCount: number; - projectId?: string | null | undefined; - projectRoles: Array; - serviceAccountBindingCount: number; - serviceAccountRoles: Array; - status: DataStatus37; - uniqueId?: string | null | undefined; - backend: "gcpServiceAccount"; -}; - -export const Reason36 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason36 = ClosedEnum; - -export const CollectionIssueSeverity36 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity36 = ClosedEnum< - typeof CollectionIssueSeverity36 ->; - -export type CollectionIssue36 = { - message: string; - reason: Reason36; - severity: CollectionIssueSeverity36; - source: string; -}; - -export const Health36 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health36 = ClosedEnum; - -export const Lifecycle36 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle36 = ClosedEnum; - -export type DataStatus36 = { - collectionIssues: Array; - health: Health36; - lifecycle: Lifecycle36; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsIamRole1 = { - assumeRolePolicyPresent: boolean; - attachedPolicyCount: number; - attachedPolicyNames: Array; - createDate: string; - description?: string | null | undefined; - inlinePolicyCount: number; - inlinePolicyNames: Array; - lastUsedDate?: string | null | undefined; - lastUsedRegion?: string | null | undefined; - managedTagCount: number; - maxSessionDuration?: number | null | undefined; - path: string; - permissionsBoundaryArn?: string | null | undefined; - permissionsBoundaryType?: string | null | undefined; - roleArn: string; - roleId: string; - roleName: string; - stackPermissionsApplied: boolean; - status: DataStatus36; - tagCount: number; - backend: "awsIamRole"; -}; - -export type DataUnion9 = - | DataAwsIamRole1 - | DataGcpServiceAccount1 - | DataAzureManagedIdentity1 - | DataLocal9; - -export type DataServiceAccount = { - data: - | DataAwsIamRole1 - | DataGcpServiceAccount1 - | DataAzureManagedIdentity1 - | DataLocal9; - resourceType: "service-account"; -}; - -export const Reason35 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason35 = ClosedEnum; - -export const CollectionIssueSeverity35 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity35 = ClosedEnum< - typeof CollectionIssueSeverity35 ->; - -export type CollectionIssue35 = { - message: string; - reason: Reason35; - severity: CollectionIssueSeverity35; - source: string; -}; - -export const Health35 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health35 = ClosedEnum; - -export const Lifecycle35 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle35 = ClosedEnum; - -export type DataStatus35 = { - collectionIssues: Array; - health: Health35; - lifecycle: Lifecycle35; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal8 = { - isDirectory?: boolean | null | undefined; - modifiedAt?: Date | null | undefined; - path: string; - pathExists: boolean; - readonly?: boolean | null | undefined; - secretMetadataListed: boolean; - status: DataStatus35; - backend: "local"; -}; - -export const Reason34 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason34 = ClosedEnum; - -export const CollectionIssueSeverity34 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity34 = ClosedEnum< - typeof CollectionIssueSeverity34 ->; - -export type CollectionIssue34 = { - message: string; - reason: Reason34; - severity: CollectionIssueSeverity34; - source: string; -}; - -export const Health34 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health34 = ClosedEnum; - -export const Lifecycle34 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle34 = ClosedEnum; - -export type DataStatus34 = { - collectionIssues: Array; - health: Health34; - lifecycle: Lifecycle34; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataKubernetesSecret = { - namespace: string; - prefix: string; - secretMetadataListed: boolean; - status: DataStatus34; - backend: "kubernetesSecret"; -}; - -export const Reason33 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason33 = ClosedEnum; - -export const CollectionIssueSeverity33 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity33 = ClosedEnum< - typeof CollectionIssueSeverity33 ->; - -export type CollectionIssue33 = { - message: string; - reason: Reason33; - severity: CollectionIssueSeverity33; - source: string; -}; - -export const Health33 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health33 = ClosedEnum; - -export const Lifecycle33 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle33 = ClosedEnum; - -export type DataStatus33 = { - collectionIssues: Array; - health: Health33; - lifecycle: Lifecycle33; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureKeyVault = { - accessPolicyCount: number; - location?: string | null | undefined; - name: string; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess: string; - purgeProtectionEnabled?: boolean | null | undefined; - rbacAuthorizationEnabled: boolean; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - secretMetadataListed: boolean; - skuFamily?: string | null | undefined; - skuName?: string | null | undefined; - softDeleteEnabled: boolean; - softDeleteRetentionDays: number; - status: DataStatus33; - vaultUri?: string | null | undefined; - backend: "azureKeyVault"; -}; - -export const Reason32 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason32 = ClosedEnum; - -export const CollectionIssueSeverity32 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity32 = ClosedEnum< - typeof CollectionIssueSeverity32 ->; - -export type CollectionIssue32 = { - message: string; - reason: Reason32; - severity: CollectionIssueSeverity32; - source: string; -}; - -export const Health32 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health32 = ClosedEnum; - -export const Lifecycle32 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle32 = ClosedEnum; - -export type DataStatus32 = { - collectionIssues: Array; - health: Health32; - lifecycle: Lifecycle32; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpSecretManager = { - location: string; - prefix: string; - projectId: string; - secretMetadataListed: boolean; - status: DataStatus32; - backend: "gcpSecretManager"; -}; - -export const Reason31 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason31 = ClosedEnum; - -export const CollectionIssueSeverity31 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity31 = ClosedEnum< - typeof CollectionIssueSeverity31 ->; - -export type CollectionIssue31 = { - message: string; - reason: Reason31; - severity: CollectionIssueSeverity31; - source: string; -}; - -export const Health31 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health31 = ClosedEnum; - -export const Lifecycle31 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle31 = ClosedEnum; - -export type DataStatus31 = { - collectionIssues: Array; - health: Health31; - lifecycle: Lifecycle31; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsParameterStore = { - accountId: string; - hasMoreParameters?: boolean | null | undefined; - latestModifiedAt?: Date | null | undefined; - parameterMetadataSampled: boolean; - prefix: string; - region: string; - sampledAdvancedTierCount?: number | null | undefined; - sampledKmsKeyMetadataPresentCount?: number | null | undefined; - sampledParameterCount?: number | null | undefined; - sampledSecureStringCount?: number | null | undefined; - sampledStringCount?: number | null | undefined; - sampledStringListCount?: number | null | undefined; - status: DataStatus31; - backend: "awsParameterStore"; -}; - -export type DataUnion8 = - | DataAwsParameterStore - | DataGcpSecretManager - | DataAzureKeyVault - | DataKubernetesSecret - | DataLocal8; - -export type DataVault = { - data: - | DataAwsParameterStore - | DataGcpSecretManager - | DataAzureKeyVault - | DataKubernetesSecret - | DataLocal8; - resourceType: "vault"; -}; - -export const Reason30 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason30 = ClosedEnum; - -export const CollectionIssueSeverity30 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity30 = ClosedEnum< - typeof CollectionIssueSeverity30 ->; - -export type CollectionIssue30 = { - message: string; - reason: Reason30; - severity: CollectionIssueSeverity30; - source: string; -}; - -export const Health30 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health30 = ClosedEnum; - -export const Lifecycle30 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle30 = ClosedEnum; - -export type DataStatus30 = { - collectionIssues: Array; - health: Health30; - lifecycle: Lifecycle30; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal7 = { - cloudMetadataSupported: boolean; - isDirectory?: boolean | null | undefined; - name: string; - path: string; - pathExists: boolean; - status: DataStatus30; - backend: "local"; -}; - -export const Reason29 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason29 = ClosedEnum; - -export const CollectionIssueSeverity29 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity29 = ClosedEnum< - typeof CollectionIssueSeverity29 ->; - -export type CollectionIssue29 = { - message: string; - reason: Reason29; - severity: CollectionIssueSeverity29; - source: string; -}; - -export const Health29 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health29 = ClosedEnum; - -export const Lifecycle29 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle29 = ClosedEnum; - -export type DataStatus29 = { - collectionIssues: Array; - health: Health29; - lifecycle: Lifecycle29; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureTable = { - endpoint?: string | null | undefined; - resourceGroup?: string | null | undefined; - signedIdentifierCount?: number | null | undefined; - status: DataStatus29; - storageAccountKind?: string | null | undefined; - storageAccountLocation?: string | null | undefined; - storageAccountName: string; - storageAccountPrimaryStatus?: string | null | undefined; - storageAccountProvisioningState?: string | null | undefined; - storageAccountResourceId?: string | null | undefined; - tableExists: boolean; - tableName: string; - backend: "azureTable"; -}; - -export const Reason28 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason28 = ClosedEnum; - -export const CollectionIssueSeverity28 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity28 = ClosedEnum< - typeof CollectionIssueSeverity28 ->; - -export type CollectionIssue28 = { - message: string; - reason: Reason28; - severity: CollectionIssueSeverity28; - source: string; -}; - -export const Health28 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health28 = ClosedEnum; - -export const Lifecycle28 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle28 = ClosedEnum; - -export type DataStatus28 = { - collectionIssues: Array; - health: Health28; - lifecycle: Lifecycle28; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpFirestore = { - appEngineIntegrationMode?: string | null | undefined; - cmekEnabled: boolean; - concurrencyMode?: string | null | undefined; - createTime?: string | null | undefined; - databaseEdition?: string | null | undefined; - databaseName: string; - databaseType?: string | null | undefined; - deleteProtectionState?: string | null | undefined; - deleteTime?: string | null | undefined; - earliestVersionTime?: string | null | undefined; - endpoint?: string | null | undefined; - locationId?: string | null | undefined; - pointInTimeRecoveryEnablement?: string | null | undefined; - projectId?: string | null | undefined; - sourceInfoPresent: boolean; - status: DataStatus28; - updateTime?: string | null | undefined; - versionRetentionPeriod?: string | null | undefined; - backend: "gcpFirestore"; -}; - -export type KeySchema = { - attributeName: string; - keyType: string; -}; - -export const Reason27 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason27 = ClosedEnum; - -export const CollectionIssueSeverity27 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity27 = ClosedEnum< - typeof CollectionIssueSeverity27 ->; - -export type CollectionIssue27 = { - message: string; - reason: Reason27; - severity: CollectionIssueSeverity27; - source: string; -}; - -export const Health27 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health27 = ClosedEnum; - -export const Lifecycle27 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle27 = ClosedEnum; - -export type DataStatus27 = { - collectionIssues: Array; - health: Health27; - lifecycle: Lifecycle27; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsDynamoDb = { - billingMode?: string | null | undefined; - deletionProtectionEnabled?: boolean | null | undefined; - globalSecondaryIndexCount?: number | null | undefined; - itemCount?: number | null | undefined; - keySchema: Array; - localSecondaryIndexCount?: number | null | undefined; - name: string; - region?: string | null | undefined; - replicaCount?: number | null | undefined; - restoreInProgress?: boolean | null | undefined; - sseStatus?: string | null | undefined; - sseType?: string | null | undefined; - status: DataStatus27; - streamEnabled?: boolean | null | undefined; - streamViewType?: string | null | undefined; - tableArn?: string | null | undefined; - tableClass?: string | null | undefined; - tableSizeBytes?: number | null | undefined; - tableStatus?: string | null | undefined; - ttlAttributeName?: string | null | undefined; - ttlStatus?: string | null | undefined; - backend: "awsDynamoDb"; -}; - -export type DataUnion7 = - | DataAwsDynamoDb - | DataGcpFirestore - | DataAzureTable - | DataLocal7; - -export type DataKv = { - data: DataAwsDynamoDb | DataGcpFirestore | DataAzureTable | DataLocal7; - resourceType: "kv"; -}; - -export const Reason26 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason26 = ClosedEnum; - -export const CollectionIssueSeverity26 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity26 = ClosedEnum< - typeof CollectionIssueSeverity26 ->; - -export type CollectionIssue26 = { - message: string; - reason: Reason26; - severity: CollectionIssueSeverity26; - source: string; -}; - -export const Health26 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health26 = ClosedEnum; - -export const Lifecycle26 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle26 = ClosedEnum; - -export type DataStatus26 = { - collectionIssues: Array; - health: Health26; - lifecycle: Lifecycle26; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal6 = { - name: string; - path?: string | null | undefined; - serviceStatus?: string | null | undefined; - status: DataStatus26; - backend: "local"; -}; - -export const Reason25 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason25 = ClosedEnum; - -export const CollectionIssueSeverity25 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity25 = ClosedEnum< - typeof CollectionIssueSeverity25 ->; - -export type CollectionIssue25 = { - message: string; - reason: Reason25; - severity: CollectionIssueSeverity25; - source: string; -}; - -export const Health25 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health25 = ClosedEnum; - -export const Lifecycle25 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle25 = ClosedEnum; - -export type DataStatus25 = { - collectionIssues: Array; - health: Health25; - lifecycle: Lifecycle25; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureServiceBus = { - accessedAt?: string | null | undefined; - activeMessageCount?: number | null | undefined; - autoDeleteOnIdle?: string | null | undefined; - createdAt?: string | null | undefined; - deadLetterMessageCount?: number | null | undefined; - deadLetteringOnMessageExpiration?: boolean | null | undefined; - defaultMessageTimeToLive?: string | null | undefined; - duplicateDetectionHistoryTimeWindow?: string | null | undefined; - enableBatchedOperations?: boolean | null | undefined; - enableExpress?: boolean | null | undefined; - enablePartitioning?: boolean | null | undefined; - endpoint?: string | null | undefined; - forwardDeadLetteredMessagesTo?: string | null | undefined; - forwardTo?: string | null | undefined; - lockDuration?: string | null | undefined; - maxDeliveryCount?: number | null | undefined; - maxMessageSizeInKilobytes?: number | null | undefined; - maxSizeInMegabytes?: number | null | undefined; - messageCount?: number | null | undefined; - name: string; - namespaceName: string; - queueStatus?: string | null | undefined; - requiresDuplicateDetection?: boolean | null | undefined; - requiresSession?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - scheduledMessageCount?: number | null | undefined; - sizeInBytes?: number | null | undefined; - status: DataStatus25; - transferDeadLetterMessageCount?: number | null | undefined; - transferMessageCount?: number | null | undefined; - updatedAt?: string | null | undefined; - backend: "azureServiceBus"; -}; - -export const Reason24 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason24 = ClosedEnum; - -export const CollectionIssueSeverity24 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity24 = ClosedEnum< - typeof CollectionIssueSeverity24 ->; - -export type CollectionIssue24 = { - message: string; - reason: Reason24; - severity: CollectionIssueSeverity24; - source: string; -}; - -export const Health24 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health24 = ClosedEnum; - -export const Lifecycle24 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle24 = ClosedEnum; - -export type DataStatus24 = { - collectionIssues: Array; - health: Health24; - lifecycle: Lifecycle24; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpPubSub = { - endpoint?: string | null | undefined; - kmsKeyName?: string | null | undefined; - messageStorageAllowedPersistenceRegions: Array; - messageStorageEnforceInTransit?: boolean | null | undefined; - projectId?: string | null | undefined; - schemaEncoding?: string | null | undefined; - schemaFirstRevisionId?: string | null | undefined; - schemaLastRevisionId?: string | null | undefined; - schemaName?: string | null | undefined; - status: DataStatus24; - subscriptionAckDeadlineSeconds?: number | null | undefined; - subscriptionDeadLetterMaxDeliveryAttempts?: number | null | undefined; - subscriptionDeadLetterTopic?: string | null | undefined; - subscriptionDetached?: boolean | null | undefined; - subscriptionEnableMessageOrdering?: boolean | null | undefined; - subscriptionFilter?: string | null | undefined; - subscriptionFullName?: string | null | undefined; - subscriptionLabels: { [k: string]: string }; - subscriptionMessageRetentionDuration?: string | null | undefined; - subscriptionName?: string | null | undefined; - subscriptionPushAttributes: { [k: string]: string }; - subscriptionPushConfigPresent?: boolean | null | undefined; - subscriptionPushEndpoint?: string | null | undefined; - subscriptionPushNoWrapperWriteMetadata?: boolean | null | undefined; - subscriptionPushOidcAudience?: string | null | undefined; - subscriptionPushOidcServiceAccountEmail?: string | null | undefined; - subscriptionPushPubsubWrapperWriteMetadata?: boolean | null | undefined; - subscriptionRetainAckedMessages?: boolean | null | undefined; - subscriptionState?: string | null | undefined; - topicFullName?: string | null | undefined; - topicLabels: { [k: string]: string }; - topicMessageRetentionDuration?: string | null | undefined; - topicName: string; - topicState?: string | null | undefined; - backend: "gcpPubSub"; -}; - -export const Reason23 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason23 = ClosedEnum; - -export const CollectionIssueSeverity23 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity23 = ClosedEnum< - typeof CollectionIssueSeverity23 ->; - -export type CollectionIssue23 = { - message: string; - reason: Reason23; - severity: CollectionIssueSeverity23; - source: string; -}; - -export const Health23 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health23 = ClosedEnum; - -export const Lifecycle23 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle23 = ClosedEnum; - -export type DataStatus23 = { - collectionIssues: Array; - health: Health23; - lifecycle: Lifecycle23; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsSqs = { - approximateCounts: boolean; - approximateDelayedMessages?: number | null | undefined; - approximateInFlightMessages?: number | null | undefined; - approximateVisibleMessages?: number | null | undefined; - contentBasedDeduplication?: boolean | null | undefined; - deduplicationScope?: string | null | undefined; - delaySeconds?: number | null | undefined; - fifoQueue?: boolean | null | undefined; - fifoThroughputLimit?: string | null | undefined; - kmsDataKeyReusePeriodSeconds?: number | null | undefined; - kmsMasterKeyId?: string | null | undefined; - maximumMessageSize?: number | null | undefined; - messageRetentionPeriodSeconds?: number | null | undefined; - name: string; - queueArn?: string | null | undefined; - queueUrl?: string | null | undefined; - receiveMessageWaitTimeSeconds?: number | null | undefined; - redriveAllowPolicy?: string | null | undefined; - redrivePolicy?: string | null | undefined; - region?: string | null | undefined; - sqsManagedSseEnabled?: boolean | null | undefined; - sseEnabled?: boolean | null | undefined; - status: DataStatus23; - visibilityTimeoutSeconds?: number | null | undefined; - backend: "awsSqs"; -}; - -export type DataUnion6 = - | DataAwsSqs - | DataGcpPubSub - | DataAzureServiceBus - | DataLocal6; - -export type DataQueue = { - data: DataAwsSqs | DataGcpPubSub | DataAzureServiceBus | DataLocal6; - resourceType: "queue"; -}; - -export const CpuUnit10 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit10 = ClosedEnum; - -export type Cpu10 = { - unit: CpuUnit10; - value: number; -}; - -export type CpuUnion10 = Cpu10 | any; - -export type InvolvedObject8 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion8 = InvolvedObject8 | any; - -export type Source8 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion8 = Source8 | any; - -export type Event11 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject8 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: Source8 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit10 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit10 = ClosedEnum; - -export type Memory10 = { - unit: MemoryUnit10; - value: number; -}; - -export type MemoryUnion10 = Memory10 | any; - -export type NodeCounts = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export const CpuAllocatableUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuAllocatableUnit = ClosedEnum; - -export type CpuAllocatable = { - unit: CpuAllocatableUnit; - value: number; -}; - -export type AllocatableCpuUnion = CpuAllocatable | any; - -export const MemoryAllocatableUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryAllocatableUnit = ClosedEnum; - -export type MemoryAllocatable = { - unit: MemoryAllocatableUnit; - value: number; -}; - -export type AllocatableMemoryUnion = MemoryAllocatable | any; - -export type Allocatable = { - cpu?: CpuAllocatable | any | null | undefined; - memory?: MemoryAllocatable | any | null | undefined; - pods?: number | null | undefined; -}; - -export const CpuCapacityUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuCapacityUnit = ClosedEnum; - -export type CpuCapacity = { - unit: CpuCapacityUnit; - value: number; -}; - -export type CapacityCpuUnion = CpuCapacity | any; - -export const MemoryCapacityUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryCapacityUnit = ClosedEnum; - -export type MemoryCapacity = { - unit: MemoryCapacityUnit; - value: number; -}; - -export type CapacityMemoryUnion = MemoryCapacity | any; - -export type Capacity = { - cpu?: CpuCapacity | any | null | undefined; - memory?: MemoryCapacity | any | null | undefined; - pods?: number | null | undefined; -}; - -export type NodeStatusCondition = { - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export const UsageCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UsageCpuUnit = ClosedEnum; - -export type UsageCpu = { - unit: UsageCpuUnit; - value: number; -}; - -export type UsageCpuUnion = UsageCpu | any; - -export const UsageMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UsageMemoryUnit = ClosedEnum; - -export type UsageMemory = { - unit: UsageMemoryUnit; - value: number; -}; - -export type UsageMemoryUnion = UsageMemory | any; - -export type Usage = { - cpu?: UsageCpu | any | null | undefined; - memory?: UsageMemory | any | null | undefined; -}; - -export type UsageUnion = Usage | any; - -export type NodeStatus = { - allocatable: Allocatable; - capacity: Capacity; - conditions?: Array | undefined; - containerRuntimeVersion?: string | null | undefined; - kubeletVersion?: string | null | undefined; - labels: { [k: string]: string }; - name: string; - ready: boolean; - roles: Array; - uid?: string | null | undefined; - usage?: Usage | any | null | undefined; -}; - -export type PodCounts = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export const Reason22 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason22 = ClosedEnum; - -export const CollectionIssueSeverity22 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity22 = ClosedEnum< - typeof CollectionIssueSeverity22 ->; - -export type CollectionIssue22 = { - message: string; - reason: Reason22; - severity: CollectionIssueSeverity22; - source: string; -}; - -export const Health22 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health22 = ClosedEnum; - -export const Lifecycle22 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle22 = ClosedEnum; - -export type DataStatus22 = { - collectionIssues: Array; - health: Health22; - lifecycle: Lifecycle22; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type Data1 = { - cpu?: Cpu10 | any | null | undefined; - events: Array; - memory?: Memory10 | any | null | undefined; - name: string; - namespace?: string | null | undefined; - nodeCounts: NodeCounts; - nodeStatuses?: Array | undefined; - podCounts: PodCounts; - region?: string | null | undefined; - status: DataStatus22; - version?: string | null | undefined; -}; - -export type DataKubernetesCluster = { - data: Data1; - resourceType: "kubernetes-cluster"; -}; - -export type Nodes4 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export const Reason21 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason21 = ClosedEnum; - -export const CollectionIssueSeverity21 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity21 = ClosedEnum< - typeof CollectionIssueSeverity21 ->; - -export type CollectionIssue21 = { - message: string; - reason: Reason21; - severity: CollectionIssueSeverity21; - source: string; -}; - -export const Health21 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health21 = ClosedEnum; - -export const Lifecycle21 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle21 = ClosedEnum; - -export type DataStatus21 = { - collectionIssues: Array; - health: Health21; - lifecycle: Lifecycle21; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal5 = { - dockerApiVersion?: string | null | undefined; - dockerArch?: string | null | undefined; - dockerAvailable: boolean; - dockerOs?: string | null | undefined; - dockerVersion?: string | null | undefined; - hostIdentifier?: string | null | undefined; - name: string; - networkAvailable: boolean; - networkName?: string | null | undefined; - nodes: Nodes4; - runningContainers?: number | null | undefined; - status: DataStatus21; - trackedContainers?: number | null | undefined; - backend: "local"; -}; - -export const Category3 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", -} as const; -export type Category3 = ClosedEnum; - -export type CapacityBlocker3 = { - category: Category3; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -export type CapacityBlockerUnion3 = CapacityBlocker3 | any; - -export const UtilizationUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UtilizationUnit3 = ClosedEnum; - -export type Utilization3 = { - unit: UtilizationUnit3; - value: number; -}; - -export type UtilizationUnion3 = Utilization3 | any; - -export type Recommendation3 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization3 | any | null | undefined; -}; - -export type RecommendationUnion3 = Recommendation3 | any; - -export type CapacityGroup3 = { - capacityBlocker?: CapacityBlocker3 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation3 | any | null | undefined; -}; - -export const CpuUnit9 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit9 = ClosedEnum; - -export type Cpu9 = { - unit: CpuUnit9; - value: number; -}; - -export type CpuUnion9 = Cpu9 | any; - -export const MemoryUnit9 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit9 = ClosedEnum; - -export type Memory9 = { - unit: MemoryUnit9; - value: number; -}; - -export type MemoryUnion9 = Memory9 | any; - -export type Nodes3 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export type ProviderFleet3 = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; -}; - -export const Reason20 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason20 = ClosedEnum; - -export const CollectionIssueSeverity20 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity20 = ClosedEnum< - typeof CollectionIssueSeverity20 ->; - -export type CollectionIssue20 = { - message: string; - reason: Reason20; - severity: CollectionIssueSeverity20; - source: string; -}; - -export const Health20 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health20 = ClosedEnum; - -export const Lifecycle20 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle20 = ClosedEnum; - -export type DataStatus20 = { - collectionIssues: Array; - health: Health20; - lifecycle: Lifecycle20; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzure2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu9 | any | null | undefined; - memory?: Memory9 | any | null | undefined; - name: string; - nodes: Nodes3; - providerFleets: Array; - region?: string | null | undefined; - status: DataStatus20; - backend: "azure"; -}; - -export const Category2 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", -} as const; -export type Category2 = ClosedEnum; - -export type CapacityBlocker2 = { - category: Category2; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -export type CapacityBlockerUnion2 = CapacityBlocker2 | any; - -export const UtilizationUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UtilizationUnit2 = ClosedEnum; - -export type Utilization2 = { - unit: UtilizationUnit2; - value: number; -}; - -export type UtilizationUnion2 = Utilization2 | any; - -export type Recommendation2 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization2 | any | null | undefined; -}; - -export type RecommendationUnion2 = Recommendation2 | any; - -export type CapacityGroup2 = { - capacityBlocker?: CapacityBlocker2 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation2 | any | null | undefined; -}; - -export const CpuUnit8 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit8 = ClosedEnum; - -export type Cpu8 = { - unit: CpuUnit8; - value: number; -}; - -export type CpuUnion8 = Cpu8 | any; - -export const MemoryUnit8 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit8 = ClosedEnum; - -export type Memory8 = { - unit: MemoryUnit8; - value: number; -}; - -export type MemoryUnion8 = Memory8 | any; - -export type Nodes2 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export type ProviderFleet2 = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; -}; - -export const Reason19 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason19 = ClosedEnum; - -export const CollectionIssueSeverity19 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity19 = ClosedEnum< - typeof CollectionIssueSeverity19 ->; - -export type CollectionIssue19 = { - message: string; - reason: Reason19; - severity: CollectionIssueSeverity19; - source: string; -}; - -export const Health19 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health19 = ClosedEnum; - -export const Lifecycle19 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle19 = ClosedEnum; - -export type DataStatus19 = { - collectionIssues: Array; - health: Health19; - lifecycle: Lifecycle19; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcp2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu8 | any | null | undefined; - memory?: Memory8 | any | null | undefined; - name: string; - nodes: Nodes2; - providerFleets: Array; - region?: string | null | undefined; - status: DataStatus19; - backend: "gcp"; -}; - -export const Category1 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", -} as const; -export type Category1 = ClosedEnum; - -export type CapacityBlocker1 = { - category: Category1; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -export type CapacityBlockerUnion1 = CapacityBlocker1 | any; - -export const UtilizationUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UtilizationUnit1 = ClosedEnum; - -export type Utilization1 = { - unit: UtilizationUnit1; - value: number; -}; - -export type UtilizationUnion1 = Utilization1 | any; - -export type Recommendation1 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization1 | any | null | undefined; -}; - -export type RecommendationUnion1 = Recommendation1 | any; - -export type CapacityGroup1 = { - capacityBlocker?: CapacityBlocker1 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation1 | any | null | undefined; -}; - -export const CpuUnit7 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit7 = ClosedEnum; - -export type Cpu7 = { - unit: CpuUnit7; - value: number; -}; - -export type CpuUnion7 = Cpu7 | any; - -export const MemoryUnit7 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit7 = ClosedEnum; - -export type Memory7 = { - unit: MemoryUnit7; - value: number; -}; - -export type MemoryUnion7 = Memory7 | any; - -export type Nodes1 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export type ProviderFleet1 = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; -}; - -export const Reason18 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason18 = ClosedEnum; - -export const CollectionIssueSeverity18 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity18 = ClosedEnum< - typeof CollectionIssueSeverity18 ->; - -export type CollectionIssue18 = { - message: string; - reason: Reason18; - severity: CollectionIssueSeverity18; - source: string; -}; - -export const Health18 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health18 = ClosedEnum; - -export const Lifecycle18 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle18 = ClosedEnum; - -export type DataStatus18 = { - collectionIssues: Array; - health: Health18; - lifecycle: Lifecycle18; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAws2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu7 | any | null | undefined; - memory?: Memory7 | any | null | undefined; - name: string; - nodes: Nodes1; - providerFleets: Array; - region?: string | null | undefined; - status: DataStatus18; - backend: "aws"; -}; - -export type DataUnion5 = DataAws2 | DataGcp2 | DataAzure2 | DataLocal5; - -export type DataComputeCluster = { - data: DataAws2 | DataGcp2 | DataAzure2 | DataLocal5; - resourceType: "compute-cluster"; -}; - -export const DaemonInstanceCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type DaemonInstanceCpuUnit = ClosedEnum; - -export type DaemonInstanceCpu = { - unit: DaemonInstanceCpuUnit; - value: number; -}; - -export type DaemonInstanceCpuUnion4 = DaemonInstanceCpu | any; - -export const DaemonInstanceKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type DaemonInstanceKind = ClosedEnum; - -export const DaemonInstanceMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type DaemonInstanceMemoryUnit = ClosedEnum< - typeof DaemonInstanceMemoryUnit ->; - -export type DaemonInstanceMemory = { - unit: DaemonInstanceMemoryUnit; - value: number; -}; - -export type DaemonInstanceMemoryUnion4 = DaemonInstanceMemory | any; - -export type DaemonInstance4 = { - cpu?: DaemonInstanceCpu | any | null | undefined; - kind: DaemonInstanceKind; - memory?: DaemonInstanceMemory | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; -}; - -export type DaemonInstanceUnion = DaemonInstance4 | any; - -export const EventSeverity3 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type EventSeverity3 = ClosedEnum; - -export type Subject3 = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; -}; - -export type SubjectUnion3 = Subject3 | any; - -export type Event10 = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: EventSeverity3; - subject?: Subject3 | any | null | undefined; - timestamp: Date; -}; - -export const Reason17 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason17 = ClosedEnum; - -export const CollectionIssueSeverity17 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity17 = ClosedEnum< - typeof CollectionIssueSeverity17 ->; - -export type CollectionIssue17 = { - message: string; - reason: Reason17; - severity: CollectionIssueSeverity17; - source: string; -}; - -export const Health17 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health17 = ClosedEnum; - -export const Lifecycle17 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle17 = ClosedEnum; - -export type DataStatus17 = { - collectionIssues: Array; - health: Health17; - lifecycle: Lifecycle17; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal4 = { - commandSupported: boolean; - daemonInstance?: DaemonInstance4 | any | null | undefined; - daemonName: string; - events: Array; - exitReason?: string | null | undefined; - imagePathPresent: boolean; - pid?: number | null | undefined; - restartCount?: number | null | undefined; - runtimeId: string; - status: DataStatus17; - backend: "local"; -}; - -export const CpuUnit6 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit6 = ClosedEnum; - -export type Cpu6 = { - unit: CpuUnit6; - value: number; -}; - -export type CpuUnion6 = Cpu6 | any; - -export type InvolvedObject7 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion7 = InvolvedObject7 | any; - -export type Source7 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion7 = Source7 | any; - -export type Event9 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject7 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: Source7 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit6 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit6 = ClosedEnum; - -export type Memory6 = { - unit: MemoryUnit6; - value: number; -}; - -export type MemoryUnion6 = Memory6 | any; - -export const CpuPodUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuPodUnit3 = ClosedEnum; - -export type CpuPod3 = { - unit: CpuPodUnit3; - value: number; -}; - -export type PodCpuUnion3 = CpuPod3 | any; - -export const MemoryPodUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryPodUnit3 = ClosedEnum; - -export type MemoryPod3 = { - unit: MemoryPodUnit3; - value: number; -}; - -export type PodMemoryUnion3 = MemoryPod3 | any; - -export type OwnerReference3 = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; - -export type Pod3 = { - cpu?: CpuPod3 | any | null | undefined; - memory?: MemoryPod3 | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type Replicas4 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -export const Reason16 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason16 = ClosedEnum; - -export const CollectionIssueSeverity16 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity16 = ClosedEnum< - typeof CollectionIssueSeverity16 ->; - -export type CollectionIssue16 = { - message: string; - reason: Reason16; - severity: CollectionIssueSeverity16; - source: string; -}; - -export const Health16 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health16 = ClosedEnum; - -export const Lifecycle16 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle16 = ClosedEnum; - -export type DataStatus16 = { - collectionIssues: Array; - health: Health16; - lifecycle: Lifecycle16; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type WorkloadCondition3 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export type Workload3 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; -}; - -export type WorkloadUnion3 = Workload3 | any; - -export type DataKubernetes3 = { - commandSupported: boolean; - cpu?: Cpu6 | any | null | undefined; - events: Array; - memory?: Memory6 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas4; - restarts?: number | null | undefined; - status: DataStatus16; - workload?: Workload3 | any | null | undefined; - backend: "kubernetes"; -}; - -export const CpuDaemonInstanceUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuDaemonInstanceUnit3 = ClosedEnum; - -export type CpuDaemonInstance3 = { - unit: CpuDaemonInstanceUnit3; - value: number; -}; - -export type DaemonInstanceCpuUnion3 = CpuDaemonInstance3 | any; - -export const MemoryDaemonInstanceUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryDaemonInstanceUnit3 = ClosedEnum< - typeof MemoryDaemonInstanceUnit3 ->; - -export type MemoryDaemonInstance3 = { - unit: MemoryDaemonInstanceUnit3; - value: number; -}; - -export type DaemonInstanceMemoryUnion3 = MemoryDaemonInstance3 | any; - -export type DaemonInstance3 = { - cpu?: CpuDaemonInstance3 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance3 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type InvolvedObject6 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion6 = InvolvedObject6 | any; - -export type Source6 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion6 = Source6 | any; - -export type Event8 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject6 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: Source6 | any | null | undefined; - type?: string | null | undefined; -}; - -export const Reason15 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason15 = ClosedEnum; - -export const CollectionIssueSeverity15 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity15 = ClosedEnum< - typeof CollectionIssueSeverity15 ->; - -export type CollectionIssue15 = { - message: string; - reason: Reason15; - severity: CollectionIssueSeverity15; - source: string; -}; - -export const Health15 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health15 = ClosedEnum; - -export const Lifecycle15 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle15 = ClosedEnum; - -export type DataStatus15 = { - collectionIssues: Array; - health: Health15; - lifecycle: Lifecycle15; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzure1 = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName: string; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: DataStatus15; - unavailableInstances: number; - backend: "azure"; -}; - -export const CpuDaemonInstanceUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuDaemonInstanceUnit2 = ClosedEnum; - -export type CpuDaemonInstance2 = { - unit: CpuDaemonInstanceUnit2; - value: number; -}; - -export type DaemonInstanceCpuUnion2 = CpuDaemonInstance2 | any; - -export const MemoryDaemonInstanceUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryDaemonInstanceUnit2 = ClosedEnum< - typeof MemoryDaemonInstanceUnit2 ->; - -export type MemoryDaemonInstance2 = { - unit: MemoryDaemonInstanceUnit2; - value: number; -}; - -export type DaemonInstanceMemoryUnion2 = MemoryDaemonInstance2 | any; - -export type DaemonInstance2 = { - cpu?: CpuDaemonInstance2 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance2 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type InvolvedObject5 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion5 = InvolvedObject5 | any; - -export type Source5 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion5 = Source5 | any; - -export type Event7 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject5 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: Source5 | any | null | undefined; - type?: string | null | undefined; -}; - -export const Reason14 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason14 = ClosedEnum; - -export const CollectionIssueSeverity14 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity14 = ClosedEnum< - typeof CollectionIssueSeverity14 ->; - -export type CollectionIssue14 = { - message: string; - reason: Reason14; - severity: CollectionIssueSeverity14; - source: string; -}; - -export const Health14 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health14 = ClosedEnum; - -export const Lifecycle14 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle14 = ClosedEnum; - -export type DataStatus14 = { - collectionIssues: Array; - health: Health14; - lifecycle: Lifecycle14; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcp1 = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName: string; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: DataStatus14; - unavailableInstances: number; - backend: "gcp"; -}; - -export const CpuDaemonInstanceUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuDaemonInstanceUnit1 = ClosedEnum; - -export type CpuDaemonInstance1 = { - unit: CpuDaemonInstanceUnit1; - value: number; -}; - -export type DaemonInstanceCpuUnion1 = CpuDaemonInstance1 | any; - -export const MemoryDaemonInstanceUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryDaemonInstanceUnit1 = ClosedEnum< - typeof MemoryDaemonInstanceUnit1 ->; - -export type MemoryDaemonInstance1 = { - unit: MemoryDaemonInstanceUnit1; - value: number; -}; - -export type DaemonInstanceMemoryUnion1 = MemoryDaemonInstance1 | any; - -export type DaemonInstance1 = { - cpu?: CpuDaemonInstance1 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance1 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type InvolvedObject4 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion4 = InvolvedObject4 | any; - -export type Source4 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion4 = Source4 | any; - -export type Event6 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject4 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: Source4 | any | null | undefined; - type?: string | null | undefined; -}; - -export const Reason13 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason13 = ClosedEnum; - -export const CollectionIssueSeverity13 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity13 = ClosedEnum< - typeof CollectionIssueSeverity13 ->; - -export type CollectionIssue13 = { - message: string; - reason: Reason13; - severity: CollectionIssueSeverity13; - source: string; -}; - -export const Health13 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health13 = ClosedEnum; - -export const Lifecycle13 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle13 = ClosedEnum; - -export type DataStatus13 = { - collectionIssues: Array; - health: Health13; - lifecycle: Lifecycle13; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAws1 = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName: string; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: DataStatus13; - unavailableInstances: number; - backend: "aws"; -}; - -export type DataUnion4 = - | DataAws1 - | DataGcp1 - | DataAzure1 - | DataKubernetes3 - | DataLocal4; - -export type DataDaemon = { - data: DataAws1 | DataGcp1 | DataAzure1 | DataKubernetes3 | DataLocal4; - resourceType: "daemon"; -}; - -export const ContainerUnitCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ContainerUnitCpuUnit = ClosedEnum; - -export type ContainerUnitCpu = { - unit: ContainerUnitCpuUnit; - value: number; -}; - -export type ContainerUnitCpuUnion = ContainerUnitCpu | any; - -export const ContainerUnitKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type ContainerUnitKind = ClosedEnum; - -export const ContainerUnitMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ContainerUnitMemoryUnit = ClosedEnum< - typeof ContainerUnitMemoryUnit ->; - -export type ContainerUnitMemory = { - unit: ContainerUnitMemoryUnit; - value: number; -}; - -export type ContainerUnitMemoryUnion = ContainerUnitMemory | any; - -export type ContainerUnit = { - cpu?: ContainerUnitCpu | any | null | undefined; - kind: ContainerUnitKind; - memory?: ContainerUnitMemory | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; -}; - -export type ContainerUnitUnion = ContainerUnit | any; - -export const CpuUnit5 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit5 = ClosedEnum; - -export type Cpu5 = { - unit: CpuUnit5; - value: number; -}; - -export type CpuUnion5 = Cpu5 | any; - -export const EventSeverity2 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type EventSeverity2 = ClosedEnum; - -export type Subject2 = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; -}; - -export type SubjectUnion2 = Subject2 | any; - -export type Event5 = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: EventSeverity2; - subject?: Subject2 | any | null | undefined; - timestamp: Date; -}; - -export const MemoryUnit5 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit5 = ClosedEnum; - -export type Memory5 = { - unit: MemoryUnit5; - value: number; -}; - -export type MemoryUnion5 = Memory5 | any; - -export const Reason12 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason12 = ClosedEnum; - -export const CollectionIssueSeverity12 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity12 = ClosedEnum< - typeof CollectionIssueSeverity12 ->; - -export type CollectionIssue12 = { - message: string; - reason: Reason12; - severity: CollectionIssueSeverity12; - source: string; -}; - -export const Health12 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health12 = ClosedEnum; - -export const Lifecycle12 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle12 = ClosedEnum; - -export type DataStatus12 = { - collectionIssues: Array; - health: Health12; - lifecycle: Lifecycle12; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal3 = { - bindMountCount: number; - containerId?: string | null | undefined; - containerUnit?: ContainerUnit | any | null | undefined; - cpu?: Cpu5 | any | null | undefined; - events: Array; - image?: string | null | undefined; - localUrl?: string | null | undefined; - memory?: Memory5 | any | null | undefined; - name?: string | null | undefined; - portCount: number; - restartCount?: number | null | undefined; - runtimeReachable: boolean; - runtimeStatus?: string | null | undefined; - status: DataStatus12; - backend: "local"; -}; - -export const CpuUnit4 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit4 = ClosedEnum; - -export type Cpu4 = { - unit: CpuUnit4; - value: number; -}; - -export type CpuUnion4 = Cpu4 | any; - -export type InvolvedObject3 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion3 = InvolvedObject3 | any; - -export type Source3 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion3 = Source3 | any; - -export type Event4 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject3 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: Source3 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit4 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit4 = ClosedEnum; - -export type Memory4 = { - unit: MemoryUnit4; - value: number; -}; - -export type MemoryUnion4 = Memory4 | any; - -export const CpuPodUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuPodUnit2 = ClosedEnum; - -export type CpuPod2 = { - unit: CpuPodUnit2; - value: number; -}; - -export type PodCpuUnion2 = CpuPod2 | any; - -export const MemoryPodUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryPodUnit2 = ClosedEnum; - -export type MemoryPod2 = { - unit: MemoryPodUnit2; - value: number; -}; - -export type PodMemoryUnion2 = MemoryPod2 | any; - -export type OwnerReference2 = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; - -export type Pod2 = { - cpu?: CpuPod2 | any | null | undefined; - memory?: MemoryPod2 | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type Replicas3 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -export const Reason11 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason11 = ClosedEnum; - -export const CollectionIssueSeverity11 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity11 = ClosedEnum< - typeof CollectionIssueSeverity11 ->; - -export type CollectionIssue11 = { - message: string; - reason: Reason11; - severity: CollectionIssueSeverity11; - source: string; -}; - -export const Health11 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health11 = ClosedEnum; - -export const Lifecycle11 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle11 = ClosedEnum; - -export type DataStatus11 = { - collectionIssues: Array; - health: Health11; - lifecycle: Lifecycle11; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type WorkloadCondition2 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export type Workload2 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; -}; - -export type WorkloadUnion2 = Workload2 | any; - -export const WorkloadKind2 = { - Deployment: "deployment", - StatefulSet: "statefulSet", - DaemonSet: "daemonSet", - ReplicaSet: "replicaSet", - Pod: "pod", -} as const; -export type WorkloadKind2 = ClosedEnum; - -export type DataKubernetes2 = { - cpu?: Cpu4 | any | null | undefined; - events: Array; - memory?: Memory4 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas3; - restarts?: number | null | undefined; - status: DataStatus11; - workload?: Workload2 | any | null | undefined; - workloadKind: WorkloadKind2; - backend: "kubernetes"; -}; - -export const CpuUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit3 = ClosedEnum; - -export type Cpu3 = { - unit: CpuUnit3; - value: number; -}; - -export type CpuUnion3 = Cpu3 | any; - -export type InvolvedObject2 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion2 = InvolvedObject2 | any; - -export type Source2 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion2 = Source2 | any; - -export type Event3 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject2 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: Source2 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit3 = ClosedEnum; - -export type Memory3 = { - unit: MemoryUnit3; - value: number; -}; - -export type MemoryUnion3 = Memory3 | any; - -export const CpuReplicaUnitUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuReplicaUnitUnit = ClosedEnum; - -export type CpuReplicaUnit = { - unit: CpuReplicaUnitUnit; - value: number; -}; - -export type ReplicaUnitCpuUnion = CpuReplicaUnit | any; - -export const MemoryReplicaUnitUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryReplicaUnitUnit = ClosedEnum; - -export type MemoryReplicaUnit = { - unit: MemoryReplicaUnitUnit; - value: number; -}; - -export type ReplicaUnitMemoryUnion = MemoryReplicaUnit | any; - -export type ReplicaUnit = { - cpu?: CpuReplicaUnit | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryReplicaUnit | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type Replicas2 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -export const SchedulingMode = { - Replicated: "replicated", - Stateful: "stateful", - Daemon: "daemon", -} as const; -export type SchedulingMode = ClosedEnum; - -export const Reason10 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason10 = ClosedEnum; - -export const CollectionIssueSeverity10 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity10 = ClosedEnum< - typeof CollectionIssueSeverity10 ->; - -export type CollectionIssue10 = { - message: string; - reason: Reason10; - severity: CollectionIssueSeverity10; - source: string; -}; - -export const Health10 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health10 = ClosedEnum; - -export const Lifecycle10 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle10 = ClosedEnum; - -export type DataStatus10 = { - collectionIssues: Array; - health: Health10; - lifecycle: Lifecycle10; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataHorizonPlatform = { - attentionCount: number; - containerId: string; - cpu?: Cpu3 | any | null | undefined; - events: Array; - image?: string | null | undefined; - memory?: Memory3 | any | null | undefined; - replicaUnits: Array; - replicas: Replicas2; - schedulingMode: SchedulingMode; - status: DataStatus10; - backend: "horizonPlatform"; -}; - -export type DataUnion3 = DataHorizonPlatform | DataKubernetes2 | DataLocal3; - -export type DataContainer = { - data: DataHorizonPlatform | DataKubernetes2 | DataLocal3; - resourceType: "container"; -}; - -export const CpuUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit2 = ClosedEnum; - -export type Cpu2 = { - unit: CpuUnit2; - value: number; -}; - -export type CpuUnion2 = Cpu2 | any; - -export const EventSeverity1 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type EventSeverity1 = ClosedEnum; - -export type Subject1 = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; -}; - -export type SubjectUnion1 = Subject1 | any; - -export type Event2 = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: EventSeverity1; - subject?: Subject1 | any | null | undefined; - timestamp: Date; -}; - -export const MemoryUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit2 = ClosedEnum; - -export type Memory2 = { - unit: MemoryUnit2; - value: number; -}; - -export type MemoryUnion2 = Memory2 | any; - -export const ProcessCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ProcessCpuUnit = ClosedEnum; - -export type ProcessCpu = { - unit: ProcessCpuUnit; - value: number; -}; - -export type ProcessCpuUnion = ProcessCpu | any; - -export const ProcessKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type ProcessKind = ClosedEnum; - -export const ProcessMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ProcessMemoryUnit = ClosedEnum; - -export type ProcessMemory = { - unit: ProcessMemoryUnit; - value: number; -}; - -export type ProcessMemoryUnion = ProcessMemory | any; - -export type Process = { - cpu?: ProcessCpu | any | null | undefined; - kind: ProcessKind; - memory?: ProcessMemory | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; -}; - -export type ProcessUnion = Process | any; - -export const Reason9 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason9 = ClosedEnum; - -export const CollectionIssueSeverity9 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity9 = ClosedEnum< - typeof CollectionIssueSeverity9 ->; - -export type CollectionIssue9 = { - message: string; - reason: Reason9; - severity: CollectionIssueSeverity9; - source: string; -}; - -export const Health9 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health9 = ClosedEnum; - -export const Lifecycle9 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle9 = ClosedEnum; - -export type DataStatus9 = { - collectionIssues: Array; - health: Health9; - lifecycle: Lifecycle9; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal2 = { - commandSupported: boolean; - cpu?: Cpu2 | any | null | undefined; - events: Array; - imagePathPresent: boolean; - memory?: Memory2 | any | null | undefined; - pid?: number | null | undefined; - process?: Process | any | null | undefined; - readinessProbeOk?: boolean | null | undefined; - status: DataStatus9; - triggerCount: number; - backend: "local"; -}; - -export const CpuUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit1 = ClosedEnum; - -export type Cpu1 = { - unit: CpuUnit1; - value: number; -}; - -export type CpuUnion1 = Cpu1 | any; - -export type InvolvedObject1 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion1 = InvolvedObject1 | any; - -export type Source1 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion1 = Source1 | any; - -export type Event1 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject1 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: Source1 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit1 = ClosedEnum; - -export type Memory1 = { - unit: MemoryUnit1; - value: number; -}; - -export type MemoryUnion1 = Memory1 | any; - -export const CpuPodUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuPodUnit1 = ClosedEnum; - -export type CpuPod1 = { - unit: CpuPodUnit1; - value: number; -}; - -export type PodCpuUnion1 = CpuPod1 | any; - -export const MemoryPodUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryPodUnit1 = ClosedEnum; - -export type MemoryPod1 = { - unit: MemoryPodUnit1; - value: number; -}; - -export type PodMemoryUnion1 = MemoryPod1 | any; - -export type OwnerReference1 = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; - -export type Pod1 = { - cpu?: CpuPod1 | any | null | undefined; - memory?: MemoryPod1 | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type Replicas1 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -export const Reason8 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason8 = ClosedEnum; - -export const CollectionIssueSeverity8 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity8 = ClosedEnum< - typeof CollectionIssueSeverity8 ->; - -export type CollectionIssue8 = { - message: string; - reason: Reason8; - severity: CollectionIssueSeverity8; - source: string; -}; - -export const Health8 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health8 = ClosedEnum; - -export const Lifecycle8 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle8 = ClosedEnum; - -export type DataStatus8 = { - collectionIssues: Array; - health: Health8; - lifecycle: Lifecycle8; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type WorkloadCondition1 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export type Workload1 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; -}; - -export type WorkloadUnion1 = Workload1 | any; - -export const WorkloadKind1 = { - Deployment: "deployment", - StatefulSet: "statefulSet", - DaemonSet: "daemonSet", - ReplicaSet: "replicaSet", - Pod: "pod", -} as const; -export type WorkloadKind1 = ClosedEnum; - -export type DataKubernetes1 = { - cpu?: Cpu1 | any | null | undefined; - events: Array; - memory?: Memory1 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas1; - restarts?: number | null | undefined; - status: DataStatus8; - triggerCount: number; - workload?: Workload1 | any | null | undefined; - workloadKind: WorkloadKind1; - backend: "kubernetes"; -}; - -export const Reason7 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason7 = ClosedEnum; - -export const CollectionIssueSeverity7 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity7 = ClosedEnum< - typeof CollectionIssueSeverity7 ->; - -export type CollectionIssue7 = { - message: string; - reason: Reason7; - severity: CollectionIssueSeverity7; - source: string; -}; - -export const Health7 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health7 = ClosedEnum; - -export const Lifecycle7 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle7 = ClosedEnum; - -export type DataStatus7 = { - collectionIssues: Array; - health: Health7; - lifecycle: Lifecycle7; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureContainerApps1 = { - appName: string; - cpu?: number | null | undefined; - environmentName?: string | null | undefined; - ingressFqdn?: string | null | undefined; - maxReplicas?: number | null | undefined; - memory?: string | null | undefined; - minReplicas?: number | null | undefined; - provisioningState?: string | null | undefined; - revision?: string | null | undefined; - runningStatus?: string | null | undefined; - status: DataStatus7; - backend: "azureContainerApps"; -}; - -export const Reason6 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason6 = ClosedEnum; - -export const CollectionIssueSeverity6 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity6 = ClosedEnum< - typeof CollectionIssueSeverity6 ->; - -export type CollectionIssue6 = { - message: string; - reason: Reason6; - severity: CollectionIssueSeverity6; - source: string; -}; - -export const Health6 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health6 = ClosedEnum; - -export const Lifecycle6 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle6 = ClosedEnum; - -export type DataStatus6 = { - collectionIssues: Array; - health: Health6; - lifecycle: Lifecycle6; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpCloudRun = { - containerImage?: string | null | undefined; - cpuLimit?: string | null | undefined; - generation?: number | null | undefined; - latestCreatedRevision?: string | null | undefined; - latestReadyRevision?: string | null | undefined; - maxInstanceCount?: number | null | undefined; - memoryLimit?: string | null | undefined; - minInstanceCount?: number | null | undefined; - observedGeneration?: number | null | undefined; - region?: string | null | undefined; - service: string; - status: DataStatus6; - trafficCount: number; - uri?: string | null | undefined; - urls: Array; - backend: "gcpCloudRun"; -}; - -export const Reason5 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason5 = ClosedEnum; - -export const CollectionIssueSeverity5 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity5 = ClosedEnum< - typeof CollectionIssueSeverity5 ->; - -export type CollectionIssue5 = { - message: string; - reason: Reason5; - severity: CollectionIssueSeverity5; - source: string; -}; - -export const Health5 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health5 = ClosedEnum; - -export const Lifecycle5 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle5 = ClosedEnum; - -export type DataStatus5 = { - collectionIssues: Array; - health: Health5; - lifecycle: Lifecycle5; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsLambda = { - codeSha256?: string | null | undefined; - functionName: string; - functionUrlAuthType?: string | null | undefined; - functionUrlCorsPresent: boolean; - lastModified?: string | null | undefined; - lastUpdateStatus?: string | null | undefined; - lastUpdateStatusReason?: string | null | undefined; - lastUpdateStatusReasonCode?: string | null | undefined; - layerCount: number; - memorySizeMb?: number | null | undefined; - packageType?: string | null | undefined; - revisionId?: string | null | undefined; - runtime?: string | null | undefined; - state?: string | null | undefined; - stateReason?: string | null | undefined; - stateReasonCode?: string | null | undefined; - status: DataStatus5; - timeoutSeconds?: number | null | undefined; - triggerCount: number; - version?: string | null | undefined; - backend: "awsLambda"; -}; - -export type DataUnion2 = - | DataAwsLambda - | DataGcpCloudRun - | DataAzureContainerApps1 - | DataKubernetes1 - | DataLocal2; - -export type DataWorker = { - data: - | DataAwsLambda - | DataGcpCloudRun - | DataAzureContainerApps1 - | DataKubernetes1 - | DataLocal2; - resourceType: "worker"; -}; - -export const Reason4 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason4 = ClosedEnum; - -export const CollectionIssueSeverity4 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity4 = ClosedEnum< - typeof CollectionIssueSeverity4 ->; - -export type CollectionIssue4 = { - message: string; - reason: Reason4; - severity: CollectionIssueSeverity4; - source: string; -}; - -export const Health4 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health4 = ClosedEnum; - -export const Lifecycle4 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle4 = ClosedEnum; - -export type DataStatus4 = { - collectionIssues: Array; - health: Health4; - lifecycle: Lifecycle4; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal1 = { - isDirectory?: boolean | null | undefined; - modifiedAt?: Date | null | undefined; - path: string; - pathExists: boolean; - readonly?: boolean | null | undefined; - status: DataStatus4; - backend: "local"; -}; - -export const Reason3 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason3 = ClosedEnum; - -export const CollectionIssueSeverity3 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity3 = ClosedEnum< - typeof CollectionIssueSeverity3 ->; - -export type CollectionIssue3 = { - message: string; - reason: Reason3; - severity: CollectionIssueSeverity3; - source: string; -}; - -export const Health3 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health3 = ClosedEnum; - -export const Lifecycle3 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle3 = ClosedEnum; - -export type DataStatus3 = { - collectionIssues: Array; - health: Health3; - lifecycle: Lifecycle3; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureBlob = { - accessTier?: string | null | undefined; - accountKind?: string | null | undefined; - allowBlobPublicAccess?: boolean | null | undefined; - blobDeleteRetentionDays?: number | null | undefined; - blobDeleteRetentionEnabled?: boolean | null | undefined; - blobEncryptionEnabled?: boolean | null | undefined; - blobVersioningEnabled?: boolean | null | undefined; - changeFeedEnabled?: boolean | null | undefined; - changeFeedRetentionDays?: number | null | undefined; - containerDeleteRetentionDays?: number | null | undefined; - containerDeleteRetentionEnabled?: boolean | null | undefined; - containerPublicAccess?: string | null | undefined; - encryptionKeySource?: string | null | undefined; - fileEncryptionEnabled?: boolean | null | undefined; - location?: string | null | undefined; - name: string; - primaryLocation?: string | null | undefined; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - queueEncryptionEnabled?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - secondaryLocation?: string | null | undefined; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: DataStatus3; - statusOfPrimary?: string | null | undefined; - statusOfSecondary?: string | null | undefined; - storageAccountName?: string | null | undefined; - tableEncryptionEnabled?: boolean | null | undefined; - backend: "azureBlob"; -}; - -export const Reason2 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason2 = ClosedEnum; - -export const CollectionIssueSeverity2 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity2 = ClosedEnum< - typeof CollectionIssueSeverity2 ->; - -export type CollectionIssue2 = { - message: string; - reason: Reason2; - severity: CollectionIssueSeverity2; - source: string; -}; - -export const Health2 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health2 = ClosedEnum; - -export const Lifecycle2 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle2 = ClosedEnum; - -export type DataStatus2 = { - collectionIssues: Array; - health: Health2; - lifecycle: Lifecycle2; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpCloudStorage = { - bucketId?: string | null | undefined; - defaultKmsKeyName?: string | null | undefined; - encryptionConfigPresent: boolean; - lifecyclePresent: boolean; - lifecycleRuleCount?: number | null | undefined; - location?: string | null | undefined; - locationType?: string | null | undefined; - name: string; - publicAccessPrevention?: string | null | undefined; - retentionPeriod?: string | null | undefined; - retentionPolicyEffectiveTime?: string | null | undefined; - retentionPolicyIsLocked?: boolean | null | undefined; - softDeleteEffectiveTime?: string | null | undefined; - softDeleteRetentionDurationSeconds?: string | null | undefined; - status: DataStatus2; - storageClass?: string | null | undefined; - uniformBucketLevelAccessEnabled?: boolean | null | undefined; - uniformBucketLevelAccessLockedTime?: string | null | undefined; - versioningEnabled?: boolean | null | undefined; - backend: "gcpCloudStorage"; -}; - -export const Reason1 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason1 = ClosedEnum; - -export const CollectionIssueSeverity1 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity1 = ClosedEnum< - typeof CollectionIssueSeverity1 ->; - -export type CollectionIssue1 = { - message: string; - reason: Reason1; - severity: CollectionIssueSeverity1; - source: string; -}; - -export const Health1 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health1 = ClosedEnum; - -export const Lifecycle1 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type Lifecycle1 = ClosedEnum; - -export type DataStatus1 = { - collectionIssues: Array; - health: Health1; - lifecycle: Lifecycle1; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsS3 = { - blockPublicAcls?: boolean | null | undefined; - blockPublicPolicy?: boolean | null | undefined; - bucketAclPresent?: boolean | null | undefined; - bucketLocation?: string | null | undefined; - bucketPolicyPresent?: boolean | null | undefined; - encryptionConfigPresent: boolean; - encryptionEnabled?: boolean | null | undefined; - ignorePublicAcls?: boolean | null | undefined; - lifecyclePresent: boolean; - lifecycleRuleCount?: number | null | undefined; - name: string; - publicAccessBlockPresent: boolean; - region?: string | null | undefined; - restrictPublicBuckets?: boolean | null | undefined; - status: DataStatus1; - versioningEnabled?: boolean | null | undefined; - versioningStatus?: string | null | undefined; - backend: "awsS3"; -}; - -export type DataUnion1 = - | DataAwsS3 - | DataGcpCloudStorage - | DataAzureBlob - | DataLocal1; - -export type DataStorage = { - data: DataAwsS3 | DataGcpCloudStorage | DataAzureBlob | DataLocal1; - resourceType: "storage"; -}; - -export type DataUnion15 = - | DataStorage - | DataWorker - | DataContainer - | DataDaemon - | DataComputeCluster - | DataKubernetesCluster - | DataQueue - | DataKv - | DataVault - | DataServiceAccount - | DataNetwork - | DataRemoteStackManagement - | DataArtifactRegistry - | DataBuild - | DataServiceActivation - | DataAzureResourceGroup - | DataAzureStorageAccount - | DataAzureContainerAppsEnvironment - | DataAzureServiceBusNamespace; - -export const Format = { - Json: "json", - Yaml: "yaml", - Text: "text", -} as const; -export type Format = ClosedEnum; - -export type Raw = { - body: string; - collectedAt: Date; - format: Format; - source: string; - truncated: boolean; -}; - -export type Heartbeat = { - backend: BackendEnum; - /** - * Represents the target cloud platform. - */ - controllerPlatform: ControllerPlatform; - data: - | DataStorage - | DataWorker - | DataContainer - | DataDaemon - | DataComputeCluster - | DataKubernetesCluster - | DataQueue - | DataKv - | DataVault - | DataServiceAccount - | DataNetwork - | DataRemoteStackManagement - | DataArtifactRegistry - | DataBuild - | DataServiceActivation - | DataAzureResourceGroup - | DataAzureStorageAccount - | DataAzureContainerAppsEnvironment - | DataAzureServiceBusNamespace; - deploymentId?: string | null | undefined; - observedAt: Date; - raw: Array; - resourceId: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - resourceType: string; -}; - -export type HeartbeatAvailable = { - status: "available"; - deploymentId: string; - resourceId: string; - resourceType: string; - backend: string; - controllerPlatform: string; - observedAt: Date; - staleAt: Date; - platformStale: boolean; - heartbeat: Heartbeat; - raw: Array; -}; - -export type HeartbeatUnion = HeartbeatAvailable | HeartbeatMissing; - -/** - * Latest heartbeat detail for one compute resource deployment. - */ -export type GetResourceDeploymentDetailResponse = { - deployment: GetResourceDeploymentDetailDeployment; - heartbeat: HeartbeatAvailable | HeartbeatMissing; -}; - -/** @internal */ -export const GetResourceDeploymentDetailArea$outboundSchema: z.ZodEnum< - typeof GetResourceDeploymentDetailArea -> = z.enum(GetResourceDeploymentDetailArea); - -/** @internal */ -export type GetResourceDeploymentDetailRequest$Outbound = { - area: string; - deploymentId: string; - resourceId: string; - workspace?: string | undefined; - project: string; -}; - -/** @internal */ -export const GetResourceDeploymentDetailRequest$outboundSchema: z.ZodType< - GetResourceDeploymentDetailRequest$Outbound, - GetResourceDeploymentDetailRequest -> = z.object({ - area: GetResourceDeploymentDetailArea$outboundSchema, - deploymentId: z.string(), - resourceId: z.string(), - workspace: z.string().optional(), - project: z.string(), -}); - -export function getResourceDeploymentDetailRequestToJSON( - getResourceDeploymentDetailRequest: GetResourceDeploymentDetailRequest, -): string { - return JSON.stringify( - GetResourceDeploymentDetailRequest$outboundSchema.parse( - getResourceDeploymentDetailRequest, - ), - ); -} - -/** @internal */ -export const GetResourceDeploymentDetailDeployment$inboundSchema: z.ZodType< - GetResourceDeploymentDetailDeployment, - unknown -> = z.object({ - deploymentId: z.string(), - deploymentName: z.string(), - deploymentGroupId: z.nullable(z.string()), - deploymentGroupName: z.nullable(z.string()), - resourceType: z.string(), - resourceId: z.string(), - backend: z.string(), - controllerPlatform: z.string(), - health: z.string(), - lifecycle: z.string(), - message: z.nullable(z.string()), - partial: z.boolean(), - providerStale: z.boolean(), - platformStale: z.boolean(), - desiredCount: z.nullable(z.int()), - currentCount: z.nullable(z.int()), - readyCount: z.nullable(z.int()), - observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), -}); - -export function getResourceDeploymentDetailDeploymentFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - GetResourceDeploymentDetailDeployment$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailDeployment' from JSON`, - ); -} - -/** @internal */ -export const HeartbeatMissing$inboundSchema: z.ZodType< - HeartbeatMissing, - unknown -> = z.object({ - status: z.literal("missing"), - deploymentId: z.string(), - resourceId: z.string(), - resourceType: z.string(), -}); - -export function heartbeatMissingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => HeartbeatMissing$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'HeartbeatMissing' from JSON`, - ); -} - -/** @internal */ -export const BackendEnum$inboundSchema: z.ZodEnum = z.enum( - BackendEnum, -); - -/** @internal */ -export const ControllerPlatform$inboundSchema: z.ZodEnum< - typeof ControllerPlatform -> = z.enum(ControllerPlatform); - -/** @internal */ -export const Reason59$inboundSchema: z.ZodEnum = z.enum( - Reason59, -); - -/** @internal */ -export const CollectionIssueSeverity59$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity59 -> = z.enum(CollectionIssueSeverity59); - -/** @internal */ -export const CollectionIssue59$inboundSchema: z.ZodType< - CollectionIssue59, - unknown -> = z.object({ - message: z.string(), - reason: Reason59$inboundSchema, - severity: CollectionIssueSeverity59$inboundSchema, - source: z.string(), -}); - -export function collectionIssue59FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue59$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue59' from JSON`, - ); -} - -/** @internal */ -export const Health59$inboundSchema: z.ZodEnum = z.enum( - Health59, -); - -/** @internal */ -export const Lifecycle59$inboundSchema: z.ZodEnum = z.enum( - Lifecycle59, -); - -/** @internal */ -export const DataStatus59$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue59$inboundSchema)), - health: Health59$inboundSchema, - lifecycle: Lifecycle59$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus59FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus59$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus59' from JSON`, - ); -} - -/** @internal */ -export const Data5$inboundSchema: z.ZodType = z.object({ - createdAt: z.nullable(z.string()).optional(), - disableLocalAuth: z.nullable(z.boolean()).optional(), - location: z.nullable(z.string()).optional(), - metricId: z.nullable(z.string()).optional(), - minimumTlsVersion: z.nullable(z.string()).optional(), - name: z.string(), - namespaceStatus: z.nullable(z.string()).optional(), - premiumMessagingPartitions: z.nullable(z.int()).optional(), - privateEndpointConnectionCount: z.int(), - provisioningState: z.nullable(z.string()).optional(), - publicNetworkAccess: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - serviceBusEndpoint: z.nullable(z.string()).optional(), - skuCapacity: z.nullable(z.int()).optional(), - skuName: z.nullable(z.string()).optional(), - skuTier: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus59$inboundSchema), - updatedAt: z.nullable(z.string()).optional(), - zoneRedundant: z.nullable(z.boolean()).optional(), -}); - -export function data5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Data5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Data5' from JSON`, - ); -} - -/** @internal */ -export const DataAzureServiceBusNamespace$inboundSchema: z.ZodType< - DataAzureServiceBusNamespace, - unknown -> = z.object({ - data: z.lazy(() => Data5$inboundSchema), - resourceType: z.literal("azure_service_bus_namespace"), -}); - -export function dataAzureServiceBusNamespaceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureServiceBusNamespace$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureServiceBusNamespace' from JSON`, - ); -} - -/** @internal */ -export const Reason58$inboundSchema: z.ZodEnum = z.enum( - Reason58, -); - -/** @internal */ -export const CollectionIssueSeverity58$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity58 -> = z.enum(CollectionIssueSeverity58); - -/** @internal */ -export const CollectionIssue58$inboundSchema: z.ZodType< - CollectionIssue58, - unknown -> = z.object({ - message: z.string(), - reason: Reason58$inboundSchema, - severity: CollectionIssueSeverity58$inboundSchema, - source: z.string(), -}); - -export function collectionIssue58FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue58$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue58' from JSON`, - ); -} - -/** @internal */ -export const Health58$inboundSchema: z.ZodEnum = z.enum( - Health58, -); - -/** @internal */ -export const Lifecycle58$inboundSchema: z.ZodEnum = z.enum( - Lifecycle58, -); - -/** @internal */ -export const DataStatus58$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue58$inboundSchema)), - health: Health58$inboundSchema, - lifecycle: Lifecycle58$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus58FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus58$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus58' from JSON`, - ); -} - -/** @internal */ -export const WorkloadProfile$inboundSchema: z.ZodType< - WorkloadProfile, - unknown -> = z.object({ - maximumCount: z.nullable(z.int()).optional(), - minimumCount: z.nullable(z.int()).optional(), - name: z.string(), - workloadProfileType: z.string(), -}); - -export function workloadProfileFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => WorkloadProfile$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'WorkloadProfile' from JSON`, - ); -} - -/** @internal */ -export const Data4$inboundSchema: z.ZodType = z.object({ - customDomainVerificationId: z.nullable(z.string()).optional(), - defaultDomain: z.nullable(z.string()).optional(), - eventStreamEndpoint: z.nullable(z.string()).optional(), - infrastructureResourceGroup: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - location: z.nullable(z.string()).optional(), - name: z.string(), - provisioningState: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - staticIp: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus58$inboundSchema), - workloadProfileCount: z.int(), - workloadProfiles: z.array(z.lazy(() => WorkloadProfile$inboundSchema)), - zoneRedundant: z.nullable(z.boolean()).optional(), -}); - -export function data4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Data4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Data4' from JSON`, - ); -} - -/** @internal */ -export const DataAzureContainerAppsEnvironment$inboundSchema: z.ZodType< - DataAzureContainerAppsEnvironment, - unknown -> = z.object({ - data: z.lazy(() => Data4$inboundSchema), - resourceType: z.literal("azure_container_apps_environment"), -}); - -export function dataAzureContainerAppsEnvironmentFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureContainerAppsEnvironment$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureContainerAppsEnvironment' from JSON`, - ); -} - -/** @internal */ -export const PrimaryEndpoints$inboundSchema: z.ZodType< - PrimaryEndpoints, - unknown -> = z.object({ - blob: z.nullable(z.string()).optional(), - dfs: z.nullable(z.string()).optional(), - file: z.nullable(z.string()).optional(), - queue: z.nullable(z.string()).optional(), - table: z.nullable(z.string()).optional(), - web: z.nullable(z.string()).optional(), -}); - -export function primaryEndpointsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => PrimaryEndpoints$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'PrimaryEndpoints' from JSON`, - ); -} - -/** @internal */ -export const SecondaryEndpoints$inboundSchema: z.ZodType< - SecondaryEndpoints, - unknown -> = z.object({ - blob: z.nullable(z.string()).optional(), - dfs: z.nullable(z.string()).optional(), - file: z.nullable(z.string()).optional(), - queue: z.nullable(z.string()).optional(), - table: z.nullable(z.string()).optional(), - web: z.nullable(z.string()).optional(), -}); - -export function secondaryEndpointsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SecondaryEndpoints$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SecondaryEndpoints' from JSON`, - ); -} - -/** @internal */ -export const Reason57$inboundSchema: z.ZodEnum = z.enum( - Reason57, -); - -/** @internal */ -export const CollectionIssueSeverity57$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity57 -> = z.enum(CollectionIssueSeverity57); - -/** @internal */ -export const CollectionIssue57$inboundSchema: z.ZodType< - CollectionIssue57, - unknown -> = z.object({ - message: z.string(), - reason: Reason57$inboundSchema, - severity: CollectionIssueSeverity57$inboundSchema, - source: z.string(), -}); - -export function collectionIssue57FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue57$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue57' from JSON`, - ); -} - -/** @internal */ -export const Health57$inboundSchema: z.ZodEnum = z.enum( - Health57, -); - -/** @internal */ -export const Lifecycle57$inboundSchema: z.ZodEnum = z.enum( - Lifecycle57, -); - -/** @internal */ -export const DataStatus57$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue57$inboundSchema)), - health: Health57$inboundSchema, - lifecycle: Lifecycle57$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus57FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus57$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus57' from JSON`, - ); -} - -/** @internal */ -export const Data3$inboundSchema: z.ZodType = z.object({ - allowBlobPublicAccess: z.nullable(z.boolean()).optional(), - allowSharedKeyAccess: z.nullable(z.boolean()).optional(), - encryptionKeySource: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - location: z.nullable(z.string()).optional(), - minimumTlsVersion: z.nullable(z.string()).optional(), - name: z.string(), - networkBypass: z.nullable(z.string()).optional(), - networkDefaultAction: z.nullable(z.string()).optional(), - networkIpRuleCount: z.nullable(z.int()).optional(), - networkResourceAccessRuleCount: z.nullable(z.int()).optional(), - networkVirtualNetworkRuleCount: z.nullable(z.int()).optional(), - primaryEndpoints: z.lazy(() => PrimaryEndpoints$inboundSchema), - provisioningState: z.nullable(z.string()).optional(), - publicNetworkAccess: z.nullable(z.string()).optional(), - requireInfrastructureEncryption: z.nullable(z.boolean()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - secondaryEndpoints: z.lazy(() => SecondaryEndpoints$inboundSchema), - skuName: z.nullable(z.string()).optional(), - skuTier: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus57$inboundSchema), - supportsHttpsTrafficOnly: z.nullable(z.boolean()).optional(), -}); - -export function data3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Data3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Data3' from JSON`, - ); -} - -/** @internal */ -export const DataAzureStorageAccount$inboundSchema: z.ZodType< - DataAzureStorageAccount, - unknown -> = z.object({ - data: z.lazy(() => Data3$inboundSchema), - resourceType: z.literal("azure_storage_account"), -}); - -export function dataAzureStorageAccountFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureStorageAccount$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureStorageAccount' from JSON`, - ); -} - -/** @internal */ -export const Reason56$inboundSchema: z.ZodEnum = z.enum( - Reason56, -); - -/** @internal */ -export const CollectionIssueSeverity56$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity56 -> = z.enum(CollectionIssueSeverity56); - -/** @internal */ -export const CollectionIssue56$inboundSchema: z.ZodType< - CollectionIssue56, - unknown -> = z.object({ - message: z.string(), - reason: Reason56$inboundSchema, - severity: CollectionIssueSeverity56$inboundSchema, - source: z.string(), -}); - -export function collectionIssue56FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue56$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue56' from JSON`, - ); -} - -/** @internal */ -export const Health56$inboundSchema: z.ZodEnum = z.enum( - Health56, -); - -/** @internal */ -export const Lifecycle56$inboundSchema: z.ZodEnum = z.enum( - Lifecycle56, -); - -/** @internal */ -export const DataStatus56$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue56$inboundSchema)), - health: Health56$inboundSchema, - lifecycle: Lifecycle56$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus56FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus56$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus56' from JSON`, - ); -} - -/** @internal */ -export const Data2$inboundSchema: z.ZodType = z.object({ - location: z.nullable(z.string()).optional(), - managedTags: z.record(z.string(), z.string()), - name: z.string(), - provisioningState: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus56$inboundSchema), -}); - -export function data2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Data2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Data2' from JSON`, - ); -} - -/** @internal */ -export const DataAzureResourceGroup$inboundSchema: z.ZodType< - DataAzureResourceGroup, - unknown -> = z.object({ - data: z.lazy(() => Data2$inboundSchema), - resourceType: z.literal("azure_resource_group"), -}); - -export function dataAzureResourceGroupFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureResourceGroup$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureResourceGroup' from JSON`, - ); -} - -/** @internal */ -export const Reason55$inboundSchema: z.ZodEnum = z.enum( - Reason55, -); - -/** @internal */ -export const CollectionIssueSeverity55$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity55 -> = z.enum(CollectionIssueSeverity55); - -/** @internal */ -export const CollectionIssue55$inboundSchema: z.ZodType< - CollectionIssue55, - unknown -> = z.object({ - message: z.string(), - reason: Reason55$inboundSchema, - severity: CollectionIssueSeverity55$inboundSchema, - source: z.string(), -}); - -export function collectionIssue55FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue55$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue55' from JSON`, - ); -} - -/** @internal */ -export const Health55$inboundSchema: z.ZodEnum = z.enum( - Health55, -); - -/** @internal */ -export const Lifecycle55$inboundSchema: z.ZodEnum = z.enum( - Lifecycle55, -); - -/** @internal */ -export const DataStatus55$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue55$inboundSchema)), - health: Health55$inboundSchema, - lifecycle: Lifecycle55$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus55FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus55$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus55' from JSON`, - ); -} - -/** @internal */ -export const DataAzureResourceProvider$inboundSchema: z.ZodType< - DataAzureResourceProvider, - unknown -> = z.object({ - namespace: z.string(), - providerId: z.nullable(z.string()).optional(), - registered: z.boolean(), - registrationPolicy: z.nullable(z.string()).optional(), - registrationState: z.nullable(z.string()).optional(), - resourceTypeCount: z.int(), - status: z.lazy(() => DataStatus55$inboundSchema), - backend: z.literal("azureResourceProvider"), -}); - -export function dataAzureResourceProviderFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureResourceProvider$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureResourceProvider' from JSON`, - ); -} - -/** @internal */ -export const Reason54$inboundSchema: z.ZodEnum = z.enum( - Reason54, -); - -/** @internal */ -export const CollectionIssueSeverity54$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity54 -> = z.enum(CollectionIssueSeverity54); - -/** @internal */ -export const CollectionIssue54$inboundSchema: z.ZodType< - CollectionIssue54, - unknown -> = z.object({ - message: z.string(), - reason: Reason54$inboundSchema, - severity: CollectionIssueSeverity54$inboundSchema, - source: z.string(), -}); - -export function collectionIssue54FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue54$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue54' from JSON`, - ); -} - -/** @internal */ -export const Health54$inboundSchema: z.ZodEnum = z.enum( - Health54, -); - -/** @internal */ -export const Lifecycle54$inboundSchema: z.ZodEnum = z.enum( - Lifecycle54, -); - -/** @internal */ -export const DataStatus54$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue54$inboundSchema)), - health: Health54$inboundSchema, - lifecycle: Lifecycle54$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus54FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus54$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus54' from JSON`, - ); -} - -/** @internal */ -export const DataGcpServiceUsage$inboundSchema: z.ZodType< - DataGcpServiceUsage, - unknown -> = z.object({ - enabled: z.boolean(), - lastOperationName: z.nullable(z.string()).optional(), - projectId: z.string(), - serviceName: z.string(), - serviceResourceName: z.nullable(z.string()).optional(), - state: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus54$inboundSchema), - title: z.nullable(z.string()).optional(), - backend: z.literal("gcpServiceUsage"), -}); - -export function dataGcpServiceUsageFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcpServiceUsage$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcpServiceUsage' from JSON`, - ); -} - -/** @internal */ -export const DataUnion14$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => DataGcpServiceUsage$inboundSchema), - z.lazy(() => DataAzureResourceProvider$inboundSchema), - ]); - -export function dataUnion14FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion14$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion14' from JSON`, - ); -} - -/** @internal */ -export const DataServiceActivation$inboundSchema: z.ZodType< - DataServiceActivation, - unknown -> = z.object({ - data: z.union([ - z.lazy(() => DataGcpServiceUsage$inboundSchema), - z.lazy(() => DataAzureResourceProvider$inboundSchema), - ]), - resourceType: z.literal("service_activation"), -}); - -export function dataServiceActivationFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataServiceActivation$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataServiceActivation' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObject9$inboundSchema: z.ZodType< - InvolvedObject9, - unknown -> = z.object({ - apiVersion: z.nullable(z.string()).optional(), - fieldPath: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - namespace: z.nullable(z.string()).optional(), - resourceVersion: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), -}); - -export function involvedObject9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObject9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObject9' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObjectUnion9$inboundSchema: z.ZodType< - InvolvedObjectUnion9, - unknown -> = z.union([z.lazy(() => InvolvedObject9$inboundSchema), z.any()]); - -export function involvedObjectUnion9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObjectUnion9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObjectUnion9' from JSON`, - ); -} - -/** @internal */ -export const Source9$inboundSchema: z.ZodType = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function source9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Source9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Source9' from JSON`, - ); -} - -/** @internal */ -export const SourceUnion9$inboundSchema: z.ZodType = z - .union([z.lazy(() => Source9$inboundSchema), z.any()]); - -export function sourceUnion9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SourceUnion9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SourceUnion9' from JSON`, - ); -} - -/** @internal */ -export const Event12$inboundSchema: z.ZodType = z.object({ - count: z.nullable(z.int()).optional(), - eventTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - firstTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject9$inboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable(z.union([z.lazy(() => Source9$inboundSchema), z.any()])) - .optional(), - type: z.nullable(z.string()).optional(), -}); - -export function event12FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event12$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event12' from JSON`, - ); -} - -/** @internal */ -export const Reason53$inboundSchema: z.ZodEnum = z.enum( - Reason53, -); - -/** @internal */ -export const CollectionIssueSeverity53$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity53 -> = z.enum(CollectionIssueSeverity53); - -/** @internal */ -export const CollectionIssue53$inboundSchema: z.ZodType< - CollectionIssue53, - unknown -> = z.object({ - message: z.string(), - reason: Reason53$inboundSchema, - severity: CollectionIssueSeverity53$inboundSchema, - source: z.string(), -}); - -export function collectionIssue53FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue53$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue53' from JSON`, - ); -} - -/** @internal */ -export const Health53$inboundSchema: z.ZodEnum = z.enum( - Health53, -); - -/** @internal */ -export const Lifecycle53$inboundSchema: z.ZodEnum = z.enum( - Lifecycle53, -); - -/** @internal */ -export const DataStatus53$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue53$inboundSchema)), - health: Health53$inboundSchema, - lifecycle: Lifecycle53$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus53FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus53$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus53' from JSON`, - ); -} - -/** @internal */ -export const DataKubernetesJob$inboundSchema: z.ZodType< - DataKubernetesJob, - unknown -> = z.object({ - active: z.nullable(z.int()).optional(), - completionTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - conditionCount: z.int(), - events: z.array(z.lazy(() => Event12$inboundSchema)), - failed: z.nullable(z.int()).optional(), - imageDigest: z.nullable(z.string()).optional(), - jobName: z.string(), - namespace: z.string(), - startTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - status: z.lazy(() => DataStatus53$inboundSchema), - succeeded: z.nullable(z.int()).optional(), - backend: z.literal("kubernetesJob"), -}); - -export function dataKubernetesJobFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataKubernetesJob$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataKubernetesJob' from JSON`, - ); -} - -/** @internal */ -export const Reason52$inboundSchema: z.ZodEnum = z.enum( - Reason52, -); - -/** @internal */ -export const CollectionIssueSeverity52$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity52 -> = z.enum(CollectionIssueSeverity52); - -/** @internal */ -export const CollectionIssue52$inboundSchema: z.ZodType< - CollectionIssue52, - unknown -> = z.object({ - message: z.string(), - reason: Reason52$inboundSchema, - severity: CollectionIssueSeverity52$inboundSchema, - source: z.string(), -}); - -export function collectionIssue52FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue52$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue52' from JSON`, - ); -} - -/** @internal */ -export const Health52$inboundSchema: z.ZodEnum = z.enum( - Health52, -); - -/** @internal */ -export const Lifecycle52$inboundSchema: z.ZodEnum = z.enum( - Lifecycle52, -); - -/** @internal */ -export const DataStatus52$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue52$inboundSchema)), - health: Health52$inboundSchema, - lifecycle: Lifecycle52$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus52FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus52$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus52' from JSON`, - ); -} - -/** @internal */ -export const DataAzureContainerApps2$inboundSchema: z.ZodType< - DataAzureContainerApps2, - unknown -> = z.object({ - environmentVariableCount: z.int(), - managedEnvironmentId: z.string(), - managedIdentityId: z.nullable(z.string()).optional(), - resourceGroupName: z.string(), - resourcePrefix: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus52$inboundSchema), - backend: z.literal("azureContainerApps"), -}); - -export function dataAzureContainerApps2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureContainerApps2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureContainerApps2' from JSON`, - ); -} - -/** @internal */ -export const Reason51$inboundSchema: z.ZodEnum = z.enum( - Reason51, -); - -/** @internal */ -export const CollectionIssueSeverity51$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity51 -> = z.enum(CollectionIssueSeverity51); - -/** @internal */ -export const CollectionIssue51$inboundSchema: z.ZodType< - CollectionIssue51, - unknown -> = z.object({ - message: z.string(), - reason: Reason51$inboundSchema, - severity: CollectionIssueSeverity51$inboundSchema, - source: z.string(), -}); - -export function collectionIssue51FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue51$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue51' from JSON`, - ); -} - -/** @internal */ -export const Health51$inboundSchema: z.ZodEnum = z.enum( - Health51, -); - -/** @internal */ -export const Lifecycle51$inboundSchema: z.ZodEnum = z.enum( - Lifecycle51, -); - -/** @internal */ -export const DataStatus51$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue51$inboundSchema)), - health: Health51$inboundSchema, - lifecycle: Lifecycle51$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus51FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus51$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus51' from JSON`, - ); -} - -/** @internal */ -export const DataGcpCloudBuild$inboundSchema: z.ZodType< - DataGcpCloudBuild, - unknown -> = z.object({ - buildConfigId: z.string(), - environmentVariableCount: z.int(), - location: z.string(), - projectId: z.string(), - serviceAccount: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus51$inboundSchema), - backend: z.literal("gcpCloudBuild"), -}); - -export function dataGcpCloudBuildFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcpCloudBuild$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcpCloudBuild' from JSON`, - ); -} - -/** @internal */ -export const Reason50$inboundSchema: z.ZodEnum = z.enum( - Reason50, -); - -/** @internal */ -export const CollectionIssueSeverity50$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity50 -> = z.enum(CollectionIssueSeverity50); - -/** @internal */ -export const CollectionIssue50$inboundSchema: z.ZodType< - CollectionIssue50, - unknown -> = z.object({ - message: z.string(), - reason: Reason50$inboundSchema, - severity: CollectionIssueSeverity50$inboundSchema, - source: z.string(), -}); - -export function collectionIssue50FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue50$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue50' from JSON`, - ); -} - -/** @internal */ -export const Health50$inboundSchema: z.ZodEnum = z.enum( - Health50, -); - -/** @internal */ -export const Lifecycle50$inboundSchema: z.ZodEnum = z.enum( - Lifecycle50, -); - -/** @internal */ -export const DataStatus50$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue50$inboundSchema)), - health: Health50$inboundSchema, - lifecycle: Lifecycle50$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus50FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus50$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus50' from JSON`, - ); -} - -/** @internal */ -export const DataAwsCodeBuild$inboundSchema: z.ZodType< - DataAwsCodeBuild, - unknown -> = z.object({ - artifactsEncryptionDisabled: z.nullable(z.boolean()).optional(), - artifactsType: z.nullable(z.string()).optional(), - cloudWatchLogsStatus: z.nullable(z.string()).optional(), - computeType: z.nullable(z.string()).optional(), - created: z.nullable(z.number()).optional(), - description: z.nullable(z.string()).optional(), - encryptionKeyPresent: z.boolean(), - environmentImage: z.nullable(z.string()).optional(), - environmentType: z.nullable(z.string()).optional(), - environmentVariableCount: z.int(), - imagePullCredentialsType: z.nullable(z.string()).optional(), - lastModified: z.nullable(z.number()).optional(), - privilegedMode: z.nullable(z.boolean()).optional(), - projectArn: z.nullable(z.string()).optional(), - projectName: z.string(), - queuedTimeoutInMinutes: z.nullable(z.int()).optional(), - s3LogsStatus: z.nullable(z.string()).optional(), - serviceRolePresent: z.boolean(), - sourceType: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus50$inboundSchema), - timeoutInMinutes: z.nullable(z.int()).optional(), - backend: z.literal("awsCodeBuild"), -}); - -export function dataAwsCodeBuildFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAwsCodeBuild$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAwsCodeBuild' from JSON`, - ); -} - -/** @internal */ -export const DataUnion13$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => DataAwsCodeBuild$inboundSchema), - z.lazy(() => DataGcpCloudBuild$inboundSchema), - z.lazy(() => DataAzureContainerApps2$inboundSchema), - z.lazy(() => DataKubernetesJob$inboundSchema), - ]); - -export function dataUnion13FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion13$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion13' from JSON`, - ); -} - -/** @internal */ -export const DataBuild$inboundSchema: z.ZodType = z.object({ - data: z.union([ - z.lazy(() => DataAwsCodeBuild$inboundSchema), - z.lazy(() => DataGcpCloudBuild$inboundSchema), - z.lazy(() => DataAzureContainerApps2$inboundSchema), - z.lazy(() => DataKubernetesJob$inboundSchema), - ]), - resourceType: z.literal("build"), -}); - -export function dataBuildFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataBuild$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataBuild' from JSON`, - ); -} - -/** @internal */ -export const Reason49$inboundSchema: z.ZodEnum = z.enum( - Reason49, -); - -/** @internal */ -export const CollectionIssueSeverity49$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity49 -> = z.enum(CollectionIssueSeverity49); - -/** @internal */ -export const CollectionIssue49$inboundSchema: z.ZodType< - CollectionIssue49, - unknown -> = z.object({ - message: z.string(), - reason: Reason49$inboundSchema, - severity: CollectionIssueSeverity49$inboundSchema, - source: z.string(), -}); - -export function collectionIssue49FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue49$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue49' from JSON`, - ); -} - -/** @internal */ -export const Health49$inboundSchema: z.ZodEnum = z.enum( - Health49, -); - -/** @internal */ -export const Lifecycle49$inboundSchema: z.ZodEnum = z.enum( - Lifecycle49, -); - -/** @internal */ -export const DataStatus49$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue49$inboundSchema)), - health: Health49$inboundSchema, - lifecycle: Lifecycle49$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus49FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus49$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus49' from JSON`, - ); -} - -/** @internal */ -export const DataLocal10$inboundSchema: z.ZodType = z - .object({ - reachable: z.boolean(), - registryUrl: z.string(), - status: z.lazy(() => DataStatus49$inboundSchema), - backend: z.literal("local"), - }); - -export function dataLocal10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataLocal10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataLocal10' from JSON`, - ); -} - -/** @internal */ -export const Reason48$inboundSchema: z.ZodEnum = z.enum( - Reason48, -); - -/** @internal */ -export const CollectionIssueSeverity48$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity48 -> = z.enum(CollectionIssueSeverity48); - -/** @internal */ -export const CollectionIssue48$inboundSchema: z.ZodType< - CollectionIssue48, - unknown -> = z.object({ - message: z.string(), - reason: Reason48$inboundSchema, - severity: CollectionIssueSeverity48$inboundSchema, - source: z.string(), -}); - -export function collectionIssue48FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue48$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue48' from JSON`, - ); -} - -/** @internal */ -export const Health48$inboundSchema: z.ZodEnum = z.enum( - Health48, -); - -/** @internal */ -export const Lifecycle48$inboundSchema: z.ZodEnum = z.enum( - Lifecycle48, -); - -/** @internal */ -export const DataStatus48$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue48$inboundSchema)), - health: Health48$inboundSchema, - lifecycle: Lifecycle48$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus48FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus48$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus48' from JSON`, - ); -} - -/** @internal */ -export const DataAzureContainerRegistry$inboundSchema: z.ZodType< - DataAzureContainerRegistry, - unknown -> = z.object({ - adminUserEnabled: z.boolean(), - anonymousPullEnabled: z.boolean(), - creationDate: z.nullable(z.string()).optional(), - dataEndpointEnabled: z.nullable(z.boolean()).optional(), - dataEndpointHostNames: z.array(z.string()), - encryptionKeyIdentifierPresent: z.boolean(), - encryptionKeyVaultUriPresent: z.boolean(), - encryptionStatus: z.nullable(z.string()).optional(), - ipRuleCount: z.int(), - location: z.string(), - loginServer: z.nullable(z.string()).optional(), - managedTagCount: z.int(), - name: z.string(), - networkRuleBypassOptions: z.string(), - networkRuleDefaultAction: z.nullable(z.string()).optional(), - policiesPresent: z.boolean(), - policyCount: z.int(), - privateEndpointConnectionCount: z.int(), - provisioningState: z.nullable(z.string()).optional(), - publicNetworkAccess: z.string(), - resourceGroup: z.string(), - resourceId: z.nullable(z.string()).optional(), - skuName: z.string(), - skuTier: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus48$inboundSchema), - type: z.nullable(z.string()).optional(), - zoneRedundancy: z.string(), - backend: z.literal("azureContainerRegistry"), -}); - -export function dataAzureContainerRegistryFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureContainerRegistry$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureContainerRegistry' from JSON`, - ); -} - -/** @internal */ -export const Reason47$inboundSchema: z.ZodEnum = z.enum( - Reason47, -); - -/** @internal */ -export const CollectionIssueSeverity47$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity47 -> = z.enum(CollectionIssueSeverity47); - -/** @internal */ -export const CollectionIssue47$inboundSchema: z.ZodType< - CollectionIssue47, - unknown -> = z.object({ - message: z.string(), - reason: Reason47$inboundSchema, - severity: CollectionIssueSeverity47$inboundSchema, - source: z.string(), -}); - -export function collectionIssue47FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue47$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue47' from JSON`, - ); -} - -/** @internal */ -export const Health47$inboundSchema: z.ZodEnum = z.enum( - Health47, -); - -/** @internal */ -export const Lifecycle47$inboundSchema: z.ZodEnum = z.enum( - Lifecycle47, -); - -/** @internal */ -export const DataStatus47$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue47$inboundSchema)), - health: Health47$inboundSchema, - lifecycle: Lifecycle47$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus47FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus47$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus47' from JSON`, - ); -} - -/** @internal */ -export const DataGcpArtifactRegistry$inboundSchema: z.ZodType< - DataGcpArtifactRegistry, - unknown -> = z.object({ - cleanupPolicyCount: z.int(), - cleanupPolicyDryRun: z.nullable(z.boolean()).optional(), - createTime: z.nullable(z.string()).optional(), - description: z.nullable(z.string()).optional(), - format: z.nullable(z.string()).optional(), - iamBindingCount: z.int(), - iamPolicyEtagPresent: z.boolean(), - iamRoles: z.array(z.string()), - kmsKeyNamePresent: z.boolean(), - labelCount: z.int(), - location: z.string(), - mode: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - projectId: z.string(), - pullServiceAccountEmail: z.nullable(z.string()).optional(), - pushServiceAccountEmail: z.nullable(z.string()).optional(), - repositoryId: z.string(), - satisfiesPzs: z.nullable(z.boolean()).optional(), - sizeBytes: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus47$inboundSchema), - updateTime: z.nullable(z.string()).optional(), - backend: z.literal("gcpArtifactRegistry"), -}); - -export function dataGcpArtifactRegistryFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcpArtifactRegistry$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcpArtifactRegistry' from JSON`, - ); -} - -/** @internal */ -export const Repository$inboundSchema: z.ZodType = z - .object({ - createdAt: z.number(), - encryptionType: z.nullable(z.string()).optional(), - imageTagMutability: z.nullable(z.string()).optional(), - kmsKeyPresent: z.boolean(), - registryId: z.string(), - repositoryArn: z.string(), - repositoryName: z.string(), - repositoryUri: z.string(), - scanOnPush: z.nullable(z.boolean()).optional(), - }); - -export function repositoryFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Repository$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Repository' from JSON`, - ); -} - -/** @internal */ -export const Reason46$inboundSchema: z.ZodEnum = z.enum( - Reason46, -); - -/** @internal */ -export const CollectionIssueSeverity46$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity46 -> = z.enum(CollectionIssueSeverity46); - -/** @internal */ -export const CollectionIssue46$inboundSchema: z.ZodType< - CollectionIssue46, - unknown -> = z.object({ - message: z.string(), - reason: Reason46$inboundSchema, - severity: CollectionIssueSeverity46$inboundSchema, - source: z.string(), -}); - -export function collectionIssue46FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue46$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue46' from JSON`, - ); -} - -/** @internal */ -export const Health46$inboundSchema: z.ZodEnum = z.enum( - Health46, -); - -/** @internal */ -export const Lifecycle46$inboundSchema: z.ZodEnum = z.enum( - Lifecycle46, -); - -/** @internal */ -export const DataStatus46$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue46$inboundSchema)), - health: Health46$inboundSchema, - lifecycle: Lifecycle46$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus46FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus46$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus46' from JSON`, - ); -} - -/** @internal */ -export const DataAwsEcr$inboundSchema: z.ZodType = z - .object({ - pullRoleArn: z.nullable(z.string()).optional(), - pushRoleArn: z.nullable(z.string()).optional(), - region: z.string(), - registryId: z.string(), - registryUri: z.string(), - repositories: z.array(z.lazy(() => Repository$inboundSchema)), - repositoriesTruncated: z.boolean(), - repositoryCount: z.int(), - repositoryPrefix: z.string(), - status: z.lazy(() => DataStatus46$inboundSchema), - backend: z.literal("awsEcr"), - }); - -export function dataAwsEcrFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAwsEcr$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAwsEcr' from JSON`, - ); -} - -/** @internal */ -export const DataUnion12$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => DataAwsEcr$inboundSchema), - z.lazy(() => DataGcpArtifactRegistry$inboundSchema), - z.lazy(() => DataAzureContainerRegistry$inboundSchema), - z.lazy(() => DataLocal10$inboundSchema), - ]); - -export function dataUnion12FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion12$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion12' from JSON`, - ); -} - -/** @internal */ -export const DataArtifactRegistry$inboundSchema: z.ZodType< - DataArtifactRegistry, - unknown -> = z.object({ - data: z.union([ - z.lazy(() => DataAwsEcr$inboundSchema), - z.lazy(() => DataGcpArtifactRegistry$inboundSchema), - z.lazy(() => DataAzureContainerRegistry$inboundSchema), - z.lazy(() => DataLocal10$inboundSchema), - ]), - resourceType: z.literal("artifact-registry"), -}); - -export function dataArtifactRegistryFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataArtifactRegistry$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataArtifactRegistry' from JSON`, - ); -} - -/** @internal */ -export const Reason45$inboundSchema: z.ZodEnum = z.enum( - Reason45, -); - -/** @internal */ -export const CollectionIssueSeverity45$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity45 -> = z.enum(CollectionIssueSeverity45); - -/** @internal */ -export const CollectionIssue45$inboundSchema: z.ZodType< - CollectionIssue45, - unknown -> = z.object({ - message: z.string(), - reason: Reason45$inboundSchema, - severity: CollectionIssueSeverity45$inboundSchema, - source: z.string(), -}); - -export function collectionIssue45FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue45$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue45' from JSON`, - ); -} - -/** @internal */ -export const Health45$inboundSchema: z.ZodEnum = z.enum( - Health45, -); - -/** @internal */ -export const Lifecycle45$inboundSchema: z.ZodEnum = z.enum( - Lifecycle45, -); - -/** @internal */ -export const DataStatus45$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue45$inboundSchema)), - health: Health45$inboundSchema, - lifecycle: Lifecycle45$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus45FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus45$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus45' from JSON`, - ); -} - -/** @internal */ -export const DataAzureManagedIdentity2$inboundSchema: z.ZodType< - DataAzureManagedIdentity2, - unknown -> = z.object({ - ficName: z.nullable(z.string()).optional(), - roleAssignmentIds: z.array(z.string()), - roleDefinitionId: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus45$inboundSchema), - tenantId: z.nullable(z.string()).optional(), - uamiClientId: z.nullable(z.string()).optional(), - uamiPrincipalId: z.nullable(z.string()).optional(), - uamiResourceId: z.nullable(z.string()).optional(), - backend: z.literal("azureManagedIdentity"), -}); - -export function dataAzureManagedIdentity2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureManagedIdentity2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureManagedIdentity2' from JSON`, - ); -} - -/** @internal */ -export const Reason44$inboundSchema: z.ZodEnum = z.enum( - Reason44, -); - -/** @internal */ -export const CollectionIssueSeverity44$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity44 -> = z.enum(CollectionIssueSeverity44); - -/** @internal */ -export const CollectionIssue44$inboundSchema: z.ZodType< - CollectionIssue44, - unknown -> = z.object({ - message: z.string(), - reason: Reason44$inboundSchema, - severity: CollectionIssueSeverity44$inboundSchema, - source: z.string(), -}); - -export function collectionIssue44FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue44$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue44' from JSON`, - ); -} - -/** @internal */ -export const Health44$inboundSchema: z.ZodEnum = z.enum( - Health44, -); - -/** @internal */ -export const Lifecycle44$inboundSchema: z.ZodEnum = z.enum( - Lifecycle44, -); - -/** @internal */ -export const DataStatus44$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue44$inboundSchema)), - health: Health44$inboundSchema, - lifecycle: Lifecycle44$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus44FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus44$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus44' from JSON`, - ); -} - -/** @internal */ -export const DataGcpServiceAccount2$inboundSchema: z.ZodType< - DataGcpServiceAccount2, - unknown -> = z.object({ - impersonationGranted: z.boolean(), - roleBound: z.boolean(), - serviceAccountEmail: z.nullable(z.string()).optional(), - serviceAccountUniqueId: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus44$inboundSchema), - backend: z.literal("gcpServiceAccount"), -}); - -export function dataGcpServiceAccount2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcpServiceAccount2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcpServiceAccount2' from JSON`, - ); -} - -/** @internal */ -export const Reason43$inboundSchema: z.ZodEnum = z.enum( - Reason43, -); - -/** @internal */ -export const CollectionIssueSeverity43$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity43 -> = z.enum(CollectionIssueSeverity43); - -/** @internal */ -export const CollectionIssue43$inboundSchema: z.ZodType< - CollectionIssue43, - unknown -> = z.object({ - message: z.string(), - reason: Reason43$inboundSchema, - severity: CollectionIssueSeverity43$inboundSchema, - source: z.string(), -}); - -export function collectionIssue43FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue43$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue43' from JSON`, - ); -} - -/** @internal */ -export const Health43$inboundSchema: z.ZodEnum = z.enum( - Health43, -); - -/** @internal */ -export const Lifecycle43$inboundSchema: z.ZodEnum = z.enum( - Lifecycle43, -); - -/** @internal */ -export const DataStatus43$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue43$inboundSchema)), - health: Health43$inboundSchema, - lifecycle: Lifecycle43$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus43FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus43$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus43' from JSON`, - ); -} - -/** @internal */ -export const DataAwsIamRole2$inboundSchema: z.ZodType< - DataAwsIamRole2, - unknown -> = z.object({ - managementPermissionsApplied: z.boolean(), - roleArn: z.nullable(z.string()).optional(), - roleName: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus43$inboundSchema), - backend: z.literal("awsIamRole"), -}); - -export function dataAwsIamRole2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAwsIamRole2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAwsIamRole2' from JSON`, - ); -} - -/** @internal */ -export const DataUnion11$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => DataAwsIamRole2$inboundSchema), - z.lazy(() => DataGcpServiceAccount2$inboundSchema), - z.lazy(() => DataAzureManagedIdentity2$inboundSchema), - ]); - -export function dataUnion11FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion11$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion11' from JSON`, - ); -} - -/** @internal */ -export const DataRemoteStackManagement$inboundSchema: z.ZodType< - DataRemoteStackManagement, - unknown -> = z.object({ - data: z.union([ - z.lazy(() => DataAwsIamRole2$inboundSchema), - z.lazy(() => DataGcpServiceAccount2$inboundSchema), - z.lazy(() => DataAzureManagedIdentity2$inboundSchema), - ]), - resourceType: z.literal("remote-stack-management"), -}); - -export function dataRemoteStackManagementFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataRemoteStackManagement$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataRemoteStackManagement' from JSON`, - ); -} - -/** @internal */ -export const Reason42$inboundSchema: z.ZodEnum = z.enum( - Reason42, -); - -/** @internal */ -export const CollectionIssueSeverity42$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity42 -> = z.enum(CollectionIssueSeverity42); - -/** @internal */ -export const CollectionIssue42$inboundSchema: z.ZodType< - CollectionIssue42, - unknown -> = z.object({ - message: z.string(), - reason: Reason42$inboundSchema, - severity: CollectionIssueSeverity42$inboundSchema, - source: z.string(), -}); - -export function collectionIssue42FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue42$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue42' from JSON`, - ); -} - -/** @internal */ -export const Health42$inboundSchema: z.ZodEnum = z.enum( - Health42, -); - -/** @internal */ -export const Lifecycle42$inboundSchema: z.ZodEnum = z.enum( - Lifecycle42, -); - -/** @internal */ -export const DataStatus42$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue42$inboundSchema)), - health: Health42$inboundSchema, - lifecycle: Lifecycle42$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus42FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus42$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus42' from JSON`, - ); -} - -/** @internal */ -export const DataAzureVnet$inboundSchema: z.ZodType = z - .object({ - applicationGatewaySubnetName: z.nullable(z.string()).optional(), - cidrBlock: z.nullable(z.string()).optional(), - isByoVnet: z.boolean(), - lastByoVnetVerificationErrorCode: z.nullable(z.string()).optional(), - location: z.nullable(z.string()).optional(), - natGatewayId: z.nullable(z.string()).optional(), - nsgId: z.nullable(z.string()).optional(), - privateSubnetName: z.nullable(z.string()).optional(), - publicIpId: z.nullable(z.string()).optional(), - publicSubnetName: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus42$inboundSchema), - vnetName: z.nullable(z.string()).optional(), - vnetResourceId: z.nullable(z.string()).optional(), - backend: z.literal("azureVnet"), - }); - -export function dataAzureVnetFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureVnet$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureVnet' from JSON`, - ); -} - -/** @internal */ -export const Reason41$inboundSchema: z.ZodEnum = z.enum( - Reason41, -); - -/** @internal */ -export const CollectionIssueSeverity41$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity41 -> = z.enum(CollectionIssueSeverity41); - -/** @internal */ -export const CollectionIssue41$inboundSchema: z.ZodType< - CollectionIssue41, - unknown -> = z.object({ - message: z.string(), - reason: Reason41$inboundSchema, - severity: CollectionIssueSeverity41$inboundSchema, - source: z.string(), -}); - -export function collectionIssue41FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue41$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue41' from JSON`, - ); -} - -/** @internal */ -export const Health41$inboundSchema: z.ZodEnum = z.enum( - Health41, -); - -/** @internal */ -export const Lifecycle41$inboundSchema: z.ZodEnum = z.enum( - Lifecycle41, -); - -/** @internal */ -export const DataStatus41$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue41$inboundSchema)), - health: Health41$inboundSchema, - lifecycle: Lifecycle41$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus41FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus41$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus41' from JSON`, - ); -} - -/** @internal */ -export const DataGcpVpc$inboundSchema: z.ZodType = z - .object({ - cidrBlock: z.nullable(z.string()).optional(), - cloudNatName: z.nullable(z.string()).optional(), - firewallName: z.nullable(z.string()).optional(), - isByoVpc: z.boolean(), - networkName: z.nullable(z.string()).optional(), - networkSelfLink: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - routerName: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus41$inboundSchema), - subnetworkName: z.nullable(z.string()).optional(), - subnetworkSelfLink: z.nullable(z.string()).optional(), - backend: z.literal("gcpVpc"), - }); - -export function dataGcpVpcFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcpVpc$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcpVpc' from JSON`, - ); -} - -/** @internal */ -export const Reason40$inboundSchema: z.ZodEnum = z.enum( - Reason40, -); - -/** @internal */ -export const CollectionIssueSeverity40$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity40 -> = z.enum(CollectionIssueSeverity40); - -/** @internal */ -export const CollectionIssue40$inboundSchema: z.ZodType< - CollectionIssue40, - unknown -> = z.object({ - message: z.string(), - reason: Reason40$inboundSchema, - severity: CollectionIssueSeverity40$inboundSchema, - source: z.string(), -}); - -export function collectionIssue40FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue40$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue40' from JSON`, - ); -} - -/** @internal */ -export const Health40$inboundSchema: z.ZodEnum = z.enum( - Health40, -); - -/** @internal */ -export const Lifecycle40$inboundSchema: z.ZodEnum = z.enum( - Lifecycle40, -); - -/** @internal */ -export const DataStatus40$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue40$inboundSchema)), - health: Health40$inboundSchema, - lifecycle: Lifecycle40$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus40FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus40$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus40' from JSON`, - ); -} - -/** @internal */ -export const DataAwsVpc$inboundSchema: z.ZodType = z - .object({ - availabilityZones: z.array(z.string()), - cidrBlock: z.nullable(z.string()).optional(), - internetGatewayId: z.nullable(z.string()).optional(), - isByoVpc: z.boolean(), - natGatewayId: z.nullable(z.string()).optional(), - privateSubnetIds: z.array(z.string()), - publicSubnetIds: z.array(z.string()), - routeTableCount: z.int(), - securityGroupId: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus40$inboundSchema), - vpcId: z.nullable(z.string()).optional(), - vpcState: z.nullable(z.string()).optional(), - backend: z.literal("awsVpc"), - }); - -export function dataAwsVpcFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAwsVpc$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAwsVpc' from JSON`, - ); -} - -/** @internal */ -export const DataUnion10$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => DataAwsVpc$inboundSchema), - z.lazy(() => DataGcpVpc$inboundSchema), - z.lazy(() => DataAzureVnet$inboundSchema), - ]); - -export function dataUnion10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion10' from JSON`, - ); -} - -/** @internal */ -export const DataNetwork$inboundSchema: z.ZodType = z - .object({ - data: z.union([ - z.lazy(() => DataAwsVpc$inboundSchema), - z.lazy(() => DataGcpVpc$inboundSchema), - z.lazy(() => DataAzureVnet$inboundSchema), - ]), - resourceType: z.literal("network"), - }); - -export function dataNetworkFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataNetwork$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataNetwork' from JSON`, - ); -} - -/** @internal */ -export const Reason39$inboundSchema: z.ZodEnum = z.enum( - Reason39, -); - -/** @internal */ -export const CollectionIssueSeverity39$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity39 -> = z.enum(CollectionIssueSeverity39); - -/** @internal */ -export const CollectionIssue39$inboundSchema: z.ZodType< - CollectionIssue39, - unknown -> = z.object({ - message: z.string(), - reason: Reason39$inboundSchema, - severity: CollectionIssueSeverity39$inboundSchema, - source: z.string(), -}); - -export function collectionIssue39FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue39$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue39' from JSON`, - ); -} - -/** @internal */ -export const Health39$inboundSchema: z.ZodEnum = z.enum( - Health39, -); - -/** @internal */ -export const Lifecycle39$inboundSchema: z.ZodEnum = z.enum( - Lifecycle39, -); - -/** @internal */ -export const DataStatus39$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue39$inboundSchema)), - health: Health39$inboundSchema, - lifecycle: Lifecycle39$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus39FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus39$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus39' from JSON`, - ); -} - -/** @internal */ -export const DataLocal9$inboundSchema: z.ZodType = z - .object({ - configured: z.boolean(), - identity: z.string(), - status: z.lazy(() => DataStatus39$inboundSchema), - backend: z.literal("local"), - }); - -export function dataLocal9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataLocal9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataLocal9' from JSON`, - ); -} - -/** @internal */ -export const Reason38$inboundSchema: z.ZodEnum = z.enum( - Reason38, -); - -/** @internal */ -export const CollectionIssueSeverity38$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity38 -> = z.enum(CollectionIssueSeverity38); - -/** @internal */ -export const CollectionIssue38$inboundSchema: z.ZodType< - CollectionIssue38, - unknown -> = z.object({ - message: z.string(), - reason: Reason38$inboundSchema, - severity: CollectionIssueSeverity38$inboundSchema, - source: z.string(), -}); - -export function collectionIssue38FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue38$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue38' from JSON`, - ); -} - -/** @internal */ -export const Health38$inboundSchema: z.ZodEnum = z.enum( - Health38, -); - -/** @internal */ -export const Lifecycle38$inboundSchema: z.ZodEnum = z.enum( - Lifecycle38, -); - -/** @internal */ -export const DataStatus38$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue38$inboundSchema)), - health: Health38$inboundSchema, - lifecycle: Lifecycle38$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus38FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus38$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus38' from JSON`, - ); -} - -/** @internal */ -export const DataAzureManagedIdentity1$inboundSchema: z.ZodType< - DataAzureManagedIdentity1, - unknown -> = z.object({ - clientId: z.nullable(z.string()).optional(), - customRoleDefinitionCount: z.int(), - customRoleDefinitionIds: z.array(z.string()), - isolationScope: z.nullable(z.string()).optional(), - location: z.string(), - managedTagCount: z.int(), - name: z.string(), - principalId: z.nullable(z.string()).optional(), - resourceGroup: z.string(), - resourceId: z.string(), - roleAssignmentCount: z.int(), - roleAssignmentIds: z.array(z.string()), - stackPermissionsApplied: z.boolean(), - status: z.lazy(() => DataStatus38$inboundSchema), - tenantId: z.nullable(z.string()).optional(), - type: z.nullable(z.string()).optional(), - backend: z.literal("azureManagedIdentity"), -}); - -export function dataAzureManagedIdentity1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureManagedIdentity1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureManagedIdentity1' from JSON`, - ); -} - -/** @internal */ -export const Reason37$inboundSchema: z.ZodEnum = z.enum( - Reason37, -); - -/** @internal */ -export const CollectionIssueSeverity37$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity37 -> = z.enum(CollectionIssueSeverity37); - -/** @internal */ -export const CollectionIssue37$inboundSchema: z.ZodType< - CollectionIssue37, - unknown -> = z.object({ - message: z.string(), - reason: Reason37$inboundSchema, - severity: CollectionIssueSeverity37$inboundSchema, - source: z.string(), -}); - -export function collectionIssue37FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue37$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue37' from JSON`, - ); -} - -/** @internal */ -export const Health37$inboundSchema: z.ZodEnum = z.enum( - Health37, -); - -/** @internal */ -export const Lifecycle37$inboundSchema: z.ZodEnum = z.enum( - Lifecycle37, -); - -/** @internal */ -export const DataStatus37$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue37$inboundSchema)), - health: Health37$inboundSchema, - lifecycle: Lifecycle37$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus37FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus37$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus37' from JSON`, - ); -} - -/** @internal */ -export const DataGcpServiceAccount1$inboundSchema: z.ZodType< - DataGcpServiceAccount1, - unknown -> = z.object({ - description: z.nullable(z.string()).optional(), - disabled: z.nullable(z.boolean()).optional(), - displayName: z.nullable(z.string()).optional(), - email: z.string(), - etag: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - oauth2ClientId: z.nullable(z.string()).optional(), - projectBindingCount: z.int(), - projectId: z.nullable(z.string()).optional(), - projectRoles: z.array(z.string()), - serviceAccountBindingCount: z.int(), - serviceAccountRoles: z.array(z.string()), - status: z.lazy(() => DataStatus37$inboundSchema), - uniqueId: z.nullable(z.string()).optional(), - backend: z.literal("gcpServiceAccount"), -}); - -export function dataGcpServiceAccount1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcpServiceAccount1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcpServiceAccount1' from JSON`, - ); -} - -/** @internal */ -export const Reason36$inboundSchema: z.ZodEnum = z.enum( - Reason36, -); - -/** @internal */ -export const CollectionIssueSeverity36$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity36 -> = z.enum(CollectionIssueSeverity36); - -/** @internal */ -export const CollectionIssue36$inboundSchema: z.ZodType< - CollectionIssue36, - unknown -> = z.object({ - message: z.string(), - reason: Reason36$inboundSchema, - severity: CollectionIssueSeverity36$inboundSchema, - source: z.string(), -}); - -export function collectionIssue36FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue36$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue36' from JSON`, - ); -} - -/** @internal */ -export const Health36$inboundSchema: z.ZodEnum = z.enum( - Health36, -); - -/** @internal */ -export const Lifecycle36$inboundSchema: z.ZodEnum = z.enum( - Lifecycle36, -); - -/** @internal */ -export const DataStatus36$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue36$inboundSchema)), - health: Health36$inboundSchema, - lifecycle: Lifecycle36$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus36FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus36$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus36' from JSON`, - ); -} - -/** @internal */ -export const DataAwsIamRole1$inboundSchema: z.ZodType< - DataAwsIamRole1, - unknown -> = z.object({ - assumeRolePolicyPresent: z.boolean(), - attachedPolicyCount: z.int(), - attachedPolicyNames: z.array(z.string()), - createDate: z.string(), - description: z.nullable(z.string()).optional(), - inlinePolicyCount: z.int(), - inlinePolicyNames: z.array(z.string()), - lastUsedDate: z.nullable(z.string()).optional(), - lastUsedRegion: z.nullable(z.string()).optional(), - managedTagCount: z.int(), - maxSessionDuration: z.nullable(z.int()).optional(), - path: z.string(), - permissionsBoundaryArn: z.nullable(z.string()).optional(), - permissionsBoundaryType: z.nullable(z.string()).optional(), - roleArn: z.string(), - roleId: z.string(), - roleName: z.string(), - stackPermissionsApplied: z.boolean(), - status: z.lazy(() => DataStatus36$inboundSchema), - tagCount: z.int(), - backend: z.literal("awsIamRole"), -}); - -export function dataAwsIamRole1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAwsIamRole1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAwsIamRole1' from JSON`, - ); -} - -/** @internal */ -export const DataUnion9$inboundSchema: z.ZodType = z.union( - [ - z.lazy(() => DataAwsIamRole1$inboundSchema), - z.lazy(() => DataGcpServiceAccount1$inboundSchema), - z.lazy(() => DataAzureManagedIdentity1$inboundSchema), - z.lazy(() => DataLocal9$inboundSchema), - ], -); - -export function dataUnion9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion9' from JSON`, - ); -} - -/** @internal */ -export const DataServiceAccount$inboundSchema: z.ZodType< - DataServiceAccount, - unknown -> = z.object({ - data: z.union([ - z.lazy(() => DataAwsIamRole1$inboundSchema), - z.lazy(() => DataGcpServiceAccount1$inboundSchema), - z.lazy(() => DataAzureManagedIdentity1$inboundSchema), - z.lazy(() => DataLocal9$inboundSchema), - ]), - resourceType: z.literal("service-account"), -}); - -export function dataServiceAccountFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataServiceAccount$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataServiceAccount' from JSON`, - ); -} - -/** @internal */ -export const Reason35$inboundSchema: z.ZodEnum = z.enum( - Reason35, -); - -/** @internal */ -export const CollectionIssueSeverity35$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity35 -> = z.enum(CollectionIssueSeverity35); - -/** @internal */ -export const CollectionIssue35$inboundSchema: z.ZodType< - CollectionIssue35, - unknown -> = z.object({ - message: z.string(), - reason: Reason35$inboundSchema, - severity: CollectionIssueSeverity35$inboundSchema, - source: z.string(), -}); - -export function collectionIssue35FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue35$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue35' from JSON`, - ); -} - -/** @internal */ -export const Health35$inboundSchema: z.ZodEnum = z.enum( - Health35, -); - -/** @internal */ -export const Lifecycle35$inboundSchema: z.ZodEnum = z.enum( - Lifecycle35, -); - -/** @internal */ -export const DataStatus35$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue35$inboundSchema)), - health: Health35$inboundSchema, - lifecycle: Lifecycle35$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus35FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus35$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus35' from JSON`, - ); -} - -/** @internal */ -export const DataLocal8$inboundSchema: z.ZodType = z - .object({ - isDirectory: z.nullable(z.boolean()).optional(), - modifiedAt: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - path: z.string(), - pathExists: z.boolean(), - readonly: z.nullable(z.boolean()).optional(), - secretMetadataListed: z.boolean(), - status: z.lazy(() => DataStatus35$inboundSchema), - backend: z.literal("local"), - }); - -export function dataLocal8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataLocal8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataLocal8' from JSON`, - ); -} - -/** @internal */ -export const Reason34$inboundSchema: z.ZodEnum = z.enum( - Reason34, -); - -/** @internal */ -export const CollectionIssueSeverity34$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity34 -> = z.enum(CollectionIssueSeverity34); - -/** @internal */ -export const CollectionIssue34$inboundSchema: z.ZodType< - CollectionIssue34, - unknown -> = z.object({ - message: z.string(), - reason: Reason34$inboundSchema, - severity: CollectionIssueSeverity34$inboundSchema, - source: z.string(), -}); - -export function collectionIssue34FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue34$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue34' from JSON`, - ); -} - -/** @internal */ -export const Health34$inboundSchema: z.ZodEnum = z.enum( - Health34, -); - -/** @internal */ -export const Lifecycle34$inboundSchema: z.ZodEnum = z.enum( - Lifecycle34, -); - -/** @internal */ -export const DataStatus34$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue34$inboundSchema)), - health: Health34$inboundSchema, - lifecycle: Lifecycle34$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus34FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus34$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus34' from JSON`, - ); -} - -/** @internal */ -export const DataKubernetesSecret$inboundSchema: z.ZodType< - DataKubernetesSecret, - unknown -> = z.object({ - namespace: z.string(), - prefix: z.string(), - secretMetadataListed: z.boolean(), - status: z.lazy(() => DataStatus34$inboundSchema), - backend: z.literal("kubernetesSecret"), -}); - -export function dataKubernetesSecretFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataKubernetesSecret$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataKubernetesSecret' from JSON`, - ); -} - -/** @internal */ -export const Reason33$inboundSchema: z.ZodEnum = z.enum( - Reason33, -); - -/** @internal */ -export const CollectionIssueSeverity33$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity33 -> = z.enum(CollectionIssueSeverity33); - -/** @internal */ -export const CollectionIssue33$inboundSchema: z.ZodType< - CollectionIssue33, - unknown -> = z.object({ - message: z.string(), - reason: Reason33$inboundSchema, - severity: CollectionIssueSeverity33$inboundSchema, - source: z.string(), -}); - -export function collectionIssue33FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue33$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue33' from JSON`, - ); -} - -/** @internal */ -export const Health33$inboundSchema: z.ZodEnum = z.enum( - Health33, -); - -/** @internal */ -export const Lifecycle33$inboundSchema: z.ZodEnum = z.enum( - Lifecycle33, -); - -/** @internal */ -export const DataStatus33$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue33$inboundSchema)), - health: Health33$inboundSchema, - lifecycle: Lifecycle33$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus33FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus33$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus33' from JSON`, - ); -} - -/** @internal */ -export const DataAzureKeyVault$inboundSchema: z.ZodType< - DataAzureKeyVault, - unknown -> = z.object({ - accessPolicyCount: z.int(), - location: z.nullable(z.string()).optional(), - name: z.string(), - privateEndpointConnectionCount: z.int(), - provisioningState: z.nullable(z.string()).optional(), - publicNetworkAccess: z.string(), - purgeProtectionEnabled: z.nullable(z.boolean()).optional(), - rbacAuthorizationEnabled: z.boolean(), - resourceGroup: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - secretMetadataListed: z.boolean(), - skuFamily: z.nullable(z.string()).optional(), - skuName: z.nullable(z.string()).optional(), - softDeleteEnabled: z.boolean(), - softDeleteRetentionDays: z.int(), - status: z.lazy(() => DataStatus33$inboundSchema), - vaultUri: z.nullable(z.string()).optional(), - backend: z.literal("azureKeyVault"), -}); - -export function dataAzureKeyVaultFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureKeyVault$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureKeyVault' from JSON`, - ); -} - -/** @internal */ -export const Reason32$inboundSchema: z.ZodEnum = z.enum( - Reason32, -); - -/** @internal */ -export const CollectionIssueSeverity32$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity32 -> = z.enum(CollectionIssueSeverity32); - -/** @internal */ -export const CollectionIssue32$inboundSchema: z.ZodType< - CollectionIssue32, - unknown -> = z.object({ - message: z.string(), - reason: Reason32$inboundSchema, - severity: CollectionIssueSeverity32$inboundSchema, - source: z.string(), -}); - -export function collectionIssue32FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue32$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue32' from JSON`, - ); -} - -/** @internal */ -export const Health32$inboundSchema: z.ZodEnum = z.enum( - Health32, -); - -/** @internal */ -export const Lifecycle32$inboundSchema: z.ZodEnum = z.enum( - Lifecycle32, -); - -/** @internal */ -export const DataStatus32$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue32$inboundSchema)), - health: Health32$inboundSchema, - lifecycle: Lifecycle32$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus32FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus32$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus32' from JSON`, - ); -} - -/** @internal */ -export const DataGcpSecretManager$inboundSchema: z.ZodType< - DataGcpSecretManager, - unknown -> = z.object({ - location: z.string(), - prefix: z.string(), - projectId: z.string(), - secretMetadataListed: z.boolean(), - status: z.lazy(() => DataStatus32$inboundSchema), - backend: z.literal("gcpSecretManager"), -}); - -export function dataGcpSecretManagerFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcpSecretManager$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcpSecretManager' from JSON`, - ); -} - -/** @internal */ -export const Reason31$inboundSchema: z.ZodEnum = z.enum( - Reason31, -); - -/** @internal */ -export const CollectionIssueSeverity31$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity31 -> = z.enum(CollectionIssueSeverity31); - -/** @internal */ -export const CollectionIssue31$inboundSchema: z.ZodType< - CollectionIssue31, - unknown -> = z.object({ - message: z.string(), - reason: Reason31$inboundSchema, - severity: CollectionIssueSeverity31$inboundSchema, - source: z.string(), -}); - -export function collectionIssue31FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue31$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue31' from JSON`, - ); -} - -/** @internal */ -export const Health31$inboundSchema: z.ZodEnum = z.enum( - Health31, -); - -/** @internal */ -export const Lifecycle31$inboundSchema: z.ZodEnum = z.enum( - Lifecycle31, -); - -/** @internal */ -export const DataStatus31$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue31$inboundSchema)), - health: Health31$inboundSchema, - lifecycle: Lifecycle31$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus31FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus31$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus31' from JSON`, - ); -} - -/** @internal */ -export const DataAwsParameterStore$inboundSchema: z.ZodType< - DataAwsParameterStore, - unknown -> = z.object({ - accountId: z.string(), - hasMoreParameters: z.nullable(z.boolean()).optional(), - latestModifiedAt: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - parameterMetadataSampled: z.boolean(), - prefix: z.string(), - region: z.string(), - sampledAdvancedTierCount: z.nullable(z.int()).optional(), - sampledKmsKeyMetadataPresentCount: z.nullable(z.int()).optional(), - sampledParameterCount: z.nullable(z.int()).optional(), - sampledSecureStringCount: z.nullable(z.int()).optional(), - sampledStringCount: z.nullable(z.int()).optional(), - sampledStringListCount: z.nullable(z.int()).optional(), - status: z.lazy(() => DataStatus31$inboundSchema), - backend: z.literal("awsParameterStore"), -}); - -export function dataAwsParameterStoreFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAwsParameterStore$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAwsParameterStore' from JSON`, - ); -} - -/** @internal */ -export const DataUnion8$inboundSchema: z.ZodType = z.union( - [ - z.lazy(() => DataAwsParameterStore$inboundSchema), - z.lazy(() => DataGcpSecretManager$inboundSchema), - z.lazy(() => DataAzureKeyVault$inboundSchema), - z.lazy(() => DataKubernetesSecret$inboundSchema), - z.lazy(() => DataLocal8$inboundSchema), - ], -); - -export function dataUnion8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion8' from JSON`, - ); -} - -/** @internal */ -export const DataVault$inboundSchema: z.ZodType = z.object({ - data: z.union([ - z.lazy(() => DataAwsParameterStore$inboundSchema), - z.lazy(() => DataGcpSecretManager$inboundSchema), - z.lazy(() => DataAzureKeyVault$inboundSchema), - z.lazy(() => DataKubernetesSecret$inboundSchema), - z.lazy(() => DataLocal8$inboundSchema), - ]), - resourceType: z.literal("vault"), -}); - -export function dataVaultFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataVault$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataVault' from JSON`, - ); -} - -/** @internal */ -export const Reason30$inboundSchema: z.ZodEnum = z.enum( - Reason30, -); - -/** @internal */ -export const CollectionIssueSeverity30$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity30 -> = z.enum(CollectionIssueSeverity30); - -/** @internal */ -export const CollectionIssue30$inboundSchema: z.ZodType< - CollectionIssue30, - unknown -> = z.object({ - message: z.string(), - reason: Reason30$inboundSchema, - severity: CollectionIssueSeverity30$inboundSchema, - source: z.string(), -}); - -export function collectionIssue30FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue30$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue30' from JSON`, - ); -} - -/** @internal */ -export const Health30$inboundSchema: z.ZodEnum = z.enum( - Health30, -); - -/** @internal */ -export const Lifecycle30$inboundSchema: z.ZodEnum = z.enum( - Lifecycle30, -); - -/** @internal */ -export const DataStatus30$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue30$inboundSchema)), - health: Health30$inboundSchema, - lifecycle: Lifecycle30$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus30FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus30$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus30' from JSON`, - ); -} - -/** @internal */ -export const DataLocal7$inboundSchema: z.ZodType = z - .object({ - cloudMetadataSupported: z.boolean(), - isDirectory: z.nullable(z.boolean()).optional(), - name: z.string(), - path: z.string(), - pathExists: z.boolean(), - status: z.lazy(() => DataStatus30$inboundSchema), - backend: z.literal("local"), - }); - -export function dataLocal7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataLocal7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataLocal7' from JSON`, - ); -} - -/** @internal */ -export const Reason29$inboundSchema: z.ZodEnum = z.enum( - Reason29, -); - -/** @internal */ -export const CollectionIssueSeverity29$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity29 -> = z.enum(CollectionIssueSeverity29); - -/** @internal */ -export const CollectionIssue29$inboundSchema: z.ZodType< - CollectionIssue29, - unknown -> = z.object({ - message: z.string(), - reason: Reason29$inboundSchema, - severity: CollectionIssueSeverity29$inboundSchema, - source: z.string(), -}); - -export function collectionIssue29FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue29$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue29' from JSON`, - ); -} - -/** @internal */ -export const Health29$inboundSchema: z.ZodEnum = z.enum( - Health29, -); - -/** @internal */ -export const Lifecycle29$inboundSchema: z.ZodEnum = z.enum( - Lifecycle29, -); - -/** @internal */ -export const DataStatus29$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue29$inboundSchema)), - health: Health29$inboundSchema, - lifecycle: Lifecycle29$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus29FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus29$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus29' from JSON`, - ); -} - -/** @internal */ -export const DataAzureTable$inboundSchema: z.ZodType = - z.object({ - endpoint: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - signedIdentifierCount: z.nullable(z.int()).optional(), - status: z.lazy(() => DataStatus29$inboundSchema), - storageAccountKind: z.nullable(z.string()).optional(), - storageAccountLocation: z.nullable(z.string()).optional(), - storageAccountName: z.string(), - storageAccountPrimaryStatus: z.nullable(z.string()).optional(), - storageAccountProvisioningState: z.nullable(z.string()).optional(), - storageAccountResourceId: z.nullable(z.string()).optional(), - tableExists: z.boolean(), - tableName: z.string(), - backend: z.literal("azureTable"), - }); - -export function dataAzureTableFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureTable$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureTable' from JSON`, - ); -} - -/** @internal */ -export const Reason28$inboundSchema: z.ZodEnum = z.enum( - Reason28, -); - -/** @internal */ -export const CollectionIssueSeverity28$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity28 -> = z.enum(CollectionIssueSeverity28); - -/** @internal */ -export const CollectionIssue28$inboundSchema: z.ZodType< - CollectionIssue28, - unknown -> = z.object({ - message: z.string(), - reason: Reason28$inboundSchema, - severity: CollectionIssueSeverity28$inboundSchema, - source: z.string(), -}); - -export function collectionIssue28FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue28$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue28' from JSON`, - ); -} - -/** @internal */ -export const Health28$inboundSchema: z.ZodEnum = z.enum( - Health28, -); - -/** @internal */ -export const Lifecycle28$inboundSchema: z.ZodEnum = z.enum( - Lifecycle28, -); - -/** @internal */ -export const DataStatus28$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue28$inboundSchema)), - health: Health28$inboundSchema, - lifecycle: Lifecycle28$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus28FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus28$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus28' from JSON`, - ); -} - -/** @internal */ -export const DataGcpFirestore$inboundSchema: z.ZodType< - DataGcpFirestore, - unknown -> = z.object({ - appEngineIntegrationMode: z.nullable(z.string()).optional(), - cmekEnabled: z.boolean(), - concurrencyMode: z.nullable(z.string()).optional(), - createTime: z.nullable(z.string()).optional(), - databaseEdition: z.nullable(z.string()).optional(), - databaseName: z.string(), - databaseType: z.nullable(z.string()).optional(), - deleteProtectionState: z.nullable(z.string()).optional(), - deleteTime: z.nullable(z.string()).optional(), - earliestVersionTime: z.nullable(z.string()).optional(), - endpoint: z.nullable(z.string()).optional(), - locationId: z.nullable(z.string()).optional(), - pointInTimeRecoveryEnablement: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - sourceInfoPresent: z.boolean(), - status: z.lazy(() => DataStatus28$inboundSchema), - updateTime: z.nullable(z.string()).optional(), - versionRetentionPeriod: z.nullable(z.string()).optional(), - backend: z.literal("gcpFirestore"), -}); - -export function dataGcpFirestoreFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcpFirestore$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcpFirestore' from JSON`, - ); -} - -/** @internal */ -export const KeySchema$inboundSchema: z.ZodType = z.object({ - attributeName: z.string(), - keyType: z.string(), -}); - -export function keySchemaFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => KeySchema$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'KeySchema' from JSON`, - ); -} - -/** @internal */ -export const Reason27$inboundSchema: z.ZodEnum = z.enum( - Reason27, -); - -/** @internal */ -export const CollectionIssueSeverity27$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity27 -> = z.enum(CollectionIssueSeverity27); - -/** @internal */ -export const CollectionIssue27$inboundSchema: z.ZodType< - CollectionIssue27, - unknown -> = z.object({ - message: z.string(), - reason: Reason27$inboundSchema, - severity: CollectionIssueSeverity27$inboundSchema, - source: z.string(), -}); - -export function collectionIssue27FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue27$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue27' from JSON`, - ); -} - -/** @internal */ -export const Health27$inboundSchema: z.ZodEnum = z.enum( - Health27, -); - -/** @internal */ -export const Lifecycle27$inboundSchema: z.ZodEnum = z.enum( - Lifecycle27, -); - -/** @internal */ -export const DataStatus27$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue27$inboundSchema)), - health: Health27$inboundSchema, - lifecycle: Lifecycle27$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus27FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus27$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus27' from JSON`, - ); -} - -/** @internal */ -export const DataAwsDynamoDb$inboundSchema: z.ZodType< - DataAwsDynamoDb, - unknown -> = z.object({ - billingMode: z.nullable(z.string()).optional(), - deletionProtectionEnabled: z.nullable(z.boolean()).optional(), - globalSecondaryIndexCount: z.nullable(z.int()).optional(), - itemCount: z.nullable(z.int()).optional(), - keySchema: z.array(z.lazy(() => KeySchema$inboundSchema)), - localSecondaryIndexCount: z.nullable(z.int()).optional(), - name: z.string(), - region: z.nullable(z.string()).optional(), - replicaCount: z.nullable(z.int()).optional(), - restoreInProgress: z.nullable(z.boolean()).optional(), - sseStatus: z.nullable(z.string()).optional(), - sseType: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus27$inboundSchema), - streamEnabled: z.nullable(z.boolean()).optional(), - streamViewType: z.nullable(z.string()).optional(), - tableArn: z.nullable(z.string()).optional(), - tableClass: z.nullable(z.string()).optional(), - tableSizeBytes: z.nullable(z.int()).optional(), - tableStatus: z.nullable(z.string()).optional(), - ttlAttributeName: z.nullable(z.string()).optional(), - ttlStatus: z.nullable(z.string()).optional(), - backend: z.literal("awsDynamoDb"), -}); - -export function dataAwsDynamoDbFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAwsDynamoDb$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAwsDynamoDb' from JSON`, - ); -} - -/** @internal */ -export const DataUnion7$inboundSchema: z.ZodType = z.union( - [ - z.lazy(() => DataAwsDynamoDb$inboundSchema), - z.lazy(() => DataGcpFirestore$inboundSchema), - z.lazy(() => DataAzureTable$inboundSchema), - z.lazy(() => DataLocal7$inboundSchema), - ], -); - -export function dataUnion7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion7' from JSON`, - ); -} - -/** @internal */ -export const DataKv$inboundSchema: z.ZodType = z.object({ - data: z.union([ - z.lazy(() => DataAwsDynamoDb$inboundSchema), - z.lazy(() => DataGcpFirestore$inboundSchema), - z.lazy(() => DataAzureTable$inboundSchema), - z.lazy(() => DataLocal7$inboundSchema), - ]), - resourceType: z.literal("kv"), -}); - -export function dataKvFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataKv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataKv' from JSON`, - ); -} - -/** @internal */ -export const Reason26$inboundSchema: z.ZodEnum = z.enum( - Reason26, -); - -/** @internal */ -export const CollectionIssueSeverity26$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity26 -> = z.enum(CollectionIssueSeverity26); - -/** @internal */ -export const CollectionIssue26$inboundSchema: z.ZodType< - CollectionIssue26, - unknown -> = z.object({ - message: z.string(), - reason: Reason26$inboundSchema, - severity: CollectionIssueSeverity26$inboundSchema, - source: z.string(), -}); - -export function collectionIssue26FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue26$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue26' from JSON`, - ); -} - -/** @internal */ -export const Health26$inboundSchema: z.ZodEnum = z.enum( - Health26, -); - -/** @internal */ -export const Lifecycle26$inboundSchema: z.ZodEnum = z.enum( - Lifecycle26, -); - -/** @internal */ -export const DataStatus26$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue26$inboundSchema)), - health: Health26$inboundSchema, - lifecycle: Lifecycle26$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus26FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus26$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus26' from JSON`, - ); -} - -/** @internal */ -export const DataLocal6$inboundSchema: z.ZodType = z - .object({ - name: z.string(), - path: z.nullable(z.string()).optional(), - serviceStatus: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus26$inboundSchema), - backend: z.literal("local"), - }); - -export function dataLocal6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataLocal6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataLocal6' from JSON`, - ); -} - -/** @internal */ -export const Reason25$inboundSchema: z.ZodEnum = z.enum( - Reason25, -); - -/** @internal */ -export const CollectionIssueSeverity25$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity25 -> = z.enum(CollectionIssueSeverity25); - -/** @internal */ -export const CollectionIssue25$inboundSchema: z.ZodType< - CollectionIssue25, - unknown -> = z.object({ - message: z.string(), - reason: Reason25$inboundSchema, - severity: CollectionIssueSeverity25$inboundSchema, - source: z.string(), -}); - -export function collectionIssue25FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue25$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue25' from JSON`, - ); -} - -/** @internal */ -export const Health25$inboundSchema: z.ZodEnum = z.enum( - Health25, -); - -/** @internal */ -export const Lifecycle25$inboundSchema: z.ZodEnum = z.enum( - Lifecycle25, -); - -/** @internal */ -export const DataStatus25$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue25$inboundSchema)), - health: Health25$inboundSchema, - lifecycle: Lifecycle25$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus25FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus25$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus25' from JSON`, - ); -} - -/** @internal */ -export const DataAzureServiceBus$inboundSchema: z.ZodType< - DataAzureServiceBus, - unknown -> = z.object({ - accessedAt: z.nullable(z.string()).optional(), - activeMessageCount: z.nullable(z.int()).optional(), - autoDeleteOnIdle: z.nullable(z.string()).optional(), - createdAt: z.nullable(z.string()).optional(), - deadLetterMessageCount: z.nullable(z.int()).optional(), - deadLetteringOnMessageExpiration: z.nullable(z.boolean()).optional(), - defaultMessageTimeToLive: z.nullable(z.string()).optional(), - duplicateDetectionHistoryTimeWindow: z.nullable(z.string()).optional(), - enableBatchedOperations: z.nullable(z.boolean()).optional(), - enableExpress: z.nullable(z.boolean()).optional(), - enablePartitioning: z.nullable(z.boolean()).optional(), - endpoint: z.nullable(z.string()).optional(), - forwardDeadLetteredMessagesTo: z.nullable(z.string()).optional(), - forwardTo: z.nullable(z.string()).optional(), - lockDuration: z.nullable(z.string()).optional(), - maxDeliveryCount: z.nullable(z.int()).optional(), - maxMessageSizeInKilobytes: z.nullable(z.int()).optional(), - maxSizeInMegabytes: z.nullable(z.int()).optional(), - messageCount: z.nullable(z.int()).optional(), - name: z.string(), - namespaceName: z.string(), - queueStatus: z.nullable(z.string()).optional(), - requiresDuplicateDetection: z.nullable(z.boolean()).optional(), - requiresSession: z.nullable(z.boolean()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - scheduledMessageCount: z.nullable(z.int()).optional(), - sizeInBytes: z.nullable(z.int()).optional(), - status: z.lazy(() => DataStatus25$inboundSchema), - transferDeadLetterMessageCount: z.nullable(z.int()).optional(), - transferMessageCount: z.nullable(z.int()).optional(), - updatedAt: z.nullable(z.string()).optional(), - backend: z.literal("azureServiceBus"), -}); - -export function dataAzureServiceBusFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureServiceBus$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureServiceBus' from JSON`, - ); -} - -/** @internal */ -export const Reason24$inboundSchema: z.ZodEnum = z.enum( - Reason24, -); - -/** @internal */ -export const CollectionIssueSeverity24$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity24 -> = z.enum(CollectionIssueSeverity24); - -/** @internal */ -export const CollectionIssue24$inboundSchema: z.ZodType< - CollectionIssue24, - unknown -> = z.object({ - message: z.string(), - reason: Reason24$inboundSchema, - severity: CollectionIssueSeverity24$inboundSchema, - source: z.string(), -}); - -export function collectionIssue24FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue24$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue24' from JSON`, - ); -} - -/** @internal */ -export const Health24$inboundSchema: z.ZodEnum = z.enum( - Health24, -); - -/** @internal */ -export const Lifecycle24$inboundSchema: z.ZodEnum = z.enum( - Lifecycle24, -); - -/** @internal */ -export const DataStatus24$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue24$inboundSchema)), - health: Health24$inboundSchema, - lifecycle: Lifecycle24$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus24FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus24$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus24' from JSON`, - ); -} - -/** @internal */ -export const DataGcpPubSub$inboundSchema: z.ZodType = z - .object({ - endpoint: z.nullable(z.string()).optional(), - kmsKeyName: z.nullable(z.string()).optional(), - messageStorageAllowedPersistenceRegions: z.array(z.string()), - messageStorageEnforceInTransit: z.nullable(z.boolean()).optional(), - projectId: z.nullable(z.string()).optional(), - schemaEncoding: z.nullable(z.string()).optional(), - schemaFirstRevisionId: z.nullable(z.string()).optional(), - schemaLastRevisionId: z.nullable(z.string()).optional(), - schemaName: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus24$inboundSchema), - subscriptionAckDeadlineSeconds: z.nullable(z.int()).optional(), - subscriptionDeadLetterMaxDeliveryAttempts: z.nullable(z.int()).optional(), - subscriptionDeadLetterTopic: z.nullable(z.string()).optional(), - subscriptionDetached: z.nullable(z.boolean()).optional(), - subscriptionEnableMessageOrdering: z.nullable(z.boolean()).optional(), - subscriptionFilter: z.nullable(z.string()).optional(), - subscriptionFullName: z.nullable(z.string()).optional(), - subscriptionLabels: z.record(z.string(), z.string()), - subscriptionMessageRetentionDuration: z.nullable(z.string()).optional(), - subscriptionName: z.nullable(z.string()).optional(), - subscriptionPushAttributes: z.record(z.string(), z.string()), - subscriptionPushConfigPresent: z.nullable(z.boolean()).optional(), - subscriptionPushEndpoint: z.nullable(z.string()).optional(), - subscriptionPushNoWrapperWriteMetadata: z.nullable(z.boolean()).optional(), - subscriptionPushOidcAudience: z.nullable(z.string()).optional(), - subscriptionPushOidcServiceAccountEmail: z.nullable(z.string()).optional(), - subscriptionPushPubsubWrapperWriteMetadata: z.nullable(z.boolean()) - .optional(), - subscriptionRetainAckedMessages: z.nullable(z.boolean()).optional(), - subscriptionState: z.nullable(z.string()).optional(), - topicFullName: z.nullable(z.string()).optional(), - topicLabels: z.record(z.string(), z.string()), - topicMessageRetentionDuration: z.nullable(z.string()).optional(), - topicName: z.string(), - topicState: z.nullable(z.string()).optional(), - backend: z.literal("gcpPubSub"), - }); - -export function dataGcpPubSubFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcpPubSub$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcpPubSub' from JSON`, - ); -} - -/** @internal */ -export const Reason23$inboundSchema: z.ZodEnum = z.enum( - Reason23, -); - -/** @internal */ -export const CollectionIssueSeverity23$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity23 -> = z.enum(CollectionIssueSeverity23); - -/** @internal */ -export const CollectionIssue23$inboundSchema: z.ZodType< - CollectionIssue23, - unknown -> = z.object({ - message: z.string(), - reason: Reason23$inboundSchema, - severity: CollectionIssueSeverity23$inboundSchema, - source: z.string(), -}); - -export function collectionIssue23FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue23$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue23' from JSON`, - ); -} - -/** @internal */ -export const Health23$inboundSchema: z.ZodEnum = z.enum( - Health23, -); - -/** @internal */ -export const Lifecycle23$inboundSchema: z.ZodEnum = z.enum( - Lifecycle23, -); - -/** @internal */ -export const DataStatus23$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue23$inboundSchema)), - health: Health23$inboundSchema, - lifecycle: Lifecycle23$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus23FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus23$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus23' from JSON`, - ); -} - -/** @internal */ -export const DataAwsSqs$inboundSchema: z.ZodType = z - .object({ - approximateCounts: z.boolean(), - approximateDelayedMessages: z.nullable(z.int()).optional(), - approximateInFlightMessages: z.nullable(z.int()).optional(), - approximateVisibleMessages: z.nullable(z.int()).optional(), - contentBasedDeduplication: z.nullable(z.boolean()).optional(), - deduplicationScope: z.nullable(z.string()).optional(), - delaySeconds: z.nullable(z.int()).optional(), - fifoQueue: z.nullable(z.boolean()).optional(), - fifoThroughputLimit: z.nullable(z.string()).optional(), - kmsDataKeyReusePeriodSeconds: z.nullable(z.int()).optional(), - kmsMasterKeyId: z.nullable(z.string()).optional(), - maximumMessageSize: z.nullable(z.int()).optional(), - messageRetentionPeriodSeconds: z.nullable(z.int()).optional(), - name: z.string(), - queueArn: z.nullable(z.string()).optional(), - queueUrl: z.nullable(z.string()).optional(), - receiveMessageWaitTimeSeconds: z.nullable(z.int()).optional(), - redriveAllowPolicy: z.nullable(z.string()).optional(), - redrivePolicy: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - sqsManagedSseEnabled: z.nullable(z.boolean()).optional(), - sseEnabled: z.nullable(z.boolean()).optional(), - status: z.lazy(() => DataStatus23$inboundSchema), - visibilityTimeoutSeconds: z.nullable(z.int()).optional(), - backend: z.literal("awsSqs"), - }); - -export function dataAwsSqsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAwsSqs$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAwsSqs' from JSON`, - ); -} - -/** @internal */ -export const DataUnion6$inboundSchema: z.ZodType = z.union( - [ - z.lazy(() => DataAwsSqs$inboundSchema), - z.lazy(() => DataGcpPubSub$inboundSchema), - z.lazy(() => DataAzureServiceBus$inboundSchema), - z.lazy(() => DataLocal6$inboundSchema), - ], -); - -export function dataUnion6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion6' from JSON`, - ); -} - -/** @internal */ -export const DataQueue$inboundSchema: z.ZodType = z.object({ - data: z.union([ - z.lazy(() => DataAwsSqs$inboundSchema), - z.lazy(() => DataGcpPubSub$inboundSchema), - z.lazy(() => DataAzureServiceBus$inboundSchema), - z.lazy(() => DataLocal6$inboundSchema), - ]), - resourceType: z.literal("queue"), -}); - -export function dataQueueFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataQueue$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataQueue' from JSON`, - ); -} - -/** @internal */ -export const CpuUnit10$inboundSchema: z.ZodEnum = z.enum( - CpuUnit10, -); - -/** @internal */ -export const Cpu10$inboundSchema: z.ZodType = z.object({ - unit: CpuUnit10$inboundSchema, - value: z.number(), -}); - -export function cpu10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Cpu10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Cpu10' from JSON`, - ); -} - -/** @internal */ -export const CpuUnion10$inboundSchema: z.ZodType = z.union( - [z.lazy(() => Cpu10$inboundSchema), z.any()], -); - -export function cpuUnion10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuUnion10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuUnion10' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObject8$inboundSchema: z.ZodType< - InvolvedObject8, - unknown -> = z.object({ - apiVersion: z.nullable(z.string()).optional(), - fieldPath: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - namespace: z.nullable(z.string()).optional(), - resourceVersion: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), -}); - -export function involvedObject8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObject8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObject8' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObjectUnion8$inboundSchema: z.ZodType< - InvolvedObjectUnion8, - unknown -> = z.union([z.lazy(() => InvolvedObject8$inboundSchema), z.any()]); - -export function involvedObjectUnion8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObjectUnion8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObjectUnion8' from JSON`, - ); -} - -/** @internal */ -export const Source8$inboundSchema: z.ZodType = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function source8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Source8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Source8' from JSON`, - ); -} - -/** @internal */ -export const SourceUnion8$inboundSchema: z.ZodType = z - .union([z.lazy(() => Source8$inboundSchema), z.any()]); - -export function sourceUnion8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SourceUnion8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SourceUnion8' from JSON`, - ); -} - -/** @internal */ -export const Event11$inboundSchema: z.ZodType = z.object({ - count: z.nullable(z.int()).optional(), - eventTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - firstTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject8$inboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable(z.union([z.lazy(() => Source8$inboundSchema), z.any()])) - .optional(), - type: z.nullable(z.string()).optional(), -}); - -export function event11FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event11$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event11' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnit10$inboundSchema: z.ZodEnum = z - .enum(MemoryUnit10); - -/** @internal */ -export const Memory10$inboundSchema: z.ZodType = z.object({ - unit: MemoryUnit10$inboundSchema, - value: z.number(), -}); - -export function memory10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Memory10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Memory10' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnion10$inboundSchema: z.ZodType = z - .union([z.lazy(() => Memory10$inboundSchema), z.any()]); - -export function memoryUnion10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryUnion10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryUnion10' from JSON`, - ); -} - -/** @internal */ -export const NodeCounts$inboundSchema: z.ZodType = z - .object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - }); - -export function nodeCountsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => NodeCounts$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'NodeCounts' from JSON`, - ); -} - -/** @internal */ -export const CpuAllocatableUnit$inboundSchema: z.ZodEnum< - typeof CpuAllocatableUnit -> = z.enum(CpuAllocatableUnit); - -/** @internal */ -export const CpuAllocatable$inboundSchema: z.ZodType = - z.object({ - unit: CpuAllocatableUnit$inboundSchema, - value: z.number(), - }); - -export function cpuAllocatableFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuAllocatable$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuAllocatable' from JSON`, - ); -} - -/** @internal */ -export const AllocatableCpuUnion$inboundSchema: z.ZodType< - AllocatableCpuUnion, - unknown -> = z.union([z.lazy(() => CpuAllocatable$inboundSchema), z.any()]); - -export function allocatableCpuUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => AllocatableCpuUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'AllocatableCpuUnion' from JSON`, - ); -} - -/** @internal */ -export const MemoryAllocatableUnit$inboundSchema: z.ZodEnum< - typeof MemoryAllocatableUnit -> = z.enum(MemoryAllocatableUnit); - -/** @internal */ -export const MemoryAllocatable$inboundSchema: z.ZodType< - MemoryAllocatable, - unknown -> = z.object({ - unit: MemoryAllocatableUnit$inboundSchema, - value: z.number(), -}); - -export function memoryAllocatableFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryAllocatable$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryAllocatable' from JSON`, - ); -} - -/** @internal */ -export const AllocatableMemoryUnion$inboundSchema: z.ZodType< - AllocatableMemoryUnion, - unknown -> = z.union([z.lazy(() => MemoryAllocatable$inboundSchema), z.any()]); - -export function allocatableMemoryUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => AllocatableMemoryUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'AllocatableMemoryUnion' from JSON`, - ); -} - -/** @internal */ -export const Allocatable$inboundSchema: z.ZodType = z - .object({ - cpu: z.nullable( - z.union([z.lazy(() => CpuAllocatable$inboundSchema), z.any()]), - ).optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryAllocatable$inboundSchema), z.any()]), - ).optional(), - pods: z.nullable(z.int()).optional(), - }); - -export function allocatableFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Allocatable$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Allocatable' from JSON`, - ); -} - -/** @internal */ -export const CpuCapacityUnit$inboundSchema: z.ZodEnum = - z.enum(CpuCapacityUnit); - -/** @internal */ -export const CpuCapacity$inboundSchema: z.ZodType = z - .object({ - unit: CpuCapacityUnit$inboundSchema, - value: z.number(), - }); - -export function cpuCapacityFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuCapacity$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuCapacity' from JSON`, - ); -} - -/** @internal */ -export const CapacityCpuUnion$inboundSchema: z.ZodType< - CapacityCpuUnion, - unknown -> = z.union([z.lazy(() => CpuCapacity$inboundSchema), z.any()]); - -export function capacityCpuUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CapacityCpuUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CapacityCpuUnion' from JSON`, - ); -} - -/** @internal */ -export const MemoryCapacityUnit$inboundSchema: z.ZodEnum< - typeof MemoryCapacityUnit -> = z.enum(MemoryCapacityUnit); - -/** @internal */ -export const MemoryCapacity$inboundSchema: z.ZodType = - z.object({ - unit: MemoryCapacityUnit$inboundSchema, - value: z.number(), - }); - -export function memoryCapacityFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryCapacity$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryCapacity' from JSON`, - ); -} - -/** @internal */ -export const CapacityMemoryUnion$inboundSchema: z.ZodType< - CapacityMemoryUnion, - unknown -> = z.union([z.lazy(() => MemoryCapacity$inboundSchema), z.any()]); - -export function capacityMemoryUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CapacityMemoryUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CapacityMemoryUnion' from JSON`, - ); -} - -/** @internal */ -export const Capacity$inboundSchema: z.ZodType = z.object({ - cpu: z.nullable(z.union([z.lazy(() => CpuCapacity$inboundSchema), z.any()])) - .optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryCapacity$inboundSchema), z.any()]), - ).optional(), - pods: z.nullable(z.int()).optional(), -}); - -export function capacityFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Capacity$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Capacity' from JSON`, - ); -} - -/** @internal */ -export const NodeStatusCondition$inboundSchema: z.ZodType< - NodeStatusCondition, - unknown -> = z.object({ - message: z.nullable(z.string()).optional(), - reason: z.nullable(z.string()).optional(), - status: z.string(), - type: z.string(), -}); - -export function nodeStatusConditionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => NodeStatusCondition$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'NodeStatusCondition' from JSON`, - ); -} - -/** @internal */ -export const UsageCpuUnit$inboundSchema: z.ZodEnum = z - .enum(UsageCpuUnit); - -/** @internal */ -export const UsageCpu$inboundSchema: z.ZodType = z.object({ - unit: UsageCpuUnit$inboundSchema, - value: z.number(), -}); - -export function usageCpuFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => UsageCpu$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'UsageCpu' from JSON`, - ); -} - -/** @internal */ -export const UsageCpuUnion$inboundSchema: z.ZodType = z - .union([z.lazy(() => UsageCpu$inboundSchema), z.any()]); - -export function usageCpuUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => UsageCpuUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'UsageCpuUnion' from JSON`, - ); -} - -/** @internal */ -export const UsageMemoryUnit$inboundSchema: z.ZodEnum = - z.enum(UsageMemoryUnit); - -/** @internal */ -export const UsageMemory$inboundSchema: z.ZodType = z - .object({ - unit: UsageMemoryUnit$inboundSchema, - value: z.number(), - }); - -export function usageMemoryFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => UsageMemory$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'UsageMemory' from JSON`, - ); -} - -/** @internal */ -export const UsageMemoryUnion$inboundSchema: z.ZodType< - UsageMemoryUnion, - unknown -> = z.union([z.lazy(() => UsageMemory$inboundSchema), z.any()]); - -export function usageMemoryUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => UsageMemoryUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'UsageMemoryUnion' from JSON`, - ); -} - -/** @internal */ -export const Usage$inboundSchema: z.ZodType = z.object({ - cpu: z.nullable(z.union([z.lazy(() => UsageCpu$inboundSchema), z.any()])) - .optional(), - memory: z.nullable( - z.union([z.lazy(() => UsageMemory$inboundSchema), z.any()]), - ).optional(), -}); - -export function usageFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Usage$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Usage' from JSON`, - ); -} - -/** @internal */ -export const UsageUnion$inboundSchema: z.ZodType = z.union( - [z.lazy(() => Usage$inboundSchema), z.any()], -); - -export function usageUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => UsageUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'UsageUnion' from JSON`, - ); -} - -/** @internal */ -export const NodeStatus$inboundSchema: z.ZodType = z - .object({ - allocatable: z.lazy(() => Allocatable$inboundSchema), - capacity: z.lazy(() => Capacity$inboundSchema), - conditions: z.array(z.lazy(() => NodeStatusCondition$inboundSchema)) - .optional(), - containerRuntimeVersion: z.nullable(z.string()).optional(), - kubeletVersion: z.nullable(z.string()).optional(), - labels: z.record(z.string(), z.string()), - name: z.string(), - ready: z.boolean(), - roles: z.array(z.string()), - uid: z.nullable(z.string()).optional(), - usage: z.nullable(z.union([z.lazy(() => Usage$inboundSchema), z.any()])) - .optional(), - }); - -export function nodeStatusFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => NodeStatus$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'NodeStatus' from JSON`, - ); -} - -/** @internal */ -export const PodCounts$inboundSchema: z.ZodType = z.object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), -}); - -export function podCountsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => PodCounts$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'PodCounts' from JSON`, - ); -} - -/** @internal */ -export const Reason22$inboundSchema: z.ZodEnum = z.enum( - Reason22, -); - -/** @internal */ -export const CollectionIssueSeverity22$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity22 -> = z.enum(CollectionIssueSeverity22); - -/** @internal */ -export const CollectionIssue22$inboundSchema: z.ZodType< - CollectionIssue22, - unknown -> = z.object({ - message: z.string(), - reason: Reason22$inboundSchema, - severity: CollectionIssueSeverity22$inboundSchema, - source: z.string(), -}); - -export function collectionIssue22FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue22$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue22' from JSON`, - ); -} - -/** @internal */ -export const Health22$inboundSchema: z.ZodEnum = z.enum( - Health22, -); - -/** @internal */ -export const Lifecycle22$inboundSchema: z.ZodEnum = z.enum( - Lifecycle22, -); - -/** @internal */ -export const DataStatus22$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue22$inboundSchema)), - health: Health22$inboundSchema, - lifecycle: Lifecycle22$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus22FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus22$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus22' from JSON`, - ); -} - -/** @internal */ -export const Data1$inboundSchema: z.ZodType = z.object({ - cpu: z.nullable(z.union([z.lazy(() => Cpu10$inboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => Event11$inboundSchema)), - memory: z.nullable(z.union([z.lazy(() => Memory10$inboundSchema), z.any()])) - .optional(), - name: z.string(), - namespace: z.nullable(z.string()).optional(), - nodeCounts: z.lazy(() => NodeCounts$inboundSchema), - nodeStatuses: z.array(z.lazy(() => NodeStatus$inboundSchema)).optional(), - podCounts: z.lazy(() => PodCounts$inboundSchema), - region: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus22$inboundSchema), - version: z.nullable(z.string()).optional(), -}); - -export function data1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Data1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Data1' from JSON`, - ); -} - -/** @internal */ -export const DataKubernetesCluster$inboundSchema: z.ZodType< - DataKubernetesCluster, - unknown -> = z.object({ - data: z.lazy(() => Data1$inboundSchema), - resourceType: z.literal("kubernetes-cluster"), -}); - -export function dataKubernetesClusterFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataKubernetesCluster$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataKubernetesCluster' from JSON`, - ); -} - -/** @internal */ -export const Nodes4$inboundSchema: z.ZodType = z.object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), -}); - -export function nodes4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Nodes4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Nodes4' from JSON`, - ); -} - -/** @internal */ -export const Reason21$inboundSchema: z.ZodEnum = z.enum( - Reason21, -); - -/** @internal */ -export const CollectionIssueSeverity21$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity21 -> = z.enum(CollectionIssueSeverity21); - -/** @internal */ -export const CollectionIssue21$inboundSchema: z.ZodType< - CollectionIssue21, - unknown -> = z.object({ - message: z.string(), - reason: Reason21$inboundSchema, - severity: CollectionIssueSeverity21$inboundSchema, - source: z.string(), -}); - -export function collectionIssue21FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue21$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue21' from JSON`, - ); -} - -/** @internal */ -export const Health21$inboundSchema: z.ZodEnum = z.enum( - Health21, -); - -/** @internal */ -export const Lifecycle21$inboundSchema: z.ZodEnum = z.enum( - Lifecycle21, -); - -/** @internal */ -export const DataStatus21$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue21$inboundSchema)), - health: Health21$inboundSchema, - lifecycle: Lifecycle21$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus21FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus21$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus21' from JSON`, - ); -} - -/** @internal */ -export const DataLocal5$inboundSchema: z.ZodType = z - .object({ - dockerApiVersion: z.nullable(z.string()).optional(), - dockerArch: z.nullable(z.string()).optional(), - dockerAvailable: z.boolean(), - dockerOs: z.nullable(z.string()).optional(), - dockerVersion: z.nullable(z.string()).optional(), - hostIdentifier: z.nullable(z.string()).optional(), - name: z.string(), - networkAvailable: z.boolean(), - networkName: z.nullable(z.string()).optional(), - nodes: z.lazy(() => Nodes4$inboundSchema), - runningContainers: z.nullable(z.int()).optional(), - status: z.lazy(() => DataStatus21$inboundSchema), - trackedContainers: z.nullable(z.int()).optional(), - backend: z.literal("local"), - }); - -export function dataLocal5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataLocal5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataLocal5' from JSON`, - ); -} - -/** @internal */ -export const Category3$inboundSchema: z.ZodEnum = z.enum( - Category3, -); - -/** @internal */ -export const CapacityBlocker3$inboundSchema: z.ZodType< - CapacityBlocker3, - unknown -> = z.object({ - category: Category3$inboundSchema, - message: z.string(), - observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), - providerCode: z.nullable(z.string()).optional(), - providerReference: z.nullable(z.string()).optional(), -}); - -export function capacityBlocker3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CapacityBlocker3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CapacityBlocker3' from JSON`, - ); -} - -/** @internal */ -export const CapacityBlockerUnion3$inboundSchema: z.ZodType< - CapacityBlockerUnion3, - unknown -> = z.union([z.lazy(() => CapacityBlocker3$inboundSchema), z.any()]); - -export function capacityBlockerUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CapacityBlockerUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CapacityBlockerUnion3' from JSON`, - ); -} - -/** @internal */ -export const UtilizationUnit3$inboundSchema: z.ZodEnum< - typeof UtilizationUnit3 -> = z.enum(UtilizationUnit3); - -/** @internal */ -export const Utilization3$inboundSchema: z.ZodType = z - .object({ - unit: UtilizationUnit3$inboundSchema, - value: z.number(), - }); - -export function utilization3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Utilization3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Utilization3' from JSON`, - ); -} - -/** @internal */ -export const UtilizationUnion3$inboundSchema: z.ZodType< - UtilizationUnion3, - unknown -> = z.union([z.lazy(() => Utilization3$inboundSchema), z.any()]); - -export function utilizationUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => UtilizationUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'UtilizationUnion3' from JSON`, - ); -} - -/** @internal */ -export const Recommendation3$inboundSchema: z.ZodType< - Recommendation3, - unknown -> = z.object({ - desiredMachines: z.int(), - reason: z.nullable(z.string()).optional(), - unschedulableReplicas: z.nullable(z.int()).optional(), - utilization: z.nullable( - z.union([z.lazy(() => Utilization3$inboundSchema), z.any()]), - ).optional(), -}); - -export function recommendation3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Recommendation3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Recommendation3' from JSON`, - ); -} - -/** @internal */ -export const RecommendationUnion3$inboundSchema: z.ZodType< - RecommendationUnion3, - unknown -> = z.union([z.lazy(() => Recommendation3$inboundSchema), z.any()]); - -export function recommendationUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => RecommendationUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'RecommendationUnion3' from JSON`, - ); -} - -/** @internal */ -export const CapacityGroup3$inboundSchema: z.ZodType = - z.object({ - capacityBlocker: z.nullable( - z.union([z.lazy(() => CapacityBlocker3$inboundSchema), z.any()]), - ).optional(), - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - instanceType: z.nullable(z.string()).optional(), - maxMachines: z.nullable(z.int()).optional(), - minMachines: z.nullable(z.int()).optional(), - recommendation: z.nullable( - z.union([z.lazy(() => Recommendation3$inboundSchema), z.any()]), - ).optional(), - }); - -export function capacityGroup3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CapacityGroup3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CapacityGroup3' from JSON`, - ); -} - -/** @internal */ -export const CpuUnit9$inboundSchema: z.ZodEnum = z.enum( - CpuUnit9, -); - -/** @internal */ -export const Cpu9$inboundSchema: z.ZodType = z.object({ - unit: CpuUnit9$inboundSchema, - value: z.number(), -}); - -export function cpu9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Cpu9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Cpu9' from JSON`, - ); -} - -/** @internal */ -export const CpuUnion9$inboundSchema: z.ZodType = z.union([ - z.lazy(() => Cpu9$inboundSchema), - z.any(), -]); - -export function cpuUnion9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuUnion9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuUnion9' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnit9$inboundSchema: z.ZodEnum = z.enum( - MemoryUnit9, -); - -/** @internal */ -export const Memory9$inboundSchema: z.ZodType = z.object({ - unit: MemoryUnit9$inboundSchema, - value: z.number(), -}); - -export function memory9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Memory9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Memory9' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnion9$inboundSchema: z.ZodType = z - .union([z.lazy(() => Memory9$inboundSchema), z.any()]); - -export function memoryUnion9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryUnion9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryUnion9' from JSON`, - ); -} - -/** @internal */ -export const Nodes3$inboundSchema: z.ZodType = z.object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), -}); - -export function nodes3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Nodes3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Nodes3' from JSON`, - ); -} - -/** @internal */ -export const ProviderFleet3$inboundSchema: z.ZodType = - z.object({ - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - location: z.nullable(z.string()).optional(), - providerId: z.string(), - }); - -export function providerFleet3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProviderFleet3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProviderFleet3' from JSON`, - ); -} - -/** @internal */ -export const Reason20$inboundSchema: z.ZodEnum = z.enum( - Reason20, -); - -/** @internal */ -export const CollectionIssueSeverity20$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity20 -> = z.enum(CollectionIssueSeverity20); - -/** @internal */ -export const CollectionIssue20$inboundSchema: z.ZodType< - CollectionIssue20, - unknown -> = z.object({ - message: z.string(), - reason: Reason20$inboundSchema, - severity: CollectionIssueSeverity20$inboundSchema, - source: z.string(), -}); - -export function collectionIssue20FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue20$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue20' from JSON`, - ); -} - -/** @internal */ -export const Health20$inboundSchema: z.ZodEnum = z.enum( - Health20, -); - -/** @internal */ -export const Lifecycle20$inboundSchema: z.ZodEnum = z.enum( - Lifecycle20, -); - -/** @internal */ -export const DataStatus20$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue20$inboundSchema)), - health: Health20$inboundSchema, - lifecycle: Lifecycle20$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus20FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus20$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus20' from JSON`, - ); -} - -/** @internal */ -export const DataAzure2$inboundSchema: z.ZodType = z - .object({ - backendClusterId: z.nullable(z.string()).optional(), - capacityGroups: z.array(z.lazy(() => CapacityGroup3$inboundSchema)), - cpu: z.nullable(z.union([z.lazy(() => Cpu9$inboundSchema), z.any()])) - .optional(), - memory: z.nullable(z.union([z.lazy(() => Memory9$inboundSchema), z.any()])) - .optional(), - name: z.string(), - nodes: z.lazy(() => Nodes3$inboundSchema), - providerFleets: z.array(z.lazy(() => ProviderFleet3$inboundSchema)), - region: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus20$inboundSchema), - backend: z.literal("azure"), - }); - -export function dataAzure2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzure2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzure2' from JSON`, - ); -} - -/** @internal */ -export const Category2$inboundSchema: z.ZodEnum = z.enum( - Category2, -); - -/** @internal */ -export const CapacityBlocker2$inboundSchema: z.ZodType< - CapacityBlocker2, - unknown -> = z.object({ - category: Category2$inboundSchema, - message: z.string(), - observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), - providerCode: z.nullable(z.string()).optional(), - providerReference: z.nullable(z.string()).optional(), -}); - -export function capacityBlocker2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CapacityBlocker2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CapacityBlocker2' from JSON`, - ); -} - -/** @internal */ -export const CapacityBlockerUnion2$inboundSchema: z.ZodType< - CapacityBlockerUnion2, - unknown -> = z.union([z.lazy(() => CapacityBlocker2$inboundSchema), z.any()]); - -export function capacityBlockerUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CapacityBlockerUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CapacityBlockerUnion2' from JSON`, - ); -} - -/** @internal */ -export const UtilizationUnit2$inboundSchema: z.ZodEnum< - typeof UtilizationUnit2 -> = z.enum(UtilizationUnit2); - -/** @internal */ -export const Utilization2$inboundSchema: z.ZodType = z - .object({ - unit: UtilizationUnit2$inboundSchema, - value: z.number(), - }); - -export function utilization2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Utilization2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Utilization2' from JSON`, - ); -} - -/** @internal */ -export const UtilizationUnion2$inboundSchema: z.ZodType< - UtilizationUnion2, - unknown -> = z.union([z.lazy(() => Utilization2$inboundSchema), z.any()]); - -export function utilizationUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => UtilizationUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'UtilizationUnion2' from JSON`, - ); -} - -/** @internal */ -export const Recommendation2$inboundSchema: z.ZodType< - Recommendation2, - unknown -> = z.object({ - desiredMachines: z.int(), - reason: z.nullable(z.string()).optional(), - unschedulableReplicas: z.nullable(z.int()).optional(), - utilization: z.nullable( - z.union([z.lazy(() => Utilization2$inboundSchema), z.any()]), - ).optional(), -}); - -export function recommendation2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Recommendation2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Recommendation2' from JSON`, - ); -} - -/** @internal */ -export const RecommendationUnion2$inboundSchema: z.ZodType< - RecommendationUnion2, - unknown -> = z.union([z.lazy(() => Recommendation2$inboundSchema), z.any()]); - -export function recommendationUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => RecommendationUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'RecommendationUnion2' from JSON`, - ); -} - -/** @internal */ -export const CapacityGroup2$inboundSchema: z.ZodType = - z.object({ - capacityBlocker: z.nullable( - z.union([z.lazy(() => CapacityBlocker2$inboundSchema), z.any()]), - ).optional(), - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - instanceType: z.nullable(z.string()).optional(), - maxMachines: z.nullable(z.int()).optional(), - minMachines: z.nullable(z.int()).optional(), - recommendation: z.nullable( - z.union([z.lazy(() => Recommendation2$inboundSchema), z.any()]), - ).optional(), - }); - -export function capacityGroup2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CapacityGroup2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CapacityGroup2' from JSON`, - ); -} - -/** @internal */ -export const CpuUnit8$inboundSchema: z.ZodEnum = z.enum( - CpuUnit8, -); - -/** @internal */ -export const Cpu8$inboundSchema: z.ZodType = z.object({ - unit: CpuUnit8$inboundSchema, - value: z.number(), -}); - -export function cpu8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Cpu8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Cpu8' from JSON`, - ); -} - -/** @internal */ -export const CpuUnion8$inboundSchema: z.ZodType = z.union([ - z.lazy(() => Cpu8$inboundSchema), - z.any(), -]); - -export function cpuUnion8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuUnion8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuUnion8' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnit8$inboundSchema: z.ZodEnum = z.enum( - MemoryUnit8, -); - -/** @internal */ -export const Memory8$inboundSchema: z.ZodType = z.object({ - unit: MemoryUnit8$inboundSchema, - value: z.number(), -}); - -export function memory8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Memory8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Memory8' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnion8$inboundSchema: z.ZodType = z - .union([z.lazy(() => Memory8$inboundSchema), z.any()]); - -export function memoryUnion8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryUnion8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryUnion8' from JSON`, - ); -} - -/** @internal */ -export const Nodes2$inboundSchema: z.ZodType = z.object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), -}); - -export function nodes2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Nodes2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Nodes2' from JSON`, - ); -} - -/** @internal */ -export const ProviderFleet2$inboundSchema: z.ZodType = - z.object({ - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - location: z.nullable(z.string()).optional(), - providerId: z.string(), - }); - -export function providerFleet2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProviderFleet2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProviderFleet2' from JSON`, - ); -} - -/** @internal */ -export const Reason19$inboundSchema: z.ZodEnum = z.enum( - Reason19, -); - -/** @internal */ -export const CollectionIssueSeverity19$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity19 -> = z.enum(CollectionIssueSeverity19); - -/** @internal */ -export const CollectionIssue19$inboundSchema: z.ZodType< - CollectionIssue19, - unknown -> = z.object({ - message: z.string(), - reason: Reason19$inboundSchema, - severity: CollectionIssueSeverity19$inboundSchema, - source: z.string(), -}); - -export function collectionIssue19FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue19$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue19' from JSON`, - ); -} - -/** @internal */ -export const Health19$inboundSchema: z.ZodEnum = z.enum( - Health19, -); - -/** @internal */ -export const Lifecycle19$inboundSchema: z.ZodEnum = z.enum( - Lifecycle19, -); - -/** @internal */ -export const DataStatus19$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue19$inboundSchema)), - health: Health19$inboundSchema, - lifecycle: Lifecycle19$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus19FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus19$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus19' from JSON`, - ); -} - -/** @internal */ -export const DataGcp2$inboundSchema: z.ZodType = z.object({ - backendClusterId: z.nullable(z.string()).optional(), - capacityGroups: z.array(z.lazy(() => CapacityGroup2$inboundSchema)), - cpu: z.nullable(z.union([z.lazy(() => Cpu8$inboundSchema), z.any()])) - .optional(), - memory: z.nullable(z.union([z.lazy(() => Memory8$inboundSchema), z.any()])) - .optional(), - name: z.string(), - nodes: z.lazy(() => Nodes2$inboundSchema), - providerFleets: z.array(z.lazy(() => ProviderFleet2$inboundSchema)), - region: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus19$inboundSchema), - backend: z.literal("gcp"), -}); - -export function dataGcp2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcp2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcp2' from JSON`, - ); -} - -/** @internal */ -export const Category1$inboundSchema: z.ZodEnum = z.enum( - Category1, -); - -/** @internal */ -export const CapacityBlocker1$inboundSchema: z.ZodType< - CapacityBlocker1, - unknown -> = z.object({ - category: Category1$inboundSchema, - message: z.string(), - observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), - providerCode: z.nullable(z.string()).optional(), - providerReference: z.nullable(z.string()).optional(), -}); - -export function capacityBlocker1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CapacityBlocker1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CapacityBlocker1' from JSON`, - ); -} - -/** @internal */ -export const CapacityBlockerUnion1$inboundSchema: z.ZodType< - CapacityBlockerUnion1, - unknown -> = z.union([z.lazy(() => CapacityBlocker1$inboundSchema), z.any()]); - -export function capacityBlockerUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CapacityBlockerUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CapacityBlockerUnion1' from JSON`, - ); -} - -/** @internal */ -export const UtilizationUnit1$inboundSchema: z.ZodEnum< - typeof UtilizationUnit1 -> = z.enum(UtilizationUnit1); - -/** @internal */ -export const Utilization1$inboundSchema: z.ZodType = z - .object({ - unit: UtilizationUnit1$inboundSchema, - value: z.number(), - }); - -export function utilization1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Utilization1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Utilization1' from JSON`, - ); -} - -/** @internal */ -export const UtilizationUnion1$inboundSchema: z.ZodType< - UtilizationUnion1, - unknown -> = z.union([z.lazy(() => Utilization1$inboundSchema), z.any()]); - -export function utilizationUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => UtilizationUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'UtilizationUnion1' from JSON`, - ); -} - -/** @internal */ -export const Recommendation1$inboundSchema: z.ZodType< - Recommendation1, - unknown -> = z.object({ - desiredMachines: z.int(), - reason: z.nullable(z.string()).optional(), - unschedulableReplicas: z.nullable(z.int()).optional(), - utilization: z.nullable( - z.union([z.lazy(() => Utilization1$inboundSchema), z.any()]), - ).optional(), -}); - -export function recommendation1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Recommendation1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Recommendation1' from JSON`, - ); -} - -/** @internal */ -export const RecommendationUnion1$inboundSchema: z.ZodType< - RecommendationUnion1, - unknown -> = z.union([z.lazy(() => Recommendation1$inboundSchema), z.any()]); - -export function recommendationUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => RecommendationUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'RecommendationUnion1' from JSON`, - ); -} - -/** @internal */ -export const CapacityGroup1$inboundSchema: z.ZodType = - z.object({ - capacityBlocker: z.nullable( - z.union([z.lazy(() => CapacityBlocker1$inboundSchema), z.any()]), - ).optional(), - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - instanceType: z.nullable(z.string()).optional(), - maxMachines: z.nullable(z.int()).optional(), - minMachines: z.nullable(z.int()).optional(), - recommendation: z.nullable( - z.union([z.lazy(() => Recommendation1$inboundSchema), z.any()]), - ).optional(), - }); - -export function capacityGroup1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CapacityGroup1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CapacityGroup1' from JSON`, - ); -} - -/** @internal */ -export const CpuUnit7$inboundSchema: z.ZodEnum = z.enum( - CpuUnit7, -); - -/** @internal */ -export const Cpu7$inboundSchema: z.ZodType = z.object({ - unit: CpuUnit7$inboundSchema, - value: z.number(), -}); - -export function cpu7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Cpu7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Cpu7' from JSON`, - ); -} - -/** @internal */ -export const CpuUnion7$inboundSchema: z.ZodType = z.union([ - z.lazy(() => Cpu7$inboundSchema), - z.any(), -]); - -export function cpuUnion7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuUnion7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuUnion7' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnit7$inboundSchema: z.ZodEnum = z.enum( - MemoryUnit7, -); - -/** @internal */ -export const Memory7$inboundSchema: z.ZodType = z.object({ - unit: MemoryUnit7$inboundSchema, - value: z.number(), -}); - -export function memory7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Memory7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Memory7' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnion7$inboundSchema: z.ZodType = z - .union([z.lazy(() => Memory7$inboundSchema), z.any()]); - -export function memoryUnion7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryUnion7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryUnion7' from JSON`, - ); -} - -/** @internal */ -export const Nodes1$inboundSchema: z.ZodType = z.object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), -}); - -export function nodes1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Nodes1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Nodes1' from JSON`, - ); -} - -/** @internal */ -export const ProviderFleet1$inboundSchema: z.ZodType = - z.object({ - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - location: z.nullable(z.string()).optional(), - providerId: z.string(), - }); - -export function providerFleet1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProviderFleet1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProviderFleet1' from JSON`, - ); -} - -/** @internal */ -export const Reason18$inboundSchema: z.ZodEnum = z.enum( - Reason18, -); - -/** @internal */ -export const CollectionIssueSeverity18$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity18 -> = z.enum(CollectionIssueSeverity18); - -/** @internal */ -export const CollectionIssue18$inboundSchema: z.ZodType< - CollectionIssue18, - unknown -> = z.object({ - message: z.string(), - reason: Reason18$inboundSchema, - severity: CollectionIssueSeverity18$inboundSchema, - source: z.string(), -}); - -export function collectionIssue18FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue18$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue18' from JSON`, - ); -} - -/** @internal */ -export const Health18$inboundSchema: z.ZodEnum = z.enum( - Health18, -); - -/** @internal */ -export const Lifecycle18$inboundSchema: z.ZodEnum = z.enum( - Lifecycle18, -); - -/** @internal */ -export const DataStatus18$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue18$inboundSchema)), - health: Health18$inboundSchema, - lifecycle: Lifecycle18$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus18FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus18$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus18' from JSON`, - ); -} - -/** @internal */ -export const DataAws2$inboundSchema: z.ZodType = z.object({ - backendClusterId: z.nullable(z.string()).optional(), - capacityGroups: z.array(z.lazy(() => CapacityGroup1$inboundSchema)), - cpu: z.nullable(z.union([z.lazy(() => Cpu7$inboundSchema), z.any()])) - .optional(), - memory: z.nullable(z.union([z.lazy(() => Memory7$inboundSchema), z.any()])) - .optional(), - name: z.string(), - nodes: z.lazy(() => Nodes1$inboundSchema), - providerFleets: z.array(z.lazy(() => ProviderFleet1$inboundSchema)), - region: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus18$inboundSchema), - backend: z.literal("aws"), -}); - -export function dataAws2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAws2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAws2' from JSON`, - ); -} - -/** @internal */ -export const DataUnion5$inboundSchema: z.ZodType = z.union( - [ - z.lazy(() => DataAws2$inboundSchema), - z.lazy(() => DataGcp2$inboundSchema), - z.lazy(() => DataAzure2$inboundSchema), - z.lazy(() => DataLocal5$inboundSchema), - ], -); - -export function dataUnion5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion5' from JSON`, - ); -} - -/** @internal */ -export const DataComputeCluster$inboundSchema: z.ZodType< - DataComputeCluster, - unknown -> = z.object({ - data: z.union([ - z.lazy(() => DataAws2$inboundSchema), - z.lazy(() => DataGcp2$inboundSchema), - z.lazy(() => DataAzure2$inboundSchema), - z.lazy(() => DataLocal5$inboundSchema), - ]), - resourceType: z.literal("compute-cluster"), -}); - -export function dataComputeClusterFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataComputeCluster$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataComputeCluster' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstanceCpuUnit$inboundSchema: z.ZodEnum< - typeof DaemonInstanceCpuUnit -> = z.enum(DaemonInstanceCpuUnit); - -/** @internal */ -export const DaemonInstanceCpu$inboundSchema: z.ZodType< - DaemonInstanceCpu, - unknown -> = z.object({ - unit: DaemonInstanceCpuUnit$inboundSchema, - value: z.number(), -}); - -export function daemonInstanceCpuFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstanceCpu$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstanceCpu' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstanceCpuUnion4$inboundSchema: z.ZodType< - DaemonInstanceCpuUnion4, - unknown -> = z.union([z.lazy(() => DaemonInstanceCpu$inboundSchema), z.any()]); - -export function daemonInstanceCpuUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstanceCpuUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstanceCpuUnion4' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstanceKind$inboundSchema: z.ZodEnum< - typeof DaemonInstanceKind -> = z.enum(DaemonInstanceKind); - -/** @internal */ -export const DaemonInstanceMemoryUnit$inboundSchema: z.ZodEnum< - typeof DaemonInstanceMemoryUnit -> = z.enum(DaemonInstanceMemoryUnit); - -/** @internal */ -export const DaemonInstanceMemory$inboundSchema: z.ZodType< - DaemonInstanceMemory, - unknown -> = z.object({ - unit: DaemonInstanceMemoryUnit$inboundSchema, - value: z.number(), -}); - -export function daemonInstanceMemoryFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstanceMemory$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstanceMemory' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstanceMemoryUnion4$inboundSchema: z.ZodType< - DaemonInstanceMemoryUnion4, - unknown -> = z.union([z.lazy(() => DaemonInstanceMemory$inboundSchema), z.any()]); - -export function daemonInstanceMemoryUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstanceMemoryUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstanceMemoryUnion4' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstance4$inboundSchema: z.ZodType< - DaemonInstance4, - unknown -> = z.object({ - cpu: z.nullable( - z.union([z.lazy(() => DaemonInstanceCpu$inboundSchema), z.any()]), - ).optional(), - kind: DaemonInstanceKind$inboundSchema, - memory: z.nullable( - z.union([z.lazy(() => DaemonInstanceMemory$inboundSchema), z.any()]), - ).optional(), - name: z.string(), - phase: z.nullable(z.string()).optional(), - pid: z.nullable(z.int()).optional(), - ready: z.boolean(), - restartCount: z.nullable(z.int()).optional(), - unitId: z.string(), -}); - -export function daemonInstance4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstance4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstance4' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstanceUnion$inboundSchema: z.ZodType< - DaemonInstanceUnion, - unknown -> = z.union([z.lazy(() => DaemonInstance4$inboundSchema), z.any()]); - -export function daemonInstanceUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstanceUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstanceUnion' from JSON`, - ); -} - -/** @internal */ -export const EventSeverity3$inboundSchema: z.ZodEnum = z - .enum(EventSeverity3); - -/** @internal */ -export const Subject3$inboundSchema: z.ZodType = z.object({ - id: z.nullable(z.string()).optional(), - kind: z.string(), - name: z.nullable(z.string()).optional(), -}); - -export function subject3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Subject3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Subject3' from JSON`, - ); -} - -/** @internal */ -export const SubjectUnion3$inboundSchema: z.ZodType = z - .union([z.lazy(() => Subject3$inboundSchema), z.any()]); - -export function subjectUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SubjectUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SubjectUnion3' from JSON`, - ); -} - -/** @internal */ -export const Event10$inboundSchema: z.ZodType = z.object({ - kind: z.string(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - severity: EventSeverity3$inboundSchema, - subject: z.nullable(z.union([z.lazy(() => Subject3$inboundSchema), z.any()])) - .optional(), - timestamp: z.iso.datetime({ offset: true }).transform(v => new Date(v)), -}); - -export function event10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event10' from JSON`, - ); -} - -/** @internal */ -export const Reason17$inboundSchema: z.ZodEnum = z.enum( - Reason17, -); - -/** @internal */ -export const CollectionIssueSeverity17$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity17 -> = z.enum(CollectionIssueSeverity17); - -/** @internal */ -export const CollectionIssue17$inboundSchema: z.ZodType< - CollectionIssue17, - unknown -> = z.object({ - message: z.string(), - reason: Reason17$inboundSchema, - severity: CollectionIssueSeverity17$inboundSchema, - source: z.string(), -}); - -export function collectionIssue17FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue17$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue17' from JSON`, - ); -} - -/** @internal */ -export const Health17$inboundSchema: z.ZodEnum = z.enum( - Health17, -); - -/** @internal */ -export const Lifecycle17$inboundSchema: z.ZodEnum = z.enum( - Lifecycle17, -); - -/** @internal */ -export const DataStatus17$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue17$inboundSchema)), - health: Health17$inboundSchema, - lifecycle: Lifecycle17$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus17FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus17$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus17' from JSON`, - ); -} - -/** @internal */ -export const DataLocal4$inboundSchema: z.ZodType = z - .object({ - commandSupported: z.boolean(), - daemonInstance: z.nullable( - z.union([z.lazy(() => DaemonInstance4$inboundSchema), z.any()]), - ).optional(), - daemonName: z.string(), - events: z.array(z.lazy(() => Event10$inboundSchema)), - exitReason: z.nullable(z.string()).optional(), - imagePathPresent: z.boolean(), - pid: z.nullable(z.int()).optional(), - restartCount: z.nullable(z.int()).optional(), - runtimeId: z.string(), - status: z.lazy(() => DataStatus17$inboundSchema), - backend: z.literal("local"), - }); - -export function dataLocal4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataLocal4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataLocal4' from JSON`, - ); -} - -/** @internal */ -export const CpuUnit6$inboundSchema: z.ZodEnum = z.enum( - CpuUnit6, -); - -/** @internal */ -export const Cpu6$inboundSchema: z.ZodType = z.object({ - unit: CpuUnit6$inboundSchema, - value: z.number(), -}); - -export function cpu6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Cpu6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Cpu6' from JSON`, - ); -} - -/** @internal */ -export const CpuUnion6$inboundSchema: z.ZodType = z.union([ - z.lazy(() => Cpu6$inboundSchema), - z.any(), -]); - -export function cpuUnion6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuUnion6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuUnion6' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObject7$inboundSchema: z.ZodType< - InvolvedObject7, - unknown -> = z.object({ - apiVersion: z.nullable(z.string()).optional(), - fieldPath: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - namespace: z.nullable(z.string()).optional(), - resourceVersion: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), -}); - -export function involvedObject7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObject7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObject7' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObjectUnion7$inboundSchema: z.ZodType< - InvolvedObjectUnion7, - unknown -> = z.union([z.lazy(() => InvolvedObject7$inboundSchema), z.any()]); - -export function involvedObjectUnion7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObjectUnion7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObjectUnion7' from JSON`, - ); -} - -/** @internal */ -export const Source7$inboundSchema: z.ZodType = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function source7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Source7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Source7' from JSON`, - ); -} - -/** @internal */ -export const SourceUnion7$inboundSchema: z.ZodType = z - .union([z.lazy(() => Source7$inboundSchema), z.any()]); - -export function sourceUnion7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SourceUnion7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SourceUnion7' from JSON`, - ); -} - -/** @internal */ -export const Event9$inboundSchema: z.ZodType = z.object({ - count: z.nullable(z.int()).optional(), - eventTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - firstTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject7$inboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable(z.union([z.lazy(() => Source7$inboundSchema), z.any()])) - .optional(), - type: z.nullable(z.string()).optional(), -}); - -export function event9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event9' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnit6$inboundSchema: z.ZodEnum = z.enum( - MemoryUnit6, -); - -/** @internal */ -export const Memory6$inboundSchema: z.ZodType = z.object({ - unit: MemoryUnit6$inboundSchema, - value: z.number(), -}); - -export function memory6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Memory6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Memory6' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnion6$inboundSchema: z.ZodType = z - .union([z.lazy(() => Memory6$inboundSchema), z.any()]); - -export function memoryUnion6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryUnion6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryUnion6' from JSON`, - ); -} - -/** @internal */ -export const CpuPodUnit3$inboundSchema: z.ZodEnum = z.enum( - CpuPodUnit3, -); - -/** @internal */ -export const CpuPod3$inboundSchema: z.ZodType = z.object({ - unit: CpuPodUnit3$inboundSchema, - value: z.number(), -}); - -export function cpuPod3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuPod3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuPod3' from JSON`, - ); -} - -/** @internal */ -export const PodCpuUnion3$inboundSchema: z.ZodType = z - .union([z.lazy(() => CpuPod3$inboundSchema), z.any()]); - -export function podCpuUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => PodCpuUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'PodCpuUnion3' from JSON`, - ); -} - -/** @internal */ -export const MemoryPodUnit3$inboundSchema: z.ZodEnum = z - .enum(MemoryPodUnit3); - -/** @internal */ -export const MemoryPod3$inboundSchema: z.ZodType = z - .object({ - unit: MemoryPodUnit3$inboundSchema, - value: z.number(), - }); - -export function memoryPod3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryPod3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryPod3' from JSON`, - ); -} - -/** @internal */ -export const PodMemoryUnion3$inboundSchema: z.ZodType< - PodMemoryUnion3, - unknown -> = z.union([z.lazy(() => MemoryPod3$inboundSchema), z.any()]); - -export function podMemoryUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => PodMemoryUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'PodMemoryUnion3' from JSON`, - ); -} - -/** @internal */ -export const OwnerReference3$inboundSchema: z.ZodType< - OwnerReference3, - unknown -> = z.object({ - controller: z.boolean(), - kind: z.string(), - name: z.string(), - uid: z.string(), -}); - -export function ownerReference3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OwnerReference3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OwnerReference3' from JSON`, - ); -} - -/** @internal */ -export const Pod3$inboundSchema: z.ZodType = z.object({ - cpu: z.nullable(z.union([z.lazy(() => CpuPod3$inboundSchema), z.any()])) - .optional(), - memory: z.nullable(z.union([z.lazy(() => MemoryPod3$inboundSchema), z.any()])) - .optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - ownerReferences: z.array(z.lazy(() => OwnerReference3$inboundSchema)), - phase: z.nullable(z.string()).optional(), - podIp: z.nullable(z.string()).optional(), - ready: z.boolean(), - restartCount: z.int(), - terminatedReason: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function pod3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Pod3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Pod3' from JSON`, - ); -} - -/** @internal */ -export const Replicas4$inboundSchema: z.ZodType = z.object({ - available: z.nullable(z.int()).optional(), - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - misscheduled: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - updated: z.nullable(z.int()).optional(), -}); - -export function replicas4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Replicas4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Replicas4' from JSON`, - ); -} - -/** @internal */ -export const Reason16$inboundSchema: z.ZodEnum = z.enum( - Reason16, -); - -/** @internal */ -export const CollectionIssueSeverity16$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity16 -> = z.enum(CollectionIssueSeverity16); - -/** @internal */ -export const CollectionIssue16$inboundSchema: z.ZodType< - CollectionIssue16, - unknown -> = z.object({ - message: z.string(), - reason: Reason16$inboundSchema, - severity: CollectionIssueSeverity16$inboundSchema, - source: z.string(), -}); - -export function collectionIssue16FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue16$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue16' from JSON`, - ); -} - -/** @internal */ -export const Health16$inboundSchema: z.ZodEnum = z.enum( - Health16, -); - -/** @internal */ -export const Lifecycle16$inboundSchema: z.ZodEnum = z.enum( - Lifecycle16, -); - -/** @internal */ -export const DataStatus16$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue16$inboundSchema)), - health: Health16$inboundSchema, - lifecycle: Lifecycle16$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus16FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus16$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus16' from JSON`, - ); -} - -/** @internal */ -export const WorkloadCondition3$inboundSchema: z.ZodType< - WorkloadCondition3, - unknown -> = z.object({ - lastTransitionTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.nullable(z.string()).optional(), - reason: z.nullable(z.string()).optional(), - status: z.string(), - type: z.string(), -}); - -export function workloadCondition3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => WorkloadCondition3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'WorkloadCondition3' from JSON`, - ); -} - -/** @internal */ -export const Workload3$inboundSchema: z.ZodType = z.object({ - availableReplicas: z.nullable(z.int()).optional(), - conditions: z.array(z.lazy(() => WorkloadCondition3$inboundSchema)), - desiredGeneration: z.nullable(z.int()).optional(), - desiredReplicas: z.nullable(z.int()).optional(), - observedGeneration: z.nullable(z.int()).optional(), - readyReplicas: z.nullable(z.int()).optional(), - rolloutReason: z.nullable(z.string()).optional(), - updatedReplicas: z.nullable(z.int()).optional(), -}); - -export function workload3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Workload3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Workload3' from JSON`, - ); -} - -/** @internal */ -export const WorkloadUnion3$inboundSchema: z.ZodType = - z.union([z.lazy(() => Workload3$inboundSchema), z.any()]); - -export function workloadUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => WorkloadUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'WorkloadUnion3' from JSON`, - ); -} - -/** @internal */ -export const DataKubernetes3$inboundSchema: z.ZodType< - DataKubernetes3, - unknown -> = z.object({ - commandSupported: z.boolean(), - cpu: z.nullable(z.union([z.lazy(() => Cpu6$inboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => Event9$inboundSchema)), - memory: z.nullable(z.union([z.lazy(() => Memory6$inboundSchema), z.any()])) - .optional(), - name: z.string(), - namespace: z.string(), - pods: z.array(z.lazy(() => Pod3$inboundSchema)), - replicas: z.lazy(() => Replicas4$inboundSchema), - restarts: z.nullable(z.int()).optional(), - status: z.lazy(() => DataStatus16$inboundSchema), - workload: z.nullable( - z.union([z.lazy(() => Workload3$inboundSchema), z.any()]), - ).optional(), - backend: z.literal("kubernetes"), -}); - -export function dataKubernetes3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataKubernetes3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataKubernetes3' from JSON`, - ); -} - -/** @internal */ -export const CpuDaemonInstanceUnit3$inboundSchema: z.ZodEnum< - typeof CpuDaemonInstanceUnit3 -> = z.enum(CpuDaemonInstanceUnit3); - -/** @internal */ -export const CpuDaemonInstance3$inboundSchema: z.ZodType< - CpuDaemonInstance3, - unknown -> = z.object({ - unit: CpuDaemonInstanceUnit3$inboundSchema, - value: z.number(), -}); - -export function cpuDaemonInstance3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuDaemonInstance3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuDaemonInstance3' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstanceCpuUnion3$inboundSchema: z.ZodType< - DaemonInstanceCpuUnion3, - unknown -> = z.union([z.lazy(() => CpuDaemonInstance3$inboundSchema), z.any()]); - -export function daemonInstanceCpuUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstanceCpuUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstanceCpuUnion3' from JSON`, - ); -} - -/** @internal */ -export const MemoryDaemonInstanceUnit3$inboundSchema: z.ZodEnum< - typeof MemoryDaemonInstanceUnit3 -> = z.enum(MemoryDaemonInstanceUnit3); - -/** @internal */ -export const MemoryDaemonInstance3$inboundSchema: z.ZodType< - MemoryDaemonInstance3, - unknown -> = z.object({ - unit: MemoryDaemonInstanceUnit3$inboundSchema, - value: z.number(), -}); - -export function memoryDaemonInstance3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryDaemonInstance3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryDaemonInstance3' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstanceMemoryUnion3$inboundSchema: z.ZodType< - DaemonInstanceMemoryUnion3, - unknown -> = z.union([z.lazy(() => MemoryDaemonInstance3$inboundSchema), z.any()]); - -export function daemonInstanceMemoryUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstanceMemoryUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstanceMemoryUnion3' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstance3$inboundSchema: z.ZodType< - DaemonInstance3, - unknown -> = z.object({ - cpu: z.nullable( - z.union([z.lazy(() => CpuDaemonInstance3$inboundSchema), z.any()]), - ).optional(), - ip: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryDaemonInstance3$inboundSchema), z.any()]), - ).optional(), - message: z.nullable(z.string()).optional(), - metricsHealthy: z.nullable(z.boolean()).optional(), - metricsLastUpdated: z.nullable(z.string()).optional(), - metricsStatus: z.nullable(z.string()).optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - phase: z.nullable(z.string()).optional(), - ready: z.boolean(), - reason: z.nullable(z.string()).optional(), - replicaId: z.string(), - restartCount: z.nullable(z.int()).optional(), - status: z.nullable(z.string()).optional(), - terminatedReason: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function daemonInstance3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstance3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstance3' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObject6$inboundSchema: z.ZodType< - InvolvedObject6, - unknown -> = z.object({ - details: z.nullable(z.any()).optional(), - id: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - replicaId: z.nullable(z.string()).optional(), -}); - -export function involvedObject6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObject6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObject6' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObjectUnion6$inboundSchema: z.ZodType< - InvolvedObjectUnion6, - unknown -> = z.union([z.lazy(() => InvolvedObject6$inboundSchema), z.any()]); - -export function involvedObjectUnion6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObjectUnion6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObjectUnion6' from JSON`, - ); -} - -/** @internal */ -export const Source6$inboundSchema: z.ZodType = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function source6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Source6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Source6' from JSON`, - ); -} - -/** @internal */ -export const SourceUnion6$inboundSchema: z.ZodType = z - .union([z.lazy(() => Source6$inboundSchema), z.any()]); - -export function sourceUnion6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SourceUnion6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SourceUnion6' from JSON`, - ); -} - -/** @internal */ -export const Event8$inboundSchema: z.ZodType = z.object({ - count: z.nullable(z.int()).optional(), - details: z.nullable(z.any()).optional(), - eventId: z.nullable(z.string()).optional(), - eventTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - firstTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject6$inboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable(z.union([z.lazy(() => Source6$inboundSchema), z.any()])) - .optional(), - type: z.nullable(z.string()).optional(), -}); - -export function event8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event8' from JSON`, - ); -} - -/** @internal */ -export const Reason15$inboundSchema: z.ZodEnum = z.enum( - Reason15, -); - -/** @internal */ -export const CollectionIssueSeverity15$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity15 -> = z.enum(CollectionIssueSeverity15); - -/** @internal */ -export const CollectionIssue15$inboundSchema: z.ZodType< - CollectionIssue15, - unknown -> = z.object({ - message: z.string(), - reason: Reason15$inboundSchema, - severity: CollectionIssueSeverity15$inboundSchema, - source: z.string(), -}); - -export function collectionIssue15FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue15$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue15' from JSON`, - ); -} - -/** @internal */ -export const Health15$inboundSchema: z.ZodEnum = z.enum( - Health15, -); - -/** @internal */ -export const Lifecycle15$inboundSchema: z.ZodEnum = z.enum( - Lifecycle15, -); - -/** @internal */ -export const DataStatus15$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue15$inboundSchema)), - health: Health15$inboundSchema, - lifecycle: Lifecycle15$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus15FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus15$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus15' from JSON`, - ); -} - -/** @internal */ -export const DataAzure1$inboundSchema: z.ZodType = z - .object({ - assignedMachines: z.int(), - capacityGroup: z.string(), - commandSupported: z.boolean(), - daemonInstances: z.array(z.lazy(() => DaemonInstance3$inboundSchema)), - daemonName: z.string(), - desiredMachines: z.int(), - events: z.array(z.lazy(() => Event8$inboundSchema)), - healthyInstances: z.int(), - horizonClusterId: z.string(), - horizonStatus: z.string(), - horizonStatusMessage: z.nullable(z.string()).optional(), - horizonStatusReason: z.nullable(z.string()).optional(), - latestUpdateTimestamp: z.string(), - status: z.lazy(() => DataStatus15$inboundSchema), - unavailableInstances: z.int(), - backend: z.literal("azure"), - }); - -export function dataAzure1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzure1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzure1' from JSON`, - ); -} - -/** @internal */ -export const CpuDaemonInstanceUnit2$inboundSchema: z.ZodEnum< - typeof CpuDaemonInstanceUnit2 -> = z.enum(CpuDaemonInstanceUnit2); - -/** @internal */ -export const CpuDaemonInstance2$inboundSchema: z.ZodType< - CpuDaemonInstance2, - unknown -> = z.object({ - unit: CpuDaemonInstanceUnit2$inboundSchema, - value: z.number(), -}); - -export function cpuDaemonInstance2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuDaemonInstance2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuDaemonInstance2' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstanceCpuUnion2$inboundSchema: z.ZodType< - DaemonInstanceCpuUnion2, - unknown -> = z.union([z.lazy(() => CpuDaemonInstance2$inboundSchema), z.any()]); - -export function daemonInstanceCpuUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstanceCpuUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstanceCpuUnion2' from JSON`, - ); -} - -/** @internal */ -export const MemoryDaemonInstanceUnit2$inboundSchema: z.ZodEnum< - typeof MemoryDaemonInstanceUnit2 -> = z.enum(MemoryDaemonInstanceUnit2); - -/** @internal */ -export const MemoryDaemonInstance2$inboundSchema: z.ZodType< - MemoryDaemonInstance2, - unknown -> = z.object({ - unit: MemoryDaemonInstanceUnit2$inboundSchema, - value: z.number(), -}); - -export function memoryDaemonInstance2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryDaemonInstance2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryDaemonInstance2' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstanceMemoryUnion2$inboundSchema: z.ZodType< - DaemonInstanceMemoryUnion2, - unknown -> = z.union([z.lazy(() => MemoryDaemonInstance2$inboundSchema), z.any()]); - -export function daemonInstanceMemoryUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstanceMemoryUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstanceMemoryUnion2' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstance2$inboundSchema: z.ZodType< - DaemonInstance2, - unknown -> = z.object({ - cpu: z.nullable( - z.union([z.lazy(() => CpuDaemonInstance2$inboundSchema), z.any()]), - ).optional(), - ip: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryDaemonInstance2$inboundSchema), z.any()]), - ).optional(), - message: z.nullable(z.string()).optional(), - metricsHealthy: z.nullable(z.boolean()).optional(), - metricsLastUpdated: z.nullable(z.string()).optional(), - metricsStatus: z.nullable(z.string()).optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - phase: z.nullable(z.string()).optional(), - ready: z.boolean(), - reason: z.nullable(z.string()).optional(), - replicaId: z.string(), - restartCount: z.nullable(z.int()).optional(), - status: z.nullable(z.string()).optional(), - terminatedReason: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function daemonInstance2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstance2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstance2' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObject5$inboundSchema: z.ZodType< - InvolvedObject5, - unknown -> = z.object({ - details: z.nullable(z.any()).optional(), - id: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - replicaId: z.nullable(z.string()).optional(), -}); - -export function involvedObject5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObject5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObject5' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObjectUnion5$inboundSchema: z.ZodType< - InvolvedObjectUnion5, - unknown -> = z.union([z.lazy(() => InvolvedObject5$inboundSchema), z.any()]); - -export function involvedObjectUnion5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObjectUnion5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObjectUnion5' from JSON`, - ); -} - -/** @internal */ -export const Source5$inboundSchema: z.ZodType = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function source5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Source5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Source5' from JSON`, - ); -} - -/** @internal */ -export const SourceUnion5$inboundSchema: z.ZodType = z - .union([z.lazy(() => Source5$inboundSchema), z.any()]); - -export function sourceUnion5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SourceUnion5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SourceUnion5' from JSON`, - ); -} - -/** @internal */ -export const Event7$inboundSchema: z.ZodType = z.object({ - count: z.nullable(z.int()).optional(), - details: z.nullable(z.any()).optional(), - eventId: z.nullable(z.string()).optional(), - eventTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - firstTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject5$inboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable(z.union([z.lazy(() => Source5$inboundSchema), z.any()])) - .optional(), - type: z.nullable(z.string()).optional(), -}); - -export function event7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event7' from JSON`, - ); -} - -/** @internal */ -export const Reason14$inboundSchema: z.ZodEnum = z.enum( - Reason14, -); - -/** @internal */ -export const CollectionIssueSeverity14$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity14 -> = z.enum(CollectionIssueSeverity14); - -/** @internal */ -export const CollectionIssue14$inboundSchema: z.ZodType< - CollectionIssue14, - unknown -> = z.object({ - message: z.string(), - reason: Reason14$inboundSchema, - severity: CollectionIssueSeverity14$inboundSchema, - source: z.string(), -}); - -export function collectionIssue14FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue14$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue14' from JSON`, - ); -} - -/** @internal */ -export const Health14$inboundSchema: z.ZodEnum = z.enum( - Health14, -); - -/** @internal */ -export const Lifecycle14$inboundSchema: z.ZodEnum = z.enum( - Lifecycle14, -); - -/** @internal */ -export const DataStatus14$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue14$inboundSchema)), - health: Health14$inboundSchema, - lifecycle: Lifecycle14$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus14FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus14$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus14' from JSON`, - ); -} - -/** @internal */ -export const DataGcp1$inboundSchema: z.ZodType = z.object({ - assignedMachines: z.int(), - capacityGroup: z.string(), - commandSupported: z.boolean(), - daemonInstances: z.array(z.lazy(() => DaemonInstance2$inboundSchema)), - daemonName: z.string(), - desiredMachines: z.int(), - events: z.array(z.lazy(() => Event7$inboundSchema)), - healthyInstances: z.int(), - horizonClusterId: z.string(), - horizonStatus: z.string(), - horizonStatusMessage: z.nullable(z.string()).optional(), - horizonStatusReason: z.nullable(z.string()).optional(), - latestUpdateTimestamp: z.string(), - status: z.lazy(() => DataStatus14$inboundSchema), - unavailableInstances: z.int(), - backend: z.literal("gcp"), -}); - -export function dataGcp1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcp1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcp1' from JSON`, - ); -} - -/** @internal */ -export const CpuDaemonInstanceUnit1$inboundSchema: z.ZodEnum< - typeof CpuDaemonInstanceUnit1 -> = z.enum(CpuDaemonInstanceUnit1); - -/** @internal */ -export const CpuDaemonInstance1$inboundSchema: z.ZodType< - CpuDaemonInstance1, - unknown -> = z.object({ - unit: CpuDaemonInstanceUnit1$inboundSchema, - value: z.number(), -}); - -export function cpuDaemonInstance1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuDaemonInstance1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuDaemonInstance1' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstanceCpuUnion1$inboundSchema: z.ZodType< - DaemonInstanceCpuUnion1, - unknown -> = z.union([z.lazy(() => CpuDaemonInstance1$inboundSchema), z.any()]); - -export function daemonInstanceCpuUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstanceCpuUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstanceCpuUnion1' from JSON`, - ); -} - -/** @internal */ -export const MemoryDaemonInstanceUnit1$inboundSchema: z.ZodEnum< - typeof MemoryDaemonInstanceUnit1 -> = z.enum(MemoryDaemonInstanceUnit1); - -/** @internal */ -export const MemoryDaemonInstance1$inboundSchema: z.ZodType< - MemoryDaemonInstance1, - unknown -> = z.object({ - unit: MemoryDaemonInstanceUnit1$inboundSchema, - value: z.number(), -}); - -export function memoryDaemonInstance1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryDaemonInstance1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryDaemonInstance1' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstanceMemoryUnion1$inboundSchema: z.ZodType< - DaemonInstanceMemoryUnion1, - unknown -> = z.union([z.lazy(() => MemoryDaemonInstance1$inboundSchema), z.any()]); - -export function daemonInstanceMemoryUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstanceMemoryUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstanceMemoryUnion1' from JSON`, - ); -} - -/** @internal */ -export const DaemonInstance1$inboundSchema: z.ZodType< - DaemonInstance1, - unknown -> = z.object({ - cpu: z.nullable( - z.union([z.lazy(() => CpuDaemonInstance1$inboundSchema), z.any()]), - ).optional(), - ip: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryDaemonInstance1$inboundSchema), z.any()]), - ).optional(), - message: z.nullable(z.string()).optional(), - metricsHealthy: z.nullable(z.boolean()).optional(), - metricsLastUpdated: z.nullable(z.string()).optional(), - metricsStatus: z.nullable(z.string()).optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - phase: z.nullable(z.string()).optional(), - ready: z.boolean(), - reason: z.nullable(z.string()).optional(), - replicaId: z.string(), - restartCount: z.nullable(z.int()).optional(), - status: z.nullable(z.string()).optional(), - terminatedReason: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function daemonInstance1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DaemonInstance1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DaemonInstance1' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObject4$inboundSchema: z.ZodType< - InvolvedObject4, - unknown -> = z.object({ - details: z.nullable(z.any()).optional(), - id: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - replicaId: z.nullable(z.string()).optional(), -}); - -export function involvedObject4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObject4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObject4' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObjectUnion4$inboundSchema: z.ZodType< - InvolvedObjectUnion4, - unknown -> = z.union([z.lazy(() => InvolvedObject4$inboundSchema), z.any()]); - -export function involvedObjectUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObjectUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObjectUnion4' from JSON`, - ); -} - -/** @internal */ -export const Source4$inboundSchema: z.ZodType = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function source4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Source4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Source4' from JSON`, - ); -} - -/** @internal */ -export const SourceUnion4$inboundSchema: z.ZodType = z - .union([z.lazy(() => Source4$inboundSchema), z.any()]); - -export function sourceUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SourceUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SourceUnion4' from JSON`, - ); -} - -/** @internal */ -export const Event6$inboundSchema: z.ZodType = z.object({ - count: z.nullable(z.int()).optional(), - details: z.nullable(z.any()).optional(), - eventId: z.nullable(z.string()).optional(), - eventTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - firstTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject4$inboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable(z.union([z.lazy(() => Source4$inboundSchema), z.any()])) - .optional(), - type: z.nullable(z.string()).optional(), -}); - -export function event6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event6' from JSON`, - ); -} - -/** @internal */ -export const Reason13$inboundSchema: z.ZodEnum = z.enum( - Reason13, -); - -/** @internal */ -export const CollectionIssueSeverity13$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity13 -> = z.enum(CollectionIssueSeverity13); - -/** @internal */ -export const CollectionIssue13$inboundSchema: z.ZodType< - CollectionIssue13, - unknown -> = z.object({ - message: z.string(), - reason: Reason13$inboundSchema, - severity: CollectionIssueSeverity13$inboundSchema, - source: z.string(), -}); - -export function collectionIssue13FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue13$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue13' from JSON`, - ); -} - -/** @internal */ -export const Health13$inboundSchema: z.ZodEnum = z.enum( - Health13, -); - -/** @internal */ -export const Lifecycle13$inboundSchema: z.ZodEnum = z.enum( - Lifecycle13, -); - -/** @internal */ -export const DataStatus13$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue13$inboundSchema)), - health: Health13$inboundSchema, - lifecycle: Lifecycle13$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus13FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus13$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus13' from JSON`, - ); -} - -/** @internal */ -export const DataAws1$inboundSchema: z.ZodType = z.object({ - assignedMachines: z.int(), - capacityGroup: z.string(), - commandSupported: z.boolean(), - daemonInstances: z.array(z.lazy(() => DaemonInstance1$inboundSchema)), - daemonName: z.string(), - desiredMachines: z.int(), - events: z.array(z.lazy(() => Event6$inboundSchema)), - healthyInstances: z.int(), - horizonClusterId: z.string(), - horizonStatus: z.string(), - horizonStatusMessage: z.nullable(z.string()).optional(), - horizonStatusReason: z.nullable(z.string()).optional(), - latestUpdateTimestamp: z.string(), - status: z.lazy(() => DataStatus13$inboundSchema), - unavailableInstances: z.int(), - backend: z.literal("aws"), -}); - -export function dataAws1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAws1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAws1' from JSON`, - ); -} - -/** @internal */ -export const DataUnion4$inboundSchema: z.ZodType = z.union( - [ - z.lazy(() => DataAws1$inboundSchema), - z.lazy(() => DataGcp1$inboundSchema), - z.lazy(() => DataAzure1$inboundSchema), - z.lazy(() => DataKubernetes3$inboundSchema), - z.lazy(() => DataLocal4$inboundSchema), - ], -); - -export function dataUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion4' from JSON`, - ); -} - -/** @internal */ -export const DataDaemon$inboundSchema: z.ZodType = z - .object({ - data: z.union([ - z.lazy(() => DataAws1$inboundSchema), - z.lazy(() => DataGcp1$inboundSchema), - z.lazy(() => DataAzure1$inboundSchema), - z.lazy(() => DataKubernetes3$inboundSchema), - z.lazy(() => DataLocal4$inboundSchema), - ]), - resourceType: z.literal("daemon"), - }); - -export function dataDaemonFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataDaemon$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataDaemon' from JSON`, - ); -} - -/** @internal */ -export const ContainerUnitCpuUnit$inboundSchema: z.ZodEnum< - typeof ContainerUnitCpuUnit -> = z.enum(ContainerUnitCpuUnit); - -/** @internal */ -export const ContainerUnitCpu$inboundSchema: z.ZodType< - ContainerUnitCpu, - unknown -> = z.object({ - unit: ContainerUnitCpuUnit$inboundSchema, - value: z.number(), -}); - -export function containerUnitCpuFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ContainerUnitCpu$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ContainerUnitCpu' from JSON`, - ); -} - -/** @internal */ -export const ContainerUnitCpuUnion$inboundSchema: z.ZodType< - ContainerUnitCpuUnion, - unknown -> = z.union([z.lazy(() => ContainerUnitCpu$inboundSchema), z.any()]); - -export function containerUnitCpuUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ContainerUnitCpuUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ContainerUnitCpuUnion' from JSON`, - ); -} - -/** @internal */ -export const ContainerUnitKind$inboundSchema: z.ZodEnum< - typeof ContainerUnitKind -> = z.enum(ContainerUnitKind); - -/** @internal */ -export const ContainerUnitMemoryUnit$inboundSchema: z.ZodEnum< - typeof ContainerUnitMemoryUnit -> = z.enum(ContainerUnitMemoryUnit); - -/** @internal */ -export const ContainerUnitMemory$inboundSchema: z.ZodType< - ContainerUnitMemory, - unknown -> = z.object({ - unit: ContainerUnitMemoryUnit$inboundSchema, - value: z.number(), -}); - -export function containerUnitMemoryFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ContainerUnitMemory$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ContainerUnitMemory' from JSON`, - ); -} - -/** @internal */ -export const ContainerUnitMemoryUnion$inboundSchema: z.ZodType< - ContainerUnitMemoryUnion, - unknown -> = z.union([z.lazy(() => ContainerUnitMemory$inboundSchema), z.any()]); - -export function containerUnitMemoryUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ContainerUnitMemoryUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ContainerUnitMemoryUnion' from JSON`, - ); -} - -/** @internal */ -export const ContainerUnit$inboundSchema: z.ZodType = z - .object({ - cpu: z.nullable( - z.union([z.lazy(() => ContainerUnitCpu$inboundSchema), z.any()]), - ).optional(), - kind: ContainerUnitKind$inboundSchema, - memory: z.nullable( - z.union([z.lazy(() => ContainerUnitMemory$inboundSchema), z.any()]), - ).optional(), - name: z.string(), - phase: z.nullable(z.string()).optional(), - pid: z.nullable(z.int()).optional(), - ready: z.boolean(), - restartCount: z.nullable(z.int()).optional(), - unitId: z.string(), - }); - -export function containerUnitFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ContainerUnit$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ContainerUnit' from JSON`, - ); -} - -/** @internal */ -export const ContainerUnitUnion$inboundSchema: z.ZodType< - ContainerUnitUnion, - unknown -> = z.union([z.lazy(() => ContainerUnit$inboundSchema), z.any()]); - -export function containerUnitUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ContainerUnitUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ContainerUnitUnion' from JSON`, - ); -} - -/** @internal */ -export const CpuUnit5$inboundSchema: z.ZodEnum = z.enum( - CpuUnit5, -); - -/** @internal */ -export const Cpu5$inboundSchema: z.ZodType = z.object({ - unit: CpuUnit5$inboundSchema, - value: z.number(), -}); - -export function cpu5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Cpu5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Cpu5' from JSON`, - ); -} - -/** @internal */ -export const CpuUnion5$inboundSchema: z.ZodType = z.union([ - z.lazy(() => Cpu5$inboundSchema), - z.any(), -]); - -export function cpuUnion5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuUnion5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuUnion5' from JSON`, - ); -} - -/** @internal */ -export const EventSeverity2$inboundSchema: z.ZodEnum = z - .enum(EventSeverity2); - -/** @internal */ -export const Subject2$inboundSchema: z.ZodType = z.object({ - id: z.nullable(z.string()).optional(), - kind: z.string(), - name: z.nullable(z.string()).optional(), -}); - -export function subject2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Subject2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Subject2' from JSON`, - ); -} - -/** @internal */ -export const SubjectUnion2$inboundSchema: z.ZodType = z - .union([z.lazy(() => Subject2$inboundSchema), z.any()]); - -export function subjectUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SubjectUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SubjectUnion2' from JSON`, - ); -} - -/** @internal */ -export const Event5$inboundSchema: z.ZodType = z.object({ - kind: z.string(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - severity: EventSeverity2$inboundSchema, - subject: z.nullable(z.union([z.lazy(() => Subject2$inboundSchema), z.any()])) - .optional(), - timestamp: z.iso.datetime({ offset: true }).transform(v => new Date(v)), -}); - -export function event5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event5' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnit5$inboundSchema: z.ZodEnum = z.enum( - MemoryUnit5, -); - -/** @internal */ -export const Memory5$inboundSchema: z.ZodType = z.object({ - unit: MemoryUnit5$inboundSchema, - value: z.number(), -}); - -export function memory5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Memory5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Memory5' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnion5$inboundSchema: z.ZodType = z - .union([z.lazy(() => Memory5$inboundSchema), z.any()]); - -export function memoryUnion5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryUnion5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryUnion5' from JSON`, - ); -} - -/** @internal */ -export const Reason12$inboundSchema: z.ZodEnum = z.enum( - Reason12, -); - -/** @internal */ -export const CollectionIssueSeverity12$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity12 -> = z.enum(CollectionIssueSeverity12); - -/** @internal */ -export const CollectionIssue12$inboundSchema: z.ZodType< - CollectionIssue12, - unknown -> = z.object({ - message: z.string(), - reason: Reason12$inboundSchema, - severity: CollectionIssueSeverity12$inboundSchema, - source: z.string(), -}); - -export function collectionIssue12FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue12$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue12' from JSON`, - ); -} - -/** @internal */ -export const Health12$inboundSchema: z.ZodEnum = z.enum( - Health12, -); - -/** @internal */ -export const Lifecycle12$inboundSchema: z.ZodEnum = z.enum( - Lifecycle12, -); - -/** @internal */ -export const DataStatus12$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue12$inboundSchema)), - health: Health12$inboundSchema, - lifecycle: Lifecycle12$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus12FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus12$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus12' from JSON`, - ); -} - -/** @internal */ -export const DataLocal3$inboundSchema: z.ZodType = z - .object({ - bindMountCount: z.int(), - containerId: z.nullable(z.string()).optional(), - containerUnit: z.nullable( - z.union([z.lazy(() => ContainerUnit$inboundSchema), z.any()]), - ).optional(), - cpu: z.nullable(z.union([z.lazy(() => Cpu5$inboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => Event5$inboundSchema)), - image: z.nullable(z.string()).optional(), - localUrl: z.nullable(z.string()).optional(), - memory: z.nullable(z.union([z.lazy(() => Memory5$inboundSchema), z.any()])) - .optional(), - name: z.nullable(z.string()).optional(), - portCount: z.int(), - restartCount: z.nullable(z.int()).optional(), - runtimeReachable: z.boolean(), - runtimeStatus: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus12$inboundSchema), - backend: z.literal("local"), - }); - -export function dataLocal3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataLocal3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataLocal3' from JSON`, - ); -} - -/** @internal */ -export const CpuUnit4$inboundSchema: z.ZodEnum = z.enum( - CpuUnit4, -); - -/** @internal */ -export const Cpu4$inboundSchema: z.ZodType = z.object({ - unit: CpuUnit4$inboundSchema, - value: z.number(), -}); - -export function cpu4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Cpu4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Cpu4' from JSON`, - ); -} - -/** @internal */ -export const CpuUnion4$inboundSchema: z.ZodType = z.union([ - z.lazy(() => Cpu4$inboundSchema), - z.any(), -]); - -export function cpuUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuUnion4' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObject3$inboundSchema: z.ZodType< - InvolvedObject3, - unknown -> = z.object({ - apiVersion: z.nullable(z.string()).optional(), - fieldPath: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - namespace: z.nullable(z.string()).optional(), - resourceVersion: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), -}); - -export function involvedObject3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObject3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObject3' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObjectUnion3$inboundSchema: z.ZodType< - InvolvedObjectUnion3, - unknown -> = z.union([z.lazy(() => InvolvedObject3$inboundSchema), z.any()]); - -export function involvedObjectUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObjectUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObjectUnion3' from JSON`, - ); -} - -/** @internal */ -export const Source3$inboundSchema: z.ZodType = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function source3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Source3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Source3' from JSON`, - ); -} - -/** @internal */ -export const SourceUnion3$inboundSchema: z.ZodType = z - .union([z.lazy(() => Source3$inboundSchema), z.any()]); - -export function sourceUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SourceUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SourceUnion3' from JSON`, - ); -} - -/** @internal */ -export const Event4$inboundSchema: z.ZodType = z.object({ - count: z.nullable(z.int()).optional(), - eventTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - firstTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject3$inboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable(z.union([z.lazy(() => Source3$inboundSchema), z.any()])) - .optional(), - type: z.nullable(z.string()).optional(), -}); - -export function event4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event4' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnit4$inboundSchema: z.ZodEnum = z.enum( - MemoryUnit4, -); - -/** @internal */ -export const Memory4$inboundSchema: z.ZodType = z.object({ - unit: MemoryUnit4$inboundSchema, - value: z.number(), -}); - -export function memory4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Memory4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Memory4' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnion4$inboundSchema: z.ZodType = z - .union([z.lazy(() => Memory4$inboundSchema), z.any()]); - -export function memoryUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryUnion4' from JSON`, - ); -} - -/** @internal */ -export const CpuPodUnit2$inboundSchema: z.ZodEnum = z.enum( - CpuPodUnit2, -); - -/** @internal */ -export const CpuPod2$inboundSchema: z.ZodType = z.object({ - unit: CpuPodUnit2$inboundSchema, - value: z.number(), -}); - -export function cpuPod2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuPod2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuPod2' from JSON`, - ); -} - -/** @internal */ -export const PodCpuUnion2$inboundSchema: z.ZodType = z - .union([z.lazy(() => CpuPod2$inboundSchema), z.any()]); - -export function podCpuUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => PodCpuUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'PodCpuUnion2' from JSON`, - ); -} - -/** @internal */ -export const MemoryPodUnit2$inboundSchema: z.ZodEnum = z - .enum(MemoryPodUnit2); - -/** @internal */ -export const MemoryPod2$inboundSchema: z.ZodType = z - .object({ - unit: MemoryPodUnit2$inboundSchema, - value: z.number(), - }); - -export function memoryPod2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryPod2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryPod2' from JSON`, - ); -} - -/** @internal */ -export const PodMemoryUnion2$inboundSchema: z.ZodType< - PodMemoryUnion2, - unknown -> = z.union([z.lazy(() => MemoryPod2$inboundSchema), z.any()]); - -export function podMemoryUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => PodMemoryUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'PodMemoryUnion2' from JSON`, - ); -} - -/** @internal */ -export const OwnerReference2$inboundSchema: z.ZodType< - OwnerReference2, - unknown -> = z.object({ - controller: z.boolean(), - kind: z.string(), - name: z.string(), - uid: z.string(), -}); - -export function ownerReference2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OwnerReference2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OwnerReference2' from JSON`, - ); -} - -/** @internal */ -export const Pod2$inboundSchema: z.ZodType = z.object({ - cpu: z.nullable(z.union([z.lazy(() => CpuPod2$inboundSchema), z.any()])) - .optional(), - memory: z.nullable(z.union([z.lazy(() => MemoryPod2$inboundSchema), z.any()])) - .optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - ownerReferences: z.array(z.lazy(() => OwnerReference2$inboundSchema)), - phase: z.nullable(z.string()).optional(), - podIp: z.nullable(z.string()).optional(), - ready: z.boolean(), - restartCount: z.int(), - terminatedReason: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function pod2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Pod2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Pod2' from JSON`, - ); -} - -/** @internal */ -export const Replicas3$inboundSchema: z.ZodType = z.object({ - available: z.nullable(z.int()).optional(), - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - misscheduled: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - updated: z.nullable(z.int()).optional(), -}); - -export function replicas3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Replicas3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Replicas3' from JSON`, - ); -} - -/** @internal */ -export const Reason11$inboundSchema: z.ZodEnum = z.enum( - Reason11, -); - -/** @internal */ -export const CollectionIssueSeverity11$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity11 -> = z.enum(CollectionIssueSeverity11); - -/** @internal */ -export const CollectionIssue11$inboundSchema: z.ZodType< - CollectionIssue11, - unknown -> = z.object({ - message: z.string(), - reason: Reason11$inboundSchema, - severity: CollectionIssueSeverity11$inboundSchema, - source: z.string(), -}); - -export function collectionIssue11FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue11$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue11' from JSON`, - ); -} - -/** @internal */ -export const Health11$inboundSchema: z.ZodEnum = z.enum( - Health11, -); - -/** @internal */ -export const Lifecycle11$inboundSchema: z.ZodEnum = z.enum( - Lifecycle11, -); - -/** @internal */ -export const DataStatus11$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue11$inboundSchema)), - health: Health11$inboundSchema, - lifecycle: Lifecycle11$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus11FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus11$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus11' from JSON`, - ); -} - -/** @internal */ -export const WorkloadCondition2$inboundSchema: z.ZodType< - WorkloadCondition2, - unknown -> = z.object({ - lastTransitionTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.nullable(z.string()).optional(), - reason: z.nullable(z.string()).optional(), - status: z.string(), - type: z.string(), -}); - -export function workloadCondition2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => WorkloadCondition2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'WorkloadCondition2' from JSON`, - ); -} - -/** @internal */ -export const Workload2$inboundSchema: z.ZodType = z.object({ - availableReplicas: z.nullable(z.int()).optional(), - conditions: z.array(z.lazy(() => WorkloadCondition2$inboundSchema)), - desiredGeneration: z.nullable(z.int()).optional(), - desiredReplicas: z.nullable(z.int()).optional(), - observedGeneration: z.nullable(z.int()).optional(), - readyReplicas: z.nullable(z.int()).optional(), - rolloutReason: z.nullable(z.string()).optional(), - updatedReplicas: z.nullable(z.int()).optional(), -}); - -export function workload2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Workload2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Workload2' from JSON`, - ); -} - -/** @internal */ -export const WorkloadUnion2$inboundSchema: z.ZodType = - z.union([z.lazy(() => Workload2$inboundSchema), z.any()]); - -export function workloadUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => WorkloadUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'WorkloadUnion2' from JSON`, - ); -} - -/** @internal */ -export const WorkloadKind2$inboundSchema: z.ZodEnum = z - .enum(WorkloadKind2); - -/** @internal */ -export const DataKubernetes2$inboundSchema: z.ZodType< - DataKubernetes2, - unknown -> = z.object({ - cpu: z.nullable(z.union([z.lazy(() => Cpu4$inboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => Event4$inboundSchema)), - memory: z.nullable(z.union([z.lazy(() => Memory4$inboundSchema), z.any()])) - .optional(), - name: z.string(), - namespace: z.string(), - pods: z.array(z.lazy(() => Pod2$inboundSchema)), - replicas: z.lazy(() => Replicas3$inboundSchema), - restarts: z.nullable(z.int()).optional(), - status: z.lazy(() => DataStatus11$inboundSchema), - workload: z.nullable( - z.union([z.lazy(() => Workload2$inboundSchema), z.any()]), - ).optional(), - workloadKind: WorkloadKind2$inboundSchema, - backend: z.literal("kubernetes"), -}); - -export function dataKubernetes2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataKubernetes2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataKubernetes2' from JSON`, - ); -} - -/** @internal */ -export const CpuUnit3$inboundSchema: z.ZodEnum = z.enum( - CpuUnit3, -); - -/** @internal */ -export const Cpu3$inboundSchema: z.ZodType = z.object({ - unit: CpuUnit3$inboundSchema, - value: z.number(), -}); - -export function cpu3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Cpu3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Cpu3' from JSON`, - ); -} - -/** @internal */ -export const CpuUnion3$inboundSchema: z.ZodType = z.union([ - z.lazy(() => Cpu3$inboundSchema), - z.any(), -]); - -export function cpuUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuUnion3' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObject2$inboundSchema: z.ZodType< - InvolvedObject2, - unknown -> = z.object({ - details: z.nullable(z.any()).optional(), - id: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - replicaId: z.nullable(z.string()).optional(), -}); - -export function involvedObject2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObject2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObject2' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObjectUnion2$inboundSchema: z.ZodType< - InvolvedObjectUnion2, - unknown -> = z.union([z.lazy(() => InvolvedObject2$inboundSchema), z.any()]); - -export function involvedObjectUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObjectUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObjectUnion2' from JSON`, - ); -} - -/** @internal */ -export const Source2$inboundSchema: z.ZodType = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function source2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Source2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Source2' from JSON`, - ); -} - -/** @internal */ -export const SourceUnion2$inboundSchema: z.ZodType = z - .union([z.lazy(() => Source2$inboundSchema), z.any()]); - -export function sourceUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SourceUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SourceUnion2' from JSON`, - ); -} - -/** @internal */ -export const Event3$inboundSchema: z.ZodType = z.object({ - count: z.nullable(z.int()).optional(), - details: z.nullable(z.any()).optional(), - eventId: z.nullable(z.string()).optional(), - eventTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - firstTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject2$inboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable(z.union([z.lazy(() => Source2$inboundSchema), z.any()])) - .optional(), - type: z.nullable(z.string()).optional(), -}); - -export function event3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event3' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnit3$inboundSchema: z.ZodEnum = z.enum( - MemoryUnit3, -); - -/** @internal */ -export const Memory3$inboundSchema: z.ZodType = z.object({ - unit: MemoryUnit3$inboundSchema, - value: z.number(), -}); - -export function memory3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Memory3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Memory3' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnion3$inboundSchema: z.ZodType = z - .union([z.lazy(() => Memory3$inboundSchema), z.any()]); - -export function memoryUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryUnion3' from JSON`, - ); -} - -/** @internal */ -export const CpuReplicaUnitUnit$inboundSchema: z.ZodEnum< - typeof CpuReplicaUnitUnit -> = z.enum(CpuReplicaUnitUnit); - -/** @internal */ -export const CpuReplicaUnit$inboundSchema: z.ZodType = - z.object({ - unit: CpuReplicaUnitUnit$inboundSchema, - value: z.number(), - }); - -export function cpuReplicaUnitFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuReplicaUnit$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuReplicaUnit' from JSON`, - ); -} - -/** @internal */ -export const ReplicaUnitCpuUnion$inboundSchema: z.ZodType< - ReplicaUnitCpuUnion, - unknown -> = z.union([z.lazy(() => CpuReplicaUnit$inboundSchema), z.any()]); - -export function replicaUnitCpuUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReplicaUnitCpuUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReplicaUnitCpuUnion' from JSON`, - ); -} - -/** @internal */ -export const MemoryReplicaUnitUnit$inboundSchema: z.ZodEnum< - typeof MemoryReplicaUnitUnit -> = z.enum(MemoryReplicaUnitUnit); - -/** @internal */ -export const MemoryReplicaUnit$inboundSchema: z.ZodType< - MemoryReplicaUnit, - unknown -> = z.object({ - unit: MemoryReplicaUnitUnit$inboundSchema, - value: z.number(), -}); - -export function memoryReplicaUnitFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryReplicaUnit$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryReplicaUnit' from JSON`, - ); -} - -/** @internal */ -export const ReplicaUnitMemoryUnion$inboundSchema: z.ZodType< - ReplicaUnitMemoryUnion, - unknown -> = z.union([z.lazy(() => MemoryReplicaUnit$inboundSchema), z.any()]); - -export function replicaUnitMemoryUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReplicaUnitMemoryUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReplicaUnitMemoryUnion' from JSON`, - ); -} - -/** @internal */ -export const ReplicaUnit$inboundSchema: z.ZodType = z - .object({ - cpu: z.nullable( - z.union([z.lazy(() => CpuReplicaUnit$inboundSchema), z.any()]), - ).optional(), - ip: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryReplicaUnit$inboundSchema), z.any()]), - ).optional(), - message: z.nullable(z.string()).optional(), - metricsHealthy: z.nullable(z.boolean()).optional(), - metricsLastUpdated: z.nullable(z.string()).optional(), - metricsStatus: z.nullable(z.string()).optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - phase: z.nullable(z.string()).optional(), - ready: z.boolean(), - reason: z.nullable(z.string()).optional(), - replicaId: z.string(), - restartCount: z.nullable(z.int()).optional(), - status: z.nullable(z.string()).optional(), - terminatedReason: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), - }); - -export function replicaUnitFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReplicaUnit$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReplicaUnit' from JSON`, - ); -} - -/** @internal */ -export const Replicas2$inboundSchema: z.ZodType = z.object({ - available: z.nullable(z.int()).optional(), - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - misscheduled: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - updated: z.nullable(z.int()).optional(), -}); - -export function replicas2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Replicas2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Replicas2' from JSON`, - ); -} - -/** @internal */ -export const SchedulingMode$inboundSchema: z.ZodEnum = z - .enum(SchedulingMode); - -/** @internal */ -export const Reason10$inboundSchema: z.ZodEnum = z.enum( - Reason10, -); - -/** @internal */ -export const CollectionIssueSeverity10$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity10 -> = z.enum(CollectionIssueSeverity10); - -/** @internal */ -export const CollectionIssue10$inboundSchema: z.ZodType< - CollectionIssue10, - unknown -> = z.object({ - message: z.string(), - reason: Reason10$inboundSchema, - severity: CollectionIssueSeverity10$inboundSchema, - source: z.string(), -}); - -export function collectionIssue10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue10' from JSON`, - ); -} - -/** @internal */ -export const Health10$inboundSchema: z.ZodEnum = z.enum( - Health10, -); - -/** @internal */ -export const Lifecycle10$inboundSchema: z.ZodEnum = z.enum( - Lifecycle10, -); - -/** @internal */ -export const DataStatus10$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue10$inboundSchema)), - health: Health10$inboundSchema, - lifecycle: Lifecycle10$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus10FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus10$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus10' from JSON`, - ); -} - -/** @internal */ -export const DataHorizonPlatform$inboundSchema: z.ZodType< - DataHorizonPlatform, - unknown -> = z.object({ - attentionCount: z.int(), - containerId: z.string(), - cpu: z.nullable(z.union([z.lazy(() => Cpu3$inboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => Event3$inboundSchema)), - image: z.nullable(z.string()).optional(), - memory: z.nullable(z.union([z.lazy(() => Memory3$inboundSchema), z.any()])) - .optional(), - replicaUnits: z.array(z.lazy(() => ReplicaUnit$inboundSchema)), - replicas: z.lazy(() => Replicas2$inboundSchema), - schedulingMode: SchedulingMode$inboundSchema, - status: z.lazy(() => DataStatus10$inboundSchema), - backend: z.literal("horizonPlatform"), -}); - -export function dataHorizonPlatformFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataHorizonPlatform$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataHorizonPlatform' from JSON`, - ); -} - -/** @internal */ -export const DataUnion3$inboundSchema: z.ZodType = z.union( - [ - z.lazy(() => DataHorizonPlatform$inboundSchema), - z.lazy(() => DataKubernetes2$inboundSchema), - z.lazy(() => DataLocal3$inboundSchema), - ], -); - -export function dataUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion3' from JSON`, - ); -} - -/** @internal */ -export const DataContainer$inboundSchema: z.ZodType = z - .object({ - data: z.union([ - z.lazy(() => DataHorizonPlatform$inboundSchema), - z.lazy(() => DataKubernetes2$inboundSchema), - z.lazy(() => DataLocal3$inboundSchema), - ]), - resourceType: z.literal("container"), - }); - -export function dataContainerFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataContainer$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataContainer' from JSON`, - ); -} - -/** @internal */ -export const CpuUnit2$inboundSchema: z.ZodEnum = z.enum( - CpuUnit2, -); - -/** @internal */ -export const Cpu2$inboundSchema: z.ZodType = z.object({ - unit: CpuUnit2$inboundSchema, - value: z.number(), -}); - -export function cpu2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Cpu2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Cpu2' from JSON`, - ); -} - -/** @internal */ -export const CpuUnion2$inboundSchema: z.ZodType = z.union([ - z.lazy(() => Cpu2$inboundSchema), - z.any(), -]); - -export function cpuUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuUnion2' from JSON`, - ); -} - -/** @internal */ -export const EventSeverity1$inboundSchema: z.ZodEnum = z - .enum(EventSeverity1); - -/** @internal */ -export const Subject1$inboundSchema: z.ZodType = z.object({ - id: z.nullable(z.string()).optional(), - kind: z.string(), - name: z.nullable(z.string()).optional(), -}); - -export function subject1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Subject1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Subject1' from JSON`, - ); -} - -/** @internal */ -export const SubjectUnion1$inboundSchema: z.ZodType = z - .union([z.lazy(() => Subject1$inboundSchema), z.any()]); - -export function subjectUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SubjectUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SubjectUnion1' from JSON`, - ); -} - -/** @internal */ -export const Event2$inboundSchema: z.ZodType = z.object({ - kind: z.string(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - severity: EventSeverity1$inboundSchema, - subject: z.nullable(z.union([z.lazy(() => Subject1$inboundSchema), z.any()])) - .optional(), - timestamp: z.iso.datetime({ offset: true }).transform(v => new Date(v)), -}); - -export function event2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event2' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnit2$inboundSchema: z.ZodEnum = z.enum( - MemoryUnit2, -); - -/** @internal */ -export const Memory2$inboundSchema: z.ZodType = z.object({ - unit: MemoryUnit2$inboundSchema, - value: z.number(), -}); - -export function memory2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Memory2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Memory2' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnion2$inboundSchema: z.ZodType = z - .union([z.lazy(() => Memory2$inboundSchema), z.any()]); - -export function memoryUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryUnion2' from JSON`, - ); -} - -/** @internal */ -export const ProcessCpuUnit$inboundSchema: z.ZodEnum = z - .enum(ProcessCpuUnit); - -/** @internal */ -export const ProcessCpu$inboundSchema: z.ZodType = z - .object({ - unit: ProcessCpuUnit$inboundSchema, - value: z.number(), - }); - -export function processCpuFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProcessCpu$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProcessCpu' from JSON`, - ); -} - -/** @internal */ -export const ProcessCpuUnion$inboundSchema: z.ZodType< - ProcessCpuUnion, - unknown -> = z.union([z.lazy(() => ProcessCpu$inboundSchema), z.any()]); - -export function processCpuUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProcessCpuUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProcessCpuUnion' from JSON`, - ); -} - -/** @internal */ -export const ProcessKind$inboundSchema: z.ZodEnum = z.enum( - ProcessKind, -); - -/** @internal */ -export const ProcessMemoryUnit$inboundSchema: z.ZodEnum< - typeof ProcessMemoryUnit -> = z.enum(ProcessMemoryUnit); - -/** @internal */ -export const ProcessMemory$inboundSchema: z.ZodType = z - .object({ - unit: ProcessMemoryUnit$inboundSchema, - value: z.number(), - }); - -export function processMemoryFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProcessMemory$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProcessMemory' from JSON`, - ); -} - -/** @internal */ -export const ProcessMemoryUnion$inboundSchema: z.ZodType< - ProcessMemoryUnion, - unknown -> = z.union([z.lazy(() => ProcessMemory$inboundSchema), z.any()]); - -export function processMemoryUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProcessMemoryUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProcessMemoryUnion' from JSON`, - ); -} - -/** @internal */ -export const Process$inboundSchema: z.ZodType = z.object({ - cpu: z.nullable(z.union([z.lazy(() => ProcessCpu$inboundSchema), z.any()])) - .optional(), - kind: ProcessKind$inboundSchema, - memory: z.nullable( - z.union([z.lazy(() => ProcessMemory$inboundSchema), z.any()]), - ).optional(), - name: z.string(), - phase: z.nullable(z.string()).optional(), - pid: z.nullable(z.int()).optional(), - ready: z.boolean(), - restartCount: z.nullable(z.int()).optional(), - unitId: z.string(), -}); - -export function processFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Process$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Process' from JSON`, - ); -} - -/** @internal */ -export const ProcessUnion$inboundSchema: z.ZodType = z - .union([z.lazy(() => Process$inboundSchema), z.any()]); - -export function processUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProcessUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProcessUnion' from JSON`, - ); -} - -/** @internal */ -export const Reason9$inboundSchema: z.ZodEnum = z.enum(Reason9); - -/** @internal */ -export const CollectionIssueSeverity9$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity9 -> = z.enum(CollectionIssueSeverity9); - -/** @internal */ -export const CollectionIssue9$inboundSchema: z.ZodType< - CollectionIssue9, - unknown -> = z.object({ - message: z.string(), - reason: Reason9$inboundSchema, - severity: CollectionIssueSeverity9$inboundSchema, - source: z.string(), -}); - -export function collectionIssue9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue9' from JSON`, - ); -} - -/** @internal */ -export const Health9$inboundSchema: z.ZodEnum = z.enum(Health9); - -/** @internal */ -export const Lifecycle9$inboundSchema: z.ZodEnum = z.enum( - Lifecycle9, -); - -/** @internal */ -export const DataStatus9$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue9$inboundSchema)), - health: Health9$inboundSchema, - lifecycle: Lifecycle9$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus9FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus9$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus9' from JSON`, - ); -} - -/** @internal */ -export const DataLocal2$inboundSchema: z.ZodType = z - .object({ - commandSupported: z.boolean(), - cpu: z.nullable(z.union([z.lazy(() => Cpu2$inboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => Event2$inboundSchema)), - imagePathPresent: z.boolean(), - memory: z.nullable(z.union([z.lazy(() => Memory2$inboundSchema), z.any()])) - .optional(), - pid: z.nullable(z.int()).optional(), - process: z.nullable(z.union([z.lazy(() => Process$inboundSchema), z.any()])) - .optional(), - readinessProbeOk: z.nullable(z.boolean()).optional(), - status: z.lazy(() => DataStatus9$inboundSchema), - triggerCount: z.int(), - backend: z.literal("local"), - }); - -export function dataLocal2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataLocal2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataLocal2' from JSON`, - ); -} - -/** @internal */ -export const CpuUnit1$inboundSchema: z.ZodEnum = z.enum( - CpuUnit1, -); - -/** @internal */ -export const Cpu1$inboundSchema: z.ZodType = z.object({ - unit: CpuUnit1$inboundSchema, - value: z.number(), -}); - -export function cpu1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Cpu1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Cpu1' from JSON`, - ); -} - -/** @internal */ -export const CpuUnion1$inboundSchema: z.ZodType = z.union([ - z.lazy(() => Cpu1$inboundSchema), - z.any(), -]); - -export function cpuUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuUnion1' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObject1$inboundSchema: z.ZodType< - InvolvedObject1, - unknown -> = z.object({ - apiVersion: z.nullable(z.string()).optional(), - fieldPath: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - namespace: z.nullable(z.string()).optional(), - resourceVersion: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), -}); - -export function involvedObject1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObject1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObject1' from JSON`, - ); -} - -/** @internal */ -export const InvolvedObjectUnion1$inboundSchema: z.ZodType< - InvolvedObjectUnion1, - unknown -> = z.union([z.lazy(() => InvolvedObject1$inboundSchema), z.any()]); - -export function involvedObjectUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => InvolvedObjectUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'InvolvedObjectUnion1' from JSON`, - ); -} - -/** @internal */ -export const Source1$inboundSchema: z.ZodType = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function source1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Source1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Source1' from JSON`, - ); -} - -/** @internal */ -export const SourceUnion1$inboundSchema: z.ZodType = z - .union([z.lazy(() => Source1$inboundSchema), z.any()]); - -export function sourceUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SourceUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SourceUnion1' from JSON`, - ); -} - -/** @internal */ -export const Event1$inboundSchema: z.ZodType = z.object({ - count: z.nullable(z.int()).optional(), - eventTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - firstTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject1$inboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable(z.union([z.lazy(() => Source1$inboundSchema), z.any()])) - .optional(), - type: z.nullable(z.string()).optional(), -}); - -export function event1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Event1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Event1' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnit1$inboundSchema: z.ZodEnum = z.enum( - MemoryUnit1, -); - -/** @internal */ -export const Memory1$inboundSchema: z.ZodType = z.object({ - unit: MemoryUnit1$inboundSchema, - value: z.number(), -}); - -export function memory1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Memory1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Memory1' from JSON`, - ); -} - -/** @internal */ -export const MemoryUnion1$inboundSchema: z.ZodType = z - .union([z.lazy(() => Memory1$inboundSchema), z.any()]); - -export function memoryUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryUnion1' from JSON`, - ); -} - -/** @internal */ -export const CpuPodUnit1$inboundSchema: z.ZodEnum = z.enum( - CpuPodUnit1, -); - -/** @internal */ -export const CpuPod1$inboundSchema: z.ZodType = z.object({ - unit: CpuPodUnit1$inboundSchema, - value: z.number(), -}); - -export function cpuPod1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CpuPod1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CpuPod1' from JSON`, - ); -} - -/** @internal */ -export const PodCpuUnion1$inboundSchema: z.ZodType = z - .union([z.lazy(() => CpuPod1$inboundSchema), z.any()]); - -export function podCpuUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => PodCpuUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'PodCpuUnion1' from JSON`, - ); -} - -/** @internal */ -export const MemoryPodUnit1$inboundSchema: z.ZodEnum = z - .enum(MemoryPodUnit1); - -/** @internal */ -export const MemoryPod1$inboundSchema: z.ZodType = z - .object({ - unit: MemoryPodUnit1$inboundSchema, - value: z.number(), - }); - -export function memoryPod1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => MemoryPod1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'MemoryPod1' from JSON`, - ); -} - -/** @internal */ -export const PodMemoryUnion1$inboundSchema: z.ZodType< - PodMemoryUnion1, - unknown -> = z.union([z.lazy(() => MemoryPod1$inboundSchema), z.any()]); - -export function podMemoryUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => PodMemoryUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'PodMemoryUnion1' from JSON`, - ); -} - -/** @internal */ -export const OwnerReference1$inboundSchema: z.ZodType< - OwnerReference1, - unknown -> = z.object({ - controller: z.boolean(), - kind: z.string(), - name: z.string(), - uid: z.string(), -}); - -export function ownerReference1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OwnerReference1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OwnerReference1' from JSON`, - ); -} - -/** @internal */ -export const Pod1$inboundSchema: z.ZodType = z.object({ - cpu: z.nullable(z.union([z.lazy(() => CpuPod1$inboundSchema), z.any()])) - .optional(), - memory: z.nullable(z.union([z.lazy(() => MemoryPod1$inboundSchema), z.any()])) - .optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - ownerReferences: z.array(z.lazy(() => OwnerReference1$inboundSchema)), - phase: z.nullable(z.string()).optional(), - podIp: z.nullable(z.string()).optional(), - ready: z.boolean(), - restartCount: z.int(), - terminatedReason: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function pod1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Pod1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Pod1' from JSON`, - ); -} - -/** @internal */ -export const Replicas1$inboundSchema: z.ZodType = z.object({ - available: z.nullable(z.int()).optional(), - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - misscheduled: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - updated: z.nullable(z.int()).optional(), -}); - -export function replicas1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Replicas1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Replicas1' from JSON`, - ); -} - -/** @internal */ -export const Reason8$inboundSchema: z.ZodEnum = z.enum(Reason8); - -/** @internal */ -export const CollectionIssueSeverity8$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity8 -> = z.enum(CollectionIssueSeverity8); - -/** @internal */ -export const CollectionIssue8$inboundSchema: z.ZodType< - CollectionIssue8, - unknown -> = z.object({ - message: z.string(), - reason: Reason8$inboundSchema, - severity: CollectionIssueSeverity8$inboundSchema, - source: z.string(), -}); - -export function collectionIssue8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue8' from JSON`, - ); -} - -/** @internal */ -export const Health8$inboundSchema: z.ZodEnum = z.enum(Health8); - -/** @internal */ -export const Lifecycle8$inboundSchema: z.ZodEnum = z.enum( - Lifecycle8, -); - -/** @internal */ -export const DataStatus8$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue8$inboundSchema)), - health: Health8$inboundSchema, - lifecycle: Lifecycle8$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus8FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus8$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus8' from JSON`, - ); -} - -/** @internal */ -export const WorkloadCondition1$inboundSchema: z.ZodType< - WorkloadCondition1, - unknown -> = z.object({ - lastTransitionTime: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - message: z.nullable(z.string()).optional(), - reason: z.nullable(z.string()).optional(), - status: z.string(), - type: z.string(), -}); - -export function workloadCondition1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => WorkloadCondition1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'WorkloadCondition1' from JSON`, - ); -} - -/** @internal */ -export const Workload1$inboundSchema: z.ZodType = z.object({ - availableReplicas: z.nullable(z.int()).optional(), - conditions: z.array(z.lazy(() => WorkloadCondition1$inboundSchema)), - desiredGeneration: z.nullable(z.int()).optional(), - desiredReplicas: z.nullable(z.int()).optional(), - observedGeneration: z.nullable(z.int()).optional(), - readyReplicas: z.nullable(z.int()).optional(), - rolloutReason: z.nullable(z.string()).optional(), - updatedReplicas: z.nullable(z.int()).optional(), -}); - -export function workload1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Workload1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Workload1' from JSON`, - ); -} - -/** @internal */ -export const WorkloadUnion1$inboundSchema: z.ZodType = - z.union([z.lazy(() => Workload1$inboundSchema), z.any()]); - -export function workloadUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => WorkloadUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'WorkloadUnion1' from JSON`, - ); -} - -/** @internal */ -export const WorkloadKind1$inboundSchema: z.ZodEnum = z - .enum(WorkloadKind1); - -/** @internal */ -export const DataKubernetes1$inboundSchema: z.ZodType< - DataKubernetes1, - unknown -> = z.object({ - cpu: z.nullable(z.union([z.lazy(() => Cpu1$inboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => Event1$inboundSchema)), - memory: z.nullable(z.union([z.lazy(() => Memory1$inboundSchema), z.any()])) - .optional(), - name: z.string(), - namespace: z.string(), - pods: z.array(z.lazy(() => Pod1$inboundSchema)), - replicas: z.lazy(() => Replicas1$inboundSchema), - restarts: z.nullable(z.int()).optional(), - status: z.lazy(() => DataStatus8$inboundSchema), - triggerCount: z.int(), - workload: z.nullable( - z.union([z.lazy(() => Workload1$inboundSchema), z.any()]), - ).optional(), - workloadKind: WorkloadKind1$inboundSchema, - backend: z.literal("kubernetes"), -}); - -export function dataKubernetes1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataKubernetes1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataKubernetes1' from JSON`, - ); -} - -/** @internal */ -export const Reason7$inboundSchema: z.ZodEnum = z.enum(Reason7); - -/** @internal */ -export const CollectionIssueSeverity7$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity7 -> = z.enum(CollectionIssueSeverity7); - -/** @internal */ -export const CollectionIssue7$inboundSchema: z.ZodType< - CollectionIssue7, - unknown -> = z.object({ - message: z.string(), - reason: Reason7$inboundSchema, - severity: CollectionIssueSeverity7$inboundSchema, - source: z.string(), -}); - -export function collectionIssue7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue7' from JSON`, - ); -} - -/** @internal */ -export const Health7$inboundSchema: z.ZodEnum = z.enum(Health7); - -/** @internal */ -export const Lifecycle7$inboundSchema: z.ZodEnum = z.enum( - Lifecycle7, -); - -/** @internal */ -export const DataStatus7$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue7$inboundSchema)), - health: Health7$inboundSchema, - lifecycle: Lifecycle7$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus7FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus7$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus7' from JSON`, - ); -} - -/** @internal */ -export const DataAzureContainerApps1$inboundSchema: z.ZodType< - DataAzureContainerApps1, - unknown -> = z.object({ - appName: z.string(), - cpu: z.nullable(z.number()).optional(), - environmentName: z.nullable(z.string()).optional(), - ingressFqdn: z.nullable(z.string()).optional(), - maxReplicas: z.nullable(z.int()).optional(), - memory: z.nullable(z.string()).optional(), - minReplicas: z.nullable(z.int()).optional(), - provisioningState: z.nullable(z.string()).optional(), - revision: z.nullable(z.string()).optional(), - runningStatus: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus7$inboundSchema), - backend: z.literal("azureContainerApps"), -}); - -export function dataAzureContainerApps1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureContainerApps1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureContainerApps1' from JSON`, - ); -} - -/** @internal */ -export const Reason6$inboundSchema: z.ZodEnum = z.enum(Reason6); - -/** @internal */ -export const CollectionIssueSeverity6$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity6 -> = z.enum(CollectionIssueSeverity6); - -/** @internal */ -export const CollectionIssue6$inboundSchema: z.ZodType< - CollectionIssue6, - unknown -> = z.object({ - message: z.string(), - reason: Reason6$inboundSchema, - severity: CollectionIssueSeverity6$inboundSchema, - source: z.string(), -}); - -export function collectionIssue6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue6' from JSON`, - ); -} - -/** @internal */ -export const Health6$inboundSchema: z.ZodEnum = z.enum(Health6); - -/** @internal */ -export const Lifecycle6$inboundSchema: z.ZodEnum = z.enum( - Lifecycle6, -); - -/** @internal */ -export const DataStatus6$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue6$inboundSchema)), - health: Health6$inboundSchema, - lifecycle: Lifecycle6$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus6FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus6$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus6' from JSON`, - ); -} - -/** @internal */ -export const DataGcpCloudRun$inboundSchema: z.ZodType< - DataGcpCloudRun, - unknown -> = z.object({ - containerImage: z.nullable(z.string()).optional(), - cpuLimit: z.nullable(z.string()).optional(), - generation: z.nullable(z.int()).optional(), - latestCreatedRevision: z.nullable(z.string()).optional(), - latestReadyRevision: z.nullable(z.string()).optional(), - maxInstanceCount: z.nullable(z.int()).optional(), - memoryLimit: z.nullable(z.string()).optional(), - minInstanceCount: z.nullable(z.int()).optional(), - observedGeneration: z.nullable(z.int()).optional(), - region: z.nullable(z.string()).optional(), - service: z.string(), - status: z.lazy(() => DataStatus6$inboundSchema), - trafficCount: z.int(), - uri: z.nullable(z.string()).optional(), - urls: z.array(z.string()), - backend: z.literal("gcpCloudRun"), -}); - -export function dataGcpCloudRunFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcpCloudRun$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcpCloudRun' from JSON`, - ); -} - -/** @internal */ -export const Reason5$inboundSchema: z.ZodEnum = z.enum(Reason5); - -/** @internal */ -export const CollectionIssueSeverity5$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity5 -> = z.enum(CollectionIssueSeverity5); - -/** @internal */ -export const CollectionIssue5$inboundSchema: z.ZodType< - CollectionIssue5, - unknown -> = z.object({ - message: z.string(), - reason: Reason5$inboundSchema, - severity: CollectionIssueSeverity5$inboundSchema, - source: z.string(), -}); - -export function collectionIssue5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue5' from JSON`, - ); -} - -/** @internal */ -export const Health5$inboundSchema: z.ZodEnum = z.enum(Health5); - -/** @internal */ -export const Lifecycle5$inboundSchema: z.ZodEnum = z.enum( - Lifecycle5, -); - -/** @internal */ -export const DataStatus5$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue5$inboundSchema)), - health: Health5$inboundSchema, - lifecycle: Lifecycle5$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus5FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus5$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus5' from JSON`, - ); -} - -/** @internal */ -export const DataAwsLambda$inboundSchema: z.ZodType = z - .object({ - codeSha256: z.nullable(z.string()).optional(), - functionName: z.string(), - functionUrlAuthType: z.nullable(z.string()).optional(), - functionUrlCorsPresent: z.boolean(), - lastModified: z.nullable(z.string()).optional(), - lastUpdateStatus: z.nullable(z.string()).optional(), - lastUpdateStatusReason: z.nullable(z.string()).optional(), - lastUpdateStatusReasonCode: z.nullable(z.string()).optional(), - layerCount: z.int(), - memorySizeMb: z.nullable(z.int()).optional(), - packageType: z.nullable(z.string()).optional(), - revisionId: z.nullable(z.string()).optional(), - runtime: z.nullable(z.string()).optional(), - state: z.nullable(z.string()).optional(), - stateReason: z.nullable(z.string()).optional(), - stateReasonCode: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus5$inboundSchema), - timeoutSeconds: z.nullable(z.int()).optional(), - triggerCount: z.int(), - version: z.nullable(z.string()).optional(), - backend: z.literal("awsLambda"), - }); - -export function dataAwsLambdaFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAwsLambda$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAwsLambda' from JSON`, - ); -} - -/** @internal */ -export const DataUnion2$inboundSchema: z.ZodType = z.union( - [ - z.lazy(() => DataAwsLambda$inboundSchema), - z.lazy(() => DataGcpCloudRun$inboundSchema), - z.lazy(() => DataAzureContainerApps1$inboundSchema), - z.lazy(() => DataKubernetes1$inboundSchema), - z.lazy(() => DataLocal2$inboundSchema), - ], -); - -export function dataUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion2' from JSON`, - ); -} - -/** @internal */ -export const DataWorker$inboundSchema: z.ZodType = z - .object({ - data: z.union([ - z.lazy(() => DataAwsLambda$inboundSchema), - z.lazy(() => DataGcpCloudRun$inboundSchema), - z.lazy(() => DataAzureContainerApps1$inboundSchema), - z.lazy(() => DataKubernetes1$inboundSchema), - z.lazy(() => DataLocal2$inboundSchema), - ]), - resourceType: z.literal("worker"), - }); - -export function dataWorkerFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataWorker$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataWorker' from JSON`, - ); -} - -/** @internal */ -export const Reason4$inboundSchema: z.ZodEnum = z.enum(Reason4); - -/** @internal */ -export const CollectionIssueSeverity4$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity4 -> = z.enum(CollectionIssueSeverity4); - -/** @internal */ -export const CollectionIssue4$inboundSchema: z.ZodType< - CollectionIssue4, - unknown -> = z.object({ - message: z.string(), - reason: Reason4$inboundSchema, - severity: CollectionIssueSeverity4$inboundSchema, - source: z.string(), -}); - -export function collectionIssue4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue4' from JSON`, - ); -} - -/** @internal */ -export const Health4$inboundSchema: z.ZodEnum = z.enum(Health4); - -/** @internal */ -export const Lifecycle4$inboundSchema: z.ZodEnum = z.enum( - Lifecycle4, -); - -/** @internal */ -export const DataStatus4$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue4$inboundSchema)), - health: Health4$inboundSchema, - lifecycle: Lifecycle4$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus4' from JSON`, - ); -} - -/** @internal */ -export const DataLocal1$inboundSchema: z.ZodType = z - .object({ - isDirectory: z.nullable(z.boolean()).optional(), - modifiedAt: z.nullable( - z.iso.datetime({ offset: true }).transform(v => new Date(v)), - ).optional(), - path: z.string(), - pathExists: z.boolean(), - readonly: z.nullable(z.boolean()).optional(), - status: z.lazy(() => DataStatus4$inboundSchema), - backend: z.literal("local"), - }); - -export function dataLocal1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataLocal1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataLocal1' from JSON`, - ); -} - -/** @internal */ -export const Reason3$inboundSchema: z.ZodEnum = z.enum(Reason3); - -/** @internal */ -export const CollectionIssueSeverity3$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity3 -> = z.enum(CollectionIssueSeverity3); - -/** @internal */ -export const CollectionIssue3$inboundSchema: z.ZodType< - CollectionIssue3, - unknown -> = z.object({ - message: z.string(), - reason: Reason3$inboundSchema, - severity: CollectionIssueSeverity3$inboundSchema, - source: z.string(), -}); - -export function collectionIssue3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue3' from JSON`, - ); -} - -/** @internal */ -export const Health3$inboundSchema: z.ZodEnum = z.enum(Health3); - -/** @internal */ -export const Lifecycle3$inboundSchema: z.ZodEnum = z.enum( - Lifecycle3, -); - -/** @internal */ -export const DataStatus3$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue3$inboundSchema)), - health: Health3$inboundSchema, - lifecycle: Lifecycle3$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus3' from JSON`, - ); -} - -/** @internal */ -export const DataAzureBlob$inboundSchema: z.ZodType = z - .object({ - accessTier: z.nullable(z.string()).optional(), - accountKind: z.nullable(z.string()).optional(), - allowBlobPublicAccess: z.nullable(z.boolean()).optional(), - blobDeleteRetentionDays: z.nullable(z.int()).optional(), - blobDeleteRetentionEnabled: z.nullable(z.boolean()).optional(), - blobEncryptionEnabled: z.nullable(z.boolean()).optional(), - blobVersioningEnabled: z.nullable(z.boolean()).optional(), - changeFeedEnabled: z.nullable(z.boolean()).optional(), - changeFeedRetentionDays: z.nullable(z.int()).optional(), - containerDeleteRetentionDays: z.nullable(z.int()).optional(), - containerDeleteRetentionEnabled: z.nullable(z.boolean()).optional(), - containerPublicAccess: z.nullable(z.string()).optional(), - encryptionKeySource: z.nullable(z.string()).optional(), - fileEncryptionEnabled: z.nullable(z.boolean()).optional(), - location: z.nullable(z.string()).optional(), - name: z.string(), - primaryLocation: z.nullable(z.string()).optional(), - provisioningState: z.nullable(z.string()).optional(), - publicNetworkAccess: z.nullable(z.string()).optional(), - queueEncryptionEnabled: z.nullable(z.boolean()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - secondaryLocation: z.nullable(z.string()).optional(), - skuName: z.nullable(z.string()).optional(), - skuTier: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus3$inboundSchema), - statusOfPrimary: z.nullable(z.string()).optional(), - statusOfSecondary: z.nullable(z.string()).optional(), - storageAccountName: z.nullable(z.string()).optional(), - tableEncryptionEnabled: z.nullable(z.boolean()).optional(), - backend: z.literal("azureBlob"), - }); - -export function dataAzureBlobFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAzureBlob$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAzureBlob' from JSON`, - ); -} - -/** @internal */ -export const Reason2$inboundSchema: z.ZodEnum = z.enum(Reason2); - -/** @internal */ -export const CollectionIssueSeverity2$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity2 -> = z.enum(CollectionIssueSeverity2); - -/** @internal */ -export const CollectionIssue2$inboundSchema: z.ZodType< - CollectionIssue2, - unknown -> = z.object({ - message: z.string(), - reason: Reason2$inboundSchema, - severity: CollectionIssueSeverity2$inboundSchema, - source: z.string(), -}); - -export function collectionIssue2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue2' from JSON`, - ); -} - -/** @internal */ -export const Health2$inboundSchema: z.ZodEnum = z.enum(Health2); - -/** @internal */ -export const Lifecycle2$inboundSchema: z.ZodEnum = z.enum( - Lifecycle2, -); - -/** @internal */ -export const DataStatus2$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue2$inboundSchema)), - health: Health2$inboundSchema, - lifecycle: Lifecycle2$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus2' from JSON`, - ); -} - -/** @internal */ -export const DataGcpCloudStorage$inboundSchema: z.ZodType< - DataGcpCloudStorage, - unknown -> = z.object({ - bucketId: z.nullable(z.string()).optional(), - defaultKmsKeyName: z.nullable(z.string()).optional(), - encryptionConfigPresent: z.boolean(), - lifecyclePresent: z.boolean(), - lifecycleRuleCount: z.nullable(z.int()).optional(), - location: z.nullable(z.string()).optional(), - locationType: z.nullable(z.string()).optional(), - name: z.string(), - publicAccessPrevention: z.nullable(z.string()).optional(), - retentionPeriod: z.nullable(z.string()).optional(), - retentionPolicyEffectiveTime: z.nullable(z.string()).optional(), - retentionPolicyIsLocked: z.nullable(z.boolean()).optional(), - softDeleteEffectiveTime: z.nullable(z.string()).optional(), - softDeleteRetentionDurationSeconds: z.nullable(z.string()).optional(), - status: z.lazy(() => DataStatus2$inboundSchema), - storageClass: z.nullable(z.string()).optional(), - uniformBucketLevelAccessEnabled: z.nullable(z.boolean()).optional(), - uniformBucketLevelAccessLockedTime: z.nullable(z.string()).optional(), - versioningEnabled: z.nullable(z.boolean()).optional(), - backend: z.literal("gcpCloudStorage"), -}); - -export function dataGcpCloudStorageFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataGcpCloudStorage$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataGcpCloudStorage' from JSON`, - ); -} - -/** @internal */ -export const Reason1$inboundSchema: z.ZodEnum = z.enum(Reason1); - -/** @internal */ -export const CollectionIssueSeverity1$inboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity1 -> = z.enum(CollectionIssueSeverity1); - -/** @internal */ -export const CollectionIssue1$inboundSchema: z.ZodType< - CollectionIssue1, - unknown -> = z.object({ - message: z.string(), - reason: Reason1$inboundSchema, - severity: CollectionIssueSeverity1$inboundSchema, - source: z.string(), -}); - -export function collectionIssue1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => CollectionIssue1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'CollectionIssue1' from JSON`, - ); -} - -/** @internal */ -export const Health1$inboundSchema: z.ZodEnum = z.enum(Health1); - -/** @internal */ -export const Lifecycle1$inboundSchema: z.ZodEnum = z.enum( - Lifecycle1, -); - -/** @internal */ -export const DataStatus1$inboundSchema: z.ZodType = z - .object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue1$inboundSchema)), - health: Health1$inboundSchema, - lifecycle: Lifecycle1$inboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), - }); - -export function dataStatus1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStatus1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStatus1' from JSON`, - ); -} - -/** @internal */ -export const DataAwsS3$inboundSchema: z.ZodType = z.object({ - blockPublicAcls: z.nullable(z.boolean()).optional(), - blockPublicPolicy: z.nullable(z.boolean()).optional(), - bucketAclPresent: z.nullable(z.boolean()).optional(), - bucketLocation: z.nullable(z.string()).optional(), - bucketPolicyPresent: z.nullable(z.boolean()).optional(), - encryptionConfigPresent: z.boolean(), - encryptionEnabled: z.nullable(z.boolean()).optional(), - ignorePublicAcls: z.nullable(z.boolean()).optional(), - lifecyclePresent: z.boolean(), - lifecycleRuleCount: z.nullable(z.int()).optional(), - name: z.string(), - publicAccessBlockPresent: z.boolean(), - region: z.nullable(z.string()).optional(), - restrictPublicBuckets: z.nullable(z.boolean()).optional(), - status: z.lazy(() => DataStatus1$inboundSchema), - versioningEnabled: z.nullable(z.boolean()).optional(), - versioningStatus: z.nullable(z.string()).optional(), - backend: z.literal("awsS3"), -}); - -export function dataAwsS3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataAwsS3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataAwsS3' from JSON`, - ); -} - -/** @internal */ -export const DataUnion1$inboundSchema: z.ZodType = z.union( - [ - z.lazy(() => DataAwsS3$inboundSchema), - z.lazy(() => DataGcpCloudStorage$inboundSchema), - z.lazy(() => DataAzureBlob$inboundSchema), - z.lazy(() => DataLocal1$inboundSchema), - ], -); - -export function dataUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion1' from JSON`, - ); -} - -/** @internal */ -export const DataStorage$inboundSchema: z.ZodType = z - .object({ - data: z.union([ - z.lazy(() => DataAwsS3$inboundSchema), - z.lazy(() => DataGcpCloudStorage$inboundSchema), - z.lazy(() => DataAzureBlob$inboundSchema), - z.lazy(() => DataLocal1$inboundSchema), - ]), - resourceType: z.literal("storage"), - }); - -export function dataStorageFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataStorage$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataStorage' from JSON`, - ); -} - -/** @internal */ -export const DataUnion15$inboundSchema: z.ZodType = z - .union([ - z.lazy(() => DataStorage$inboundSchema), - z.lazy(() => DataWorker$inboundSchema), - z.lazy(() => DataContainer$inboundSchema), - z.lazy(() => DataDaemon$inboundSchema), - z.lazy(() => DataComputeCluster$inboundSchema), - z.lazy(() => DataKubernetesCluster$inboundSchema), - z.lazy(() => DataQueue$inboundSchema), - z.lazy(() => DataKv$inboundSchema), - z.lazy(() => DataVault$inboundSchema), - z.lazy(() => DataServiceAccount$inboundSchema), - z.lazy(() => DataNetwork$inboundSchema), - z.lazy(() => DataRemoteStackManagement$inboundSchema), - z.lazy(() => DataArtifactRegistry$inboundSchema), - z.lazy(() => DataBuild$inboundSchema), - z.lazy(() => DataServiceActivation$inboundSchema), - z.lazy(() => DataAzureResourceGroup$inboundSchema), - z.lazy(() => DataAzureStorageAccount$inboundSchema), - z.lazy(() => DataAzureContainerAppsEnvironment$inboundSchema), - z.lazy(() => DataAzureServiceBusNamespace$inboundSchema), - ]); - -export function dataUnion15FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DataUnion15$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DataUnion15' from JSON`, - ); -} - -/** @internal */ -export const Format$inboundSchema: z.ZodEnum = z.enum(Format); - -/** @internal */ -export const Raw$inboundSchema: z.ZodType = z.object({ - body: z.string(), - collectedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), - format: Format$inboundSchema, - source: z.string(), - truncated: z.boolean(), -}); - -export function rawFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Raw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Raw' from JSON`, - ); -} - -/** @internal */ -export const Heartbeat$inboundSchema: z.ZodType = z.object({ - backend: BackendEnum$inboundSchema, - controllerPlatform: ControllerPlatform$inboundSchema, - data: z.union([ - z.lazy(() => DataStorage$inboundSchema), - z.lazy(() => DataWorker$inboundSchema), - z.lazy(() => DataContainer$inboundSchema), - z.lazy(() => DataDaemon$inboundSchema), - z.lazy(() => DataComputeCluster$inboundSchema), - z.lazy(() => DataKubernetesCluster$inboundSchema), - z.lazy(() => DataQueue$inboundSchema), - z.lazy(() => DataKv$inboundSchema), - z.lazy(() => DataVault$inboundSchema), - z.lazy(() => DataServiceAccount$inboundSchema), - z.lazy(() => DataNetwork$inboundSchema), - z.lazy(() => DataRemoteStackManagement$inboundSchema), - z.lazy(() => DataArtifactRegistry$inboundSchema), - z.lazy(() => DataBuild$inboundSchema), - z.lazy(() => DataServiceActivation$inboundSchema), - z.lazy(() => DataAzureResourceGroup$inboundSchema), - z.lazy(() => DataAzureStorageAccount$inboundSchema), - z.lazy(() => DataAzureContainerAppsEnvironment$inboundSchema), - z.lazy(() => DataAzureServiceBusNamespace$inboundSchema), - ]), - deploymentId: z.nullable(z.string()).optional(), - observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), - raw: z.array(z.lazy(() => Raw$inboundSchema)), - resourceId: z.string(), - resourceType: z.string(), -}); - -export function heartbeatFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => Heartbeat$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'Heartbeat' from JSON`, - ); -} - -/** @internal */ -export const HeartbeatAvailable$inboundSchema: z.ZodType< - HeartbeatAvailable, - unknown -> = z.object({ - status: z.literal("available"), - deploymentId: z.string(), - resourceId: z.string(), - resourceType: z.string(), - backend: z.string(), - controllerPlatform: z.string(), - observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), - staleAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), - platformStale: z.boolean(), - heartbeat: z.lazy(() => Heartbeat$inboundSchema), - raw: z.array(z.nullable(z.any())), -}); - -export function heartbeatAvailableFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => HeartbeatAvailable$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'HeartbeatAvailable' from JSON`, - ); -} - -/** @internal */ -export const HeartbeatUnion$inboundSchema: z.ZodType = - z.union([ - z.lazy(() => HeartbeatAvailable$inboundSchema), - z.lazy(() => HeartbeatMissing$inboundSchema), - ]); - -export function heartbeatUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => HeartbeatUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'HeartbeatUnion' from JSON`, - ); -} - -/** @internal */ -export const GetResourceDeploymentDetailResponse$inboundSchema: z.ZodType< - GetResourceDeploymentDetailResponse, - unknown -> = z.object({ - deployment: z.lazy(() => GetResourceDeploymentDetailDeployment$inboundSchema), - heartbeat: z.union([ - z.lazy(() => HeartbeatAvailable$inboundSchema), - z.lazy(() => HeartbeatMissing$inboundSchema), - ]), -}); - -export function getResourceDeploymentDetailResponseFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - GetResourceDeploymentDetailResponse$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GetResourceDeploymentDetailResponse' from JSON`, - ); -} diff --git a/client-sdks/platform/typescript/src/models/operations/getresourcedeploymentdetailresponse.ts b/client-sdks/platform/typescript/src/models/operations/getresourcedeploymentdetailresponse.ts new file mode 100644 index 000000000..2c98a0f7f --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/getresourcedeploymentdetailresponse.ts @@ -0,0 +1,3278 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import { + DataKv, + DataKv$inboundSchema, + DataNetwork, + DataNetwork$inboundSchema, + DataQueue, + DataQueue$inboundSchema, + DataServiceAccount, + DataServiceAccount$inboundSchema, + DataVault, + DataVault$inboundSchema, +} from "./cpuunion10.js"; +import { + BackendEnum, + BackendEnum$inboundSchema, + ControllerPlatform, + ControllerPlatform$inboundSchema, + DataArtifactRegistry, + DataArtifactRegistry$inboundSchema, + DataAzureContainerAppsEnvironment, + DataAzureContainerAppsEnvironment$inboundSchema, + DataAzureResourceGroup, + DataAzureResourceGroup$inboundSchema, + DataAzureServiceBusNamespace, + DataAzureServiceBusNamespace$inboundSchema, + DataAzureStorageAccount, + DataAzureStorageAccount$inboundSchema, + DataBuild, + DataBuild$inboundSchema, + DataRemoteStackManagement, + DataRemoteStackManagement$inboundSchema, + DataServiceActivation, + DataServiceActivation$inboundSchema, + GetResourceDeploymentDetailDeployment, + GetResourceDeploymentDetailDeployment$inboundSchema, + HeartbeatMissing, + HeartbeatMissing$inboundSchema, +} from "./health42.js"; +import { + CpuUnion3, + CpuUnion3$inboundSchema, + DataDaemon, + DataDaemon$inboundSchema, + DataKubernetes2, + DataKubernetes2$inboundSchema, + DataLocal3, + DataLocal3$inboundSchema, + Event3, + Event3$inboundSchema, + Memory3, + Memory3$inboundSchema, +} from "./memory3.js"; +import { + DataComputeCluster, + DataComputeCluster$inboundSchema, + DataKubernetesCluster, + DataKubernetesCluster$inboundSchema, +} from "./source7.js"; + +export type MemoryUnion3 = Memory3 | any; + +export const CpuReplicaUnitUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuReplicaUnitUnit = ClosedEnum; + +export type CpuReplicaUnit = { + unit: CpuReplicaUnitUnit; + value: number; +}; + +export type ReplicaUnitCpuUnion = CpuReplicaUnit | any; + +export const MemoryReplicaUnitUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryReplicaUnitUnit = ClosedEnum; + +export type MemoryReplicaUnit = { + unit: MemoryReplicaUnitUnit; + value: number; +}; + +export type ReplicaUnitMemoryUnion = MemoryReplicaUnit | any; + +export type ReplicaUnit = { + cpu?: CpuReplicaUnit | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryReplicaUnit | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas2 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const SchedulingMode = { + Replicated: "replicated", + Stateful: "stateful", + Daemon: "daemon", +} as const; +export type SchedulingMode = ClosedEnum; + +export const Reason10 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason10 = ClosedEnum; + +export const CollectionIssueSeverity10 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity10 = ClosedEnum< + typeof CollectionIssueSeverity10 +>; + +export type CollectionIssue10 = { + message: string; + reason: Reason10; + severity: CollectionIssueSeverity10; + source: string; +}; + +export const Health10 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health10 = ClosedEnum; + +export const Lifecycle10 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle10 = ClosedEnum; + +export type DataStatus10 = { + collectionIssues: Array; + health: Health10; + lifecycle: Lifecycle10; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataHorizonPlatform = { + attentionCount: number; + containerId: string; + cpu?: CpuUnion3 | null | undefined; + events: Array; + image?: string | null | undefined; + memory?: Memory3 | any | null | undefined; + replicaUnits: Array; + replicas: Replicas2; + schedulingMode: SchedulingMode; + status: DataStatus10; + backend: "horizonPlatform"; +}; + +export type DataUnion3 = DataHorizonPlatform | DataKubernetes2 | DataLocal3; + +export type DataContainer = { + data: DataHorizonPlatform | DataKubernetes2 | DataLocal3; + resourceType: "container"; +}; + +export const CpuUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit2 = ClosedEnum; + +export type Cpu2 = { + unit: CpuUnit2; + value: number; +}; + +export type CpuUnion2 = Cpu2 | any; + +export const EventSeverity1 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type EventSeverity1 = ClosedEnum; + +export type Subject1 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +export type SubjectUnion1 = Subject1 | any; + +export type Event2 = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: EventSeverity1; + subject?: Subject1 | any | null | undefined; + timestamp: Date; +}; + +export const MemoryUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit2 = ClosedEnum; + +export type Memory2 = { + unit: MemoryUnit2; + value: number; +}; + +export type MemoryUnion2 = Memory2 | any; + +export const ProcessCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ProcessCpuUnit = ClosedEnum; + +export type ProcessCpu = { + unit: ProcessCpuUnit; + value: number; +}; + +export type ProcessCpuUnion = ProcessCpu | any; + +export const ProcessKind = { + Container: "container", + Process: "process", + Daemon: "daemon", +} as const; +export type ProcessKind = ClosedEnum; + +export const ProcessMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ProcessMemoryUnit = ClosedEnum; + +export type ProcessMemory = { + unit: ProcessMemoryUnit; + value: number; +}; + +export type ProcessMemoryUnion = ProcessMemory | any; + +export type Process = { + cpu?: ProcessCpu | any | null | undefined; + kind: ProcessKind; + memory?: ProcessMemory | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +export type ProcessUnion = Process | any; + +export const Reason9 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason9 = ClosedEnum; + +export const CollectionIssueSeverity9 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity9 = ClosedEnum< + typeof CollectionIssueSeverity9 +>; + +export type CollectionIssue9 = { + message: string; + reason: Reason9; + severity: CollectionIssueSeverity9; + source: string; +}; + +export const Health9 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health9 = ClosedEnum; + +export const Lifecycle9 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle9 = ClosedEnum; + +export type DataStatus9 = { + collectionIssues: Array; + health: Health9; + lifecycle: Lifecycle9; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal2 = { + commandSupported: boolean; + cpu?: Cpu2 | any | null | undefined; + events: Array; + imagePathPresent: boolean; + memory?: Memory2 | any | null | undefined; + pid?: number | null | undefined; + process?: Process | any | null | undefined; + readinessProbeOk?: boolean | null | undefined; + status: DataStatus9; + triggerCount: number; + backend: "local"; +}; + +export const CpuUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit1 = ClosedEnum; + +export type Cpu1 = { + unit: CpuUnit1; + value: number; +}; + +export type CpuUnion1 = Cpu1 | any; + +export type InvolvedObject1 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion1 = InvolvedObject1 | any; + +export type Source1 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion1 = Source1 | any; + +export type Event1 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject1 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: Source1 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit1 = ClosedEnum; + +export type Memory1 = { + unit: MemoryUnit1; + value: number; +}; + +export type MemoryUnion1 = Memory1 | any; + +export const CpuPodUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuPodUnit1 = ClosedEnum; + +export type CpuPod1 = { + unit: CpuPodUnit1; + value: number; +}; + +export type PodCpuUnion1 = CpuPod1 | any; + +export const MemoryPodUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryPodUnit1 = ClosedEnum; + +export type MemoryPod1 = { + unit: MemoryPodUnit1; + value: number; +}; + +export type PodMemoryUnion1 = MemoryPod1 | any; + +export type OwnerReference1 = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +export type Pod1 = { + cpu?: CpuPod1 | any | null | undefined; + memory?: MemoryPod1 | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas1 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const Reason8 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason8 = ClosedEnum; + +export const CollectionIssueSeverity8 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity8 = ClosedEnum< + typeof CollectionIssueSeverity8 +>; + +export type CollectionIssue8 = { + message: string; + reason: Reason8; + severity: CollectionIssueSeverity8; + source: string; +}; + +export const Health8 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health8 = ClosedEnum; + +export const Lifecycle8 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle8 = ClosedEnum; + +export type DataStatus8 = { + collectionIssues: Array; + health: Health8; + lifecycle: Lifecycle8; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type WorkloadCondition1 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export type Workload1 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion1 = Workload1 | any; + +export const WorkloadKind1 = { + Deployment: "deployment", + StatefulSet: "statefulSet", + DaemonSet: "daemonSet", + ReplicaSet: "replicaSet", + Pod: "pod", +} as const; +export type WorkloadKind1 = ClosedEnum; + +export type DataKubernetes1 = { + cpu?: Cpu1 | any | null | undefined; + events: Array; + memory?: Memory1 | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas1; + restarts?: number | null | undefined; + status: DataStatus8; + triggerCount: number; + workload?: Workload1 | any | null | undefined; + workloadKind: WorkloadKind1; + backend: "kubernetes"; +}; + +export const Reason7 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason7 = ClosedEnum; + +export const CollectionIssueSeverity7 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity7 = ClosedEnum< + typeof CollectionIssueSeverity7 +>; + +export type CollectionIssue7 = { + message: string; + reason: Reason7; + severity: CollectionIssueSeverity7; + source: string; +}; + +export const Health7 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health7 = ClosedEnum; + +export const Lifecycle7 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle7 = ClosedEnum; + +export type DataStatus7 = { + collectionIssues: Array; + health: Health7; + lifecycle: Lifecycle7; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureContainerApps1 = { + appName: string; + cpu?: number | null | undefined; + environmentName?: string | null | undefined; + ingressFqdn?: string | null | undefined; + maxReplicas?: number | null | undefined; + memory?: string | null | undefined; + minReplicas?: number | null | undefined; + provisioningState?: string | null | undefined; + revision?: string | null | undefined; + runningStatus?: string | null | undefined; + status: DataStatus7; + backend: "azureContainerApps"; +}; + +export const Reason6 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason6 = ClosedEnum; + +export const CollectionIssueSeverity6 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity6 = ClosedEnum< + typeof CollectionIssueSeverity6 +>; + +export type CollectionIssue6 = { + message: string; + reason: Reason6; + severity: CollectionIssueSeverity6; + source: string; +}; + +export const Health6 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health6 = ClosedEnum; + +export const Lifecycle6 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle6 = ClosedEnum; + +export type DataStatus6 = { + collectionIssues: Array; + health: Health6; + lifecycle: Lifecycle6; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpCloudRun = { + containerImage?: string | null | undefined; + cpuLimit?: string | null | undefined; + generation?: number | null | undefined; + latestCreatedRevision?: string | null | undefined; + latestReadyRevision?: string | null | undefined; + maxInstanceCount?: number | null | undefined; + memoryLimit?: string | null | undefined; + minInstanceCount?: number | null | undefined; + observedGeneration?: number | null | undefined; + region?: string | null | undefined; + service: string; + status: DataStatus6; + trafficCount: number; + uri?: string | null | undefined; + urls: Array; + backend: "gcpCloudRun"; +}; + +export const Reason5 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason5 = ClosedEnum; + +export const CollectionIssueSeverity5 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity5 = ClosedEnum< + typeof CollectionIssueSeverity5 +>; + +export type CollectionIssue5 = { + message: string; + reason: Reason5; + severity: CollectionIssueSeverity5; + source: string; +}; + +export const Health5 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health5 = ClosedEnum; + +export const Lifecycle5 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle5 = ClosedEnum; + +export type DataStatus5 = { + collectionIssues: Array; + health: Health5; + lifecycle: Lifecycle5; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsLambda = { + codeSha256?: string | null | undefined; + functionName: string; + functionUrlAuthType?: string | null | undefined; + functionUrlCorsPresent: boolean; + lastModified?: string | null | undefined; + lastUpdateStatus?: string | null | undefined; + lastUpdateStatusReason?: string | null | undefined; + lastUpdateStatusReasonCode?: string | null | undefined; + layerCount: number; + memorySizeMb?: number | null | undefined; + packageType?: string | null | undefined; + revisionId?: string | null | undefined; + runtime?: string | null | undefined; + state?: string | null | undefined; + stateReason?: string | null | undefined; + stateReasonCode?: string | null | undefined; + status: DataStatus5; + timeoutSeconds?: number | null | undefined; + triggerCount: number; + version?: string | null | undefined; + backend: "awsLambda"; +}; + +export type DataUnion2 = + | DataAwsLambda + | DataGcpCloudRun + | DataAzureContainerApps1 + | DataKubernetes1 + | DataLocal2; + +export type DataWorker = { + data: + | DataAwsLambda + | DataGcpCloudRun + | DataAzureContainerApps1 + | DataKubernetes1 + | DataLocal2; + resourceType: "worker"; +}; + +export const Reason4 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason4 = ClosedEnum; + +export const CollectionIssueSeverity4 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity4 = ClosedEnum< + typeof CollectionIssueSeverity4 +>; + +export type CollectionIssue4 = { + message: string; + reason: Reason4; + severity: CollectionIssueSeverity4; + source: string; +}; + +export const Health4 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health4 = ClosedEnum; + +export const Lifecycle4 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle4 = ClosedEnum; + +export type DataStatus4 = { + collectionIssues: Array; + health: Health4; + lifecycle: Lifecycle4; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal1 = { + isDirectory?: boolean | null | undefined; + modifiedAt?: Date | null | undefined; + path: string; + pathExists: boolean; + readonly?: boolean | null | undefined; + status: DataStatus4; + backend: "local"; +}; + +export const Reason3 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason3 = ClosedEnum; + +export const CollectionIssueSeverity3 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity3 = ClosedEnum< + typeof CollectionIssueSeverity3 +>; + +export type CollectionIssue3 = { + message: string; + reason: Reason3; + severity: CollectionIssueSeverity3; + source: string; +}; + +export const Health3 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health3 = ClosedEnum; + +export const Lifecycle3 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle3 = ClosedEnum; + +export type DataStatus3 = { + collectionIssues: Array; + health: Health3; + lifecycle: Lifecycle3; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureBlob = { + accessTier?: string | null | undefined; + accountKind?: string | null | undefined; + allowBlobPublicAccess?: boolean | null | undefined; + blobDeleteRetentionDays?: number | null | undefined; + blobDeleteRetentionEnabled?: boolean | null | undefined; + blobEncryptionEnabled?: boolean | null | undefined; + blobVersioningEnabled?: boolean | null | undefined; + changeFeedEnabled?: boolean | null | undefined; + changeFeedRetentionDays?: number | null | undefined; + containerDeleteRetentionDays?: number | null | undefined; + containerDeleteRetentionEnabled?: boolean | null | undefined; + containerPublicAccess?: string | null | undefined; + encryptionKeySource?: string | null | undefined; + fileEncryptionEnabled?: boolean | null | undefined; + location?: string | null | undefined; + name: string; + primaryLocation?: string | null | undefined; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + queueEncryptionEnabled?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + secondaryLocation?: string | null | undefined; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: DataStatus3; + statusOfPrimary?: string | null | undefined; + statusOfSecondary?: string | null | undefined; + storageAccountName?: string | null | undefined; + tableEncryptionEnabled?: boolean | null | undefined; + backend: "azureBlob"; +}; + +export const Reason2 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason2 = ClosedEnum; + +export const CollectionIssueSeverity2 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity2 = ClosedEnum< + typeof CollectionIssueSeverity2 +>; + +export type CollectionIssue2 = { + message: string; + reason: Reason2; + severity: CollectionIssueSeverity2; + source: string; +}; + +export const Health2 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health2 = ClosedEnum; + +export const Lifecycle2 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle2 = ClosedEnum; + +export type DataStatus2 = { + collectionIssues: Array; + health: Health2; + lifecycle: Lifecycle2; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpCloudStorage = { + bucketId?: string | null | undefined; + defaultKmsKeyName?: string | null | undefined; + encryptionConfigPresent: boolean; + lifecyclePresent: boolean; + lifecycleRuleCount?: number | null | undefined; + location?: string | null | undefined; + locationType?: string | null | undefined; + name: string; + publicAccessPrevention?: string | null | undefined; + retentionPeriod?: string | null | undefined; + retentionPolicyEffectiveTime?: string | null | undefined; + retentionPolicyIsLocked?: boolean | null | undefined; + softDeleteEffectiveTime?: string | null | undefined; + softDeleteRetentionDurationSeconds?: string | null | undefined; + status: DataStatus2; + storageClass?: string | null | undefined; + uniformBucketLevelAccessEnabled?: boolean | null | undefined; + uniformBucketLevelAccessLockedTime?: string | null | undefined; + versioningEnabled?: boolean | null | undefined; + backend: "gcpCloudStorage"; +}; + +export const Reason1 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason1 = ClosedEnum; + +export const CollectionIssueSeverity1 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity1 = ClosedEnum< + typeof CollectionIssueSeverity1 +>; + +export type CollectionIssue1 = { + message: string; + reason: Reason1; + severity: CollectionIssueSeverity1; + source: string; +}; + +export const Health1 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health1 = ClosedEnum; + +export const Lifecycle1 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle1 = ClosedEnum; + +export type DataStatus1 = { + collectionIssues: Array; + health: Health1; + lifecycle: Lifecycle1; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsS3 = { + blockPublicAcls?: boolean | null | undefined; + blockPublicPolicy?: boolean | null | undefined; + bucketAclPresent?: boolean | null | undefined; + bucketLocation?: string | null | undefined; + bucketPolicyPresent?: boolean | null | undefined; + encryptionConfigPresent: boolean; + encryptionEnabled?: boolean | null | undefined; + ignorePublicAcls?: boolean | null | undefined; + lifecyclePresent: boolean; + lifecycleRuleCount?: number | null | undefined; + name: string; + publicAccessBlockPresent: boolean; + region?: string | null | undefined; + restrictPublicBuckets?: boolean | null | undefined; + status: DataStatus1; + versioningEnabled?: boolean | null | undefined; + versioningStatus?: string | null | undefined; + backend: "awsS3"; +}; + +export type DataUnion1 = + | DataAwsS3 + | DataGcpCloudStorage + | DataAzureBlob + | DataLocal1; + +export type DataStorage = { + data: DataAwsS3 | DataGcpCloudStorage | DataAzureBlob | DataLocal1; + resourceType: "storage"; +}; + +export type DataUnion15 = + | DataStorage + | DataWorker + | DataContainer + | DataDaemon + | DataComputeCluster + | DataKubernetesCluster + | DataQueue + | DataKv + | DataVault + | DataServiceAccount + | DataNetwork + | DataRemoteStackManagement + | DataArtifactRegistry + | DataBuild + | DataServiceActivation + | DataAzureResourceGroup + | DataAzureStorageAccount + | DataAzureContainerAppsEnvironment + | DataAzureServiceBusNamespace; + +export const Format = { + Json: "json", + Yaml: "yaml", + Text: "text", +} as const; +export type Format = ClosedEnum; + +export type Raw = { + body: string; + collectedAt: Date; + format: Format; + source: string; + truncated: boolean; +}; + +export type Heartbeat = { + backend: BackendEnum; + /** + * Represents the target cloud platform. + */ + controllerPlatform: ControllerPlatform; + data: + | DataStorage + | DataWorker + | DataContainer + | DataDaemon + | DataComputeCluster + | DataKubernetesCluster + | DataQueue + | DataKv + | DataVault + | DataServiceAccount + | DataNetwork + | DataRemoteStackManagement + | DataArtifactRegistry + | DataBuild + | DataServiceActivation + | DataAzureResourceGroup + | DataAzureStorageAccount + | DataAzureContainerAppsEnvironment + | DataAzureServiceBusNamespace; + deploymentId?: string | null | undefined; + observedAt: Date; + raw: Array; + resourceId: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + resourceType: string; +}; + +export type HeartbeatAvailable = { + status: "available"; + deploymentId: string; + resourceId: string; + resourceType: string; + backend: string; + controllerPlatform: string; + observedAt: Date; + staleAt: Date; + platformStale: boolean; + heartbeat: Heartbeat; + raw: Array; +}; + +export type HeartbeatUnion = HeartbeatAvailable | HeartbeatMissing; + +/** + * Latest heartbeat detail for one compute resource deployment. + */ +export type GetResourceDeploymentDetailResponse = { + deployment: GetResourceDeploymentDetailDeployment; + heartbeat: HeartbeatAvailable | HeartbeatMissing; +}; + +/** @internal */ +export const MemoryUnion3$inboundSchema: z.ZodType = z + .union([Memory3$inboundSchema, z.any()]); + +export function memoryUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryUnion3' from JSON`, + ); +} + +/** @internal */ +export const CpuReplicaUnitUnit$inboundSchema: z.ZodEnum< + typeof CpuReplicaUnitUnit +> = z.enum(CpuReplicaUnitUnit); + +/** @internal */ +export const CpuReplicaUnit$inboundSchema: z.ZodType = + z.object({ + unit: CpuReplicaUnitUnit$inboundSchema, + value: z.number(), + }); + +export function cpuReplicaUnitFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuReplicaUnit$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuReplicaUnit' from JSON`, + ); +} + +/** @internal */ +export const ReplicaUnitCpuUnion$inboundSchema: z.ZodType< + ReplicaUnitCpuUnion, + unknown +> = z.union([z.lazy(() => CpuReplicaUnit$inboundSchema), z.any()]); + +export function replicaUnitCpuUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReplicaUnitCpuUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReplicaUnitCpuUnion' from JSON`, + ); +} + +/** @internal */ +export const MemoryReplicaUnitUnit$inboundSchema: z.ZodEnum< + typeof MemoryReplicaUnitUnit +> = z.enum(MemoryReplicaUnitUnit); + +/** @internal */ +export const MemoryReplicaUnit$inboundSchema: z.ZodType< + MemoryReplicaUnit, + unknown +> = z.object({ + unit: MemoryReplicaUnitUnit$inboundSchema, + value: z.number(), +}); + +export function memoryReplicaUnitFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryReplicaUnit$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryReplicaUnit' from JSON`, + ); +} + +/** @internal */ +export const ReplicaUnitMemoryUnion$inboundSchema: z.ZodType< + ReplicaUnitMemoryUnion, + unknown +> = z.union([z.lazy(() => MemoryReplicaUnit$inboundSchema), z.any()]); + +export function replicaUnitMemoryUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReplicaUnitMemoryUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReplicaUnitMemoryUnion' from JSON`, + ); +} + +/** @internal */ +export const ReplicaUnit$inboundSchema: z.ZodType = z + .object({ + cpu: z.nullable( + z.union([z.lazy(() => CpuReplicaUnit$inboundSchema), z.any()]), + ).optional(), + ip: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryReplicaUnit$inboundSchema), z.any()]), + ).optional(), + message: z.nullable(z.string()).optional(), + metricsHealthy: z.nullable(z.boolean()).optional(), + metricsLastUpdated: z.nullable(z.string()).optional(), + metricsStatus: z.nullable(z.string()).optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + phase: z.nullable(z.string()).optional(), + ready: z.boolean(), + reason: z.nullable(z.string()).optional(), + replicaId: z.string(), + restartCount: z.nullable(z.int()).optional(), + status: z.nullable(z.string()).optional(), + terminatedReason: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), + }); + +export function replicaUnitFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReplicaUnit$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReplicaUnit' from JSON`, + ); +} + +/** @internal */ +export const Replicas2$inboundSchema: z.ZodType = z.object({ + available: z.nullable(z.int()).optional(), + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + misscheduled: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + updated: z.nullable(z.int()).optional(), +}); + +export function replicas2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Replicas2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Replicas2' from JSON`, + ); +} + +/** @internal */ +export const SchedulingMode$inboundSchema: z.ZodEnum = z + .enum(SchedulingMode); + +/** @internal */ +export const Reason10$inboundSchema: z.ZodEnum = z.enum( + Reason10, +); + +/** @internal */ +export const CollectionIssueSeverity10$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity10 +> = z.enum(CollectionIssueSeverity10); + +/** @internal */ +export const CollectionIssue10$inboundSchema: z.ZodType< + CollectionIssue10, + unknown +> = z.object({ + message: z.string(), + reason: Reason10$inboundSchema, + severity: CollectionIssueSeverity10$inboundSchema, + source: z.string(), +}); + +export function collectionIssue10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue10' from JSON`, + ); +} + +/** @internal */ +export const Health10$inboundSchema: z.ZodEnum = z.enum( + Health10, +); + +/** @internal */ +export const Lifecycle10$inboundSchema: z.ZodEnum = z.enum( + Lifecycle10, +); + +/** @internal */ +export const DataStatus10$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue10$inboundSchema)), + health: Health10$inboundSchema, + lifecycle: Lifecycle10$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus10' from JSON`, + ); +} + +/** @internal */ +export const DataHorizonPlatform$inboundSchema: z.ZodType< + DataHorizonPlatform, + unknown +> = z.object({ + attentionCount: z.int(), + containerId: z.string(), + cpu: z.nullable(CpuUnion3$inboundSchema).optional(), + events: z.array(Event3$inboundSchema), + image: z.nullable(z.string()).optional(), + memory: z.nullable(z.union([Memory3$inboundSchema, z.any()])).optional(), + replicaUnits: z.array(z.lazy(() => ReplicaUnit$inboundSchema)), + replicas: z.lazy(() => Replicas2$inboundSchema), + schedulingMode: SchedulingMode$inboundSchema, + status: z.lazy(() => DataStatus10$inboundSchema), + backend: z.literal("horizonPlatform"), +}); + +export function dataHorizonPlatformFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataHorizonPlatform$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataHorizonPlatform' from JSON`, + ); +} + +/** @internal */ +export const DataUnion3$inboundSchema: z.ZodType = z.union( + [ + z.lazy(() => DataHorizonPlatform$inboundSchema), + DataKubernetes2$inboundSchema, + DataLocal3$inboundSchema, + ], +); + +export function dataUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion3' from JSON`, + ); +} + +/** @internal */ +export const DataContainer$inboundSchema: z.ZodType = z + .object({ + data: z.union([ + z.lazy(() => DataHorizonPlatform$inboundSchema), + DataKubernetes2$inboundSchema, + DataLocal3$inboundSchema, + ]), + resourceType: z.literal("container"), + }); + +export function dataContainerFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataContainer$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataContainer' from JSON`, + ); +} + +/** @internal */ +export const CpuUnit2$inboundSchema: z.ZodEnum = z.enum( + CpuUnit2, +); + +/** @internal */ +export const Cpu2$inboundSchema: z.ZodType = z.object({ + unit: CpuUnit2$inboundSchema, + value: z.number(), +}); + +export function cpu2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Cpu2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Cpu2' from JSON`, + ); +} + +/** @internal */ +export const CpuUnion2$inboundSchema: z.ZodType = z.union([ + z.lazy(() => Cpu2$inboundSchema), + z.any(), +]); + +export function cpuUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuUnion2' from JSON`, + ); +} + +/** @internal */ +export const EventSeverity1$inboundSchema: z.ZodEnum = z + .enum(EventSeverity1); + +/** @internal */ +export const Subject1$inboundSchema: z.ZodType = z.object({ + id: z.nullable(z.string()).optional(), + kind: z.string(), + name: z.nullable(z.string()).optional(), +}); + +export function subject1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Subject1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Subject1' from JSON`, + ); +} + +/** @internal */ +export const SubjectUnion1$inboundSchema: z.ZodType = z + .union([z.lazy(() => Subject1$inboundSchema), z.any()]); + +export function subjectUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SubjectUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SubjectUnion1' from JSON`, + ); +} + +/** @internal */ +export const Event2$inboundSchema: z.ZodType = z.object({ + kind: z.string(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + severity: EventSeverity1$inboundSchema, + subject: z.nullable(z.union([z.lazy(() => Subject1$inboundSchema), z.any()])) + .optional(), + timestamp: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function event2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event2' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnit2$inboundSchema: z.ZodEnum = z.enum( + MemoryUnit2, +); + +/** @internal */ +export const Memory2$inboundSchema: z.ZodType = z.object({ + unit: MemoryUnit2$inboundSchema, + value: z.number(), +}); + +export function memory2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Memory2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Memory2' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnion2$inboundSchema: z.ZodType = z + .union([z.lazy(() => Memory2$inboundSchema), z.any()]); + +export function memoryUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryUnion2' from JSON`, + ); +} + +/** @internal */ +export const ProcessCpuUnit$inboundSchema: z.ZodEnum = z + .enum(ProcessCpuUnit); + +/** @internal */ +export const ProcessCpu$inboundSchema: z.ZodType = z + .object({ + unit: ProcessCpuUnit$inboundSchema, + value: z.number(), + }); + +export function processCpuFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProcessCpu$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProcessCpu' from JSON`, + ); +} + +/** @internal */ +export const ProcessCpuUnion$inboundSchema: z.ZodType< + ProcessCpuUnion, + unknown +> = z.union([z.lazy(() => ProcessCpu$inboundSchema), z.any()]); + +export function processCpuUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProcessCpuUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProcessCpuUnion' from JSON`, + ); +} + +/** @internal */ +export const ProcessKind$inboundSchema: z.ZodEnum = z.enum( + ProcessKind, +); + +/** @internal */ +export const ProcessMemoryUnit$inboundSchema: z.ZodEnum< + typeof ProcessMemoryUnit +> = z.enum(ProcessMemoryUnit); + +/** @internal */ +export const ProcessMemory$inboundSchema: z.ZodType = z + .object({ + unit: ProcessMemoryUnit$inboundSchema, + value: z.number(), + }); + +export function processMemoryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProcessMemory$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProcessMemory' from JSON`, + ); +} + +/** @internal */ +export const ProcessMemoryUnion$inboundSchema: z.ZodType< + ProcessMemoryUnion, + unknown +> = z.union([z.lazy(() => ProcessMemory$inboundSchema), z.any()]); + +export function processMemoryUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProcessMemoryUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProcessMemoryUnion' from JSON`, + ); +} + +/** @internal */ +export const Process$inboundSchema: z.ZodType = z.object({ + cpu: z.nullable(z.union([z.lazy(() => ProcessCpu$inboundSchema), z.any()])) + .optional(), + kind: ProcessKind$inboundSchema, + memory: z.nullable( + z.union([z.lazy(() => ProcessMemory$inboundSchema), z.any()]), + ).optional(), + name: z.string(), + phase: z.nullable(z.string()).optional(), + pid: z.nullable(z.int()).optional(), + ready: z.boolean(), + restartCount: z.nullable(z.int()).optional(), + unitId: z.string(), +}); + +export function processFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Process$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Process' from JSON`, + ); +} + +/** @internal */ +export const ProcessUnion$inboundSchema: z.ZodType = z + .union([z.lazy(() => Process$inboundSchema), z.any()]); + +export function processUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProcessUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProcessUnion' from JSON`, + ); +} + +/** @internal */ +export const Reason9$inboundSchema: z.ZodEnum = z.enum(Reason9); + +/** @internal */ +export const CollectionIssueSeverity9$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity9 +> = z.enum(CollectionIssueSeverity9); + +/** @internal */ +export const CollectionIssue9$inboundSchema: z.ZodType< + CollectionIssue9, + unknown +> = z.object({ + message: z.string(), + reason: Reason9$inboundSchema, + severity: CollectionIssueSeverity9$inboundSchema, + source: z.string(), +}); + +export function collectionIssue9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue9' from JSON`, + ); +} + +/** @internal */ +export const Health9$inboundSchema: z.ZodEnum = z.enum(Health9); + +/** @internal */ +export const Lifecycle9$inboundSchema: z.ZodEnum = z.enum( + Lifecycle9, +); + +/** @internal */ +export const DataStatus9$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue9$inboundSchema)), + health: Health9$inboundSchema, + lifecycle: Lifecycle9$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus9' from JSON`, + ); +} + +/** @internal */ +export const DataLocal2$inboundSchema: z.ZodType = z + .object({ + commandSupported: z.boolean(), + cpu: z.nullable(z.union([z.lazy(() => Cpu2$inboundSchema), z.any()])) + .optional(), + events: z.array(z.lazy(() => Event2$inboundSchema)), + imagePathPresent: z.boolean(), + memory: z.nullable(z.union([z.lazy(() => Memory2$inboundSchema), z.any()])) + .optional(), + pid: z.nullable(z.int()).optional(), + process: z.nullable(z.union([z.lazy(() => Process$inboundSchema), z.any()])) + .optional(), + readinessProbeOk: z.nullable(z.boolean()).optional(), + status: z.lazy(() => DataStatus9$inboundSchema), + triggerCount: z.int(), + backend: z.literal("local"), + }); + +export function dataLocal2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataLocal2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataLocal2' from JSON`, + ); +} + +/** @internal */ +export const CpuUnit1$inboundSchema: z.ZodEnum = z.enum( + CpuUnit1, +); + +/** @internal */ +export const Cpu1$inboundSchema: z.ZodType = z.object({ + unit: CpuUnit1$inboundSchema, + value: z.number(), +}); + +export function cpu1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Cpu1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Cpu1' from JSON`, + ); +} + +/** @internal */ +export const CpuUnion1$inboundSchema: z.ZodType = z.union([ + z.lazy(() => Cpu1$inboundSchema), + z.any(), +]); + +export function cpuUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuUnion1' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObject1$inboundSchema: z.ZodType< + InvolvedObject1, + unknown +> = z.object({ + apiVersion: z.nullable(z.string()).optional(), + fieldPath: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + namespace: z.nullable(z.string()).optional(), + resourceVersion: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), +}); + +export function involvedObject1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObject1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObject1' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObjectUnion1$inboundSchema: z.ZodType< + InvolvedObjectUnion1, + unknown +> = z.union([z.lazy(() => InvolvedObject1$inboundSchema), z.any()]); + +export function involvedObjectUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObjectUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObjectUnion1' from JSON`, + ); +} + +/** @internal */ +export const Source1$inboundSchema: z.ZodType = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function source1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Source1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Source1' from JSON`, + ); +} + +/** @internal */ +export const SourceUnion1$inboundSchema: z.ZodType = z + .union([z.lazy(() => Source1$inboundSchema), z.any()]); + +export function sourceUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SourceUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceUnion1' from JSON`, + ); +} + +/** @internal */ +export const Event1$inboundSchema: z.ZodType = z.object({ + count: z.nullable(z.int()).optional(), + eventTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + firstTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject1$inboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable(z.union([z.lazy(() => Source1$inboundSchema), z.any()])) + .optional(), + type: z.nullable(z.string()).optional(), +}); + +export function event1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event1' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnit1$inboundSchema: z.ZodEnum = z.enum( + MemoryUnit1, +); + +/** @internal */ +export const Memory1$inboundSchema: z.ZodType = z.object({ + unit: MemoryUnit1$inboundSchema, + value: z.number(), +}); + +export function memory1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Memory1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Memory1' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnion1$inboundSchema: z.ZodType = z + .union([z.lazy(() => Memory1$inboundSchema), z.any()]); + +export function memoryUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryUnion1' from JSON`, + ); +} + +/** @internal */ +export const CpuPodUnit1$inboundSchema: z.ZodEnum = z.enum( + CpuPodUnit1, +); + +/** @internal */ +export const CpuPod1$inboundSchema: z.ZodType = z.object({ + unit: CpuPodUnit1$inboundSchema, + value: z.number(), +}); + +export function cpuPod1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuPod1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuPod1' from JSON`, + ); +} + +/** @internal */ +export const PodCpuUnion1$inboundSchema: z.ZodType = z + .union([z.lazy(() => CpuPod1$inboundSchema), z.any()]); + +export function podCpuUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PodCpuUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PodCpuUnion1' from JSON`, + ); +} + +/** @internal */ +export const MemoryPodUnit1$inboundSchema: z.ZodEnum = z + .enum(MemoryPodUnit1); + +/** @internal */ +export const MemoryPod1$inboundSchema: z.ZodType = z + .object({ + unit: MemoryPodUnit1$inboundSchema, + value: z.number(), + }); + +export function memoryPod1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryPod1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryPod1' from JSON`, + ); +} + +/** @internal */ +export const PodMemoryUnion1$inboundSchema: z.ZodType< + PodMemoryUnion1, + unknown +> = z.union([z.lazy(() => MemoryPod1$inboundSchema), z.any()]); + +export function podMemoryUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PodMemoryUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PodMemoryUnion1' from JSON`, + ); +} + +/** @internal */ +export const OwnerReference1$inboundSchema: z.ZodType< + OwnerReference1, + unknown +> = z.object({ + controller: z.boolean(), + kind: z.string(), + name: z.string(), + uid: z.string(), +}); + +export function ownerReference1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OwnerReference1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OwnerReference1' from JSON`, + ); +} + +/** @internal */ +export const Pod1$inboundSchema: z.ZodType = z.object({ + cpu: z.nullable(z.union([z.lazy(() => CpuPod1$inboundSchema), z.any()])) + .optional(), + memory: z.nullable(z.union([z.lazy(() => MemoryPod1$inboundSchema), z.any()])) + .optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + ownerReferences: z.array(z.lazy(() => OwnerReference1$inboundSchema)), + phase: z.nullable(z.string()).optional(), + podIp: z.nullable(z.string()).optional(), + ready: z.boolean(), + restartCount: z.int(), + terminatedReason: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function pod1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Pod1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Pod1' from JSON`, + ); +} + +/** @internal */ +export const Replicas1$inboundSchema: z.ZodType = z.object({ + available: z.nullable(z.int()).optional(), + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + misscheduled: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + updated: z.nullable(z.int()).optional(), +}); + +export function replicas1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Replicas1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Replicas1' from JSON`, + ); +} + +/** @internal */ +export const Reason8$inboundSchema: z.ZodEnum = z.enum(Reason8); + +/** @internal */ +export const CollectionIssueSeverity8$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity8 +> = z.enum(CollectionIssueSeverity8); + +/** @internal */ +export const CollectionIssue8$inboundSchema: z.ZodType< + CollectionIssue8, + unknown +> = z.object({ + message: z.string(), + reason: Reason8$inboundSchema, + severity: CollectionIssueSeverity8$inboundSchema, + source: z.string(), +}); + +export function collectionIssue8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue8' from JSON`, + ); +} + +/** @internal */ +export const Health8$inboundSchema: z.ZodEnum = z.enum(Health8); + +/** @internal */ +export const Lifecycle8$inboundSchema: z.ZodEnum = z.enum( + Lifecycle8, +); + +/** @internal */ +export const DataStatus8$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue8$inboundSchema)), + health: Health8$inboundSchema, + lifecycle: Lifecycle8$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus8' from JSON`, + ); +} + +/** @internal */ +export const WorkloadCondition1$inboundSchema: z.ZodType< + WorkloadCondition1, + unknown +> = z.object({ + lastTransitionTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.nullable(z.string()).optional(), + reason: z.nullable(z.string()).optional(), + status: z.string(), + type: z.string(), +}); + +export function workloadCondition1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => WorkloadCondition1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'WorkloadCondition1' from JSON`, + ); +} + +/** @internal */ +export const Workload1$inboundSchema: z.ZodType = z.object({ + availableReplicas: z.nullable(z.int()).optional(), + conditions: z.array(z.lazy(() => WorkloadCondition1$inboundSchema)), + desiredGeneration: z.nullable(z.int()).optional(), + desiredReplicas: z.nullable(z.int()).optional(), + observedGeneration: z.nullable(z.int()).optional(), + readyReplicas: z.nullable(z.int()).optional(), + rolloutReason: z.nullable(z.string()).optional(), + updatedReplicas: z.nullable(z.int()).optional(), +}); + +export function workload1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Workload1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Workload1' from JSON`, + ); +} + +/** @internal */ +export const WorkloadUnion1$inboundSchema: z.ZodType = + z.union([z.lazy(() => Workload1$inboundSchema), z.any()]); + +export function workloadUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => WorkloadUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'WorkloadUnion1' from JSON`, + ); +} + +/** @internal */ +export const WorkloadKind1$inboundSchema: z.ZodEnum = z + .enum(WorkloadKind1); + +/** @internal */ +export const DataKubernetes1$inboundSchema: z.ZodType< + DataKubernetes1, + unknown +> = z.object({ + cpu: z.nullable(z.union([z.lazy(() => Cpu1$inboundSchema), z.any()])) + .optional(), + events: z.array(z.lazy(() => Event1$inboundSchema)), + memory: z.nullable(z.union([z.lazy(() => Memory1$inboundSchema), z.any()])) + .optional(), + name: z.string(), + namespace: z.string(), + pods: z.array(z.lazy(() => Pod1$inboundSchema)), + replicas: z.lazy(() => Replicas1$inboundSchema), + restarts: z.nullable(z.int()).optional(), + status: z.lazy(() => DataStatus8$inboundSchema), + triggerCount: z.int(), + workload: z.nullable( + z.union([z.lazy(() => Workload1$inboundSchema), z.any()]), + ).optional(), + workloadKind: WorkloadKind1$inboundSchema, + backend: z.literal("kubernetes"), +}); + +export function dataKubernetes1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataKubernetes1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataKubernetes1' from JSON`, + ); +} + +/** @internal */ +export const Reason7$inboundSchema: z.ZodEnum = z.enum(Reason7); + +/** @internal */ +export const CollectionIssueSeverity7$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity7 +> = z.enum(CollectionIssueSeverity7); + +/** @internal */ +export const CollectionIssue7$inboundSchema: z.ZodType< + CollectionIssue7, + unknown +> = z.object({ + message: z.string(), + reason: Reason7$inboundSchema, + severity: CollectionIssueSeverity7$inboundSchema, + source: z.string(), +}); + +export function collectionIssue7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue7' from JSON`, + ); +} + +/** @internal */ +export const Health7$inboundSchema: z.ZodEnum = z.enum(Health7); + +/** @internal */ +export const Lifecycle7$inboundSchema: z.ZodEnum = z.enum( + Lifecycle7, +); + +/** @internal */ +export const DataStatus7$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue7$inboundSchema)), + health: Health7$inboundSchema, + lifecycle: Lifecycle7$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus7' from JSON`, + ); +} + +/** @internal */ +export const DataAzureContainerApps1$inboundSchema: z.ZodType< + DataAzureContainerApps1, + unknown +> = z.object({ + appName: z.string(), + cpu: z.nullable(z.number()).optional(), + environmentName: z.nullable(z.string()).optional(), + ingressFqdn: z.nullable(z.string()).optional(), + maxReplicas: z.nullable(z.int()).optional(), + memory: z.nullable(z.string()).optional(), + minReplicas: z.nullable(z.int()).optional(), + provisioningState: z.nullable(z.string()).optional(), + revision: z.nullable(z.string()).optional(), + runningStatus: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus7$inboundSchema), + backend: z.literal("azureContainerApps"), +}); + +export function dataAzureContainerApps1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureContainerApps1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureContainerApps1' from JSON`, + ); +} + +/** @internal */ +export const Reason6$inboundSchema: z.ZodEnum = z.enum(Reason6); + +/** @internal */ +export const CollectionIssueSeverity6$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity6 +> = z.enum(CollectionIssueSeverity6); + +/** @internal */ +export const CollectionIssue6$inboundSchema: z.ZodType< + CollectionIssue6, + unknown +> = z.object({ + message: z.string(), + reason: Reason6$inboundSchema, + severity: CollectionIssueSeverity6$inboundSchema, + source: z.string(), +}); + +export function collectionIssue6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue6' from JSON`, + ); +} + +/** @internal */ +export const Health6$inboundSchema: z.ZodEnum = z.enum(Health6); + +/** @internal */ +export const Lifecycle6$inboundSchema: z.ZodEnum = z.enum( + Lifecycle6, +); + +/** @internal */ +export const DataStatus6$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue6$inboundSchema)), + health: Health6$inboundSchema, + lifecycle: Lifecycle6$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus6' from JSON`, + ); +} + +/** @internal */ +export const DataGcpCloudRun$inboundSchema: z.ZodType< + DataGcpCloudRun, + unknown +> = z.object({ + containerImage: z.nullable(z.string()).optional(), + cpuLimit: z.nullable(z.string()).optional(), + generation: z.nullable(z.int()).optional(), + latestCreatedRevision: z.nullable(z.string()).optional(), + latestReadyRevision: z.nullable(z.string()).optional(), + maxInstanceCount: z.nullable(z.int()).optional(), + memoryLimit: z.nullable(z.string()).optional(), + minInstanceCount: z.nullable(z.int()).optional(), + observedGeneration: z.nullable(z.int()).optional(), + region: z.nullable(z.string()).optional(), + service: z.string(), + status: z.lazy(() => DataStatus6$inboundSchema), + trafficCount: z.int(), + uri: z.nullable(z.string()).optional(), + urls: z.array(z.string()), + backend: z.literal("gcpCloudRun"), +}); + +export function dataGcpCloudRunFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpCloudRun$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpCloudRun' from JSON`, + ); +} + +/** @internal */ +export const Reason5$inboundSchema: z.ZodEnum = z.enum(Reason5); + +/** @internal */ +export const CollectionIssueSeverity5$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity5 +> = z.enum(CollectionIssueSeverity5); + +/** @internal */ +export const CollectionIssue5$inboundSchema: z.ZodType< + CollectionIssue5, + unknown +> = z.object({ + message: z.string(), + reason: Reason5$inboundSchema, + severity: CollectionIssueSeverity5$inboundSchema, + source: z.string(), +}); + +export function collectionIssue5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue5' from JSON`, + ); +} + +/** @internal */ +export const Health5$inboundSchema: z.ZodEnum = z.enum(Health5); + +/** @internal */ +export const Lifecycle5$inboundSchema: z.ZodEnum = z.enum( + Lifecycle5, +); + +/** @internal */ +export const DataStatus5$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue5$inboundSchema)), + health: Health5$inboundSchema, + lifecycle: Lifecycle5$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus5' from JSON`, + ); +} + +/** @internal */ +export const DataAwsLambda$inboundSchema: z.ZodType = z + .object({ + codeSha256: z.nullable(z.string()).optional(), + functionName: z.string(), + functionUrlAuthType: z.nullable(z.string()).optional(), + functionUrlCorsPresent: z.boolean(), + lastModified: z.nullable(z.string()).optional(), + lastUpdateStatus: z.nullable(z.string()).optional(), + lastUpdateStatusReason: z.nullable(z.string()).optional(), + lastUpdateStatusReasonCode: z.nullable(z.string()).optional(), + layerCount: z.int(), + memorySizeMb: z.nullable(z.int()).optional(), + packageType: z.nullable(z.string()).optional(), + revisionId: z.nullable(z.string()).optional(), + runtime: z.nullable(z.string()).optional(), + state: z.nullable(z.string()).optional(), + stateReason: z.nullable(z.string()).optional(), + stateReasonCode: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus5$inboundSchema), + timeoutSeconds: z.nullable(z.int()).optional(), + triggerCount: z.int(), + version: z.nullable(z.string()).optional(), + backend: z.literal("awsLambda"), + }); + +export function dataAwsLambdaFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsLambda$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsLambda' from JSON`, + ); +} + +/** @internal */ +export const DataUnion2$inboundSchema: z.ZodType = z.union( + [ + z.lazy(() => DataAwsLambda$inboundSchema), + z.lazy(() => DataGcpCloudRun$inboundSchema), + z.lazy(() => DataAzureContainerApps1$inboundSchema), + z.lazy(() => DataKubernetes1$inboundSchema), + z.lazy(() => DataLocal2$inboundSchema), + ], +); + +export function dataUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion2' from JSON`, + ); +} + +/** @internal */ +export const DataWorker$inboundSchema: z.ZodType = z + .object({ + data: z.union([ + z.lazy(() => DataAwsLambda$inboundSchema), + z.lazy(() => DataGcpCloudRun$inboundSchema), + z.lazy(() => DataAzureContainerApps1$inboundSchema), + z.lazy(() => DataKubernetes1$inboundSchema), + z.lazy(() => DataLocal2$inboundSchema), + ]), + resourceType: z.literal("worker"), + }); + +export function dataWorkerFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataWorker$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataWorker' from JSON`, + ); +} + +/** @internal */ +export const Reason4$inboundSchema: z.ZodEnum = z.enum(Reason4); + +/** @internal */ +export const CollectionIssueSeverity4$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity4 +> = z.enum(CollectionIssueSeverity4); + +/** @internal */ +export const CollectionIssue4$inboundSchema: z.ZodType< + CollectionIssue4, + unknown +> = z.object({ + message: z.string(), + reason: Reason4$inboundSchema, + severity: CollectionIssueSeverity4$inboundSchema, + source: z.string(), +}); + +export function collectionIssue4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue4' from JSON`, + ); +} + +/** @internal */ +export const Health4$inboundSchema: z.ZodEnum = z.enum(Health4); + +/** @internal */ +export const Lifecycle4$inboundSchema: z.ZodEnum = z.enum( + Lifecycle4, +); + +/** @internal */ +export const DataStatus4$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue4$inboundSchema)), + health: Health4$inboundSchema, + lifecycle: Lifecycle4$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus4' from JSON`, + ); +} + +/** @internal */ +export const DataLocal1$inboundSchema: z.ZodType = z + .object({ + isDirectory: z.nullable(z.boolean()).optional(), + modifiedAt: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + path: z.string(), + pathExists: z.boolean(), + readonly: z.nullable(z.boolean()).optional(), + status: z.lazy(() => DataStatus4$inboundSchema), + backend: z.literal("local"), + }); + +export function dataLocal1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataLocal1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataLocal1' from JSON`, + ); +} + +/** @internal */ +export const Reason3$inboundSchema: z.ZodEnum = z.enum(Reason3); + +/** @internal */ +export const CollectionIssueSeverity3$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity3 +> = z.enum(CollectionIssueSeverity3); + +/** @internal */ +export const CollectionIssue3$inboundSchema: z.ZodType< + CollectionIssue3, + unknown +> = z.object({ + message: z.string(), + reason: Reason3$inboundSchema, + severity: CollectionIssueSeverity3$inboundSchema, + source: z.string(), +}); + +export function collectionIssue3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue3' from JSON`, + ); +} + +/** @internal */ +export const Health3$inboundSchema: z.ZodEnum = z.enum(Health3); + +/** @internal */ +export const Lifecycle3$inboundSchema: z.ZodEnum = z.enum( + Lifecycle3, +); + +/** @internal */ +export const DataStatus3$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue3$inboundSchema)), + health: Health3$inboundSchema, + lifecycle: Lifecycle3$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus3' from JSON`, + ); +} + +/** @internal */ +export const DataAzureBlob$inboundSchema: z.ZodType = z + .object({ + accessTier: z.nullable(z.string()).optional(), + accountKind: z.nullable(z.string()).optional(), + allowBlobPublicAccess: z.nullable(z.boolean()).optional(), + blobDeleteRetentionDays: z.nullable(z.int()).optional(), + blobDeleteRetentionEnabled: z.nullable(z.boolean()).optional(), + blobEncryptionEnabled: z.nullable(z.boolean()).optional(), + blobVersioningEnabled: z.nullable(z.boolean()).optional(), + changeFeedEnabled: z.nullable(z.boolean()).optional(), + changeFeedRetentionDays: z.nullable(z.int()).optional(), + containerDeleteRetentionDays: z.nullable(z.int()).optional(), + containerDeleteRetentionEnabled: z.nullable(z.boolean()).optional(), + containerPublicAccess: z.nullable(z.string()).optional(), + encryptionKeySource: z.nullable(z.string()).optional(), + fileEncryptionEnabled: z.nullable(z.boolean()).optional(), + location: z.nullable(z.string()).optional(), + name: z.string(), + primaryLocation: z.nullable(z.string()).optional(), + provisioningState: z.nullable(z.string()).optional(), + publicNetworkAccess: z.nullable(z.string()).optional(), + queueEncryptionEnabled: z.nullable(z.boolean()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + secondaryLocation: z.nullable(z.string()).optional(), + skuName: z.nullable(z.string()).optional(), + skuTier: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus3$inboundSchema), + statusOfPrimary: z.nullable(z.string()).optional(), + statusOfSecondary: z.nullable(z.string()).optional(), + storageAccountName: z.nullable(z.string()).optional(), + tableEncryptionEnabled: z.nullable(z.boolean()).optional(), + backend: z.literal("azureBlob"), + }); + +export function dataAzureBlobFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureBlob$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureBlob' from JSON`, + ); +} + +/** @internal */ +export const Reason2$inboundSchema: z.ZodEnum = z.enum(Reason2); + +/** @internal */ +export const CollectionIssueSeverity2$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity2 +> = z.enum(CollectionIssueSeverity2); + +/** @internal */ +export const CollectionIssue2$inboundSchema: z.ZodType< + CollectionIssue2, + unknown +> = z.object({ + message: z.string(), + reason: Reason2$inboundSchema, + severity: CollectionIssueSeverity2$inboundSchema, + source: z.string(), +}); + +export function collectionIssue2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue2' from JSON`, + ); +} + +/** @internal */ +export const Health2$inboundSchema: z.ZodEnum = z.enum(Health2); + +/** @internal */ +export const Lifecycle2$inboundSchema: z.ZodEnum = z.enum( + Lifecycle2, +); + +/** @internal */ +export const DataStatus2$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue2$inboundSchema)), + health: Health2$inboundSchema, + lifecycle: Lifecycle2$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus2' from JSON`, + ); +} + +/** @internal */ +export const DataGcpCloudStorage$inboundSchema: z.ZodType< + DataGcpCloudStorage, + unknown +> = z.object({ + bucketId: z.nullable(z.string()).optional(), + defaultKmsKeyName: z.nullable(z.string()).optional(), + encryptionConfigPresent: z.boolean(), + lifecyclePresent: z.boolean(), + lifecycleRuleCount: z.nullable(z.int()).optional(), + location: z.nullable(z.string()).optional(), + locationType: z.nullable(z.string()).optional(), + name: z.string(), + publicAccessPrevention: z.nullable(z.string()).optional(), + retentionPeriod: z.nullable(z.string()).optional(), + retentionPolicyEffectiveTime: z.nullable(z.string()).optional(), + retentionPolicyIsLocked: z.nullable(z.boolean()).optional(), + softDeleteEffectiveTime: z.nullable(z.string()).optional(), + softDeleteRetentionDurationSeconds: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus2$inboundSchema), + storageClass: z.nullable(z.string()).optional(), + uniformBucketLevelAccessEnabled: z.nullable(z.boolean()).optional(), + uniformBucketLevelAccessLockedTime: z.nullable(z.string()).optional(), + versioningEnabled: z.nullable(z.boolean()).optional(), + backend: z.literal("gcpCloudStorage"), +}); + +export function dataGcpCloudStorageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpCloudStorage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpCloudStorage' from JSON`, + ); +} + +/** @internal */ +export const Reason1$inboundSchema: z.ZodEnum = z.enum(Reason1); + +/** @internal */ +export const CollectionIssueSeverity1$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity1 +> = z.enum(CollectionIssueSeverity1); + +/** @internal */ +export const CollectionIssue1$inboundSchema: z.ZodType< + CollectionIssue1, + unknown +> = z.object({ + message: z.string(), + reason: Reason1$inboundSchema, + severity: CollectionIssueSeverity1$inboundSchema, + source: z.string(), +}); + +export function collectionIssue1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue1' from JSON`, + ); +} + +/** @internal */ +export const Health1$inboundSchema: z.ZodEnum = z.enum(Health1); + +/** @internal */ +export const Lifecycle1$inboundSchema: z.ZodEnum = z.enum( + Lifecycle1, +); + +/** @internal */ +export const DataStatus1$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue1$inboundSchema)), + health: Health1$inboundSchema, + lifecycle: Lifecycle1$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus1' from JSON`, + ); +} + +/** @internal */ +export const DataAwsS3$inboundSchema: z.ZodType = z.object({ + blockPublicAcls: z.nullable(z.boolean()).optional(), + blockPublicPolicy: z.nullable(z.boolean()).optional(), + bucketAclPresent: z.nullable(z.boolean()).optional(), + bucketLocation: z.nullable(z.string()).optional(), + bucketPolicyPresent: z.nullable(z.boolean()).optional(), + encryptionConfigPresent: z.boolean(), + encryptionEnabled: z.nullable(z.boolean()).optional(), + ignorePublicAcls: z.nullable(z.boolean()).optional(), + lifecyclePresent: z.boolean(), + lifecycleRuleCount: z.nullable(z.int()).optional(), + name: z.string(), + publicAccessBlockPresent: z.boolean(), + region: z.nullable(z.string()).optional(), + restrictPublicBuckets: z.nullable(z.boolean()).optional(), + status: z.lazy(() => DataStatus1$inboundSchema), + versioningEnabled: z.nullable(z.boolean()).optional(), + versioningStatus: z.nullable(z.string()).optional(), + backend: z.literal("awsS3"), +}); + +export function dataAwsS3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsS3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsS3' from JSON`, + ); +} + +/** @internal */ +export const DataUnion1$inboundSchema: z.ZodType = z.union( + [ + z.lazy(() => DataAwsS3$inboundSchema), + z.lazy(() => DataGcpCloudStorage$inboundSchema), + z.lazy(() => DataAzureBlob$inboundSchema), + z.lazy(() => DataLocal1$inboundSchema), + ], +); + +export function dataUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion1' from JSON`, + ); +} + +/** @internal */ +export const DataStorage$inboundSchema: z.ZodType = z + .object({ + data: z.union([ + z.lazy(() => DataAwsS3$inboundSchema), + z.lazy(() => DataGcpCloudStorage$inboundSchema), + z.lazy(() => DataAzureBlob$inboundSchema), + z.lazy(() => DataLocal1$inboundSchema), + ]), + resourceType: z.literal("storage"), + }); + +export function dataStorageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStorage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStorage' from JSON`, + ); +} + +/** @internal */ +export const DataUnion15$inboundSchema: z.ZodType = z + .union([ + z.lazy(() => DataStorage$inboundSchema), + z.lazy(() => DataWorker$inboundSchema), + z.lazy(() => DataContainer$inboundSchema), + DataDaemon$inboundSchema, + DataComputeCluster$inboundSchema, + DataKubernetesCluster$inboundSchema, + DataQueue$inboundSchema, + DataKv$inboundSchema, + DataVault$inboundSchema, + DataServiceAccount$inboundSchema, + DataNetwork$inboundSchema, + DataRemoteStackManagement$inboundSchema, + DataArtifactRegistry$inboundSchema, + DataBuild$inboundSchema, + DataServiceActivation$inboundSchema, + DataAzureResourceGroup$inboundSchema, + DataAzureStorageAccount$inboundSchema, + DataAzureContainerAppsEnvironment$inboundSchema, + DataAzureServiceBusNamespace$inboundSchema, + ]); + +export function dataUnion15FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion15$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion15' from JSON`, + ); +} + +/** @internal */ +export const Format$inboundSchema: z.ZodEnum = z.enum(Format); + +/** @internal */ +export const Raw$inboundSchema: z.ZodType = z.object({ + body: z.string(), + collectedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + format: Format$inboundSchema, + source: z.string(), + truncated: z.boolean(), +}); + +export function rawFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Raw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Raw' from JSON`, + ); +} + +/** @internal */ +export const Heartbeat$inboundSchema: z.ZodType = z.object({ + backend: BackendEnum$inboundSchema, + controllerPlatform: ControllerPlatform$inboundSchema, + data: z.union([ + z.lazy(() => DataStorage$inboundSchema), + z.lazy(() => DataWorker$inboundSchema), + z.lazy(() => DataContainer$inboundSchema), + DataDaemon$inboundSchema, + DataComputeCluster$inboundSchema, + DataKubernetesCluster$inboundSchema, + DataQueue$inboundSchema, + DataKv$inboundSchema, + DataVault$inboundSchema, + DataServiceAccount$inboundSchema, + DataNetwork$inboundSchema, + DataRemoteStackManagement$inboundSchema, + DataArtifactRegistry$inboundSchema, + DataBuild$inboundSchema, + DataServiceActivation$inboundSchema, + DataAzureResourceGroup$inboundSchema, + DataAzureStorageAccount$inboundSchema, + DataAzureContainerAppsEnvironment$inboundSchema, + DataAzureServiceBusNamespace$inboundSchema, + ]), + deploymentId: z.nullable(z.string()).optional(), + observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + raw: z.array(z.lazy(() => Raw$inboundSchema)), + resourceId: z.string(), + resourceType: z.string(), +}); + +export function heartbeatFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Heartbeat$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Heartbeat' from JSON`, + ); +} + +/** @internal */ +export const HeartbeatAvailable$inboundSchema: z.ZodType< + HeartbeatAvailable, + unknown +> = z.object({ + status: z.literal("available"), + deploymentId: z.string(), + resourceId: z.string(), + resourceType: z.string(), + backend: z.string(), + controllerPlatform: z.string(), + observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + staleAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + platformStale: z.boolean(), + heartbeat: z.lazy(() => Heartbeat$inboundSchema), + raw: z.array(z.nullable(z.any())), +}); + +export function heartbeatAvailableFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => HeartbeatAvailable$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'HeartbeatAvailable' from JSON`, + ); +} + +/** @internal */ +export const HeartbeatUnion$inboundSchema: z.ZodType = + z.union([ + z.lazy(() => HeartbeatAvailable$inboundSchema), + HeartbeatMissing$inboundSchema, + ]); + +export function heartbeatUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => HeartbeatUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'HeartbeatUnion' from JSON`, + ); +} + +/** @internal */ +export const GetResourceDeploymentDetailResponse$inboundSchema: z.ZodType< + GetResourceDeploymentDetailResponse, + unknown +> = z.object({ + deployment: GetResourceDeploymentDetailDeployment$inboundSchema, + heartbeat: z.union([ + z.lazy(() => HeartbeatAvailable$inboundSchema), + HeartbeatMissing$inboundSchema, + ]), +}); + +export function getResourceDeploymentDetailResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + GetResourceDeploymentDetailResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetResourceDeploymentDetailResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/health42.ts b/client-sdks/platform/typescript/src/models/operations/health42.ts new file mode 100644 index 000000000..7ab9ebef8 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/health42.ts @@ -0,0 +1,3591 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; + +export const GetResourceDeploymentDetailArea = { + Container: "container", + Worker: "worker", + Daemon: "daemon", +} as const; +export type GetResourceDeploymentDetailArea = ClosedEnum< + typeof GetResourceDeploymentDetailArea +>; + +export type GetResourceDeploymentDetailRequest = { + area: GetResourceDeploymentDetailArea; + deploymentId: string; + resourceId: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + /** + * Filter by project ID or name. + */ + project: string; +}; + +export type GetResourceDeploymentDetailDeployment = { + deploymentId: string; + deploymentName: string; + deploymentGroupId: string | null; + deploymentGroupName: string | null; + resourceType: string; + resourceId: string; + backend: string; + controllerPlatform: string; + health: string; + lifecycle: string; + message: string | null; + partial: boolean; + providerStale: boolean; + platformStale: boolean; + desiredCount: number | null; + currentCount: number | null; + readyCount: number | null; + observedAt: Date; +}; + +export type HeartbeatMissing = { + status: "missing"; + deploymentId: string; + resourceId: string; + resourceType: string; +}; + +export const BackendEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Managed: "managed", + External: "external", + Test: "test", +} as const; +export type BackendEnum = ClosedEnum; + +/** + * Represents the target cloud platform. + */ +export const ControllerPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type ControllerPlatform = ClosedEnum; + +export const Reason59 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason59 = ClosedEnum; + +export const CollectionIssueSeverity59 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity59 = ClosedEnum< + typeof CollectionIssueSeverity59 +>; + +export type CollectionIssue59 = { + message: string; + reason: Reason59; + severity: CollectionIssueSeverity59; + source: string; +}; + +export const Health59 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health59 = ClosedEnum; + +export const Lifecycle59 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle59 = ClosedEnum; + +export type DataStatus59 = { + collectionIssues: Array; + health: Health59; + lifecycle: Lifecycle59; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type Data5 = { + createdAt?: string | null | undefined; + disableLocalAuth?: boolean | null | undefined; + location?: string | null | undefined; + metricId?: string | null | undefined; + minimumTlsVersion?: string | null | undefined; + name: string; + namespaceStatus?: string | null | undefined; + premiumMessagingPartitions?: number | null | undefined; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + serviceBusEndpoint?: string | null | undefined; + skuCapacity?: number | null | undefined; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: DataStatus59; + updatedAt?: string | null | undefined; + zoneRedundant?: boolean | null | undefined; +}; + +export type DataAzureServiceBusNamespace = { + data: Data5; + resourceType: "azure_service_bus_namespace"; +}; + +export const Reason58 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason58 = ClosedEnum; + +export const CollectionIssueSeverity58 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity58 = ClosedEnum< + typeof CollectionIssueSeverity58 +>; + +export type CollectionIssue58 = { + message: string; + reason: Reason58; + severity: CollectionIssueSeverity58; + source: string; +}; + +export const Health58 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health58 = ClosedEnum; + +export const Lifecycle58 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle58 = ClosedEnum; + +export type DataStatus58 = { + collectionIssues: Array; + health: Health58; + lifecycle: Lifecycle58; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type WorkloadProfile = { + maximumCount?: number | null | undefined; + minimumCount?: number | null | undefined; + name: string; + workloadProfileType: string; +}; + +export type Data4 = { + customDomainVerificationId?: string | null | undefined; + defaultDomain?: string | null | undefined; + eventStreamEndpoint?: string | null | undefined; + infrastructureResourceGroup?: string | null | undefined; + kind?: string | null | undefined; + location?: string | null | undefined; + name: string; + provisioningState?: string | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + staticIp?: string | null | undefined; + status: DataStatus58; + workloadProfileCount: number; + workloadProfiles: Array; + zoneRedundant?: boolean | null | undefined; +}; + +export type DataAzureContainerAppsEnvironment = { + data: Data4; + resourceType: "azure_container_apps_environment"; +}; + +export type PrimaryEndpoints = { + blob?: string | null | undefined; + dfs?: string | null | undefined; + file?: string | null | undefined; + queue?: string | null | undefined; + table?: string | null | undefined; + web?: string | null | undefined; +}; + +export type SecondaryEndpoints = { + blob?: string | null | undefined; + dfs?: string | null | undefined; + file?: string | null | undefined; + queue?: string | null | undefined; + table?: string | null | undefined; + web?: string | null | undefined; +}; + +export const Reason57 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason57 = ClosedEnum; + +export const CollectionIssueSeverity57 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity57 = ClosedEnum< + typeof CollectionIssueSeverity57 +>; + +export type CollectionIssue57 = { + message: string; + reason: Reason57; + severity: CollectionIssueSeverity57; + source: string; +}; + +export const Health57 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health57 = ClosedEnum; + +export const Lifecycle57 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle57 = ClosedEnum; + +export type DataStatus57 = { + collectionIssues: Array; + health: Health57; + lifecycle: Lifecycle57; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type Data3 = { + allowBlobPublicAccess?: boolean | null | undefined; + allowSharedKeyAccess?: boolean | null | undefined; + encryptionKeySource?: string | null | undefined; + kind?: string | null | undefined; + location?: string | null | undefined; + minimumTlsVersion?: string | null | undefined; + name: string; + networkBypass?: string | null | undefined; + networkDefaultAction?: string | null | undefined; + networkIpRuleCount?: number | null | undefined; + networkResourceAccessRuleCount?: number | null | undefined; + networkVirtualNetworkRuleCount?: number | null | undefined; + primaryEndpoints: PrimaryEndpoints; + provisioningState?: string | null | undefined; + publicNetworkAccess?: string | null | undefined; + requireInfrastructureEncryption?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + secondaryEndpoints: SecondaryEndpoints; + skuName?: string | null | undefined; + skuTier?: string | null | undefined; + status: DataStatus57; + supportsHttpsTrafficOnly?: boolean | null | undefined; +}; + +export type DataAzureStorageAccount = { + data: Data3; + resourceType: "azure_storage_account"; +}; + +export const Reason56 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason56 = ClosedEnum; + +export const CollectionIssueSeverity56 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity56 = ClosedEnum< + typeof CollectionIssueSeverity56 +>; + +export type CollectionIssue56 = { + message: string; + reason: Reason56; + severity: CollectionIssueSeverity56; + source: string; +}; + +export const Health56 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health56 = ClosedEnum; + +export const Lifecycle56 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle56 = ClosedEnum; + +export type DataStatus56 = { + collectionIssues: Array; + health: Health56; + lifecycle: Lifecycle56; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type Data2 = { + location?: string | null | undefined; + managedTags: { [k: string]: string }; + name: string; + provisioningState?: string | null | undefined; + resourceId?: string | null | undefined; + status: DataStatus56; +}; + +export type DataAzureResourceGroup = { + data: Data2; + resourceType: "azure_resource_group"; +}; + +export const Reason55 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason55 = ClosedEnum; + +export const CollectionIssueSeverity55 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity55 = ClosedEnum< + typeof CollectionIssueSeverity55 +>; + +export type CollectionIssue55 = { + message: string; + reason: Reason55; + severity: CollectionIssueSeverity55; + source: string; +}; + +export const Health55 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health55 = ClosedEnum; + +export const Lifecycle55 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle55 = ClosedEnum; + +export type DataStatus55 = { + collectionIssues: Array; + health: Health55; + lifecycle: Lifecycle55; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureResourceProvider = { + namespace: string; + providerId?: string | null | undefined; + registered: boolean; + registrationPolicy?: string | null | undefined; + registrationState?: string | null | undefined; + resourceTypeCount: number; + status: DataStatus55; + backend: "azureResourceProvider"; +}; + +export const Reason54 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason54 = ClosedEnum; + +export const CollectionIssueSeverity54 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity54 = ClosedEnum< + typeof CollectionIssueSeverity54 +>; + +export type CollectionIssue54 = { + message: string; + reason: Reason54; + severity: CollectionIssueSeverity54; + source: string; +}; + +export const Health54 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health54 = ClosedEnum; + +export const Lifecycle54 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle54 = ClosedEnum; + +export type DataStatus54 = { + collectionIssues: Array; + health: Health54; + lifecycle: Lifecycle54; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpServiceUsage = { + enabled: boolean; + lastOperationName?: string | null | undefined; + projectId: string; + serviceName: string; + serviceResourceName?: string | null | undefined; + state?: string | null | undefined; + status: DataStatus54; + title?: string | null | undefined; + backend: "gcpServiceUsage"; +}; + +export type DataUnion14 = DataGcpServiceUsage | DataAzureResourceProvider; + +export type DataServiceActivation = { + data: DataGcpServiceUsage | DataAzureResourceProvider; + resourceType: "service_activation"; +}; + +export type InvolvedObject9 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion9 = InvolvedObject9 | any; + +export type Source9 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion9 = Source9 | any; + +export type Event12 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject9 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: Source9 | any | null | undefined; + type?: string | null | undefined; +}; + +export const Reason53 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason53 = ClosedEnum; + +export const CollectionIssueSeverity53 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity53 = ClosedEnum< + typeof CollectionIssueSeverity53 +>; + +export type CollectionIssue53 = { + message: string; + reason: Reason53; + severity: CollectionIssueSeverity53; + source: string; +}; + +export const Health53 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health53 = ClosedEnum; + +export const Lifecycle53 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle53 = ClosedEnum; + +export type DataStatus53 = { + collectionIssues: Array; + health: Health53; + lifecycle: Lifecycle53; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataKubernetesJob = { + active?: number | null | undefined; + completionTime?: Date | null | undefined; + conditionCount: number; + events: Array; + failed?: number | null | undefined; + imageDigest?: string | null | undefined; + jobName: string; + namespace: string; + startTime?: Date | null | undefined; + status: DataStatus53; + succeeded?: number | null | undefined; + backend: "kubernetesJob"; +}; + +export const Reason52 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason52 = ClosedEnum; + +export const CollectionIssueSeverity52 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity52 = ClosedEnum< + typeof CollectionIssueSeverity52 +>; + +export type CollectionIssue52 = { + message: string; + reason: Reason52; + severity: CollectionIssueSeverity52; + source: string; +}; + +export const Health52 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health52 = ClosedEnum; + +export const Lifecycle52 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle52 = ClosedEnum; + +export type DataStatus52 = { + collectionIssues: Array; + health: Health52; + lifecycle: Lifecycle52; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureContainerApps2 = { + environmentVariableCount: number; + managedEnvironmentId: string; + managedIdentityId?: string | null | undefined; + resourceGroupName: string; + resourcePrefix?: string | null | undefined; + status: DataStatus52; + backend: "azureContainerApps"; +}; + +export const Reason51 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason51 = ClosedEnum; + +export const CollectionIssueSeverity51 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity51 = ClosedEnum< + typeof CollectionIssueSeverity51 +>; + +export type CollectionIssue51 = { + message: string; + reason: Reason51; + severity: CollectionIssueSeverity51; + source: string; +}; + +export const Health51 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health51 = ClosedEnum; + +export const Lifecycle51 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle51 = ClosedEnum; + +export type DataStatus51 = { + collectionIssues: Array; + health: Health51; + lifecycle: Lifecycle51; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpCloudBuild = { + buildConfigId: string; + environmentVariableCount: number; + location: string; + projectId: string; + serviceAccount?: string | null | undefined; + status: DataStatus51; + backend: "gcpCloudBuild"; +}; + +export const Reason50 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason50 = ClosedEnum; + +export const CollectionIssueSeverity50 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity50 = ClosedEnum< + typeof CollectionIssueSeverity50 +>; + +export type CollectionIssue50 = { + message: string; + reason: Reason50; + severity: CollectionIssueSeverity50; + source: string; +}; + +export const Health50 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health50 = ClosedEnum; + +export const Lifecycle50 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle50 = ClosedEnum; + +export type DataStatus50 = { + collectionIssues: Array; + health: Health50; + lifecycle: Lifecycle50; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsCodeBuild = { + artifactsEncryptionDisabled?: boolean | null | undefined; + artifactsType?: string | null | undefined; + cloudWatchLogsStatus?: string | null | undefined; + computeType?: string | null | undefined; + created?: number | null | undefined; + description?: string | null | undefined; + encryptionKeyPresent: boolean; + environmentImage?: string | null | undefined; + environmentType?: string | null | undefined; + environmentVariableCount: number; + imagePullCredentialsType?: string | null | undefined; + lastModified?: number | null | undefined; + privilegedMode?: boolean | null | undefined; + projectArn?: string | null | undefined; + projectName: string; + queuedTimeoutInMinutes?: number | null | undefined; + s3LogsStatus?: string | null | undefined; + serviceRolePresent: boolean; + sourceType?: string | null | undefined; + status: DataStatus50; + timeoutInMinutes?: number | null | undefined; + backend: "awsCodeBuild"; +}; + +export type DataUnion13 = + | DataAwsCodeBuild + | DataGcpCloudBuild + | DataAzureContainerApps2 + | DataKubernetesJob; + +export type DataBuild = { + data: + | DataAwsCodeBuild + | DataGcpCloudBuild + | DataAzureContainerApps2 + | DataKubernetesJob; + resourceType: "build"; +}; + +export const Reason49 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason49 = ClosedEnum; + +export const CollectionIssueSeverity49 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity49 = ClosedEnum< + typeof CollectionIssueSeverity49 +>; + +export type CollectionIssue49 = { + message: string; + reason: Reason49; + severity: CollectionIssueSeverity49; + source: string; +}; + +export const Health49 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health49 = ClosedEnum; + +export const Lifecycle49 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle49 = ClosedEnum; + +export type DataStatus49 = { + collectionIssues: Array; + health: Health49; + lifecycle: Lifecycle49; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal10 = { + reachable: boolean; + registryUrl: string; + status: DataStatus49; + backend: "local"; +}; + +export const Reason48 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason48 = ClosedEnum; + +export const CollectionIssueSeverity48 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity48 = ClosedEnum< + typeof CollectionIssueSeverity48 +>; + +export type CollectionIssue48 = { + message: string; + reason: Reason48; + severity: CollectionIssueSeverity48; + source: string; +}; + +export const Health48 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health48 = ClosedEnum; + +export const Lifecycle48 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle48 = ClosedEnum; + +export type DataStatus48 = { + collectionIssues: Array; + health: Health48; + lifecycle: Lifecycle48; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureContainerRegistry = { + adminUserEnabled: boolean; + anonymousPullEnabled: boolean; + creationDate?: string | null | undefined; + dataEndpointEnabled?: boolean | null | undefined; + dataEndpointHostNames: Array; + encryptionKeyIdentifierPresent: boolean; + encryptionKeyVaultUriPresent: boolean; + encryptionStatus?: string | null | undefined; + ipRuleCount: number; + location: string; + loginServer?: string | null | undefined; + managedTagCount: number; + name: string; + networkRuleBypassOptions: string; + networkRuleDefaultAction?: string | null | undefined; + policiesPresent: boolean; + policyCount: number; + privateEndpointConnectionCount: number; + provisioningState?: string | null | undefined; + publicNetworkAccess: string; + resourceGroup: string; + resourceId?: string | null | undefined; + skuName: string; + skuTier?: string | null | undefined; + status: DataStatus48; + type?: string | null | undefined; + zoneRedundancy: string; + backend: "azureContainerRegistry"; +}; + +export const Reason47 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason47 = ClosedEnum; + +export const CollectionIssueSeverity47 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity47 = ClosedEnum< + typeof CollectionIssueSeverity47 +>; + +export type CollectionIssue47 = { + message: string; + reason: Reason47; + severity: CollectionIssueSeverity47; + source: string; +}; + +export const Health47 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health47 = ClosedEnum; + +export const Lifecycle47 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle47 = ClosedEnum; + +export type DataStatus47 = { + collectionIssues: Array; + health: Health47; + lifecycle: Lifecycle47; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpArtifactRegistry = { + cleanupPolicyCount: number; + cleanupPolicyDryRun?: boolean | null | undefined; + createTime?: string | null | undefined; + description?: string | null | undefined; + format?: string | null | undefined; + iamBindingCount: number; + iamPolicyEtagPresent: boolean; + iamRoles: Array; + kmsKeyNamePresent: boolean; + labelCount: number; + location: string; + mode?: string | null | undefined; + name?: string | null | undefined; + projectId: string; + pullServiceAccountEmail?: string | null | undefined; + pushServiceAccountEmail?: string | null | undefined; + repositoryId: string; + satisfiesPzs?: boolean | null | undefined; + sizeBytes?: string | null | undefined; + status: DataStatus47; + updateTime?: string | null | undefined; + backend: "gcpArtifactRegistry"; +}; + +export type Repository = { + createdAt: number; + encryptionType?: string | null | undefined; + imageTagMutability?: string | null | undefined; + kmsKeyPresent: boolean; + registryId: string; + repositoryArn: string; + repositoryName: string; + repositoryUri: string; + scanOnPush?: boolean | null | undefined; +}; + +export const Reason46 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason46 = ClosedEnum; + +export const CollectionIssueSeverity46 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity46 = ClosedEnum< + typeof CollectionIssueSeverity46 +>; + +export type CollectionIssue46 = { + message: string; + reason: Reason46; + severity: CollectionIssueSeverity46; + source: string; +}; + +export const Health46 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health46 = ClosedEnum; + +export const Lifecycle46 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle46 = ClosedEnum; + +export type DataStatus46 = { + collectionIssues: Array; + health: Health46; + lifecycle: Lifecycle46; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsEcr = { + pullRoleArn?: string | null | undefined; + pushRoleArn?: string | null | undefined; + region: string; + registryId: string; + registryUri: string; + repositories: Array; + repositoriesTruncated: boolean; + repositoryCount: number; + repositoryPrefix: string; + status: DataStatus46; + backend: "awsEcr"; +}; + +export type DataUnion12 = + | DataAwsEcr + | DataGcpArtifactRegistry + | DataAzureContainerRegistry + | DataLocal10; + +export type DataArtifactRegistry = { + data: + | DataAwsEcr + | DataGcpArtifactRegistry + | DataAzureContainerRegistry + | DataLocal10; + resourceType: "artifact-registry"; +}; + +export const Reason45 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason45 = ClosedEnum; + +export const CollectionIssueSeverity45 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity45 = ClosedEnum< + typeof CollectionIssueSeverity45 +>; + +export type CollectionIssue45 = { + message: string; + reason: Reason45; + severity: CollectionIssueSeverity45; + source: string; +}; + +export const Health45 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health45 = ClosedEnum; + +export const Lifecycle45 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle45 = ClosedEnum; + +export type DataStatus45 = { + collectionIssues: Array; + health: Health45; + lifecycle: Lifecycle45; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureManagedIdentity2 = { + ficName?: string | null | undefined; + roleAssignmentIds: Array; + roleDefinitionId?: string | null | undefined; + status: DataStatus45; + tenantId?: string | null | undefined; + uamiClientId?: string | null | undefined; + uamiPrincipalId?: string | null | undefined; + uamiResourceId?: string | null | undefined; + backend: "azureManagedIdentity"; +}; + +export const Reason44 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason44 = ClosedEnum; + +export const CollectionIssueSeverity44 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity44 = ClosedEnum< + typeof CollectionIssueSeverity44 +>; + +export type CollectionIssue44 = { + message: string; + reason: Reason44; + severity: CollectionIssueSeverity44; + source: string; +}; + +export const Health44 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health44 = ClosedEnum; + +export const Lifecycle44 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle44 = ClosedEnum; + +export type DataStatus44 = { + collectionIssues: Array; + health: Health44; + lifecycle: Lifecycle44; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpServiceAccount2 = { + impersonationGranted: boolean; + roleBound: boolean; + serviceAccountEmail?: string | null | undefined; + serviceAccountUniqueId?: string | null | undefined; + status: DataStatus44; + backend: "gcpServiceAccount"; +}; + +export const Reason43 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason43 = ClosedEnum; + +export const CollectionIssueSeverity43 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity43 = ClosedEnum< + typeof CollectionIssueSeverity43 +>; + +export type CollectionIssue43 = { + message: string; + reason: Reason43; + severity: CollectionIssueSeverity43; + source: string; +}; + +export const Health43 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health43 = ClosedEnum; + +export const Lifecycle43 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle43 = ClosedEnum; + +export type DataStatus43 = { + collectionIssues: Array; + health: Health43; + lifecycle: Lifecycle43; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsIamRole2 = { + managementPermissionsApplied: boolean; + roleArn?: string | null | undefined; + roleName?: string | null | undefined; + status: DataStatus43; + backend: "awsIamRole"; +}; + +export type DataUnion11 = + | DataAwsIamRole2 + | DataGcpServiceAccount2 + | DataAzureManagedIdentity2; + +export type DataRemoteStackManagement = { + data: DataAwsIamRole2 | DataGcpServiceAccount2 | DataAzureManagedIdentity2; + resourceType: "remote-stack-management"; +}; + +export const Reason42 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason42 = ClosedEnum; + +export const CollectionIssueSeverity42 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity42 = ClosedEnum< + typeof CollectionIssueSeverity42 +>; + +export type CollectionIssue42 = { + message: string; + reason: Reason42; + severity: CollectionIssueSeverity42; + source: string; +}; + +export const Health42 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health42 = ClosedEnum; + +/** @internal */ +export const GetResourceDeploymentDetailArea$outboundSchema: z.ZodEnum< + typeof GetResourceDeploymentDetailArea +> = z.enum(GetResourceDeploymentDetailArea); + +/** @internal */ +export type GetResourceDeploymentDetailRequest$Outbound = { + area: string; + deploymentId: string; + resourceId: string; + workspace?: string | undefined; + project: string; +}; + +/** @internal */ +export const GetResourceDeploymentDetailRequest$outboundSchema: z.ZodType< + GetResourceDeploymentDetailRequest$Outbound, + GetResourceDeploymentDetailRequest +> = z.object({ + area: GetResourceDeploymentDetailArea$outboundSchema, + deploymentId: z.string(), + resourceId: z.string(), + workspace: z.string().optional(), + project: z.string(), +}); + +export function getResourceDeploymentDetailRequestToJSON( + getResourceDeploymentDetailRequest: GetResourceDeploymentDetailRequest, +): string { + return JSON.stringify( + GetResourceDeploymentDetailRequest$outboundSchema.parse( + getResourceDeploymentDetailRequest, + ), + ); +} + +/** @internal */ +export const GetResourceDeploymentDetailDeployment$inboundSchema: z.ZodType< + GetResourceDeploymentDetailDeployment, + unknown +> = z.object({ + deploymentId: z.string(), + deploymentName: z.string(), + deploymentGroupId: z.nullable(z.string()), + deploymentGroupName: z.nullable(z.string()), + resourceType: z.string(), + resourceId: z.string(), + backend: z.string(), + controllerPlatform: z.string(), + health: z.string(), + lifecycle: z.string(), + message: z.nullable(z.string()), + partial: z.boolean(), + providerStale: z.boolean(), + platformStale: z.boolean(), + desiredCount: z.nullable(z.int()), + currentCount: z.nullable(z.int()), + readyCount: z.nullable(z.int()), + observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function getResourceDeploymentDetailDeploymentFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + GetResourceDeploymentDetailDeployment$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GetResourceDeploymentDetailDeployment' from JSON`, + ); +} + +/** @internal */ +export const HeartbeatMissing$inboundSchema: z.ZodType< + HeartbeatMissing, + unknown +> = z.object({ + status: z.literal("missing"), + deploymentId: z.string(), + resourceId: z.string(), + resourceType: z.string(), +}); + +export function heartbeatMissingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => HeartbeatMissing$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'HeartbeatMissing' from JSON`, + ); +} + +/** @internal */ +export const BackendEnum$inboundSchema: z.ZodEnum = z.enum( + BackendEnum, +); + +/** @internal */ +export const ControllerPlatform$inboundSchema: z.ZodEnum< + typeof ControllerPlatform +> = z.enum(ControllerPlatform); + +/** @internal */ +export const Reason59$inboundSchema: z.ZodEnum = z.enum( + Reason59, +); + +/** @internal */ +export const CollectionIssueSeverity59$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity59 +> = z.enum(CollectionIssueSeverity59); + +/** @internal */ +export const CollectionIssue59$inboundSchema: z.ZodType< + CollectionIssue59, + unknown +> = z.object({ + message: z.string(), + reason: Reason59$inboundSchema, + severity: CollectionIssueSeverity59$inboundSchema, + source: z.string(), +}); + +export function collectionIssue59FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue59$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue59' from JSON`, + ); +} + +/** @internal */ +export const Health59$inboundSchema: z.ZodEnum = z.enum( + Health59, +); + +/** @internal */ +export const Lifecycle59$inboundSchema: z.ZodEnum = z.enum( + Lifecycle59, +); + +/** @internal */ +export const DataStatus59$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue59$inboundSchema)), + health: Health59$inboundSchema, + lifecycle: Lifecycle59$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus59FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus59$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus59' from JSON`, + ); +} + +/** @internal */ +export const Data5$inboundSchema: z.ZodType = z.object({ + createdAt: z.nullable(z.string()).optional(), + disableLocalAuth: z.nullable(z.boolean()).optional(), + location: z.nullable(z.string()).optional(), + metricId: z.nullable(z.string()).optional(), + minimumTlsVersion: z.nullable(z.string()).optional(), + name: z.string(), + namespaceStatus: z.nullable(z.string()).optional(), + premiumMessagingPartitions: z.nullable(z.int()).optional(), + privateEndpointConnectionCount: z.int(), + provisioningState: z.nullable(z.string()).optional(), + publicNetworkAccess: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + serviceBusEndpoint: z.nullable(z.string()).optional(), + skuCapacity: z.nullable(z.int()).optional(), + skuName: z.nullable(z.string()).optional(), + skuTier: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus59$inboundSchema), + updatedAt: z.nullable(z.string()).optional(), + zoneRedundant: z.nullable(z.boolean()).optional(), +}); + +export function data5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Data5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Data5' from JSON`, + ); +} + +/** @internal */ +export const DataAzureServiceBusNamespace$inboundSchema: z.ZodType< + DataAzureServiceBusNamespace, + unknown +> = z.object({ + data: z.lazy(() => Data5$inboundSchema), + resourceType: z.literal("azure_service_bus_namespace"), +}); + +export function dataAzureServiceBusNamespaceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureServiceBusNamespace$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureServiceBusNamespace' from JSON`, + ); +} + +/** @internal */ +export const Reason58$inboundSchema: z.ZodEnum = z.enum( + Reason58, +); + +/** @internal */ +export const CollectionIssueSeverity58$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity58 +> = z.enum(CollectionIssueSeverity58); + +/** @internal */ +export const CollectionIssue58$inboundSchema: z.ZodType< + CollectionIssue58, + unknown +> = z.object({ + message: z.string(), + reason: Reason58$inboundSchema, + severity: CollectionIssueSeverity58$inboundSchema, + source: z.string(), +}); + +export function collectionIssue58FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue58$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue58' from JSON`, + ); +} + +/** @internal */ +export const Health58$inboundSchema: z.ZodEnum = z.enum( + Health58, +); + +/** @internal */ +export const Lifecycle58$inboundSchema: z.ZodEnum = z.enum( + Lifecycle58, +); + +/** @internal */ +export const DataStatus58$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue58$inboundSchema)), + health: Health58$inboundSchema, + lifecycle: Lifecycle58$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus58FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus58$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus58' from JSON`, + ); +} + +/** @internal */ +export const WorkloadProfile$inboundSchema: z.ZodType< + WorkloadProfile, + unknown +> = z.object({ + maximumCount: z.nullable(z.int()).optional(), + minimumCount: z.nullable(z.int()).optional(), + name: z.string(), + workloadProfileType: z.string(), +}); + +export function workloadProfileFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => WorkloadProfile$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'WorkloadProfile' from JSON`, + ); +} + +/** @internal */ +export const Data4$inboundSchema: z.ZodType = z.object({ + customDomainVerificationId: z.nullable(z.string()).optional(), + defaultDomain: z.nullable(z.string()).optional(), + eventStreamEndpoint: z.nullable(z.string()).optional(), + infrastructureResourceGroup: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + location: z.nullable(z.string()).optional(), + name: z.string(), + provisioningState: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + staticIp: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus58$inboundSchema), + workloadProfileCount: z.int(), + workloadProfiles: z.array(z.lazy(() => WorkloadProfile$inboundSchema)), + zoneRedundant: z.nullable(z.boolean()).optional(), +}); + +export function data4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Data4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Data4' from JSON`, + ); +} + +/** @internal */ +export const DataAzureContainerAppsEnvironment$inboundSchema: z.ZodType< + DataAzureContainerAppsEnvironment, + unknown +> = z.object({ + data: z.lazy(() => Data4$inboundSchema), + resourceType: z.literal("azure_container_apps_environment"), +}); + +export function dataAzureContainerAppsEnvironmentFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureContainerAppsEnvironment$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureContainerAppsEnvironment' from JSON`, + ); +} + +/** @internal */ +export const PrimaryEndpoints$inboundSchema: z.ZodType< + PrimaryEndpoints, + unknown +> = z.object({ + blob: z.nullable(z.string()).optional(), + dfs: z.nullable(z.string()).optional(), + file: z.nullable(z.string()).optional(), + queue: z.nullable(z.string()).optional(), + table: z.nullable(z.string()).optional(), + web: z.nullable(z.string()).optional(), +}); + +export function primaryEndpointsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PrimaryEndpoints$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PrimaryEndpoints' from JSON`, + ); +} + +/** @internal */ +export const SecondaryEndpoints$inboundSchema: z.ZodType< + SecondaryEndpoints, + unknown +> = z.object({ + blob: z.nullable(z.string()).optional(), + dfs: z.nullable(z.string()).optional(), + file: z.nullable(z.string()).optional(), + queue: z.nullable(z.string()).optional(), + table: z.nullable(z.string()).optional(), + web: z.nullable(z.string()).optional(), +}); + +export function secondaryEndpointsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SecondaryEndpoints$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SecondaryEndpoints' from JSON`, + ); +} + +/** @internal */ +export const Reason57$inboundSchema: z.ZodEnum = z.enum( + Reason57, +); + +/** @internal */ +export const CollectionIssueSeverity57$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity57 +> = z.enum(CollectionIssueSeverity57); + +/** @internal */ +export const CollectionIssue57$inboundSchema: z.ZodType< + CollectionIssue57, + unknown +> = z.object({ + message: z.string(), + reason: Reason57$inboundSchema, + severity: CollectionIssueSeverity57$inboundSchema, + source: z.string(), +}); + +export function collectionIssue57FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue57$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue57' from JSON`, + ); +} + +/** @internal */ +export const Health57$inboundSchema: z.ZodEnum = z.enum( + Health57, +); + +/** @internal */ +export const Lifecycle57$inboundSchema: z.ZodEnum = z.enum( + Lifecycle57, +); + +/** @internal */ +export const DataStatus57$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue57$inboundSchema)), + health: Health57$inboundSchema, + lifecycle: Lifecycle57$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus57FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus57$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus57' from JSON`, + ); +} + +/** @internal */ +export const Data3$inboundSchema: z.ZodType = z.object({ + allowBlobPublicAccess: z.nullable(z.boolean()).optional(), + allowSharedKeyAccess: z.nullable(z.boolean()).optional(), + encryptionKeySource: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + location: z.nullable(z.string()).optional(), + minimumTlsVersion: z.nullable(z.string()).optional(), + name: z.string(), + networkBypass: z.nullable(z.string()).optional(), + networkDefaultAction: z.nullable(z.string()).optional(), + networkIpRuleCount: z.nullable(z.int()).optional(), + networkResourceAccessRuleCount: z.nullable(z.int()).optional(), + networkVirtualNetworkRuleCount: z.nullable(z.int()).optional(), + primaryEndpoints: z.lazy(() => PrimaryEndpoints$inboundSchema), + provisioningState: z.nullable(z.string()).optional(), + publicNetworkAccess: z.nullable(z.string()).optional(), + requireInfrastructureEncryption: z.nullable(z.boolean()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + secondaryEndpoints: z.lazy(() => SecondaryEndpoints$inboundSchema), + skuName: z.nullable(z.string()).optional(), + skuTier: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus57$inboundSchema), + supportsHttpsTrafficOnly: z.nullable(z.boolean()).optional(), +}); + +export function data3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Data3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Data3' from JSON`, + ); +} + +/** @internal */ +export const DataAzureStorageAccount$inboundSchema: z.ZodType< + DataAzureStorageAccount, + unknown +> = z.object({ + data: z.lazy(() => Data3$inboundSchema), + resourceType: z.literal("azure_storage_account"), +}); + +export function dataAzureStorageAccountFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureStorageAccount$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureStorageAccount' from JSON`, + ); +} + +/** @internal */ +export const Reason56$inboundSchema: z.ZodEnum = z.enum( + Reason56, +); + +/** @internal */ +export const CollectionIssueSeverity56$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity56 +> = z.enum(CollectionIssueSeverity56); + +/** @internal */ +export const CollectionIssue56$inboundSchema: z.ZodType< + CollectionIssue56, + unknown +> = z.object({ + message: z.string(), + reason: Reason56$inboundSchema, + severity: CollectionIssueSeverity56$inboundSchema, + source: z.string(), +}); + +export function collectionIssue56FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue56$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue56' from JSON`, + ); +} + +/** @internal */ +export const Health56$inboundSchema: z.ZodEnum = z.enum( + Health56, +); + +/** @internal */ +export const Lifecycle56$inboundSchema: z.ZodEnum = z.enum( + Lifecycle56, +); + +/** @internal */ +export const DataStatus56$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue56$inboundSchema)), + health: Health56$inboundSchema, + lifecycle: Lifecycle56$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus56FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus56$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus56' from JSON`, + ); +} + +/** @internal */ +export const Data2$inboundSchema: z.ZodType = z.object({ + location: z.nullable(z.string()).optional(), + managedTags: z.record(z.string(), z.string()), + name: z.string(), + provisioningState: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus56$inboundSchema), +}); + +export function data2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Data2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Data2' from JSON`, + ); +} + +/** @internal */ +export const DataAzureResourceGroup$inboundSchema: z.ZodType< + DataAzureResourceGroup, + unknown +> = z.object({ + data: z.lazy(() => Data2$inboundSchema), + resourceType: z.literal("azure_resource_group"), +}); + +export function dataAzureResourceGroupFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureResourceGroup$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureResourceGroup' from JSON`, + ); +} + +/** @internal */ +export const Reason55$inboundSchema: z.ZodEnum = z.enum( + Reason55, +); + +/** @internal */ +export const CollectionIssueSeverity55$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity55 +> = z.enum(CollectionIssueSeverity55); + +/** @internal */ +export const CollectionIssue55$inboundSchema: z.ZodType< + CollectionIssue55, + unknown +> = z.object({ + message: z.string(), + reason: Reason55$inboundSchema, + severity: CollectionIssueSeverity55$inboundSchema, + source: z.string(), +}); + +export function collectionIssue55FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue55$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue55' from JSON`, + ); +} + +/** @internal */ +export const Health55$inboundSchema: z.ZodEnum = z.enum( + Health55, +); + +/** @internal */ +export const Lifecycle55$inboundSchema: z.ZodEnum = z.enum( + Lifecycle55, +); + +/** @internal */ +export const DataStatus55$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue55$inboundSchema)), + health: Health55$inboundSchema, + lifecycle: Lifecycle55$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus55FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus55$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus55' from JSON`, + ); +} + +/** @internal */ +export const DataAzureResourceProvider$inboundSchema: z.ZodType< + DataAzureResourceProvider, + unknown +> = z.object({ + namespace: z.string(), + providerId: z.nullable(z.string()).optional(), + registered: z.boolean(), + registrationPolicy: z.nullable(z.string()).optional(), + registrationState: z.nullable(z.string()).optional(), + resourceTypeCount: z.int(), + status: z.lazy(() => DataStatus55$inboundSchema), + backend: z.literal("azureResourceProvider"), +}); + +export function dataAzureResourceProviderFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureResourceProvider$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureResourceProvider' from JSON`, + ); +} + +/** @internal */ +export const Reason54$inboundSchema: z.ZodEnum = z.enum( + Reason54, +); + +/** @internal */ +export const CollectionIssueSeverity54$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity54 +> = z.enum(CollectionIssueSeverity54); + +/** @internal */ +export const CollectionIssue54$inboundSchema: z.ZodType< + CollectionIssue54, + unknown +> = z.object({ + message: z.string(), + reason: Reason54$inboundSchema, + severity: CollectionIssueSeverity54$inboundSchema, + source: z.string(), +}); + +export function collectionIssue54FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue54$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue54' from JSON`, + ); +} + +/** @internal */ +export const Health54$inboundSchema: z.ZodEnum = z.enum( + Health54, +); + +/** @internal */ +export const Lifecycle54$inboundSchema: z.ZodEnum = z.enum( + Lifecycle54, +); + +/** @internal */ +export const DataStatus54$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue54$inboundSchema)), + health: Health54$inboundSchema, + lifecycle: Lifecycle54$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus54FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus54$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus54' from JSON`, + ); +} + +/** @internal */ +export const DataGcpServiceUsage$inboundSchema: z.ZodType< + DataGcpServiceUsage, + unknown +> = z.object({ + enabled: z.boolean(), + lastOperationName: z.nullable(z.string()).optional(), + projectId: z.string(), + serviceName: z.string(), + serviceResourceName: z.nullable(z.string()).optional(), + state: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus54$inboundSchema), + title: z.nullable(z.string()).optional(), + backend: z.literal("gcpServiceUsage"), +}); + +export function dataGcpServiceUsageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpServiceUsage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpServiceUsage' from JSON`, + ); +} + +/** @internal */ +export const DataUnion14$inboundSchema: z.ZodType = z + .union([ + z.lazy(() => DataGcpServiceUsage$inboundSchema), + z.lazy(() => DataAzureResourceProvider$inboundSchema), + ]); + +export function dataUnion14FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion14$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion14' from JSON`, + ); +} + +/** @internal */ +export const DataServiceActivation$inboundSchema: z.ZodType< + DataServiceActivation, + unknown +> = z.object({ + data: z.union([ + z.lazy(() => DataGcpServiceUsage$inboundSchema), + z.lazy(() => DataAzureResourceProvider$inboundSchema), + ]), + resourceType: z.literal("service_activation"), +}); + +export function dataServiceActivationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataServiceActivation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataServiceActivation' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObject9$inboundSchema: z.ZodType< + InvolvedObject9, + unknown +> = z.object({ + apiVersion: z.nullable(z.string()).optional(), + fieldPath: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + namespace: z.nullable(z.string()).optional(), + resourceVersion: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), +}); + +export function involvedObject9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObject9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObject9' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObjectUnion9$inboundSchema: z.ZodType< + InvolvedObjectUnion9, + unknown +> = z.union([z.lazy(() => InvolvedObject9$inboundSchema), z.any()]); + +export function involvedObjectUnion9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObjectUnion9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObjectUnion9' from JSON`, + ); +} + +/** @internal */ +export const Source9$inboundSchema: z.ZodType = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function source9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Source9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Source9' from JSON`, + ); +} + +/** @internal */ +export const SourceUnion9$inboundSchema: z.ZodType = z + .union([z.lazy(() => Source9$inboundSchema), z.any()]); + +export function sourceUnion9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SourceUnion9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceUnion9' from JSON`, + ); +} + +/** @internal */ +export const Event12$inboundSchema: z.ZodType = z.object({ + count: z.nullable(z.int()).optional(), + eventTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + firstTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject9$inboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable(z.union([z.lazy(() => Source9$inboundSchema), z.any()])) + .optional(), + type: z.nullable(z.string()).optional(), +}); + +export function event12FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event12$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event12' from JSON`, + ); +} + +/** @internal */ +export const Reason53$inboundSchema: z.ZodEnum = z.enum( + Reason53, +); + +/** @internal */ +export const CollectionIssueSeverity53$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity53 +> = z.enum(CollectionIssueSeverity53); + +/** @internal */ +export const CollectionIssue53$inboundSchema: z.ZodType< + CollectionIssue53, + unknown +> = z.object({ + message: z.string(), + reason: Reason53$inboundSchema, + severity: CollectionIssueSeverity53$inboundSchema, + source: z.string(), +}); + +export function collectionIssue53FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue53$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue53' from JSON`, + ); +} + +/** @internal */ +export const Health53$inboundSchema: z.ZodEnum = z.enum( + Health53, +); + +/** @internal */ +export const Lifecycle53$inboundSchema: z.ZodEnum = z.enum( + Lifecycle53, +); + +/** @internal */ +export const DataStatus53$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue53$inboundSchema)), + health: Health53$inboundSchema, + lifecycle: Lifecycle53$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus53FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus53$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus53' from JSON`, + ); +} + +/** @internal */ +export const DataKubernetesJob$inboundSchema: z.ZodType< + DataKubernetesJob, + unknown +> = z.object({ + active: z.nullable(z.int()).optional(), + completionTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + conditionCount: z.int(), + events: z.array(z.lazy(() => Event12$inboundSchema)), + failed: z.nullable(z.int()).optional(), + imageDigest: z.nullable(z.string()).optional(), + jobName: z.string(), + namespace: z.string(), + startTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + status: z.lazy(() => DataStatus53$inboundSchema), + succeeded: z.nullable(z.int()).optional(), + backend: z.literal("kubernetesJob"), +}); + +export function dataKubernetesJobFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataKubernetesJob$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataKubernetesJob' from JSON`, + ); +} + +/** @internal */ +export const Reason52$inboundSchema: z.ZodEnum = z.enum( + Reason52, +); + +/** @internal */ +export const CollectionIssueSeverity52$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity52 +> = z.enum(CollectionIssueSeverity52); + +/** @internal */ +export const CollectionIssue52$inboundSchema: z.ZodType< + CollectionIssue52, + unknown +> = z.object({ + message: z.string(), + reason: Reason52$inboundSchema, + severity: CollectionIssueSeverity52$inboundSchema, + source: z.string(), +}); + +export function collectionIssue52FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue52$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue52' from JSON`, + ); +} + +/** @internal */ +export const Health52$inboundSchema: z.ZodEnum = z.enum( + Health52, +); + +/** @internal */ +export const Lifecycle52$inboundSchema: z.ZodEnum = z.enum( + Lifecycle52, +); + +/** @internal */ +export const DataStatus52$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue52$inboundSchema)), + health: Health52$inboundSchema, + lifecycle: Lifecycle52$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus52FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus52$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus52' from JSON`, + ); +} + +/** @internal */ +export const DataAzureContainerApps2$inboundSchema: z.ZodType< + DataAzureContainerApps2, + unknown +> = z.object({ + environmentVariableCount: z.int(), + managedEnvironmentId: z.string(), + managedIdentityId: z.nullable(z.string()).optional(), + resourceGroupName: z.string(), + resourcePrefix: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus52$inboundSchema), + backend: z.literal("azureContainerApps"), +}); + +export function dataAzureContainerApps2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureContainerApps2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureContainerApps2' from JSON`, + ); +} + +/** @internal */ +export const Reason51$inboundSchema: z.ZodEnum = z.enum( + Reason51, +); + +/** @internal */ +export const CollectionIssueSeverity51$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity51 +> = z.enum(CollectionIssueSeverity51); + +/** @internal */ +export const CollectionIssue51$inboundSchema: z.ZodType< + CollectionIssue51, + unknown +> = z.object({ + message: z.string(), + reason: Reason51$inboundSchema, + severity: CollectionIssueSeverity51$inboundSchema, + source: z.string(), +}); + +export function collectionIssue51FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue51$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue51' from JSON`, + ); +} + +/** @internal */ +export const Health51$inboundSchema: z.ZodEnum = z.enum( + Health51, +); + +/** @internal */ +export const Lifecycle51$inboundSchema: z.ZodEnum = z.enum( + Lifecycle51, +); + +/** @internal */ +export const DataStatus51$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue51$inboundSchema)), + health: Health51$inboundSchema, + lifecycle: Lifecycle51$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus51FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus51$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus51' from JSON`, + ); +} + +/** @internal */ +export const DataGcpCloudBuild$inboundSchema: z.ZodType< + DataGcpCloudBuild, + unknown +> = z.object({ + buildConfigId: z.string(), + environmentVariableCount: z.int(), + location: z.string(), + projectId: z.string(), + serviceAccount: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus51$inboundSchema), + backend: z.literal("gcpCloudBuild"), +}); + +export function dataGcpCloudBuildFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpCloudBuild$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpCloudBuild' from JSON`, + ); +} + +/** @internal */ +export const Reason50$inboundSchema: z.ZodEnum = z.enum( + Reason50, +); + +/** @internal */ +export const CollectionIssueSeverity50$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity50 +> = z.enum(CollectionIssueSeverity50); + +/** @internal */ +export const CollectionIssue50$inboundSchema: z.ZodType< + CollectionIssue50, + unknown +> = z.object({ + message: z.string(), + reason: Reason50$inboundSchema, + severity: CollectionIssueSeverity50$inboundSchema, + source: z.string(), +}); + +export function collectionIssue50FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue50$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue50' from JSON`, + ); +} + +/** @internal */ +export const Health50$inboundSchema: z.ZodEnum = z.enum( + Health50, +); + +/** @internal */ +export const Lifecycle50$inboundSchema: z.ZodEnum = z.enum( + Lifecycle50, +); + +/** @internal */ +export const DataStatus50$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue50$inboundSchema)), + health: Health50$inboundSchema, + lifecycle: Lifecycle50$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus50FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus50$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus50' from JSON`, + ); +} + +/** @internal */ +export const DataAwsCodeBuild$inboundSchema: z.ZodType< + DataAwsCodeBuild, + unknown +> = z.object({ + artifactsEncryptionDisabled: z.nullable(z.boolean()).optional(), + artifactsType: z.nullable(z.string()).optional(), + cloudWatchLogsStatus: z.nullable(z.string()).optional(), + computeType: z.nullable(z.string()).optional(), + created: z.nullable(z.number()).optional(), + description: z.nullable(z.string()).optional(), + encryptionKeyPresent: z.boolean(), + environmentImage: z.nullable(z.string()).optional(), + environmentType: z.nullable(z.string()).optional(), + environmentVariableCount: z.int(), + imagePullCredentialsType: z.nullable(z.string()).optional(), + lastModified: z.nullable(z.number()).optional(), + privilegedMode: z.nullable(z.boolean()).optional(), + projectArn: z.nullable(z.string()).optional(), + projectName: z.string(), + queuedTimeoutInMinutes: z.nullable(z.int()).optional(), + s3LogsStatus: z.nullable(z.string()).optional(), + serviceRolePresent: z.boolean(), + sourceType: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus50$inboundSchema), + timeoutInMinutes: z.nullable(z.int()).optional(), + backend: z.literal("awsCodeBuild"), +}); + +export function dataAwsCodeBuildFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsCodeBuild$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsCodeBuild' from JSON`, + ); +} + +/** @internal */ +export const DataUnion13$inboundSchema: z.ZodType = z + .union([ + z.lazy(() => DataAwsCodeBuild$inboundSchema), + z.lazy(() => DataGcpCloudBuild$inboundSchema), + z.lazy(() => DataAzureContainerApps2$inboundSchema), + z.lazy(() => DataKubernetesJob$inboundSchema), + ]); + +export function dataUnion13FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion13$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion13' from JSON`, + ); +} + +/** @internal */ +export const DataBuild$inboundSchema: z.ZodType = z.object({ + data: z.union([ + z.lazy(() => DataAwsCodeBuild$inboundSchema), + z.lazy(() => DataGcpCloudBuild$inboundSchema), + z.lazy(() => DataAzureContainerApps2$inboundSchema), + z.lazy(() => DataKubernetesJob$inboundSchema), + ]), + resourceType: z.literal("build"), +}); + +export function dataBuildFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataBuild$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataBuild' from JSON`, + ); +} + +/** @internal */ +export const Reason49$inboundSchema: z.ZodEnum = z.enum( + Reason49, +); + +/** @internal */ +export const CollectionIssueSeverity49$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity49 +> = z.enum(CollectionIssueSeverity49); + +/** @internal */ +export const CollectionIssue49$inboundSchema: z.ZodType< + CollectionIssue49, + unknown +> = z.object({ + message: z.string(), + reason: Reason49$inboundSchema, + severity: CollectionIssueSeverity49$inboundSchema, + source: z.string(), +}); + +export function collectionIssue49FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue49$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue49' from JSON`, + ); +} + +/** @internal */ +export const Health49$inboundSchema: z.ZodEnum = z.enum( + Health49, +); + +/** @internal */ +export const Lifecycle49$inboundSchema: z.ZodEnum = z.enum( + Lifecycle49, +); + +/** @internal */ +export const DataStatus49$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue49$inboundSchema)), + health: Health49$inboundSchema, + lifecycle: Lifecycle49$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus49FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus49$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus49' from JSON`, + ); +} + +/** @internal */ +export const DataLocal10$inboundSchema: z.ZodType = z + .object({ + reachable: z.boolean(), + registryUrl: z.string(), + status: z.lazy(() => DataStatus49$inboundSchema), + backend: z.literal("local"), + }); + +export function dataLocal10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataLocal10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataLocal10' from JSON`, + ); +} + +/** @internal */ +export const Reason48$inboundSchema: z.ZodEnum = z.enum( + Reason48, +); + +/** @internal */ +export const CollectionIssueSeverity48$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity48 +> = z.enum(CollectionIssueSeverity48); + +/** @internal */ +export const CollectionIssue48$inboundSchema: z.ZodType< + CollectionIssue48, + unknown +> = z.object({ + message: z.string(), + reason: Reason48$inboundSchema, + severity: CollectionIssueSeverity48$inboundSchema, + source: z.string(), +}); + +export function collectionIssue48FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue48$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue48' from JSON`, + ); +} + +/** @internal */ +export const Health48$inboundSchema: z.ZodEnum = z.enum( + Health48, +); + +/** @internal */ +export const Lifecycle48$inboundSchema: z.ZodEnum = z.enum( + Lifecycle48, +); + +/** @internal */ +export const DataStatus48$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue48$inboundSchema)), + health: Health48$inboundSchema, + lifecycle: Lifecycle48$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus48FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus48$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus48' from JSON`, + ); +} + +/** @internal */ +export const DataAzureContainerRegistry$inboundSchema: z.ZodType< + DataAzureContainerRegistry, + unknown +> = z.object({ + adminUserEnabled: z.boolean(), + anonymousPullEnabled: z.boolean(), + creationDate: z.nullable(z.string()).optional(), + dataEndpointEnabled: z.nullable(z.boolean()).optional(), + dataEndpointHostNames: z.array(z.string()), + encryptionKeyIdentifierPresent: z.boolean(), + encryptionKeyVaultUriPresent: z.boolean(), + encryptionStatus: z.nullable(z.string()).optional(), + ipRuleCount: z.int(), + location: z.string(), + loginServer: z.nullable(z.string()).optional(), + managedTagCount: z.int(), + name: z.string(), + networkRuleBypassOptions: z.string(), + networkRuleDefaultAction: z.nullable(z.string()).optional(), + policiesPresent: z.boolean(), + policyCount: z.int(), + privateEndpointConnectionCount: z.int(), + provisioningState: z.nullable(z.string()).optional(), + publicNetworkAccess: z.string(), + resourceGroup: z.string(), + resourceId: z.nullable(z.string()).optional(), + skuName: z.string(), + skuTier: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus48$inboundSchema), + type: z.nullable(z.string()).optional(), + zoneRedundancy: z.string(), + backend: z.literal("azureContainerRegistry"), +}); + +export function dataAzureContainerRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureContainerRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureContainerRegistry' from JSON`, + ); +} + +/** @internal */ +export const Reason47$inboundSchema: z.ZodEnum = z.enum( + Reason47, +); + +/** @internal */ +export const CollectionIssueSeverity47$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity47 +> = z.enum(CollectionIssueSeverity47); + +/** @internal */ +export const CollectionIssue47$inboundSchema: z.ZodType< + CollectionIssue47, + unknown +> = z.object({ + message: z.string(), + reason: Reason47$inboundSchema, + severity: CollectionIssueSeverity47$inboundSchema, + source: z.string(), +}); + +export function collectionIssue47FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue47$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue47' from JSON`, + ); +} + +/** @internal */ +export const Health47$inboundSchema: z.ZodEnum = z.enum( + Health47, +); + +/** @internal */ +export const Lifecycle47$inboundSchema: z.ZodEnum = z.enum( + Lifecycle47, +); + +/** @internal */ +export const DataStatus47$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue47$inboundSchema)), + health: Health47$inboundSchema, + lifecycle: Lifecycle47$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus47FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus47$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus47' from JSON`, + ); +} + +/** @internal */ +export const DataGcpArtifactRegistry$inboundSchema: z.ZodType< + DataGcpArtifactRegistry, + unknown +> = z.object({ + cleanupPolicyCount: z.int(), + cleanupPolicyDryRun: z.nullable(z.boolean()).optional(), + createTime: z.nullable(z.string()).optional(), + description: z.nullable(z.string()).optional(), + format: z.nullable(z.string()).optional(), + iamBindingCount: z.int(), + iamPolicyEtagPresent: z.boolean(), + iamRoles: z.array(z.string()), + kmsKeyNamePresent: z.boolean(), + labelCount: z.int(), + location: z.string(), + mode: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + projectId: z.string(), + pullServiceAccountEmail: z.nullable(z.string()).optional(), + pushServiceAccountEmail: z.nullable(z.string()).optional(), + repositoryId: z.string(), + satisfiesPzs: z.nullable(z.boolean()).optional(), + sizeBytes: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus47$inboundSchema), + updateTime: z.nullable(z.string()).optional(), + backend: z.literal("gcpArtifactRegistry"), +}); + +export function dataGcpArtifactRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpArtifactRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpArtifactRegistry' from JSON`, + ); +} + +/** @internal */ +export const Repository$inboundSchema: z.ZodType = z + .object({ + createdAt: z.number(), + encryptionType: z.nullable(z.string()).optional(), + imageTagMutability: z.nullable(z.string()).optional(), + kmsKeyPresent: z.boolean(), + registryId: z.string(), + repositoryArn: z.string(), + repositoryName: z.string(), + repositoryUri: z.string(), + scanOnPush: z.nullable(z.boolean()).optional(), + }); + +export function repositoryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Repository$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Repository' from JSON`, + ); +} + +/** @internal */ +export const Reason46$inboundSchema: z.ZodEnum = z.enum( + Reason46, +); + +/** @internal */ +export const CollectionIssueSeverity46$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity46 +> = z.enum(CollectionIssueSeverity46); + +/** @internal */ +export const CollectionIssue46$inboundSchema: z.ZodType< + CollectionIssue46, + unknown +> = z.object({ + message: z.string(), + reason: Reason46$inboundSchema, + severity: CollectionIssueSeverity46$inboundSchema, + source: z.string(), +}); + +export function collectionIssue46FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue46$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue46' from JSON`, + ); +} + +/** @internal */ +export const Health46$inboundSchema: z.ZodEnum = z.enum( + Health46, +); + +/** @internal */ +export const Lifecycle46$inboundSchema: z.ZodEnum = z.enum( + Lifecycle46, +); + +/** @internal */ +export const DataStatus46$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue46$inboundSchema)), + health: Health46$inboundSchema, + lifecycle: Lifecycle46$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus46FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus46$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus46' from JSON`, + ); +} + +/** @internal */ +export const DataAwsEcr$inboundSchema: z.ZodType = z + .object({ + pullRoleArn: z.nullable(z.string()).optional(), + pushRoleArn: z.nullable(z.string()).optional(), + region: z.string(), + registryId: z.string(), + registryUri: z.string(), + repositories: z.array(z.lazy(() => Repository$inboundSchema)), + repositoriesTruncated: z.boolean(), + repositoryCount: z.int(), + repositoryPrefix: z.string(), + status: z.lazy(() => DataStatus46$inboundSchema), + backend: z.literal("awsEcr"), + }); + +export function dataAwsEcrFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsEcr$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsEcr' from JSON`, + ); +} + +/** @internal */ +export const DataUnion12$inboundSchema: z.ZodType = z + .union([ + z.lazy(() => DataAwsEcr$inboundSchema), + z.lazy(() => DataGcpArtifactRegistry$inboundSchema), + z.lazy(() => DataAzureContainerRegistry$inboundSchema), + z.lazy(() => DataLocal10$inboundSchema), + ]); + +export function dataUnion12FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion12$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion12' from JSON`, + ); +} + +/** @internal */ +export const DataArtifactRegistry$inboundSchema: z.ZodType< + DataArtifactRegistry, + unknown +> = z.object({ + data: z.union([ + z.lazy(() => DataAwsEcr$inboundSchema), + z.lazy(() => DataGcpArtifactRegistry$inboundSchema), + z.lazy(() => DataAzureContainerRegistry$inboundSchema), + z.lazy(() => DataLocal10$inboundSchema), + ]), + resourceType: z.literal("artifact-registry"), +}); + +export function dataArtifactRegistryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataArtifactRegistry$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataArtifactRegistry' from JSON`, + ); +} + +/** @internal */ +export const Reason45$inboundSchema: z.ZodEnum = z.enum( + Reason45, +); + +/** @internal */ +export const CollectionIssueSeverity45$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity45 +> = z.enum(CollectionIssueSeverity45); + +/** @internal */ +export const CollectionIssue45$inboundSchema: z.ZodType< + CollectionIssue45, + unknown +> = z.object({ + message: z.string(), + reason: Reason45$inboundSchema, + severity: CollectionIssueSeverity45$inboundSchema, + source: z.string(), +}); + +export function collectionIssue45FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue45$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue45' from JSON`, + ); +} + +/** @internal */ +export const Health45$inboundSchema: z.ZodEnum = z.enum( + Health45, +); + +/** @internal */ +export const Lifecycle45$inboundSchema: z.ZodEnum = z.enum( + Lifecycle45, +); + +/** @internal */ +export const DataStatus45$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue45$inboundSchema)), + health: Health45$inboundSchema, + lifecycle: Lifecycle45$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus45FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus45$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus45' from JSON`, + ); +} + +/** @internal */ +export const DataAzureManagedIdentity2$inboundSchema: z.ZodType< + DataAzureManagedIdentity2, + unknown +> = z.object({ + ficName: z.nullable(z.string()).optional(), + roleAssignmentIds: z.array(z.string()), + roleDefinitionId: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus45$inboundSchema), + tenantId: z.nullable(z.string()).optional(), + uamiClientId: z.nullable(z.string()).optional(), + uamiPrincipalId: z.nullable(z.string()).optional(), + uamiResourceId: z.nullable(z.string()).optional(), + backend: z.literal("azureManagedIdentity"), +}); + +export function dataAzureManagedIdentity2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzureManagedIdentity2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzureManagedIdentity2' from JSON`, + ); +} + +/** @internal */ +export const Reason44$inboundSchema: z.ZodEnum = z.enum( + Reason44, +); + +/** @internal */ +export const CollectionIssueSeverity44$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity44 +> = z.enum(CollectionIssueSeverity44); + +/** @internal */ +export const CollectionIssue44$inboundSchema: z.ZodType< + CollectionIssue44, + unknown +> = z.object({ + message: z.string(), + reason: Reason44$inboundSchema, + severity: CollectionIssueSeverity44$inboundSchema, + source: z.string(), +}); + +export function collectionIssue44FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue44$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue44' from JSON`, + ); +} + +/** @internal */ +export const Health44$inboundSchema: z.ZodEnum = z.enum( + Health44, +); + +/** @internal */ +export const Lifecycle44$inboundSchema: z.ZodEnum = z.enum( + Lifecycle44, +); + +/** @internal */ +export const DataStatus44$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue44$inboundSchema)), + health: Health44$inboundSchema, + lifecycle: Lifecycle44$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus44FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus44$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus44' from JSON`, + ); +} + +/** @internal */ +export const DataGcpServiceAccount2$inboundSchema: z.ZodType< + DataGcpServiceAccount2, + unknown +> = z.object({ + impersonationGranted: z.boolean(), + roleBound: z.boolean(), + serviceAccountEmail: z.nullable(z.string()).optional(), + serviceAccountUniqueId: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus44$inboundSchema), + backend: z.literal("gcpServiceAccount"), +}); + +export function dataGcpServiceAccount2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcpServiceAccount2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcpServiceAccount2' from JSON`, + ); +} + +/** @internal */ +export const Reason43$inboundSchema: z.ZodEnum = z.enum( + Reason43, +); + +/** @internal */ +export const CollectionIssueSeverity43$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity43 +> = z.enum(CollectionIssueSeverity43); + +/** @internal */ +export const CollectionIssue43$inboundSchema: z.ZodType< + CollectionIssue43, + unknown +> = z.object({ + message: z.string(), + reason: Reason43$inboundSchema, + severity: CollectionIssueSeverity43$inboundSchema, + source: z.string(), +}); + +export function collectionIssue43FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue43$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue43' from JSON`, + ); +} + +/** @internal */ +export const Health43$inboundSchema: z.ZodEnum = z.enum( + Health43, +); + +/** @internal */ +export const Lifecycle43$inboundSchema: z.ZodEnum = z.enum( + Lifecycle43, +); + +/** @internal */ +export const DataStatus43$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue43$inboundSchema)), + health: Health43$inboundSchema, + lifecycle: Lifecycle43$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus43FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus43$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus43' from JSON`, + ); +} + +/** @internal */ +export const DataAwsIamRole2$inboundSchema: z.ZodType< + DataAwsIamRole2, + unknown +> = z.object({ + managementPermissionsApplied: z.boolean(), + roleArn: z.nullable(z.string()).optional(), + roleName: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus43$inboundSchema), + backend: z.literal("awsIamRole"), +}); + +export function dataAwsIamRole2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAwsIamRole2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAwsIamRole2' from JSON`, + ); +} + +/** @internal */ +export const DataUnion11$inboundSchema: z.ZodType = z + .union([ + z.lazy(() => DataAwsIamRole2$inboundSchema), + z.lazy(() => DataGcpServiceAccount2$inboundSchema), + z.lazy(() => DataAzureManagedIdentity2$inboundSchema), + ]); + +export function dataUnion11FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion11$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion11' from JSON`, + ); +} + +/** @internal */ +export const DataRemoteStackManagement$inboundSchema: z.ZodType< + DataRemoteStackManagement, + unknown +> = z.object({ + data: z.union([ + z.lazy(() => DataAwsIamRole2$inboundSchema), + z.lazy(() => DataGcpServiceAccount2$inboundSchema), + z.lazy(() => DataAzureManagedIdentity2$inboundSchema), + ]), + resourceType: z.literal("remote-stack-management"), +}); + +export function dataRemoteStackManagementFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataRemoteStackManagement$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataRemoteStackManagement' from JSON`, + ); +} + +/** @internal */ +export const Reason42$inboundSchema: z.ZodEnum = z.enum( + Reason42, +); + +/** @internal */ +export const CollectionIssueSeverity42$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity42 +> = z.enum(CollectionIssueSeverity42); + +/** @internal */ +export const CollectionIssue42$inboundSchema: z.ZodType< + CollectionIssue42, + unknown +> = z.object({ + message: z.string(), + reason: Reason42$inboundSchema, + severity: CollectionIssueSeverity42$inboundSchema, + source: z.string(), +}); + +export function collectionIssue42FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue42$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue42' from JSON`, + ); +} + +/** @internal */ +export const Health42$inboundSchema: z.ZodEnum = z.enum( + Health42, +); diff --git a/client-sdks/platform/typescript/src/models/operations/index.ts b/client-sdks/platform/typescript/src/models/operations/index.ts index 41a609853..d088b924b 100644 --- a/client-sdks/platform/typescript/src/models/operations/index.ts +++ b/client-sdks/platform/typescript/src/models/operations/index.ts @@ -5,6 +5,7 @@ export * from "./addworkspacemember.js"; export * from "./cancelmanagersetup.js"; export * from "./cancelpackage.js"; +export * from "./cpuunion10.js"; export * from "./createapikey.js"; export * from "./createcommand.js"; export * from "./createdebugsession.js"; @@ -14,6 +15,7 @@ export * from "./createdeploymentgrouptoken.js"; export * from "./createdeploymenttoken.js"; export * from "./createdomain.js"; export * from "./createdomainendpoint.js"; +export * from "./createfirstpartydeploymentsession.js"; export * from "./createmanager.js"; export * from "./createproject.js"; export * from "./createprojectfromtemplate.js"; @@ -51,10 +53,11 @@ export * from "./getprojectdeploymentportaldomain.js"; export * from "./getprojectgcpoauthprovider.js"; export * from "./getprojecttemplateurls.js"; export * from "./getrelease.js"; -export * from "./getresourcedeploymentdetail.js"; +export * from "./getresourcedeploymentdetailresponse.js"; export * from "./getsetupregistrationoperation.js"; export * from "./getworkspace.js"; export * from "./getworkspacebillingentitlements.js"; +export * from "./health42.js"; export * from "./importdeployment.js"; export * from "./listapikeys.js"; export * from "./listbillingauditlog.js"; @@ -82,6 +85,7 @@ export * from "./listresourcedeployments.js"; export * from "./listresourceoverview.js"; export * from "./listworkspacemembers.js"; export * from "./listworkspaces.js"; +export * from "./memory3.js"; export * from "./pindeploymentrelease.js"; export * from "./plandeploymentcompute.js"; export * from "./preparedeploymentstack.js"; @@ -89,6 +93,7 @@ export * from "./provisionmanager.js"; export * from "./rebuildpackages.js"; export * from "./redeploydeployment.js"; export * from "./refreshdomain.js"; +export * from "./rejoindeployment.js"; export * from "./removeworkspacemember.js"; export * from "./reportmanagerheartbeat.js"; export * from "./resolve.js"; @@ -97,6 +102,8 @@ export * from "./retrydeployment.js"; export * from "./retrymanager.js"; export * from "./retrymanagersetup.js"; export * from "./revokeapikey.js"; +export * from "./setdeploymenttargetagentversion.js"; +export * from "./source7.js"; export * from "./syncacquire.js"; export * from "./syncgitnamespaces.js"; export * from "./synclist.js"; diff --git a/client-sdks/platform/typescript/src/models/operations/memory3.ts b/client-sdks/platform/typescript/src/models/operations/memory3.ts new file mode 100644 index 000000000..9de34845f --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/memory3.ts @@ -0,0 +1,3555 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import { + CpuUnion6, + CpuUnion6$inboundSchema, + DataLocal4, + DataLocal4$inboundSchema, + InvolvedObjectUnion7, + InvolvedObjectUnion7$inboundSchema, + Source7, + Source7$inboundSchema, +} from "./source7.js"; + +export type SourceUnion7 = Source7 | any; + +export type Event9 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObjectUnion7 | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: Source7 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit6 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit6 = ClosedEnum; + +export type Memory6 = { + unit: MemoryUnit6; + value: number; +}; + +export type MemoryUnion6 = Memory6 | any; + +export const CpuPodUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuPodUnit3 = ClosedEnum; + +export type CpuPod3 = { + unit: CpuPodUnit3; + value: number; +}; + +export type PodCpuUnion3 = CpuPod3 | any; + +export const MemoryPodUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryPodUnit3 = ClosedEnum; + +export type MemoryPod3 = { + unit: MemoryPodUnit3; + value: number; +}; + +export type PodMemoryUnion3 = MemoryPod3 | any; + +export type OwnerReference3 = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +export type Pod3 = { + cpu?: CpuPod3 | any | null | undefined; + memory?: MemoryPod3 | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas4 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const Reason16 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason16 = ClosedEnum; + +export const CollectionIssueSeverity16 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity16 = ClosedEnum< + typeof CollectionIssueSeverity16 +>; + +export type CollectionIssue16 = { + message: string; + reason: Reason16; + severity: CollectionIssueSeverity16; + source: string; +}; + +export const Health16 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health16 = ClosedEnum; + +export const Lifecycle16 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle16 = ClosedEnum; + +export type DataStatus16 = { + collectionIssues: Array; + health: Health16; + lifecycle: Lifecycle16; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type WorkloadCondition3 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export type Workload3 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion3 = Workload3 | any; + +export type DataKubernetes3 = { + commandSupported: boolean; + cpu?: CpuUnion6 | null | undefined; + events: Array; + memory?: Memory6 | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas4; + restarts?: number | null | undefined; + status: DataStatus16; + workload?: Workload3 | any | null | undefined; + backend: "kubernetes"; +}; + +export const CpuDaemonInstanceUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuDaemonInstanceUnit3 = ClosedEnum; + +export type CpuDaemonInstance3 = { + unit: CpuDaemonInstanceUnit3; + value: number; +}; + +export type DaemonInstanceCpuUnion3 = CpuDaemonInstance3 | any; + +export const MemoryDaemonInstanceUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit3 = ClosedEnum< + typeof MemoryDaemonInstanceUnit3 +>; + +export type MemoryDaemonInstance3 = { + unit: MemoryDaemonInstanceUnit3; + value: number; +}; + +export type DaemonInstanceMemoryUnion3 = MemoryDaemonInstance3 | any; + +export type DaemonInstance3 = { + cpu?: CpuDaemonInstance3 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance3 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type InvolvedObject6 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion6 = InvolvedObject6 | any; + +export type Source6 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion6 = Source6 | any; + +export type Event8 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject6 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: Source6 | any | null | undefined; + type?: string | null | undefined; +}; + +export const Reason15 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason15 = ClosedEnum; + +export const CollectionIssueSeverity15 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity15 = ClosedEnum< + typeof CollectionIssueSeverity15 +>; + +export type CollectionIssue15 = { + message: string; + reason: Reason15; + severity: CollectionIssueSeverity15; + source: string; +}; + +export const Health15 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health15 = ClosedEnum; + +export const Lifecycle15 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle15 = ClosedEnum; + +export type DataStatus15 = { + collectionIssues: Array; + health: Health15; + lifecycle: Lifecycle15; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzure1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName: string; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + status: DataStatus15; + unavailableInstances: number; + backend: "azure"; +}; + +export const CpuDaemonInstanceUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuDaemonInstanceUnit2 = ClosedEnum; + +export type CpuDaemonInstance2 = { + unit: CpuDaemonInstanceUnit2; + value: number; +}; + +export type DaemonInstanceCpuUnion2 = CpuDaemonInstance2 | any; + +export const MemoryDaemonInstanceUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit2 = ClosedEnum< + typeof MemoryDaemonInstanceUnit2 +>; + +export type MemoryDaemonInstance2 = { + unit: MemoryDaemonInstanceUnit2; + value: number; +}; + +export type DaemonInstanceMemoryUnion2 = MemoryDaemonInstance2 | any; + +export type DaemonInstance2 = { + cpu?: CpuDaemonInstance2 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance2 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type InvolvedObject5 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion5 = InvolvedObject5 | any; + +export type Source5 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion5 = Source5 | any; + +export type Event7 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject5 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: Source5 | any | null | undefined; + type?: string | null | undefined; +}; + +export const Reason14 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason14 = ClosedEnum; + +export const CollectionIssueSeverity14 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity14 = ClosedEnum< + typeof CollectionIssueSeverity14 +>; + +export type CollectionIssue14 = { + message: string; + reason: Reason14; + severity: CollectionIssueSeverity14; + source: string; +}; + +export const Health14 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health14 = ClosedEnum; + +export const Lifecycle14 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle14 = ClosedEnum; + +export type DataStatus14 = { + collectionIssues: Array; + health: Health14; + lifecycle: Lifecycle14; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcp1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName: string; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + status: DataStatus14; + unavailableInstances: number; + backend: "gcp"; +}; + +export const CpuDaemonInstanceUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuDaemonInstanceUnit1 = ClosedEnum; + +export type CpuDaemonInstance1 = { + unit: CpuDaemonInstanceUnit1; + value: number; +}; + +export type DaemonInstanceCpuUnion1 = CpuDaemonInstance1 | any; + +export const MemoryDaemonInstanceUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryDaemonInstanceUnit1 = ClosedEnum< + typeof MemoryDaemonInstanceUnit1 +>; + +export type MemoryDaemonInstance1 = { + unit: MemoryDaemonInstanceUnit1; + value: number; +}; + +export type DaemonInstanceMemoryUnion1 = MemoryDaemonInstance1 | any; + +export type DaemonInstance1 = { + cpu?: CpuDaemonInstance1 | any | null | undefined; + ip?: string | null | undefined; + machineId?: string | null | undefined; + memory?: MemoryDaemonInstance1 | any | null | undefined; + message?: string | null | undefined; + metricsHealthy?: boolean | null | undefined; + metricsLastUpdated?: string | null | undefined; + metricsStatus?: string | null | undefined; + name: string; + nodeName?: string | null | undefined; + phase?: string | null | undefined; + ready: boolean; + reason?: string | null | undefined; + replicaId: string; + restartCount?: number | null | undefined; + status?: string | null | undefined; + terminatedReason?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type InvolvedObject4 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion4 = InvolvedObject4 | any; + +export type Source4 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion4 = Source4 | any; + +export type Event6 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject4 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: Source4 | any | null | undefined; + type?: string | null | undefined; +}; + +export const Reason13 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason13 = ClosedEnum; + +export const CollectionIssueSeverity13 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity13 = ClosedEnum< + typeof CollectionIssueSeverity13 +>; + +export type CollectionIssue13 = { + message: string; + reason: Reason13; + severity: CollectionIssueSeverity13; + source: string; +}; + +export const Health13 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health13 = ClosedEnum; + +export const Lifecycle13 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle13 = ClosedEnum; + +export type DataStatus13 = { + collectionIssues: Array; + health: Health13; + lifecycle: Lifecycle13; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAws1 = { + assignedMachines: number; + capacityGroup: string; + commandSupported: boolean; + daemonInstances: Array; + daemonName: string; + desiredMachines: number; + events: Array; + healthyInstances: number; + horizonClusterId: string; + horizonStatus: string; + horizonStatusMessage?: string | null | undefined; + horizonStatusReason?: string | null | undefined; + latestUpdateTimestamp: string; + status: DataStatus13; + unavailableInstances: number; + backend: "aws"; +}; + +export type DataUnion4 = + | DataAws1 + | DataGcp1 + | DataAzure1 + | DataKubernetes3 + | DataLocal4; + +export type DataDaemon = { + data: DataAws1 | DataGcp1 | DataAzure1 | DataKubernetes3 | DataLocal4; + resourceType: "daemon"; +}; + +export const ContainerUnitCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ContainerUnitCpuUnit = ClosedEnum; + +export type ContainerUnitCpu = { + unit: ContainerUnitCpuUnit; + value: number; +}; + +export type ContainerUnitCpuUnion = ContainerUnitCpu | any; + +export const ContainerUnitKind = { + Container: "container", + Process: "process", + Daemon: "daemon", +} as const; +export type ContainerUnitKind = ClosedEnum; + +export const ContainerUnitMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type ContainerUnitMemoryUnit = ClosedEnum< + typeof ContainerUnitMemoryUnit +>; + +export type ContainerUnitMemory = { + unit: ContainerUnitMemoryUnit; + value: number; +}; + +export type ContainerUnitMemoryUnion = ContainerUnitMemory | any; + +export type ContainerUnit = { + cpu?: ContainerUnitCpu | any | null | undefined; + kind: ContainerUnitKind; + memory?: ContainerUnitMemory | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +export type ContainerUnitUnion = ContainerUnit | any; + +export const CpuUnit5 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit5 = ClosedEnum; + +export type Cpu5 = { + unit: CpuUnit5; + value: number; +}; + +export type CpuUnion5 = Cpu5 | any; + +export const EventSeverity2 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type EventSeverity2 = ClosedEnum; + +export type Subject2 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +export type SubjectUnion2 = Subject2 | any; + +export type Event5 = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: EventSeverity2; + subject?: Subject2 | any | null | undefined; + timestamp: Date; +}; + +export const MemoryUnit5 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit5 = ClosedEnum; + +export type Memory5 = { + unit: MemoryUnit5; + value: number; +}; + +export type MemoryUnion5 = Memory5 | any; + +export const Reason12 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason12 = ClosedEnum; + +export const CollectionIssueSeverity12 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity12 = ClosedEnum< + typeof CollectionIssueSeverity12 +>; + +export type CollectionIssue12 = { + message: string; + reason: Reason12; + severity: CollectionIssueSeverity12; + source: string; +}; + +export const Health12 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health12 = ClosedEnum; + +export const Lifecycle12 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle12 = ClosedEnum; + +export type DataStatus12 = { + collectionIssues: Array; + health: Health12; + lifecycle: Lifecycle12; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal3 = { + bindMountCount: number; + containerId?: string | null | undefined; + containerUnit?: ContainerUnit | any | null | undefined; + cpu?: Cpu5 | any | null | undefined; + events: Array; + image?: string | null | undefined; + localUrl?: string | null | undefined; + memory?: Memory5 | any | null | undefined; + name?: string | null | undefined; + portCount: number; + restartCount?: number | null | undefined; + runtimeReachable: boolean; + runtimeStatus?: string | null | undefined; + status: DataStatus12; + backend: "local"; +}; + +export const CpuUnit4 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit4 = ClosedEnum; + +export type Cpu4 = { + unit: CpuUnit4; + value: number; +}; + +export type CpuUnion4 = Cpu4 | any; + +export type InvolvedObject3 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion3 = InvolvedObject3 | any; + +export type Source3 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion3 = Source3 | any; + +export type Event4 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject3 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: Source3 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit4 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit4 = ClosedEnum; + +export type Memory4 = { + unit: MemoryUnit4; + value: number; +}; + +export type MemoryUnion4 = Memory4 | any; + +export const CpuPodUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuPodUnit2 = ClosedEnum; + +export type CpuPod2 = { + unit: CpuPodUnit2; + value: number; +}; + +export type PodCpuUnion2 = CpuPod2 | any; + +export const MemoryPodUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryPodUnit2 = ClosedEnum; + +export type MemoryPod2 = { + unit: MemoryPodUnit2; + value: number; +}; + +export type PodMemoryUnion2 = MemoryPod2 | any; + +export type OwnerReference2 = { + controller: boolean; + kind: string; + name: string; + uid: string; +}; + +export type Pod2 = { + cpu?: CpuPod2 | any | null | undefined; + memory?: MemoryPod2 | any | null | undefined; + name: string; + nodeName?: string | null | undefined; + ownerReferences: Array; + phase?: string | null | undefined; + podIp?: string | null | undefined; + ready: boolean; + restartCount: number; + terminatedReason?: string | null | undefined; + uid?: string | null | undefined; + waitingReason?: string | null | undefined; +}; + +export type Replicas3 = { + available?: number | null | undefined; + current?: number | null | undefined; + desired?: number | null | undefined; + misscheduled?: number | null | undefined; + ready?: number | null | undefined; + updated?: number | null | undefined; +}; + +export const Reason11 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason11 = ClosedEnum; + +export const CollectionIssueSeverity11 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity11 = ClosedEnum< + typeof CollectionIssueSeverity11 +>; + +export type CollectionIssue11 = { + message: string; + reason: Reason11; + severity: CollectionIssueSeverity11; + source: string; +}; + +export const Health11 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health11 = ClosedEnum; + +export const Lifecycle11 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle11 = ClosedEnum; + +export type DataStatus11 = { + collectionIssues: Array; + health: Health11; + lifecycle: Lifecycle11; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type WorkloadCondition2 = { + lastTransitionTime?: Date | null | undefined; + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export type Workload2 = { + availableReplicas?: number | null | undefined; + conditions: Array; + desiredGeneration?: number | null | undefined; + desiredReplicas?: number | null | undefined; + observedGeneration?: number | null | undefined; + readyReplicas?: number | null | undefined; + rolloutReason?: string | null | undefined; + updatedReplicas?: number | null | undefined; +}; + +export type WorkloadUnion2 = Workload2 | any; + +export const WorkloadKind2 = { + Deployment: "deployment", + StatefulSet: "statefulSet", + DaemonSet: "daemonSet", + ReplicaSet: "replicaSet", + Pod: "pod", +} as const; +export type WorkloadKind2 = ClosedEnum; + +export type DataKubernetes2 = { + cpu?: Cpu4 | any | null | undefined; + events: Array; + memory?: Memory4 | any | null | undefined; + name: string; + namespace: string; + pods: Array; + replicas: Replicas3; + restarts?: number | null | undefined; + status: DataStatus11; + workload?: Workload2 | any | null | undefined; + workloadKind: WorkloadKind2; + backend: "kubernetes"; +}; + +export const CpuUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit3 = ClosedEnum; + +export type Cpu3 = { + unit: CpuUnit3; + value: number; +}; + +export type CpuUnion3 = Cpu3 | any; + +export type InvolvedObject2 = { + details?: any | null | undefined; + id?: string | null | undefined; + kind?: string | null | undefined; + machineId?: string | null | undefined; + name?: string | null | undefined; + replicaId?: string | null | undefined; +}; + +export type InvolvedObjectUnion2 = InvolvedObject2 | any; + +export type Source2 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion2 = Source2 | any; + +export type Event3 = { + count?: number | null | undefined; + details?: any | null | undefined; + eventId?: string | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject2 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: Source2 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit3 = ClosedEnum; + +export type Memory3 = { + unit: MemoryUnit3; + value: number; +}; + +/** @internal */ +export const SourceUnion7$inboundSchema: z.ZodType = z + .union([Source7$inboundSchema, z.any()]); + +export function sourceUnion7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SourceUnion7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceUnion7' from JSON`, + ); +} + +/** @internal */ +export const Event9$inboundSchema: z.ZodType = z.object({ + count: z.nullable(z.int()).optional(), + eventTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + firstTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + involvedObject: z.nullable(InvolvedObjectUnion7$inboundSchema).optional(), + lastTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable(z.union([Source7$inboundSchema, z.any()])).optional(), + type: z.nullable(z.string()).optional(), +}); + +export function event9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event9' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnit6$inboundSchema: z.ZodEnum = z.enum( + MemoryUnit6, +); + +/** @internal */ +export const Memory6$inboundSchema: z.ZodType = z.object({ + unit: MemoryUnit6$inboundSchema, + value: z.number(), +}); + +export function memory6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Memory6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Memory6' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnion6$inboundSchema: z.ZodType = z + .union([z.lazy(() => Memory6$inboundSchema), z.any()]); + +export function memoryUnion6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryUnion6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryUnion6' from JSON`, + ); +} + +/** @internal */ +export const CpuPodUnit3$inboundSchema: z.ZodEnum = z.enum( + CpuPodUnit3, +); + +/** @internal */ +export const CpuPod3$inboundSchema: z.ZodType = z.object({ + unit: CpuPodUnit3$inboundSchema, + value: z.number(), +}); + +export function cpuPod3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuPod3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuPod3' from JSON`, + ); +} + +/** @internal */ +export const PodCpuUnion3$inboundSchema: z.ZodType = z + .union([z.lazy(() => CpuPod3$inboundSchema), z.any()]); + +export function podCpuUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PodCpuUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PodCpuUnion3' from JSON`, + ); +} + +/** @internal */ +export const MemoryPodUnit3$inboundSchema: z.ZodEnum = z + .enum(MemoryPodUnit3); + +/** @internal */ +export const MemoryPod3$inboundSchema: z.ZodType = z + .object({ + unit: MemoryPodUnit3$inboundSchema, + value: z.number(), + }); + +export function memoryPod3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryPod3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryPod3' from JSON`, + ); +} + +/** @internal */ +export const PodMemoryUnion3$inboundSchema: z.ZodType< + PodMemoryUnion3, + unknown +> = z.union([z.lazy(() => MemoryPod3$inboundSchema), z.any()]); + +export function podMemoryUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PodMemoryUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PodMemoryUnion3' from JSON`, + ); +} + +/** @internal */ +export const OwnerReference3$inboundSchema: z.ZodType< + OwnerReference3, + unknown +> = z.object({ + controller: z.boolean(), + kind: z.string(), + name: z.string(), + uid: z.string(), +}); + +export function ownerReference3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OwnerReference3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OwnerReference3' from JSON`, + ); +} + +/** @internal */ +export const Pod3$inboundSchema: z.ZodType = z.object({ + cpu: z.nullable(z.union([z.lazy(() => CpuPod3$inboundSchema), z.any()])) + .optional(), + memory: z.nullable(z.union([z.lazy(() => MemoryPod3$inboundSchema), z.any()])) + .optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + ownerReferences: z.array(z.lazy(() => OwnerReference3$inboundSchema)), + phase: z.nullable(z.string()).optional(), + podIp: z.nullable(z.string()).optional(), + ready: z.boolean(), + restartCount: z.int(), + terminatedReason: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function pod3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Pod3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Pod3' from JSON`, + ); +} + +/** @internal */ +export const Replicas4$inboundSchema: z.ZodType = z.object({ + available: z.nullable(z.int()).optional(), + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + misscheduled: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + updated: z.nullable(z.int()).optional(), +}); + +export function replicas4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Replicas4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Replicas4' from JSON`, + ); +} + +/** @internal */ +export const Reason16$inboundSchema: z.ZodEnum = z.enum( + Reason16, +); + +/** @internal */ +export const CollectionIssueSeverity16$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity16 +> = z.enum(CollectionIssueSeverity16); + +/** @internal */ +export const CollectionIssue16$inboundSchema: z.ZodType< + CollectionIssue16, + unknown +> = z.object({ + message: z.string(), + reason: Reason16$inboundSchema, + severity: CollectionIssueSeverity16$inboundSchema, + source: z.string(), +}); + +export function collectionIssue16FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue16$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue16' from JSON`, + ); +} + +/** @internal */ +export const Health16$inboundSchema: z.ZodEnum = z.enum( + Health16, +); + +/** @internal */ +export const Lifecycle16$inboundSchema: z.ZodEnum = z.enum( + Lifecycle16, +); + +/** @internal */ +export const DataStatus16$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue16$inboundSchema)), + health: Health16$inboundSchema, + lifecycle: Lifecycle16$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus16FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus16$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus16' from JSON`, + ); +} + +/** @internal */ +export const WorkloadCondition3$inboundSchema: z.ZodType< + WorkloadCondition3, + unknown +> = z.object({ + lastTransitionTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.nullable(z.string()).optional(), + reason: z.nullable(z.string()).optional(), + status: z.string(), + type: z.string(), +}); + +export function workloadCondition3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => WorkloadCondition3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'WorkloadCondition3' from JSON`, + ); +} + +/** @internal */ +export const Workload3$inboundSchema: z.ZodType = z.object({ + availableReplicas: z.nullable(z.int()).optional(), + conditions: z.array(z.lazy(() => WorkloadCondition3$inboundSchema)), + desiredGeneration: z.nullable(z.int()).optional(), + desiredReplicas: z.nullable(z.int()).optional(), + observedGeneration: z.nullable(z.int()).optional(), + readyReplicas: z.nullable(z.int()).optional(), + rolloutReason: z.nullable(z.string()).optional(), + updatedReplicas: z.nullable(z.int()).optional(), +}); + +export function workload3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Workload3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Workload3' from JSON`, + ); +} + +/** @internal */ +export const WorkloadUnion3$inboundSchema: z.ZodType = + z.union([z.lazy(() => Workload3$inboundSchema), z.any()]); + +export function workloadUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => WorkloadUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'WorkloadUnion3' from JSON`, + ); +} + +/** @internal */ +export const DataKubernetes3$inboundSchema: z.ZodType< + DataKubernetes3, + unknown +> = z.object({ + commandSupported: z.boolean(), + cpu: z.nullable(CpuUnion6$inboundSchema).optional(), + events: z.array(z.lazy(() => Event9$inboundSchema)), + memory: z.nullable(z.union([z.lazy(() => Memory6$inboundSchema), z.any()])) + .optional(), + name: z.string(), + namespace: z.string(), + pods: z.array(z.lazy(() => Pod3$inboundSchema)), + replicas: z.lazy(() => Replicas4$inboundSchema), + restarts: z.nullable(z.int()).optional(), + status: z.lazy(() => DataStatus16$inboundSchema), + workload: z.nullable( + z.union([z.lazy(() => Workload3$inboundSchema), z.any()]), + ).optional(), + backend: z.literal("kubernetes"), +}); + +export function dataKubernetes3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataKubernetes3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataKubernetes3' from JSON`, + ); +} + +/** @internal */ +export const CpuDaemonInstanceUnit3$inboundSchema: z.ZodEnum< + typeof CpuDaemonInstanceUnit3 +> = z.enum(CpuDaemonInstanceUnit3); + +/** @internal */ +export const CpuDaemonInstance3$inboundSchema: z.ZodType< + CpuDaemonInstance3, + unknown +> = z.object({ + unit: CpuDaemonInstanceUnit3$inboundSchema, + value: z.number(), +}); + +export function cpuDaemonInstance3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuDaemonInstance3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuDaemonInstance3' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstanceCpuUnion3$inboundSchema: z.ZodType< + DaemonInstanceCpuUnion3, + unknown +> = z.union([z.lazy(() => CpuDaemonInstance3$inboundSchema), z.any()]); + +export function daemonInstanceCpuUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstanceCpuUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstanceCpuUnion3' from JSON`, + ); +} + +/** @internal */ +export const MemoryDaemonInstanceUnit3$inboundSchema: z.ZodEnum< + typeof MemoryDaemonInstanceUnit3 +> = z.enum(MemoryDaemonInstanceUnit3); + +/** @internal */ +export const MemoryDaemonInstance3$inboundSchema: z.ZodType< + MemoryDaemonInstance3, + unknown +> = z.object({ + unit: MemoryDaemonInstanceUnit3$inboundSchema, + value: z.number(), +}); + +export function memoryDaemonInstance3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryDaemonInstance3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryDaemonInstance3' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstanceMemoryUnion3$inboundSchema: z.ZodType< + DaemonInstanceMemoryUnion3, + unknown +> = z.union([z.lazy(() => MemoryDaemonInstance3$inboundSchema), z.any()]); + +export function daemonInstanceMemoryUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstanceMemoryUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstanceMemoryUnion3' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstance3$inboundSchema: z.ZodType< + DaemonInstance3, + unknown +> = z.object({ + cpu: z.nullable( + z.union([z.lazy(() => CpuDaemonInstance3$inboundSchema), z.any()]), + ).optional(), + ip: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryDaemonInstance3$inboundSchema), z.any()]), + ).optional(), + message: z.nullable(z.string()).optional(), + metricsHealthy: z.nullable(z.boolean()).optional(), + metricsLastUpdated: z.nullable(z.string()).optional(), + metricsStatus: z.nullable(z.string()).optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + phase: z.nullable(z.string()).optional(), + ready: z.boolean(), + reason: z.nullable(z.string()).optional(), + replicaId: z.string(), + restartCount: z.nullable(z.int()).optional(), + status: z.nullable(z.string()).optional(), + terminatedReason: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function daemonInstance3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstance3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstance3' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObject6$inboundSchema: z.ZodType< + InvolvedObject6, + unknown +> = z.object({ + details: z.nullable(z.any()).optional(), + id: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + replicaId: z.nullable(z.string()).optional(), +}); + +export function involvedObject6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObject6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObject6' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObjectUnion6$inboundSchema: z.ZodType< + InvolvedObjectUnion6, + unknown +> = z.union([z.lazy(() => InvolvedObject6$inboundSchema), z.any()]); + +export function involvedObjectUnion6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObjectUnion6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObjectUnion6' from JSON`, + ); +} + +/** @internal */ +export const Source6$inboundSchema: z.ZodType = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function source6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Source6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Source6' from JSON`, + ); +} + +/** @internal */ +export const SourceUnion6$inboundSchema: z.ZodType = z + .union([z.lazy(() => Source6$inboundSchema), z.any()]); + +export function sourceUnion6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SourceUnion6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceUnion6' from JSON`, + ); +} + +/** @internal */ +export const Event8$inboundSchema: z.ZodType = z.object({ + count: z.nullable(z.int()).optional(), + details: z.nullable(z.any()).optional(), + eventId: z.nullable(z.string()).optional(), + eventTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + firstTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject6$inboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable(z.union([z.lazy(() => Source6$inboundSchema), z.any()])) + .optional(), + type: z.nullable(z.string()).optional(), +}); + +export function event8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event8' from JSON`, + ); +} + +/** @internal */ +export const Reason15$inboundSchema: z.ZodEnum = z.enum( + Reason15, +); + +/** @internal */ +export const CollectionIssueSeverity15$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity15 +> = z.enum(CollectionIssueSeverity15); + +/** @internal */ +export const CollectionIssue15$inboundSchema: z.ZodType< + CollectionIssue15, + unknown +> = z.object({ + message: z.string(), + reason: Reason15$inboundSchema, + severity: CollectionIssueSeverity15$inboundSchema, + source: z.string(), +}); + +export function collectionIssue15FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue15$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue15' from JSON`, + ); +} + +/** @internal */ +export const Health15$inboundSchema: z.ZodEnum = z.enum( + Health15, +); + +/** @internal */ +export const Lifecycle15$inboundSchema: z.ZodEnum = z.enum( + Lifecycle15, +); + +/** @internal */ +export const DataStatus15$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue15$inboundSchema)), + health: Health15$inboundSchema, + lifecycle: Lifecycle15$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus15FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus15$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus15' from JSON`, + ); +} + +/** @internal */ +export const DataAzure1$inboundSchema: z.ZodType = z + .object({ + assignedMachines: z.int(), + capacityGroup: z.string(), + commandSupported: z.boolean(), + daemonInstances: z.array(z.lazy(() => DaemonInstance3$inboundSchema)), + daemonName: z.string(), + desiredMachines: z.int(), + events: z.array(z.lazy(() => Event8$inboundSchema)), + healthyInstances: z.int(), + horizonClusterId: z.string(), + horizonStatus: z.string(), + horizonStatusMessage: z.nullable(z.string()).optional(), + horizonStatusReason: z.nullable(z.string()).optional(), + latestUpdateTimestamp: z.string(), + status: z.lazy(() => DataStatus15$inboundSchema), + unavailableInstances: z.int(), + backend: z.literal("azure"), + }); + +export function dataAzure1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzure1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzure1' from JSON`, + ); +} + +/** @internal */ +export const CpuDaemonInstanceUnit2$inboundSchema: z.ZodEnum< + typeof CpuDaemonInstanceUnit2 +> = z.enum(CpuDaemonInstanceUnit2); + +/** @internal */ +export const CpuDaemonInstance2$inboundSchema: z.ZodType< + CpuDaemonInstance2, + unknown +> = z.object({ + unit: CpuDaemonInstanceUnit2$inboundSchema, + value: z.number(), +}); + +export function cpuDaemonInstance2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuDaemonInstance2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuDaemonInstance2' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstanceCpuUnion2$inboundSchema: z.ZodType< + DaemonInstanceCpuUnion2, + unknown +> = z.union([z.lazy(() => CpuDaemonInstance2$inboundSchema), z.any()]); + +export function daemonInstanceCpuUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstanceCpuUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstanceCpuUnion2' from JSON`, + ); +} + +/** @internal */ +export const MemoryDaemonInstanceUnit2$inboundSchema: z.ZodEnum< + typeof MemoryDaemonInstanceUnit2 +> = z.enum(MemoryDaemonInstanceUnit2); + +/** @internal */ +export const MemoryDaemonInstance2$inboundSchema: z.ZodType< + MemoryDaemonInstance2, + unknown +> = z.object({ + unit: MemoryDaemonInstanceUnit2$inboundSchema, + value: z.number(), +}); + +export function memoryDaemonInstance2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryDaemonInstance2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryDaemonInstance2' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstanceMemoryUnion2$inboundSchema: z.ZodType< + DaemonInstanceMemoryUnion2, + unknown +> = z.union([z.lazy(() => MemoryDaemonInstance2$inboundSchema), z.any()]); + +export function daemonInstanceMemoryUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstanceMemoryUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstanceMemoryUnion2' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstance2$inboundSchema: z.ZodType< + DaemonInstance2, + unknown +> = z.object({ + cpu: z.nullable( + z.union([z.lazy(() => CpuDaemonInstance2$inboundSchema), z.any()]), + ).optional(), + ip: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryDaemonInstance2$inboundSchema), z.any()]), + ).optional(), + message: z.nullable(z.string()).optional(), + metricsHealthy: z.nullable(z.boolean()).optional(), + metricsLastUpdated: z.nullable(z.string()).optional(), + metricsStatus: z.nullable(z.string()).optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + phase: z.nullable(z.string()).optional(), + ready: z.boolean(), + reason: z.nullable(z.string()).optional(), + replicaId: z.string(), + restartCount: z.nullable(z.int()).optional(), + status: z.nullable(z.string()).optional(), + terminatedReason: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function daemonInstance2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstance2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstance2' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObject5$inboundSchema: z.ZodType< + InvolvedObject5, + unknown +> = z.object({ + details: z.nullable(z.any()).optional(), + id: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + replicaId: z.nullable(z.string()).optional(), +}); + +export function involvedObject5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObject5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObject5' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObjectUnion5$inboundSchema: z.ZodType< + InvolvedObjectUnion5, + unknown +> = z.union([z.lazy(() => InvolvedObject5$inboundSchema), z.any()]); + +export function involvedObjectUnion5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObjectUnion5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObjectUnion5' from JSON`, + ); +} + +/** @internal */ +export const Source5$inboundSchema: z.ZodType = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function source5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Source5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Source5' from JSON`, + ); +} + +/** @internal */ +export const SourceUnion5$inboundSchema: z.ZodType = z + .union([z.lazy(() => Source5$inboundSchema), z.any()]); + +export function sourceUnion5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SourceUnion5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceUnion5' from JSON`, + ); +} + +/** @internal */ +export const Event7$inboundSchema: z.ZodType = z.object({ + count: z.nullable(z.int()).optional(), + details: z.nullable(z.any()).optional(), + eventId: z.nullable(z.string()).optional(), + eventTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + firstTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject5$inboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable(z.union([z.lazy(() => Source5$inboundSchema), z.any()])) + .optional(), + type: z.nullable(z.string()).optional(), +}); + +export function event7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event7' from JSON`, + ); +} + +/** @internal */ +export const Reason14$inboundSchema: z.ZodEnum = z.enum( + Reason14, +); + +/** @internal */ +export const CollectionIssueSeverity14$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity14 +> = z.enum(CollectionIssueSeverity14); + +/** @internal */ +export const CollectionIssue14$inboundSchema: z.ZodType< + CollectionIssue14, + unknown +> = z.object({ + message: z.string(), + reason: Reason14$inboundSchema, + severity: CollectionIssueSeverity14$inboundSchema, + source: z.string(), +}); + +export function collectionIssue14FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue14$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue14' from JSON`, + ); +} + +/** @internal */ +export const Health14$inboundSchema: z.ZodEnum = z.enum( + Health14, +); + +/** @internal */ +export const Lifecycle14$inboundSchema: z.ZodEnum = z.enum( + Lifecycle14, +); + +/** @internal */ +export const DataStatus14$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue14$inboundSchema)), + health: Health14$inboundSchema, + lifecycle: Lifecycle14$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus14FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus14$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus14' from JSON`, + ); +} + +/** @internal */ +export const DataGcp1$inboundSchema: z.ZodType = z.object({ + assignedMachines: z.int(), + capacityGroup: z.string(), + commandSupported: z.boolean(), + daemonInstances: z.array(z.lazy(() => DaemonInstance2$inboundSchema)), + daemonName: z.string(), + desiredMachines: z.int(), + events: z.array(z.lazy(() => Event7$inboundSchema)), + healthyInstances: z.int(), + horizonClusterId: z.string(), + horizonStatus: z.string(), + horizonStatusMessage: z.nullable(z.string()).optional(), + horizonStatusReason: z.nullable(z.string()).optional(), + latestUpdateTimestamp: z.string(), + status: z.lazy(() => DataStatus14$inboundSchema), + unavailableInstances: z.int(), + backend: z.literal("gcp"), +}); + +export function dataGcp1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcp1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcp1' from JSON`, + ); +} + +/** @internal */ +export const CpuDaemonInstanceUnit1$inboundSchema: z.ZodEnum< + typeof CpuDaemonInstanceUnit1 +> = z.enum(CpuDaemonInstanceUnit1); + +/** @internal */ +export const CpuDaemonInstance1$inboundSchema: z.ZodType< + CpuDaemonInstance1, + unknown +> = z.object({ + unit: CpuDaemonInstanceUnit1$inboundSchema, + value: z.number(), +}); + +export function cpuDaemonInstance1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuDaemonInstance1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuDaemonInstance1' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstanceCpuUnion1$inboundSchema: z.ZodType< + DaemonInstanceCpuUnion1, + unknown +> = z.union([z.lazy(() => CpuDaemonInstance1$inboundSchema), z.any()]); + +export function daemonInstanceCpuUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstanceCpuUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstanceCpuUnion1' from JSON`, + ); +} + +/** @internal */ +export const MemoryDaemonInstanceUnit1$inboundSchema: z.ZodEnum< + typeof MemoryDaemonInstanceUnit1 +> = z.enum(MemoryDaemonInstanceUnit1); + +/** @internal */ +export const MemoryDaemonInstance1$inboundSchema: z.ZodType< + MemoryDaemonInstance1, + unknown +> = z.object({ + unit: MemoryDaemonInstanceUnit1$inboundSchema, + value: z.number(), +}); + +export function memoryDaemonInstance1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryDaemonInstance1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryDaemonInstance1' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstanceMemoryUnion1$inboundSchema: z.ZodType< + DaemonInstanceMemoryUnion1, + unknown +> = z.union([z.lazy(() => MemoryDaemonInstance1$inboundSchema), z.any()]); + +export function daemonInstanceMemoryUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstanceMemoryUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstanceMemoryUnion1' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstance1$inboundSchema: z.ZodType< + DaemonInstance1, + unknown +> = z.object({ + cpu: z.nullable( + z.union([z.lazy(() => CpuDaemonInstance1$inboundSchema), z.any()]), + ).optional(), + ip: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryDaemonInstance1$inboundSchema), z.any()]), + ).optional(), + message: z.nullable(z.string()).optional(), + metricsHealthy: z.nullable(z.boolean()).optional(), + metricsLastUpdated: z.nullable(z.string()).optional(), + metricsStatus: z.nullable(z.string()).optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + phase: z.nullable(z.string()).optional(), + ready: z.boolean(), + reason: z.nullable(z.string()).optional(), + replicaId: z.string(), + restartCount: z.nullable(z.int()).optional(), + status: z.nullable(z.string()).optional(), + terminatedReason: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function daemonInstance1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstance1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstance1' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObject4$inboundSchema: z.ZodType< + InvolvedObject4, + unknown +> = z.object({ + details: z.nullable(z.any()).optional(), + id: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + replicaId: z.nullable(z.string()).optional(), +}); + +export function involvedObject4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObject4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObject4' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObjectUnion4$inboundSchema: z.ZodType< + InvolvedObjectUnion4, + unknown +> = z.union([z.lazy(() => InvolvedObject4$inboundSchema), z.any()]); + +export function involvedObjectUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObjectUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObjectUnion4' from JSON`, + ); +} + +/** @internal */ +export const Source4$inboundSchema: z.ZodType = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function source4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Source4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Source4' from JSON`, + ); +} + +/** @internal */ +export const SourceUnion4$inboundSchema: z.ZodType = z + .union([z.lazy(() => Source4$inboundSchema), z.any()]); + +export function sourceUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SourceUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceUnion4' from JSON`, + ); +} + +/** @internal */ +export const Event6$inboundSchema: z.ZodType = z.object({ + count: z.nullable(z.int()).optional(), + details: z.nullable(z.any()).optional(), + eventId: z.nullable(z.string()).optional(), + eventTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + firstTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject4$inboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable(z.union([z.lazy(() => Source4$inboundSchema), z.any()])) + .optional(), + type: z.nullable(z.string()).optional(), +}); + +export function event6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event6' from JSON`, + ); +} + +/** @internal */ +export const Reason13$inboundSchema: z.ZodEnum = z.enum( + Reason13, +); + +/** @internal */ +export const CollectionIssueSeverity13$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity13 +> = z.enum(CollectionIssueSeverity13); + +/** @internal */ +export const CollectionIssue13$inboundSchema: z.ZodType< + CollectionIssue13, + unknown +> = z.object({ + message: z.string(), + reason: Reason13$inboundSchema, + severity: CollectionIssueSeverity13$inboundSchema, + source: z.string(), +}); + +export function collectionIssue13FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue13$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue13' from JSON`, + ); +} + +/** @internal */ +export const Health13$inboundSchema: z.ZodEnum = z.enum( + Health13, +); + +/** @internal */ +export const Lifecycle13$inboundSchema: z.ZodEnum = z.enum( + Lifecycle13, +); + +/** @internal */ +export const DataStatus13$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue13$inboundSchema)), + health: Health13$inboundSchema, + lifecycle: Lifecycle13$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus13FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus13$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus13' from JSON`, + ); +} + +/** @internal */ +export const DataAws1$inboundSchema: z.ZodType = z.object({ + assignedMachines: z.int(), + capacityGroup: z.string(), + commandSupported: z.boolean(), + daemonInstances: z.array(z.lazy(() => DaemonInstance1$inboundSchema)), + daemonName: z.string(), + desiredMachines: z.int(), + events: z.array(z.lazy(() => Event6$inboundSchema)), + healthyInstances: z.int(), + horizonClusterId: z.string(), + horizonStatus: z.string(), + horizonStatusMessage: z.nullable(z.string()).optional(), + horizonStatusReason: z.nullable(z.string()).optional(), + latestUpdateTimestamp: z.string(), + status: z.lazy(() => DataStatus13$inboundSchema), + unavailableInstances: z.int(), + backend: z.literal("aws"), +}); + +export function dataAws1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAws1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAws1' from JSON`, + ); +} + +/** @internal */ +export const DataUnion4$inboundSchema: z.ZodType = z.union( + [ + z.lazy(() => DataAws1$inboundSchema), + z.lazy(() => DataGcp1$inboundSchema), + z.lazy(() => DataAzure1$inboundSchema), + z.lazy(() => DataKubernetes3$inboundSchema), + DataLocal4$inboundSchema, + ], +); + +export function dataUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion4' from JSON`, + ); +} + +/** @internal */ +export const DataDaemon$inboundSchema: z.ZodType = z + .object({ + data: z.union([ + z.lazy(() => DataAws1$inboundSchema), + z.lazy(() => DataGcp1$inboundSchema), + z.lazy(() => DataAzure1$inboundSchema), + z.lazy(() => DataKubernetes3$inboundSchema), + DataLocal4$inboundSchema, + ]), + resourceType: z.literal("daemon"), + }); + +export function dataDaemonFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataDaemon$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataDaemon' from JSON`, + ); +} + +/** @internal */ +export const ContainerUnitCpuUnit$inboundSchema: z.ZodEnum< + typeof ContainerUnitCpuUnit +> = z.enum(ContainerUnitCpuUnit); + +/** @internal */ +export const ContainerUnitCpu$inboundSchema: z.ZodType< + ContainerUnitCpu, + unknown +> = z.object({ + unit: ContainerUnitCpuUnit$inboundSchema, + value: z.number(), +}); + +export function containerUnitCpuFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContainerUnitCpu$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerUnitCpu' from JSON`, + ); +} + +/** @internal */ +export const ContainerUnitCpuUnion$inboundSchema: z.ZodType< + ContainerUnitCpuUnion, + unknown +> = z.union([z.lazy(() => ContainerUnitCpu$inboundSchema), z.any()]); + +export function containerUnitCpuUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContainerUnitCpuUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerUnitCpuUnion' from JSON`, + ); +} + +/** @internal */ +export const ContainerUnitKind$inboundSchema: z.ZodEnum< + typeof ContainerUnitKind +> = z.enum(ContainerUnitKind); + +/** @internal */ +export const ContainerUnitMemoryUnit$inboundSchema: z.ZodEnum< + typeof ContainerUnitMemoryUnit +> = z.enum(ContainerUnitMemoryUnit); + +/** @internal */ +export const ContainerUnitMemory$inboundSchema: z.ZodType< + ContainerUnitMemory, + unknown +> = z.object({ + unit: ContainerUnitMemoryUnit$inboundSchema, + value: z.number(), +}); + +export function containerUnitMemoryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContainerUnitMemory$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerUnitMemory' from JSON`, + ); +} + +/** @internal */ +export const ContainerUnitMemoryUnion$inboundSchema: z.ZodType< + ContainerUnitMemoryUnion, + unknown +> = z.union([z.lazy(() => ContainerUnitMemory$inboundSchema), z.any()]); + +export function containerUnitMemoryUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContainerUnitMemoryUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerUnitMemoryUnion' from JSON`, + ); +} + +/** @internal */ +export const ContainerUnit$inboundSchema: z.ZodType = z + .object({ + cpu: z.nullable( + z.union([z.lazy(() => ContainerUnitCpu$inboundSchema), z.any()]), + ).optional(), + kind: ContainerUnitKind$inboundSchema, + memory: z.nullable( + z.union([z.lazy(() => ContainerUnitMemory$inboundSchema), z.any()]), + ).optional(), + name: z.string(), + phase: z.nullable(z.string()).optional(), + pid: z.nullable(z.int()).optional(), + ready: z.boolean(), + restartCount: z.nullable(z.int()).optional(), + unitId: z.string(), + }); + +export function containerUnitFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContainerUnit$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerUnit' from JSON`, + ); +} + +/** @internal */ +export const ContainerUnitUnion$inboundSchema: z.ZodType< + ContainerUnitUnion, + unknown +> = z.union([z.lazy(() => ContainerUnit$inboundSchema), z.any()]); + +export function containerUnitUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ContainerUnitUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ContainerUnitUnion' from JSON`, + ); +} + +/** @internal */ +export const CpuUnit5$inboundSchema: z.ZodEnum = z.enum( + CpuUnit5, +); + +/** @internal */ +export const Cpu5$inboundSchema: z.ZodType = z.object({ + unit: CpuUnit5$inboundSchema, + value: z.number(), +}); + +export function cpu5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Cpu5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Cpu5' from JSON`, + ); +} + +/** @internal */ +export const CpuUnion5$inboundSchema: z.ZodType = z.union([ + z.lazy(() => Cpu5$inboundSchema), + z.any(), +]); + +export function cpuUnion5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuUnion5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuUnion5' from JSON`, + ); +} + +/** @internal */ +export const EventSeverity2$inboundSchema: z.ZodEnum = z + .enum(EventSeverity2); + +/** @internal */ +export const Subject2$inboundSchema: z.ZodType = z.object({ + id: z.nullable(z.string()).optional(), + kind: z.string(), + name: z.nullable(z.string()).optional(), +}); + +export function subject2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Subject2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Subject2' from JSON`, + ); +} + +/** @internal */ +export const SubjectUnion2$inboundSchema: z.ZodType = z + .union([z.lazy(() => Subject2$inboundSchema), z.any()]); + +export function subjectUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SubjectUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SubjectUnion2' from JSON`, + ); +} + +/** @internal */ +export const Event5$inboundSchema: z.ZodType = z.object({ + kind: z.string(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + severity: EventSeverity2$inboundSchema, + subject: z.nullable(z.union([z.lazy(() => Subject2$inboundSchema), z.any()])) + .optional(), + timestamp: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function event5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event5' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnit5$inboundSchema: z.ZodEnum = z.enum( + MemoryUnit5, +); + +/** @internal */ +export const Memory5$inboundSchema: z.ZodType = z.object({ + unit: MemoryUnit5$inboundSchema, + value: z.number(), +}); + +export function memory5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Memory5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Memory5' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnion5$inboundSchema: z.ZodType = z + .union([z.lazy(() => Memory5$inboundSchema), z.any()]); + +export function memoryUnion5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryUnion5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryUnion5' from JSON`, + ); +} + +/** @internal */ +export const Reason12$inboundSchema: z.ZodEnum = z.enum( + Reason12, +); + +/** @internal */ +export const CollectionIssueSeverity12$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity12 +> = z.enum(CollectionIssueSeverity12); + +/** @internal */ +export const CollectionIssue12$inboundSchema: z.ZodType< + CollectionIssue12, + unknown +> = z.object({ + message: z.string(), + reason: Reason12$inboundSchema, + severity: CollectionIssueSeverity12$inboundSchema, + source: z.string(), +}); + +export function collectionIssue12FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue12$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue12' from JSON`, + ); +} + +/** @internal */ +export const Health12$inboundSchema: z.ZodEnum = z.enum( + Health12, +); + +/** @internal */ +export const Lifecycle12$inboundSchema: z.ZodEnum = z.enum( + Lifecycle12, +); + +/** @internal */ +export const DataStatus12$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue12$inboundSchema)), + health: Health12$inboundSchema, + lifecycle: Lifecycle12$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus12FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus12$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus12' from JSON`, + ); +} + +/** @internal */ +export const DataLocal3$inboundSchema: z.ZodType = z + .object({ + bindMountCount: z.int(), + containerId: z.nullable(z.string()).optional(), + containerUnit: z.nullable( + z.union([z.lazy(() => ContainerUnit$inboundSchema), z.any()]), + ).optional(), + cpu: z.nullable(z.union([z.lazy(() => Cpu5$inboundSchema), z.any()])) + .optional(), + events: z.array(z.lazy(() => Event5$inboundSchema)), + image: z.nullable(z.string()).optional(), + localUrl: z.nullable(z.string()).optional(), + memory: z.nullable(z.union([z.lazy(() => Memory5$inboundSchema), z.any()])) + .optional(), + name: z.nullable(z.string()).optional(), + portCount: z.int(), + restartCount: z.nullable(z.int()).optional(), + runtimeReachable: z.boolean(), + runtimeStatus: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus12$inboundSchema), + backend: z.literal("local"), + }); + +export function dataLocal3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataLocal3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataLocal3' from JSON`, + ); +} + +/** @internal */ +export const CpuUnit4$inboundSchema: z.ZodEnum = z.enum( + CpuUnit4, +); + +/** @internal */ +export const Cpu4$inboundSchema: z.ZodType = z.object({ + unit: CpuUnit4$inboundSchema, + value: z.number(), +}); + +export function cpu4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Cpu4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Cpu4' from JSON`, + ); +} + +/** @internal */ +export const CpuUnion4$inboundSchema: z.ZodType = z.union([ + z.lazy(() => Cpu4$inboundSchema), + z.any(), +]); + +export function cpuUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuUnion4' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObject3$inboundSchema: z.ZodType< + InvolvedObject3, + unknown +> = z.object({ + apiVersion: z.nullable(z.string()).optional(), + fieldPath: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + namespace: z.nullable(z.string()).optional(), + resourceVersion: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), +}); + +export function involvedObject3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObject3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObject3' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObjectUnion3$inboundSchema: z.ZodType< + InvolvedObjectUnion3, + unknown +> = z.union([z.lazy(() => InvolvedObject3$inboundSchema), z.any()]); + +export function involvedObjectUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObjectUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObjectUnion3' from JSON`, + ); +} + +/** @internal */ +export const Source3$inboundSchema: z.ZodType = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function source3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Source3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Source3' from JSON`, + ); +} + +/** @internal */ +export const SourceUnion3$inboundSchema: z.ZodType = z + .union([z.lazy(() => Source3$inboundSchema), z.any()]); + +export function sourceUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SourceUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceUnion3' from JSON`, + ); +} + +/** @internal */ +export const Event4$inboundSchema: z.ZodType = z.object({ + count: z.nullable(z.int()).optional(), + eventTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + firstTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject3$inboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable(z.union([z.lazy(() => Source3$inboundSchema), z.any()])) + .optional(), + type: z.nullable(z.string()).optional(), +}); + +export function event4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event4' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnit4$inboundSchema: z.ZodEnum = z.enum( + MemoryUnit4, +); + +/** @internal */ +export const Memory4$inboundSchema: z.ZodType = z.object({ + unit: MemoryUnit4$inboundSchema, + value: z.number(), +}); + +export function memory4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Memory4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Memory4' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnion4$inboundSchema: z.ZodType = z + .union([z.lazy(() => Memory4$inboundSchema), z.any()]); + +export function memoryUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryUnion4' from JSON`, + ); +} + +/** @internal */ +export const CpuPodUnit2$inboundSchema: z.ZodEnum = z.enum( + CpuPodUnit2, +); + +/** @internal */ +export const CpuPod2$inboundSchema: z.ZodType = z.object({ + unit: CpuPodUnit2$inboundSchema, + value: z.number(), +}); + +export function cpuPod2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuPod2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuPod2' from JSON`, + ); +} + +/** @internal */ +export const PodCpuUnion2$inboundSchema: z.ZodType = z + .union([z.lazy(() => CpuPod2$inboundSchema), z.any()]); + +export function podCpuUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PodCpuUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PodCpuUnion2' from JSON`, + ); +} + +/** @internal */ +export const MemoryPodUnit2$inboundSchema: z.ZodEnum = z + .enum(MemoryPodUnit2); + +/** @internal */ +export const MemoryPod2$inboundSchema: z.ZodType = z + .object({ + unit: MemoryPodUnit2$inboundSchema, + value: z.number(), + }); + +export function memoryPod2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryPod2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryPod2' from JSON`, + ); +} + +/** @internal */ +export const PodMemoryUnion2$inboundSchema: z.ZodType< + PodMemoryUnion2, + unknown +> = z.union([z.lazy(() => MemoryPod2$inboundSchema), z.any()]); + +export function podMemoryUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PodMemoryUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PodMemoryUnion2' from JSON`, + ); +} + +/** @internal */ +export const OwnerReference2$inboundSchema: z.ZodType< + OwnerReference2, + unknown +> = z.object({ + controller: z.boolean(), + kind: z.string(), + name: z.string(), + uid: z.string(), +}); + +export function ownerReference2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OwnerReference2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OwnerReference2' from JSON`, + ); +} + +/** @internal */ +export const Pod2$inboundSchema: z.ZodType = z.object({ + cpu: z.nullable(z.union([z.lazy(() => CpuPod2$inboundSchema), z.any()])) + .optional(), + memory: z.nullable(z.union([z.lazy(() => MemoryPod2$inboundSchema), z.any()])) + .optional(), + name: z.string(), + nodeName: z.nullable(z.string()).optional(), + ownerReferences: z.array(z.lazy(() => OwnerReference2$inboundSchema)), + phase: z.nullable(z.string()).optional(), + podIp: z.nullable(z.string()).optional(), + ready: z.boolean(), + restartCount: z.int(), + terminatedReason: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), + waitingReason: z.nullable(z.string()).optional(), +}); + +export function pod2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Pod2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Pod2' from JSON`, + ); +} + +/** @internal */ +export const Replicas3$inboundSchema: z.ZodType = z.object({ + available: z.nullable(z.int()).optional(), + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + misscheduled: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + updated: z.nullable(z.int()).optional(), +}); + +export function replicas3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Replicas3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Replicas3' from JSON`, + ); +} + +/** @internal */ +export const Reason11$inboundSchema: z.ZodEnum = z.enum( + Reason11, +); + +/** @internal */ +export const CollectionIssueSeverity11$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity11 +> = z.enum(CollectionIssueSeverity11); + +/** @internal */ +export const CollectionIssue11$inboundSchema: z.ZodType< + CollectionIssue11, + unknown +> = z.object({ + message: z.string(), + reason: Reason11$inboundSchema, + severity: CollectionIssueSeverity11$inboundSchema, + source: z.string(), +}); + +export function collectionIssue11FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue11$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue11' from JSON`, + ); +} + +/** @internal */ +export const Health11$inboundSchema: z.ZodEnum = z.enum( + Health11, +); + +/** @internal */ +export const Lifecycle11$inboundSchema: z.ZodEnum = z.enum( + Lifecycle11, +); + +/** @internal */ +export const DataStatus11$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue11$inboundSchema)), + health: Health11$inboundSchema, + lifecycle: Lifecycle11$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus11FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus11$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus11' from JSON`, + ); +} + +/** @internal */ +export const WorkloadCondition2$inboundSchema: z.ZodType< + WorkloadCondition2, + unknown +> = z.object({ + lastTransitionTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.nullable(z.string()).optional(), + reason: z.nullable(z.string()).optional(), + status: z.string(), + type: z.string(), +}); + +export function workloadCondition2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => WorkloadCondition2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'WorkloadCondition2' from JSON`, + ); +} + +/** @internal */ +export const Workload2$inboundSchema: z.ZodType = z.object({ + availableReplicas: z.nullable(z.int()).optional(), + conditions: z.array(z.lazy(() => WorkloadCondition2$inboundSchema)), + desiredGeneration: z.nullable(z.int()).optional(), + desiredReplicas: z.nullable(z.int()).optional(), + observedGeneration: z.nullable(z.int()).optional(), + readyReplicas: z.nullable(z.int()).optional(), + rolloutReason: z.nullable(z.string()).optional(), + updatedReplicas: z.nullable(z.int()).optional(), +}); + +export function workload2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Workload2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Workload2' from JSON`, + ); +} + +/** @internal */ +export const WorkloadUnion2$inboundSchema: z.ZodType = + z.union([z.lazy(() => Workload2$inboundSchema), z.any()]); + +export function workloadUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => WorkloadUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'WorkloadUnion2' from JSON`, + ); +} + +/** @internal */ +export const WorkloadKind2$inboundSchema: z.ZodEnum = z + .enum(WorkloadKind2); + +/** @internal */ +export const DataKubernetes2$inboundSchema: z.ZodType< + DataKubernetes2, + unknown +> = z.object({ + cpu: z.nullable(z.union([z.lazy(() => Cpu4$inboundSchema), z.any()])) + .optional(), + events: z.array(z.lazy(() => Event4$inboundSchema)), + memory: z.nullable(z.union([z.lazy(() => Memory4$inboundSchema), z.any()])) + .optional(), + name: z.string(), + namespace: z.string(), + pods: z.array(z.lazy(() => Pod2$inboundSchema)), + replicas: z.lazy(() => Replicas3$inboundSchema), + restarts: z.nullable(z.int()).optional(), + status: z.lazy(() => DataStatus11$inboundSchema), + workload: z.nullable( + z.union([z.lazy(() => Workload2$inboundSchema), z.any()]), + ).optional(), + workloadKind: WorkloadKind2$inboundSchema, + backend: z.literal("kubernetes"), +}); + +export function dataKubernetes2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataKubernetes2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataKubernetes2' from JSON`, + ); +} + +/** @internal */ +export const CpuUnit3$inboundSchema: z.ZodEnum = z.enum( + CpuUnit3, +); + +/** @internal */ +export const Cpu3$inboundSchema: z.ZodType = z.object({ + unit: CpuUnit3$inboundSchema, + value: z.number(), +}); + +export function cpu3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Cpu3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Cpu3' from JSON`, + ); +} + +/** @internal */ +export const CpuUnion3$inboundSchema: z.ZodType = z.union([ + z.lazy(() => Cpu3$inboundSchema), + z.any(), +]); + +export function cpuUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuUnion3' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObject2$inboundSchema: z.ZodType< + InvolvedObject2, + unknown +> = z.object({ + details: z.nullable(z.any()).optional(), + id: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + machineId: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + replicaId: z.nullable(z.string()).optional(), +}); + +export function involvedObject2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObject2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObject2' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObjectUnion2$inboundSchema: z.ZodType< + InvolvedObjectUnion2, + unknown +> = z.union([z.lazy(() => InvolvedObject2$inboundSchema), z.any()]); + +export function involvedObjectUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObjectUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObjectUnion2' from JSON`, + ); +} + +/** @internal */ +export const Source2$inboundSchema: z.ZodType = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function source2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Source2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Source2' from JSON`, + ); +} + +/** @internal */ +export const SourceUnion2$inboundSchema: z.ZodType = z + .union([z.lazy(() => Source2$inboundSchema), z.any()]); + +export function sourceUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SourceUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceUnion2' from JSON`, + ); +} + +/** @internal */ +export const Event3$inboundSchema: z.ZodType = z.object({ + count: z.nullable(z.int()).optional(), + details: z.nullable(z.any()).optional(), + eventId: z.nullable(z.string()).optional(), + eventTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + firstTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject2$inboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable(z.union([z.lazy(() => Source2$inboundSchema), z.any()])) + .optional(), + type: z.nullable(z.string()).optional(), +}); + +export function event3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event3' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnit3$inboundSchema: z.ZodEnum = z.enum( + MemoryUnit3, +); + +/** @internal */ +export const Memory3$inboundSchema: z.ZodType = z.object({ + unit: MemoryUnit3$inboundSchema, + value: z.number(), +}); + +export function memory3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Memory3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Memory3' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/rejoindeployment.ts b/client-sdks/platform/typescript/src/models/operations/rejoindeployment.ts new file mode 100644 index 000000000..67a4c5461 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/rejoindeployment.ts @@ -0,0 +1,43 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import * as models from "../index.js"; + +export type RejoinDeploymentRequest = { + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + rejoinDeploymentRequest?: models.RejoinDeploymentRequest | undefined; +}; + +/** @internal */ +export type RejoinDeploymentRequest$Outbound = { + workspace?: string | undefined; + RejoinDeploymentRequest?: models.RejoinDeploymentRequest$Outbound | undefined; +}; + +/** @internal */ +export const RejoinDeploymentRequest$outboundSchema: z.ZodType< + RejoinDeploymentRequest$Outbound, + RejoinDeploymentRequest +> = z.object({ + workspace: z.string().optional(), + rejoinDeploymentRequest: models.RejoinDeploymentRequest$outboundSchema + .optional(), +}).transform((v) => { + return remap$(v, { + rejoinDeploymentRequest: "RejoinDeploymentRequest", + }); +}); + +export function rejoinDeploymentRequestToJSON( + rejoinDeploymentRequest: RejoinDeploymentRequest, +): string { + return JSON.stringify( + RejoinDeploymentRequest$outboundSchema.parse(rejoinDeploymentRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/setdeploymenttargetagentversion.ts b/client-sdks/platform/typescript/src/models/operations/setdeploymenttargetagentversion.ts new file mode 100644 index 000000000..f5911e24f --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/setdeploymenttargetagentversion.ts @@ -0,0 +1,90 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../../lib/primitives.js"; +import { safeParse } from "../../lib/schemas.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import * as models from "../index.js"; + +export type SetDeploymentTargetAgentVersionRequest = { + /** + * Unique identifier for the deployment. + */ + id: string; + /** + * Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace. + */ + workspace?: string | undefined; + setTargetAgentVersionRequest?: + | models.SetTargetAgentVersionRequest + | undefined; +}; + +/** + * Target agent version updated. + */ +export type SetDeploymentTargetAgentVersionResponse = { + message: string; +}; + +/** @internal */ +export type SetDeploymentTargetAgentVersionRequest$Outbound = { + id: string; + workspace?: string | undefined; + SetTargetAgentVersionRequest?: + | models.SetTargetAgentVersionRequest$Outbound + | undefined; +}; + +/** @internal */ +export const SetDeploymentTargetAgentVersionRequest$outboundSchema: z.ZodType< + SetDeploymentTargetAgentVersionRequest$Outbound, + SetDeploymentTargetAgentVersionRequest +> = z.object({ + id: z.string(), + workspace: z.string().optional(), + setTargetAgentVersionRequest: models + .SetTargetAgentVersionRequest$outboundSchema.optional(), +}).transform((v) => { + return remap$(v, { + setTargetAgentVersionRequest: "SetTargetAgentVersionRequest", + }); +}); + +export function setDeploymentTargetAgentVersionRequestToJSON( + setDeploymentTargetAgentVersionRequest: + SetDeploymentTargetAgentVersionRequest, +): string { + return JSON.stringify( + SetDeploymentTargetAgentVersionRequest$outboundSchema.parse( + setDeploymentTargetAgentVersionRequest, + ), + ); +} + +/** @internal */ +export const SetDeploymentTargetAgentVersionResponse$inboundSchema: z.ZodType< + SetDeploymentTargetAgentVersionResponse, + unknown +> = z.object({ + message: z.string(), +}); + +export function setDeploymentTargetAgentVersionResponseFromJSON( + jsonString: string, +): SafeParseResult< + SetDeploymentTargetAgentVersionResponse, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SetDeploymentTargetAgentVersionResponse$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SetDeploymentTargetAgentVersionResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/operations/source7.ts b/client-sdks/platform/typescript/src/models/operations/source7.ts new file mode 100644 index 000000000..540dbc61b --- /dev/null +++ b/client-sdks/platform/typescript/src/models/operations/source7.ts @@ -0,0 +1,3258 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../../lib/schemas.js"; +import { ClosedEnum } from "../../types/enums.js"; +import { Result as SafeParseResult } from "../../types/fp.js"; +import { SDKValidationError } from "../errors/sdkvalidationerror.js"; +import { CpuUnion10, CpuUnion10$inboundSchema } from "./cpuunion10.js"; + +export type InvolvedObject8 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion8 = InvolvedObject8 | any; + +export type Source8 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion8 = Source8 | any; + +export type Event11 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject8 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: Source8 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit10 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit10 = ClosedEnum; + +export type Memory10 = { + unit: MemoryUnit10; + value: number; +}; + +export type MemoryUnion10 = Memory10 | any; + +export type NodeCounts = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const CpuAllocatableUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuAllocatableUnit = ClosedEnum; + +export type CpuAllocatable = { + unit: CpuAllocatableUnit; + value: number; +}; + +export type AllocatableCpuUnion = CpuAllocatable | any; + +export const MemoryAllocatableUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryAllocatableUnit = ClosedEnum; + +export type MemoryAllocatable = { + unit: MemoryAllocatableUnit; + value: number; +}; + +export type AllocatableMemoryUnion = MemoryAllocatable | any; + +export type Allocatable = { + cpu?: CpuAllocatable | any | null | undefined; + memory?: MemoryAllocatable | any | null | undefined; + pods?: number | null | undefined; +}; + +export const CpuCapacityUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuCapacityUnit = ClosedEnum; + +export type CpuCapacity = { + unit: CpuCapacityUnit; + value: number; +}; + +export type CapacityCpuUnion = CpuCapacity | any; + +export const MemoryCapacityUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryCapacityUnit = ClosedEnum; + +export type MemoryCapacity = { + unit: MemoryCapacityUnit; + value: number; +}; + +export type CapacityMemoryUnion = MemoryCapacity | any; + +export type Capacity = { + cpu?: CpuCapacity | any | null | undefined; + memory?: MemoryCapacity | any | null | undefined; + pods?: number | null | undefined; +}; + +export type NodeStatusCondition = { + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export const UsageCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UsageCpuUnit = ClosedEnum; + +export type UsageCpu = { + unit: UsageCpuUnit; + value: number; +}; + +export type UsageCpuUnion = UsageCpu | any; + +export const UsageMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UsageMemoryUnit = ClosedEnum; + +export type UsageMemory = { + unit: UsageMemoryUnit; + value: number; +}; + +export type UsageMemoryUnion = UsageMemory | any; + +export type Usage = { + cpu?: UsageCpu | any | null | undefined; + memory?: UsageMemory | any | null | undefined; +}; + +export type UsageUnion = Usage | any; + +export type NodeStatus = { + allocatable: Allocatable; + capacity: Capacity; + conditions?: Array | undefined; + containerRuntimeVersion?: string | null | undefined; + kubeletVersion?: string | null | undefined; + labels: { [k: string]: string }; + name: string; + ready: boolean; + roles: Array; + uid?: string | null | undefined; + usage?: Usage | any | null | undefined; +}; + +export type PodCounts = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const Reason22 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason22 = ClosedEnum; + +export const CollectionIssueSeverity22 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity22 = ClosedEnum< + typeof CollectionIssueSeverity22 +>; + +export type CollectionIssue22 = { + message: string; + reason: Reason22; + severity: CollectionIssueSeverity22; + source: string; +}; + +export const Health22 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health22 = ClosedEnum; + +export const Lifecycle22 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle22 = ClosedEnum; + +export type DataStatus22 = { + collectionIssues: Array; + health: Health22; + lifecycle: Lifecycle22; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type Data1 = { + cpu?: CpuUnion10 | null | undefined; + events: Array; + memory?: Memory10 | any | null | undefined; + name: string; + namespace?: string | null | undefined; + nodeCounts: NodeCounts; + nodeStatuses?: Array | undefined; + podCounts: PodCounts; + region?: string | null | undefined; + status: DataStatus22; + version?: string | null | undefined; +}; + +export type DataKubernetesCluster = { + data: Data1; + resourceType: "kubernetes-cluster"; +}; + +export type Nodes4 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const Reason21 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason21 = ClosedEnum; + +export const CollectionIssueSeverity21 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity21 = ClosedEnum< + typeof CollectionIssueSeverity21 +>; + +export type CollectionIssue21 = { + message: string; + reason: Reason21; + severity: CollectionIssueSeverity21; + source: string; +}; + +export const Health21 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health21 = ClosedEnum; + +export const Lifecycle21 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle21 = ClosedEnum; + +export type DataStatus21 = { + collectionIssues: Array; + health: Health21; + lifecycle: Lifecycle21; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal5 = { + dockerApiVersion?: string | null | undefined; + dockerArch?: string | null | undefined; + dockerAvailable: boolean; + dockerOs?: string | null | undefined; + dockerVersion?: string | null | undefined; + hostIdentifier?: string | null | undefined; + name: string; + networkAvailable: boolean; + networkName?: string | null | undefined; + nodes: Nodes4; + runningContainers?: number | null | undefined; + status: DataStatus21; + trackedContainers?: number | null | undefined; + backend: "local"; +}; + +export const Category3 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", +} as const; +export type Category3 = ClosedEnum; + +export type CapacityBlocker3 = { + category: Category3; + message: string; + observedAt: Date; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; +}; + +export type CapacityBlockerUnion3 = CapacityBlocker3 | any; + +export const UtilizationUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UtilizationUnit3 = ClosedEnum; + +export type Utilization3 = { + unit: UtilizationUnit3; + value: number; +}; + +export type UtilizationUnion3 = Utilization3 | any; + +export type Recommendation3 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization3 | any | null | undefined; +}; + +export type RecommendationUnion3 = Recommendation3 | any; + +export type CapacityGroup3 = { + capacityBlocker?: CapacityBlocker3 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation3 | any | null | undefined; +}; + +export const CpuUnit9 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit9 = ClosedEnum; + +export type Cpu9 = { + unit: CpuUnit9; + value: number; +}; + +export type CpuUnion9 = Cpu9 | any; + +export const MemoryUnit9 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit9 = ClosedEnum; + +export type Memory9 = { + unit: MemoryUnit9; + value: number; +}; + +export type MemoryUnion9 = Memory9 | any; + +export type Nodes3 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export type ProviderFleet3 = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +export const Reason20 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason20 = ClosedEnum; + +export const CollectionIssueSeverity20 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity20 = ClosedEnum< + typeof CollectionIssueSeverity20 +>; + +export type CollectionIssue20 = { + message: string; + reason: Reason20; + severity: CollectionIssueSeverity20; + source: string; +}; + +export const Health20 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health20 = ClosedEnum; + +export const Lifecycle20 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle20 = ClosedEnum; + +export type DataStatus20 = { + collectionIssues: Array; + health: Health20; + lifecycle: Lifecycle20; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzure2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu9 | any | null | undefined; + memory?: Memory9 | any | null | undefined; + name: string; + nodes: Nodes3; + providerFleets: Array; + region?: string | null | undefined; + status: DataStatus20; + backend: "azure"; +}; + +export const Category2 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", +} as const; +export type Category2 = ClosedEnum; + +export type CapacityBlocker2 = { + category: Category2; + message: string; + observedAt: Date; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; +}; + +export type CapacityBlockerUnion2 = CapacityBlocker2 | any; + +export const UtilizationUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UtilizationUnit2 = ClosedEnum; + +export type Utilization2 = { + unit: UtilizationUnit2; + value: number; +}; + +export type UtilizationUnion2 = Utilization2 | any; + +export type Recommendation2 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization2 | any | null | undefined; +}; + +export type RecommendationUnion2 = Recommendation2 | any; + +export type CapacityGroup2 = { + capacityBlocker?: CapacityBlocker2 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation2 | any | null | undefined; +}; + +export const CpuUnit8 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit8 = ClosedEnum; + +export type Cpu8 = { + unit: CpuUnit8; + value: number; +}; + +export type CpuUnion8 = Cpu8 | any; + +export const MemoryUnit8 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit8 = ClosedEnum; + +export type Memory8 = { + unit: MemoryUnit8; + value: number; +}; + +export type MemoryUnion8 = Memory8 | any; + +export type Nodes2 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export type ProviderFleet2 = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +export const Reason19 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason19 = ClosedEnum; + +export const CollectionIssueSeverity19 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity19 = ClosedEnum< + typeof CollectionIssueSeverity19 +>; + +export type CollectionIssue19 = { + message: string; + reason: Reason19; + severity: CollectionIssueSeverity19; + source: string; +}; + +export const Health19 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health19 = ClosedEnum; + +export const Lifecycle19 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle19 = ClosedEnum; + +export type DataStatus19 = { + collectionIssues: Array; + health: Health19; + lifecycle: Lifecycle19; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcp2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu8 | any | null | undefined; + memory?: Memory8 | any | null | undefined; + name: string; + nodes: Nodes2; + providerFleets: Array; + region?: string | null | undefined; + status: DataStatus19; + backend: "gcp"; +}; + +export const Category1 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", +} as const; +export type Category1 = ClosedEnum; + +export type CapacityBlocker1 = { + category: Category1; + message: string; + observedAt: Date; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; +}; + +export type CapacityBlockerUnion1 = CapacityBlocker1 | any; + +export const UtilizationUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UtilizationUnit1 = ClosedEnum; + +export type Utilization1 = { + unit: UtilizationUnit1; + value: number; +}; + +export type UtilizationUnion1 = Utilization1 | any; + +export type Recommendation1 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization1 | any | null | undefined; +}; + +export type RecommendationUnion1 = Recommendation1 | any; + +export type CapacityGroup1 = { + capacityBlocker?: CapacityBlocker1 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation1 | any | null | undefined; +}; + +export const CpuUnit7 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit7 = ClosedEnum; + +export type Cpu7 = { + unit: CpuUnit7; + value: number; +}; + +export type CpuUnion7 = Cpu7 | any; + +export const MemoryUnit7 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit7 = ClosedEnum; + +export type Memory7 = { + unit: MemoryUnit7; + value: number; +}; + +export type MemoryUnion7 = Memory7 | any; + +export type Nodes1 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export type ProviderFleet1 = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +export const Reason18 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason18 = ClosedEnum; + +export const CollectionIssueSeverity18 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity18 = ClosedEnum< + typeof CollectionIssueSeverity18 +>; + +export type CollectionIssue18 = { + message: string; + reason: Reason18; + severity: CollectionIssueSeverity18; + source: string; +}; + +export const Health18 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health18 = ClosedEnum; + +export const Lifecycle18 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle18 = ClosedEnum; + +export type DataStatus18 = { + collectionIssues: Array; + health: Health18; + lifecycle: Lifecycle18; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAws2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu7 | any | null | undefined; + memory?: Memory7 | any | null | undefined; + name: string; + nodes: Nodes1; + providerFleets: Array; + region?: string | null | undefined; + status: DataStatus18; + backend: "aws"; +}; + +export type DataUnion5 = DataAws2 | DataGcp2 | DataAzure2 | DataLocal5; + +export type DataComputeCluster = { + data: DataAws2 | DataGcp2 | DataAzure2 | DataLocal5; + resourceType: "compute-cluster"; +}; + +export const DaemonInstanceCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type DaemonInstanceCpuUnit = ClosedEnum; + +export type DaemonInstanceCpu = { + unit: DaemonInstanceCpuUnit; + value: number; +}; + +export type DaemonInstanceCpuUnion4 = DaemonInstanceCpu | any; + +export const DaemonInstanceKind = { + Container: "container", + Process: "process", + Daemon: "daemon", +} as const; +export type DaemonInstanceKind = ClosedEnum; + +export const DaemonInstanceMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type DaemonInstanceMemoryUnit = ClosedEnum< + typeof DaemonInstanceMemoryUnit +>; + +export type DaemonInstanceMemory = { + unit: DaemonInstanceMemoryUnit; + value: number; +}; + +export type DaemonInstanceMemoryUnion4 = DaemonInstanceMemory | any; + +export type DaemonInstance4 = { + cpu?: DaemonInstanceCpu | any | null | undefined; + kind: DaemonInstanceKind; + memory?: DaemonInstanceMemory | any | null | undefined; + name: string; + phase?: string | null | undefined; + pid?: number | null | undefined; + ready: boolean; + restartCount?: number | null | undefined; + unitId: string; +}; + +export type DaemonInstanceUnion = DaemonInstance4 | any; + +export const EventSeverity3 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type EventSeverity3 = ClosedEnum; + +export type Subject3 = { + id?: string | null | undefined; + kind: string; + name?: string | null | undefined; +}; + +export type SubjectUnion3 = Subject3 | any; + +export type Event10 = { + kind: string; + message: string; + raw?: any | null | undefined; + severity: EventSeverity3; + subject?: Subject3 | any | null | undefined; + timestamp: Date; +}; + +export const Reason17 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason17 = ClosedEnum; + +export const CollectionIssueSeverity17 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity17 = ClosedEnum< + typeof CollectionIssueSeverity17 +>; + +export type CollectionIssue17 = { + message: string; + reason: Reason17; + severity: CollectionIssueSeverity17; + source: string; +}; + +export const Health17 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health17 = ClosedEnum; + +export const Lifecycle17 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type Lifecycle17 = ClosedEnum; + +export type DataStatus17 = { + collectionIssues: Array; + health: Health17; + lifecycle: Lifecycle17; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal4 = { + commandSupported: boolean; + daemonInstance?: DaemonInstance4 | any | null | undefined; + daemonName: string; + events: Array; + exitReason?: string | null | undefined; + imagePathPresent: boolean; + pid?: number | null | undefined; + restartCount?: number | null | undefined; + runtimeId: string; + status: DataStatus17; + backend: "local"; +}; + +export const CpuUnit6 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit6 = ClosedEnum; + +export type Cpu6 = { + unit: CpuUnit6; + value: number; +}; + +export type CpuUnion6 = Cpu6 | any; + +export type InvolvedObject7 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion7 = InvolvedObject7 | any; + +export type Source7 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +/** @internal */ +export const InvolvedObject8$inboundSchema: z.ZodType< + InvolvedObject8, + unknown +> = z.object({ + apiVersion: z.nullable(z.string()).optional(), + fieldPath: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + namespace: z.nullable(z.string()).optional(), + resourceVersion: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), +}); + +export function involvedObject8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObject8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObject8' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObjectUnion8$inboundSchema: z.ZodType< + InvolvedObjectUnion8, + unknown +> = z.union([z.lazy(() => InvolvedObject8$inboundSchema), z.any()]); + +export function involvedObjectUnion8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObjectUnion8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObjectUnion8' from JSON`, + ); +} + +/** @internal */ +export const Source8$inboundSchema: z.ZodType = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function source8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Source8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Source8' from JSON`, + ); +} + +/** @internal */ +export const SourceUnion8$inboundSchema: z.ZodType = z + .union([z.lazy(() => Source8$inboundSchema), z.any()]); + +export function sourceUnion8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SourceUnion8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SourceUnion8' from JSON`, + ); +} + +/** @internal */ +export const Event11$inboundSchema: z.ZodType = z.object({ + count: z.nullable(z.int()).optional(), + eventTime: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + firstTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject8$inboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable( + z.iso.datetime({ offset: true }).transform(v => new Date(v)), + ).optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable(z.union([z.lazy(() => Source8$inboundSchema), z.any()])) + .optional(), + type: z.nullable(z.string()).optional(), +}); + +export function event11FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event11$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event11' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnit10$inboundSchema: z.ZodEnum = z + .enum(MemoryUnit10); + +/** @internal */ +export const Memory10$inboundSchema: z.ZodType = z.object({ + unit: MemoryUnit10$inboundSchema, + value: z.number(), +}); + +export function memory10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Memory10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Memory10' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnion10$inboundSchema: z.ZodType = z + .union([z.lazy(() => Memory10$inboundSchema), z.any()]); + +export function memoryUnion10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryUnion10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryUnion10' from JSON`, + ); +} + +/** @internal */ +export const NodeCounts$inboundSchema: z.ZodType = z + .object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + }); + +export function nodeCountsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => NodeCounts$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'NodeCounts' from JSON`, + ); +} + +/** @internal */ +export const CpuAllocatableUnit$inboundSchema: z.ZodEnum< + typeof CpuAllocatableUnit +> = z.enum(CpuAllocatableUnit); + +/** @internal */ +export const CpuAllocatable$inboundSchema: z.ZodType = + z.object({ + unit: CpuAllocatableUnit$inboundSchema, + value: z.number(), + }); + +export function cpuAllocatableFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuAllocatable$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuAllocatable' from JSON`, + ); +} + +/** @internal */ +export const AllocatableCpuUnion$inboundSchema: z.ZodType< + AllocatableCpuUnion, + unknown +> = z.union([z.lazy(() => CpuAllocatable$inboundSchema), z.any()]); + +export function allocatableCpuUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AllocatableCpuUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AllocatableCpuUnion' from JSON`, + ); +} + +/** @internal */ +export const MemoryAllocatableUnit$inboundSchema: z.ZodEnum< + typeof MemoryAllocatableUnit +> = z.enum(MemoryAllocatableUnit); + +/** @internal */ +export const MemoryAllocatable$inboundSchema: z.ZodType< + MemoryAllocatable, + unknown +> = z.object({ + unit: MemoryAllocatableUnit$inboundSchema, + value: z.number(), +}); + +export function memoryAllocatableFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryAllocatable$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryAllocatable' from JSON`, + ); +} + +/** @internal */ +export const AllocatableMemoryUnion$inboundSchema: z.ZodType< + AllocatableMemoryUnion, + unknown +> = z.union([z.lazy(() => MemoryAllocatable$inboundSchema), z.any()]); + +export function allocatableMemoryUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AllocatableMemoryUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AllocatableMemoryUnion' from JSON`, + ); +} + +/** @internal */ +export const Allocatable$inboundSchema: z.ZodType = z + .object({ + cpu: z.nullable( + z.union([z.lazy(() => CpuAllocatable$inboundSchema), z.any()]), + ).optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryAllocatable$inboundSchema), z.any()]), + ).optional(), + pods: z.nullable(z.int()).optional(), + }); + +export function allocatableFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Allocatable$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Allocatable' from JSON`, + ); +} + +/** @internal */ +export const CpuCapacityUnit$inboundSchema: z.ZodEnum = + z.enum(CpuCapacityUnit); + +/** @internal */ +export const CpuCapacity$inboundSchema: z.ZodType = z + .object({ + unit: CpuCapacityUnit$inboundSchema, + value: z.number(), + }); + +export function cpuCapacityFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuCapacity$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuCapacity' from JSON`, + ); +} + +/** @internal */ +export const CapacityCpuUnion$inboundSchema: z.ZodType< + CapacityCpuUnion, + unknown +> = z.union([z.lazy(() => CpuCapacity$inboundSchema), z.any()]); + +export function capacityCpuUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapacityCpuUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapacityCpuUnion' from JSON`, + ); +} + +/** @internal */ +export const MemoryCapacityUnit$inboundSchema: z.ZodEnum< + typeof MemoryCapacityUnit +> = z.enum(MemoryCapacityUnit); + +/** @internal */ +export const MemoryCapacity$inboundSchema: z.ZodType = + z.object({ + unit: MemoryCapacityUnit$inboundSchema, + value: z.number(), + }); + +export function memoryCapacityFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryCapacity$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryCapacity' from JSON`, + ); +} + +/** @internal */ +export const CapacityMemoryUnion$inboundSchema: z.ZodType< + CapacityMemoryUnion, + unknown +> = z.union([z.lazy(() => MemoryCapacity$inboundSchema), z.any()]); + +export function capacityMemoryUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapacityMemoryUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapacityMemoryUnion' from JSON`, + ); +} + +/** @internal */ +export const Capacity$inboundSchema: z.ZodType = z.object({ + cpu: z.nullable(z.union([z.lazy(() => CpuCapacity$inboundSchema), z.any()])) + .optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryCapacity$inboundSchema), z.any()]), + ).optional(), + pods: z.nullable(z.int()).optional(), +}); + +export function capacityFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Capacity$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Capacity' from JSON`, + ); +} + +/** @internal */ +export const NodeStatusCondition$inboundSchema: z.ZodType< + NodeStatusCondition, + unknown +> = z.object({ + message: z.nullable(z.string()).optional(), + reason: z.nullable(z.string()).optional(), + status: z.string(), + type: z.string(), +}); + +export function nodeStatusConditionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => NodeStatusCondition$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'NodeStatusCondition' from JSON`, + ); +} + +/** @internal */ +export const UsageCpuUnit$inboundSchema: z.ZodEnum = z + .enum(UsageCpuUnit); + +/** @internal */ +export const UsageCpu$inboundSchema: z.ZodType = z.object({ + unit: UsageCpuUnit$inboundSchema, + value: z.number(), +}); + +export function usageCpuFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => UsageCpu$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'UsageCpu' from JSON`, + ); +} + +/** @internal */ +export const UsageCpuUnion$inboundSchema: z.ZodType = z + .union([z.lazy(() => UsageCpu$inboundSchema), z.any()]); + +export function usageCpuUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => UsageCpuUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'UsageCpuUnion' from JSON`, + ); +} + +/** @internal */ +export const UsageMemoryUnit$inboundSchema: z.ZodEnum = + z.enum(UsageMemoryUnit); + +/** @internal */ +export const UsageMemory$inboundSchema: z.ZodType = z + .object({ + unit: UsageMemoryUnit$inboundSchema, + value: z.number(), + }); + +export function usageMemoryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => UsageMemory$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'UsageMemory' from JSON`, + ); +} + +/** @internal */ +export const UsageMemoryUnion$inboundSchema: z.ZodType< + UsageMemoryUnion, + unknown +> = z.union([z.lazy(() => UsageMemory$inboundSchema), z.any()]); + +export function usageMemoryUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => UsageMemoryUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'UsageMemoryUnion' from JSON`, + ); +} + +/** @internal */ +export const Usage$inboundSchema: z.ZodType = z.object({ + cpu: z.nullable(z.union([z.lazy(() => UsageCpu$inboundSchema), z.any()])) + .optional(), + memory: z.nullable( + z.union([z.lazy(() => UsageMemory$inboundSchema), z.any()]), + ).optional(), +}); + +export function usageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Usage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Usage' from JSON`, + ); +} + +/** @internal */ +export const UsageUnion$inboundSchema: z.ZodType = z.union( + [z.lazy(() => Usage$inboundSchema), z.any()], +); + +export function usageUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => UsageUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'UsageUnion' from JSON`, + ); +} + +/** @internal */ +export const NodeStatus$inboundSchema: z.ZodType = z + .object({ + allocatable: z.lazy(() => Allocatable$inboundSchema), + capacity: z.lazy(() => Capacity$inboundSchema), + conditions: z.array(z.lazy(() => NodeStatusCondition$inboundSchema)) + .optional(), + containerRuntimeVersion: z.nullable(z.string()).optional(), + kubeletVersion: z.nullable(z.string()).optional(), + labels: z.record(z.string(), z.string()), + name: z.string(), + ready: z.boolean(), + roles: z.array(z.string()), + uid: z.nullable(z.string()).optional(), + usage: z.nullable(z.union([z.lazy(() => Usage$inboundSchema), z.any()])) + .optional(), + }); + +export function nodeStatusFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => NodeStatus$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'NodeStatus' from JSON`, + ); +} + +/** @internal */ +export const PodCounts$inboundSchema: z.ZodType = z.object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), +}); + +export function podCountsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => PodCounts$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'PodCounts' from JSON`, + ); +} + +/** @internal */ +export const Reason22$inboundSchema: z.ZodEnum = z.enum( + Reason22, +); + +/** @internal */ +export const CollectionIssueSeverity22$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity22 +> = z.enum(CollectionIssueSeverity22); + +/** @internal */ +export const CollectionIssue22$inboundSchema: z.ZodType< + CollectionIssue22, + unknown +> = z.object({ + message: z.string(), + reason: Reason22$inboundSchema, + severity: CollectionIssueSeverity22$inboundSchema, + source: z.string(), +}); + +export function collectionIssue22FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue22$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue22' from JSON`, + ); +} + +/** @internal */ +export const Health22$inboundSchema: z.ZodEnum = z.enum( + Health22, +); + +/** @internal */ +export const Lifecycle22$inboundSchema: z.ZodEnum = z.enum( + Lifecycle22, +); + +/** @internal */ +export const DataStatus22$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue22$inboundSchema)), + health: Health22$inboundSchema, + lifecycle: Lifecycle22$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus22FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus22$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus22' from JSON`, + ); +} + +/** @internal */ +export const Data1$inboundSchema: z.ZodType = z.object({ + cpu: z.nullable(CpuUnion10$inboundSchema).optional(), + events: z.array(z.lazy(() => Event11$inboundSchema)), + memory: z.nullable(z.union([z.lazy(() => Memory10$inboundSchema), z.any()])) + .optional(), + name: z.string(), + namespace: z.nullable(z.string()).optional(), + nodeCounts: z.lazy(() => NodeCounts$inboundSchema), + nodeStatuses: z.array(z.lazy(() => NodeStatus$inboundSchema)).optional(), + podCounts: z.lazy(() => PodCounts$inboundSchema), + region: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus22$inboundSchema), + version: z.nullable(z.string()).optional(), +}); + +export function data1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Data1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Data1' from JSON`, + ); +} + +/** @internal */ +export const DataKubernetesCluster$inboundSchema: z.ZodType< + DataKubernetesCluster, + unknown +> = z.object({ + data: z.lazy(() => Data1$inboundSchema), + resourceType: z.literal("kubernetes-cluster"), +}); + +export function dataKubernetesClusterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataKubernetesCluster$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataKubernetesCluster' from JSON`, + ); +} + +/** @internal */ +export const Nodes4$inboundSchema: z.ZodType = z.object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), +}); + +export function nodes4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Nodes4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Nodes4' from JSON`, + ); +} + +/** @internal */ +export const Reason21$inboundSchema: z.ZodEnum = z.enum( + Reason21, +); + +/** @internal */ +export const CollectionIssueSeverity21$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity21 +> = z.enum(CollectionIssueSeverity21); + +/** @internal */ +export const CollectionIssue21$inboundSchema: z.ZodType< + CollectionIssue21, + unknown +> = z.object({ + message: z.string(), + reason: Reason21$inboundSchema, + severity: CollectionIssueSeverity21$inboundSchema, + source: z.string(), +}); + +export function collectionIssue21FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue21$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue21' from JSON`, + ); +} + +/** @internal */ +export const Health21$inboundSchema: z.ZodEnum = z.enum( + Health21, +); + +/** @internal */ +export const Lifecycle21$inboundSchema: z.ZodEnum = z.enum( + Lifecycle21, +); + +/** @internal */ +export const DataStatus21$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue21$inboundSchema)), + health: Health21$inboundSchema, + lifecycle: Lifecycle21$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus21FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus21$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus21' from JSON`, + ); +} + +/** @internal */ +export const DataLocal5$inboundSchema: z.ZodType = z + .object({ + dockerApiVersion: z.nullable(z.string()).optional(), + dockerArch: z.nullable(z.string()).optional(), + dockerAvailable: z.boolean(), + dockerOs: z.nullable(z.string()).optional(), + dockerVersion: z.nullable(z.string()).optional(), + hostIdentifier: z.nullable(z.string()).optional(), + name: z.string(), + networkAvailable: z.boolean(), + networkName: z.nullable(z.string()).optional(), + nodes: z.lazy(() => Nodes4$inboundSchema), + runningContainers: z.nullable(z.int()).optional(), + status: z.lazy(() => DataStatus21$inboundSchema), + trackedContainers: z.nullable(z.int()).optional(), + backend: z.literal("local"), + }); + +export function dataLocal5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataLocal5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataLocal5' from JSON`, + ); +} + +/** @internal */ +export const Category3$inboundSchema: z.ZodEnum = z.enum( + Category3, +); + +/** @internal */ +export const CapacityBlocker3$inboundSchema: z.ZodType< + CapacityBlocker3, + unknown +> = z.object({ + category: Category3$inboundSchema, + message: z.string(), + observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + providerCode: z.nullable(z.string()).optional(), + providerReference: z.nullable(z.string()).optional(), +}); + +export function capacityBlocker3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapacityBlocker3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapacityBlocker3' from JSON`, + ); +} + +/** @internal */ +export const CapacityBlockerUnion3$inboundSchema: z.ZodType< + CapacityBlockerUnion3, + unknown +> = z.union([z.lazy(() => CapacityBlocker3$inboundSchema), z.any()]); + +export function capacityBlockerUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapacityBlockerUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapacityBlockerUnion3' from JSON`, + ); +} + +/** @internal */ +export const UtilizationUnit3$inboundSchema: z.ZodEnum< + typeof UtilizationUnit3 +> = z.enum(UtilizationUnit3); + +/** @internal */ +export const Utilization3$inboundSchema: z.ZodType = z + .object({ + unit: UtilizationUnit3$inboundSchema, + value: z.number(), + }); + +export function utilization3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Utilization3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Utilization3' from JSON`, + ); +} + +/** @internal */ +export const UtilizationUnion3$inboundSchema: z.ZodType< + UtilizationUnion3, + unknown +> = z.union([z.lazy(() => Utilization3$inboundSchema), z.any()]); + +export function utilizationUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => UtilizationUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'UtilizationUnion3' from JSON`, + ); +} + +/** @internal */ +export const Recommendation3$inboundSchema: z.ZodType< + Recommendation3, + unknown +> = z.object({ + desiredMachines: z.int(), + reason: z.nullable(z.string()).optional(), + unschedulableReplicas: z.nullable(z.int()).optional(), + utilization: z.nullable( + z.union([z.lazy(() => Utilization3$inboundSchema), z.any()]), + ).optional(), +}); + +export function recommendation3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Recommendation3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Recommendation3' from JSON`, + ); +} + +/** @internal */ +export const RecommendationUnion3$inboundSchema: z.ZodType< + RecommendationUnion3, + unknown +> = z.union([z.lazy(() => Recommendation3$inboundSchema), z.any()]); + +export function recommendationUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RecommendationUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RecommendationUnion3' from JSON`, + ); +} + +/** @internal */ +export const CapacityGroup3$inboundSchema: z.ZodType = + z.object({ + capacityBlocker: z.nullable( + z.union([z.lazy(() => CapacityBlocker3$inboundSchema), z.any()]), + ).optional(), + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + instanceType: z.nullable(z.string()).optional(), + maxMachines: z.nullable(z.int()).optional(), + minMachines: z.nullable(z.int()).optional(), + recommendation: z.nullable( + z.union([z.lazy(() => Recommendation3$inboundSchema), z.any()]), + ).optional(), + }); + +export function capacityGroup3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapacityGroup3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapacityGroup3' from JSON`, + ); +} + +/** @internal */ +export const CpuUnit9$inboundSchema: z.ZodEnum = z.enum( + CpuUnit9, +); + +/** @internal */ +export const Cpu9$inboundSchema: z.ZodType = z.object({ + unit: CpuUnit9$inboundSchema, + value: z.number(), +}); + +export function cpu9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Cpu9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Cpu9' from JSON`, + ); +} + +/** @internal */ +export const CpuUnion9$inboundSchema: z.ZodType = z.union([ + z.lazy(() => Cpu9$inboundSchema), + z.any(), +]); + +export function cpuUnion9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuUnion9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuUnion9' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnit9$inboundSchema: z.ZodEnum = z.enum( + MemoryUnit9, +); + +/** @internal */ +export const Memory9$inboundSchema: z.ZodType = z.object({ + unit: MemoryUnit9$inboundSchema, + value: z.number(), +}); + +export function memory9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Memory9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Memory9' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnion9$inboundSchema: z.ZodType = z + .union([z.lazy(() => Memory9$inboundSchema), z.any()]); + +export function memoryUnion9FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryUnion9$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryUnion9' from JSON`, + ); +} + +/** @internal */ +export const Nodes3$inboundSchema: z.ZodType = z.object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), +}); + +export function nodes3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Nodes3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Nodes3' from JSON`, + ); +} + +/** @internal */ +export const ProviderFleet3$inboundSchema: z.ZodType = + z.object({ + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + location: z.nullable(z.string()).optional(), + providerId: z.string(), + }); + +export function providerFleet3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProviderFleet3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProviderFleet3' from JSON`, + ); +} + +/** @internal */ +export const Reason20$inboundSchema: z.ZodEnum = z.enum( + Reason20, +); + +/** @internal */ +export const CollectionIssueSeverity20$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity20 +> = z.enum(CollectionIssueSeverity20); + +/** @internal */ +export const CollectionIssue20$inboundSchema: z.ZodType< + CollectionIssue20, + unknown +> = z.object({ + message: z.string(), + reason: Reason20$inboundSchema, + severity: CollectionIssueSeverity20$inboundSchema, + source: z.string(), +}); + +export function collectionIssue20FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue20$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue20' from JSON`, + ); +} + +/** @internal */ +export const Health20$inboundSchema: z.ZodEnum = z.enum( + Health20, +); + +/** @internal */ +export const Lifecycle20$inboundSchema: z.ZodEnum = z.enum( + Lifecycle20, +); + +/** @internal */ +export const DataStatus20$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue20$inboundSchema)), + health: Health20$inboundSchema, + lifecycle: Lifecycle20$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus20FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus20$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus20' from JSON`, + ); +} + +/** @internal */ +export const DataAzure2$inboundSchema: z.ZodType = z + .object({ + backendClusterId: z.nullable(z.string()).optional(), + capacityGroups: z.array(z.lazy(() => CapacityGroup3$inboundSchema)), + cpu: z.nullable(z.union([z.lazy(() => Cpu9$inboundSchema), z.any()])) + .optional(), + memory: z.nullable(z.union([z.lazy(() => Memory9$inboundSchema), z.any()])) + .optional(), + name: z.string(), + nodes: z.lazy(() => Nodes3$inboundSchema), + providerFleets: z.array(z.lazy(() => ProviderFleet3$inboundSchema)), + region: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus20$inboundSchema), + backend: z.literal("azure"), + }); + +export function dataAzure2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAzure2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAzure2' from JSON`, + ); +} + +/** @internal */ +export const Category2$inboundSchema: z.ZodEnum = z.enum( + Category2, +); + +/** @internal */ +export const CapacityBlocker2$inboundSchema: z.ZodType< + CapacityBlocker2, + unknown +> = z.object({ + category: Category2$inboundSchema, + message: z.string(), + observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + providerCode: z.nullable(z.string()).optional(), + providerReference: z.nullable(z.string()).optional(), +}); + +export function capacityBlocker2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapacityBlocker2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapacityBlocker2' from JSON`, + ); +} + +/** @internal */ +export const CapacityBlockerUnion2$inboundSchema: z.ZodType< + CapacityBlockerUnion2, + unknown +> = z.union([z.lazy(() => CapacityBlocker2$inboundSchema), z.any()]); + +export function capacityBlockerUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapacityBlockerUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapacityBlockerUnion2' from JSON`, + ); +} + +/** @internal */ +export const UtilizationUnit2$inboundSchema: z.ZodEnum< + typeof UtilizationUnit2 +> = z.enum(UtilizationUnit2); + +/** @internal */ +export const Utilization2$inboundSchema: z.ZodType = z + .object({ + unit: UtilizationUnit2$inboundSchema, + value: z.number(), + }); + +export function utilization2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Utilization2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Utilization2' from JSON`, + ); +} + +/** @internal */ +export const UtilizationUnion2$inboundSchema: z.ZodType< + UtilizationUnion2, + unknown +> = z.union([z.lazy(() => Utilization2$inboundSchema), z.any()]); + +export function utilizationUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => UtilizationUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'UtilizationUnion2' from JSON`, + ); +} + +/** @internal */ +export const Recommendation2$inboundSchema: z.ZodType< + Recommendation2, + unknown +> = z.object({ + desiredMachines: z.int(), + reason: z.nullable(z.string()).optional(), + unschedulableReplicas: z.nullable(z.int()).optional(), + utilization: z.nullable( + z.union([z.lazy(() => Utilization2$inboundSchema), z.any()]), + ).optional(), +}); + +export function recommendation2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Recommendation2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Recommendation2' from JSON`, + ); +} + +/** @internal */ +export const RecommendationUnion2$inboundSchema: z.ZodType< + RecommendationUnion2, + unknown +> = z.union([z.lazy(() => Recommendation2$inboundSchema), z.any()]); + +export function recommendationUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RecommendationUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RecommendationUnion2' from JSON`, + ); +} + +/** @internal */ +export const CapacityGroup2$inboundSchema: z.ZodType = + z.object({ + capacityBlocker: z.nullable( + z.union([z.lazy(() => CapacityBlocker2$inboundSchema), z.any()]), + ).optional(), + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + instanceType: z.nullable(z.string()).optional(), + maxMachines: z.nullable(z.int()).optional(), + minMachines: z.nullable(z.int()).optional(), + recommendation: z.nullable( + z.union([z.lazy(() => Recommendation2$inboundSchema), z.any()]), + ).optional(), + }); + +export function capacityGroup2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapacityGroup2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapacityGroup2' from JSON`, + ); +} + +/** @internal */ +export const CpuUnit8$inboundSchema: z.ZodEnum = z.enum( + CpuUnit8, +); + +/** @internal */ +export const Cpu8$inboundSchema: z.ZodType = z.object({ + unit: CpuUnit8$inboundSchema, + value: z.number(), +}); + +export function cpu8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Cpu8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Cpu8' from JSON`, + ); +} + +/** @internal */ +export const CpuUnion8$inboundSchema: z.ZodType = z.union([ + z.lazy(() => Cpu8$inboundSchema), + z.any(), +]); + +export function cpuUnion8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuUnion8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuUnion8' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnit8$inboundSchema: z.ZodEnum = z.enum( + MemoryUnit8, +); + +/** @internal */ +export const Memory8$inboundSchema: z.ZodType = z.object({ + unit: MemoryUnit8$inboundSchema, + value: z.number(), +}); + +export function memory8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Memory8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Memory8' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnion8$inboundSchema: z.ZodType = z + .union([z.lazy(() => Memory8$inboundSchema), z.any()]); + +export function memoryUnion8FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryUnion8$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryUnion8' from JSON`, + ); +} + +/** @internal */ +export const Nodes2$inboundSchema: z.ZodType = z.object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), +}); + +export function nodes2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Nodes2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Nodes2' from JSON`, + ); +} + +/** @internal */ +export const ProviderFleet2$inboundSchema: z.ZodType = + z.object({ + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + location: z.nullable(z.string()).optional(), + providerId: z.string(), + }); + +export function providerFleet2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProviderFleet2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProviderFleet2' from JSON`, + ); +} + +/** @internal */ +export const Reason19$inboundSchema: z.ZodEnum = z.enum( + Reason19, +); + +/** @internal */ +export const CollectionIssueSeverity19$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity19 +> = z.enum(CollectionIssueSeverity19); + +/** @internal */ +export const CollectionIssue19$inboundSchema: z.ZodType< + CollectionIssue19, + unknown +> = z.object({ + message: z.string(), + reason: Reason19$inboundSchema, + severity: CollectionIssueSeverity19$inboundSchema, + source: z.string(), +}); + +export function collectionIssue19FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue19$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue19' from JSON`, + ); +} + +/** @internal */ +export const Health19$inboundSchema: z.ZodEnum = z.enum( + Health19, +); + +/** @internal */ +export const Lifecycle19$inboundSchema: z.ZodEnum = z.enum( + Lifecycle19, +); + +/** @internal */ +export const DataStatus19$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue19$inboundSchema)), + health: Health19$inboundSchema, + lifecycle: Lifecycle19$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus19FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus19$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus19' from JSON`, + ); +} + +/** @internal */ +export const DataGcp2$inboundSchema: z.ZodType = z.object({ + backendClusterId: z.nullable(z.string()).optional(), + capacityGroups: z.array(z.lazy(() => CapacityGroup2$inboundSchema)), + cpu: z.nullable(z.union([z.lazy(() => Cpu8$inboundSchema), z.any()])) + .optional(), + memory: z.nullable(z.union([z.lazy(() => Memory8$inboundSchema), z.any()])) + .optional(), + name: z.string(), + nodes: z.lazy(() => Nodes2$inboundSchema), + providerFleets: z.array(z.lazy(() => ProviderFleet2$inboundSchema)), + region: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus19$inboundSchema), + backend: z.literal("gcp"), +}); + +export function dataGcp2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataGcp2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataGcp2' from JSON`, + ); +} + +/** @internal */ +export const Category1$inboundSchema: z.ZodEnum = z.enum( + Category1, +); + +/** @internal */ +export const CapacityBlocker1$inboundSchema: z.ZodType< + CapacityBlocker1, + unknown +> = z.object({ + category: Category1$inboundSchema, + message: z.string(), + observedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), + providerCode: z.nullable(z.string()).optional(), + providerReference: z.nullable(z.string()).optional(), +}); + +export function capacityBlocker1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapacityBlocker1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapacityBlocker1' from JSON`, + ); +} + +/** @internal */ +export const CapacityBlockerUnion1$inboundSchema: z.ZodType< + CapacityBlockerUnion1, + unknown +> = z.union([z.lazy(() => CapacityBlocker1$inboundSchema), z.any()]); + +export function capacityBlockerUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapacityBlockerUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapacityBlockerUnion1' from JSON`, + ); +} + +/** @internal */ +export const UtilizationUnit1$inboundSchema: z.ZodEnum< + typeof UtilizationUnit1 +> = z.enum(UtilizationUnit1); + +/** @internal */ +export const Utilization1$inboundSchema: z.ZodType = z + .object({ + unit: UtilizationUnit1$inboundSchema, + value: z.number(), + }); + +export function utilization1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Utilization1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Utilization1' from JSON`, + ); +} + +/** @internal */ +export const UtilizationUnion1$inboundSchema: z.ZodType< + UtilizationUnion1, + unknown +> = z.union([z.lazy(() => Utilization1$inboundSchema), z.any()]); + +export function utilizationUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => UtilizationUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'UtilizationUnion1' from JSON`, + ); +} + +/** @internal */ +export const Recommendation1$inboundSchema: z.ZodType< + Recommendation1, + unknown +> = z.object({ + desiredMachines: z.int(), + reason: z.nullable(z.string()).optional(), + unschedulableReplicas: z.nullable(z.int()).optional(), + utilization: z.nullable( + z.union([z.lazy(() => Utilization1$inboundSchema), z.any()]), + ).optional(), +}); + +export function recommendation1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Recommendation1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Recommendation1' from JSON`, + ); +} + +/** @internal */ +export const RecommendationUnion1$inboundSchema: z.ZodType< + RecommendationUnion1, + unknown +> = z.union([z.lazy(() => Recommendation1$inboundSchema), z.any()]); + +export function recommendationUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RecommendationUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RecommendationUnion1' from JSON`, + ); +} + +/** @internal */ +export const CapacityGroup1$inboundSchema: z.ZodType = + z.object({ + capacityBlocker: z.nullable( + z.union([z.lazy(() => CapacityBlocker1$inboundSchema), z.any()]), + ).optional(), + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + instanceType: z.nullable(z.string()).optional(), + maxMachines: z.nullable(z.int()).optional(), + minMachines: z.nullable(z.int()).optional(), + recommendation: z.nullable( + z.union([z.lazy(() => Recommendation1$inboundSchema), z.any()]), + ).optional(), + }); + +export function capacityGroup1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CapacityGroup1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CapacityGroup1' from JSON`, + ); +} + +/** @internal */ +export const CpuUnit7$inboundSchema: z.ZodEnum = z.enum( + CpuUnit7, +); + +/** @internal */ +export const Cpu7$inboundSchema: z.ZodType = z.object({ + unit: CpuUnit7$inboundSchema, + value: z.number(), +}); + +export function cpu7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Cpu7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Cpu7' from JSON`, + ); +} + +/** @internal */ +export const CpuUnion7$inboundSchema: z.ZodType = z.union([ + z.lazy(() => Cpu7$inboundSchema), + z.any(), +]); + +export function cpuUnion7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuUnion7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuUnion7' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnit7$inboundSchema: z.ZodEnum = z.enum( + MemoryUnit7, +); + +/** @internal */ +export const Memory7$inboundSchema: z.ZodType = z.object({ + unit: MemoryUnit7$inboundSchema, + value: z.number(), +}); + +export function memory7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Memory7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Memory7' from JSON`, + ); +} + +/** @internal */ +export const MemoryUnion7$inboundSchema: z.ZodType = z + .union([z.lazy(() => Memory7$inboundSchema), z.any()]); + +export function memoryUnion7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => MemoryUnion7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'MemoryUnion7' from JSON`, + ); +} + +/** @internal */ +export const Nodes1$inboundSchema: z.ZodType = z.object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), +}); + +export function nodes1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Nodes1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Nodes1' from JSON`, + ); +} + +/** @internal */ +export const ProviderFleet1$inboundSchema: z.ZodType = + z.object({ + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + location: z.nullable(z.string()).optional(), + providerId: z.string(), + }); + +export function providerFleet1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProviderFleet1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProviderFleet1' from JSON`, + ); +} + +/** @internal */ +export const Reason18$inboundSchema: z.ZodEnum = z.enum( + Reason18, +); + +/** @internal */ +export const CollectionIssueSeverity18$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity18 +> = z.enum(CollectionIssueSeverity18); + +/** @internal */ +export const CollectionIssue18$inboundSchema: z.ZodType< + CollectionIssue18, + unknown +> = z.object({ + message: z.string(), + reason: Reason18$inboundSchema, + severity: CollectionIssueSeverity18$inboundSchema, + source: z.string(), +}); + +export function collectionIssue18FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue18$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue18' from JSON`, + ); +} + +/** @internal */ +export const Health18$inboundSchema: z.ZodEnum = z.enum( + Health18, +); + +/** @internal */ +export const Lifecycle18$inboundSchema: z.ZodEnum = z.enum( + Lifecycle18, +); + +/** @internal */ +export const DataStatus18$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue18$inboundSchema)), + health: Health18$inboundSchema, + lifecycle: Lifecycle18$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus18FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus18$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus18' from JSON`, + ); +} + +/** @internal */ +export const DataAws2$inboundSchema: z.ZodType = z.object({ + backendClusterId: z.nullable(z.string()).optional(), + capacityGroups: z.array(z.lazy(() => CapacityGroup1$inboundSchema)), + cpu: z.nullable(z.union([z.lazy(() => Cpu7$inboundSchema), z.any()])) + .optional(), + memory: z.nullable(z.union([z.lazy(() => Memory7$inboundSchema), z.any()])) + .optional(), + name: z.string(), + nodes: z.lazy(() => Nodes1$inboundSchema), + providerFleets: z.array(z.lazy(() => ProviderFleet1$inboundSchema)), + region: z.nullable(z.string()).optional(), + status: z.lazy(() => DataStatus18$inboundSchema), + backend: z.literal("aws"), +}); + +export function dataAws2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataAws2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataAws2' from JSON`, + ); +} + +/** @internal */ +export const DataUnion5$inboundSchema: z.ZodType = z.union( + [ + z.lazy(() => DataAws2$inboundSchema), + z.lazy(() => DataGcp2$inboundSchema), + z.lazy(() => DataAzure2$inboundSchema), + z.lazy(() => DataLocal5$inboundSchema), + ], +); + +export function dataUnion5FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataUnion5$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataUnion5' from JSON`, + ); +} + +/** @internal */ +export const DataComputeCluster$inboundSchema: z.ZodType< + DataComputeCluster, + unknown +> = z.object({ + data: z.union([ + z.lazy(() => DataAws2$inboundSchema), + z.lazy(() => DataGcp2$inboundSchema), + z.lazy(() => DataAzure2$inboundSchema), + z.lazy(() => DataLocal5$inboundSchema), + ]), + resourceType: z.literal("compute-cluster"), +}); + +export function dataComputeClusterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataComputeCluster$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataComputeCluster' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstanceCpuUnit$inboundSchema: z.ZodEnum< + typeof DaemonInstanceCpuUnit +> = z.enum(DaemonInstanceCpuUnit); + +/** @internal */ +export const DaemonInstanceCpu$inboundSchema: z.ZodType< + DaemonInstanceCpu, + unknown +> = z.object({ + unit: DaemonInstanceCpuUnit$inboundSchema, + value: z.number(), +}); + +export function daemonInstanceCpuFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstanceCpu$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstanceCpu' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstanceCpuUnion4$inboundSchema: z.ZodType< + DaemonInstanceCpuUnion4, + unknown +> = z.union([z.lazy(() => DaemonInstanceCpu$inboundSchema), z.any()]); + +export function daemonInstanceCpuUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstanceCpuUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstanceCpuUnion4' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstanceKind$inboundSchema: z.ZodEnum< + typeof DaemonInstanceKind +> = z.enum(DaemonInstanceKind); + +/** @internal */ +export const DaemonInstanceMemoryUnit$inboundSchema: z.ZodEnum< + typeof DaemonInstanceMemoryUnit +> = z.enum(DaemonInstanceMemoryUnit); + +/** @internal */ +export const DaemonInstanceMemory$inboundSchema: z.ZodType< + DaemonInstanceMemory, + unknown +> = z.object({ + unit: DaemonInstanceMemoryUnit$inboundSchema, + value: z.number(), +}); + +export function daemonInstanceMemoryFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstanceMemory$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstanceMemory' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstanceMemoryUnion4$inboundSchema: z.ZodType< + DaemonInstanceMemoryUnion4, + unknown +> = z.union([z.lazy(() => DaemonInstanceMemory$inboundSchema), z.any()]); + +export function daemonInstanceMemoryUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstanceMemoryUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstanceMemoryUnion4' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstance4$inboundSchema: z.ZodType< + DaemonInstance4, + unknown +> = z.object({ + cpu: z.nullable( + z.union([z.lazy(() => DaemonInstanceCpu$inboundSchema), z.any()]), + ).optional(), + kind: DaemonInstanceKind$inboundSchema, + memory: z.nullable( + z.union([z.lazy(() => DaemonInstanceMemory$inboundSchema), z.any()]), + ).optional(), + name: z.string(), + phase: z.nullable(z.string()).optional(), + pid: z.nullable(z.int()).optional(), + ready: z.boolean(), + restartCount: z.nullable(z.int()).optional(), + unitId: z.string(), +}); + +export function daemonInstance4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstance4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstance4' from JSON`, + ); +} + +/** @internal */ +export const DaemonInstanceUnion$inboundSchema: z.ZodType< + DaemonInstanceUnion, + unknown +> = z.union([z.lazy(() => DaemonInstance4$inboundSchema), z.any()]); + +export function daemonInstanceUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DaemonInstanceUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DaemonInstanceUnion' from JSON`, + ); +} + +/** @internal */ +export const EventSeverity3$inboundSchema: z.ZodEnum = z + .enum(EventSeverity3); + +/** @internal */ +export const Subject3$inboundSchema: z.ZodType = z.object({ + id: z.nullable(z.string()).optional(), + kind: z.string(), + name: z.nullable(z.string()).optional(), +}); + +export function subject3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Subject3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Subject3' from JSON`, + ); +} + +/** @internal */ +export const SubjectUnion3$inboundSchema: z.ZodType = z + .union([z.lazy(() => Subject3$inboundSchema), z.any()]); + +export function subjectUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SubjectUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SubjectUnion3' from JSON`, + ); +} + +/** @internal */ +export const Event10$inboundSchema: z.ZodType = z.object({ + kind: z.string(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + severity: EventSeverity3$inboundSchema, + subject: z.nullable(z.union([z.lazy(() => Subject3$inboundSchema), z.any()])) + .optional(), + timestamp: z.iso.datetime({ offset: true }).transform(v => new Date(v)), +}); + +export function event10FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Event10$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Event10' from JSON`, + ); +} + +/** @internal */ +export const Reason17$inboundSchema: z.ZodEnum = z.enum( + Reason17, +); + +/** @internal */ +export const CollectionIssueSeverity17$inboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity17 +> = z.enum(CollectionIssueSeverity17); + +/** @internal */ +export const CollectionIssue17$inboundSchema: z.ZodType< + CollectionIssue17, + unknown +> = z.object({ + message: z.string(), + reason: Reason17$inboundSchema, + severity: CollectionIssueSeverity17$inboundSchema, + source: z.string(), +}); + +export function collectionIssue17FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CollectionIssue17$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CollectionIssue17' from JSON`, + ); +} + +/** @internal */ +export const Health17$inboundSchema: z.ZodEnum = z.enum( + Health17, +); + +/** @internal */ +export const Lifecycle17$inboundSchema: z.ZodEnum = z.enum( + Lifecycle17, +); + +/** @internal */ +export const DataStatus17$inboundSchema: z.ZodType = z + .object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue17$inboundSchema)), + health: Health17$inboundSchema, + lifecycle: Lifecycle17$inboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), + }); + +export function dataStatus17FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataStatus17$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataStatus17' from JSON`, + ); +} + +/** @internal */ +export const DataLocal4$inboundSchema: z.ZodType = z + .object({ + commandSupported: z.boolean(), + daemonInstance: z.nullable( + z.union([z.lazy(() => DaemonInstance4$inboundSchema), z.any()]), + ).optional(), + daemonName: z.string(), + events: z.array(z.lazy(() => Event10$inboundSchema)), + exitReason: z.nullable(z.string()).optional(), + imagePathPresent: z.boolean(), + pid: z.nullable(z.int()).optional(), + restartCount: z.nullable(z.int()).optional(), + runtimeId: z.string(), + status: z.lazy(() => DataStatus17$inboundSchema), + backend: z.literal("local"), + }); + +export function dataLocal4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DataLocal4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DataLocal4' from JSON`, + ); +} + +/** @internal */ +export const CpuUnit6$inboundSchema: z.ZodEnum = z.enum( + CpuUnit6, +); + +/** @internal */ +export const Cpu6$inboundSchema: z.ZodType = z.object({ + unit: CpuUnit6$inboundSchema, + value: z.number(), +}); + +export function cpu6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Cpu6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Cpu6' from JSON`, + ); +} + +/** @internal */ +export const CpuUnion6$inboundSchema: z.ZodType = z.union([ + z.lazy(() => Cpu6$inboundSchema), + z.any(), +]); + +export function cpuUnion6FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => CpuUnion6$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'CpuUnion6' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObject7$inboundSchema: z.ZodType< + InvolvedObject7, + unknown +> = z.object({ + apiVersion: z.nullable(z.string()).optional(), + fieldPath: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + namespace: z.nullable(z.string()).optional(), + resourceVersion: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), +}); + +export function involvedObject7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObject7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObject7' from JSON`, + ); +} + +/** @internal */ +export const InvolvedObjectUnion7$inboundSchema: z.ZodType< + InvolvedObjectUnion7, + unknown +> = z.union([z.lazy(() => InvolvedObject7$inboundSchema), z.any()]); + +export function involvedObjectUnion7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => InvolvedObjectUnion7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'InvolvedObjectUnion7' from JSON`, + ); +} + +/** @internal */ +export const Source7$inboundSchema: z.ZodType = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function source7FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => Source7$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'Source7' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/persistimporteddeploymentrequest.ts b/client-sdks/platform/typescript/src/models/persistimporteddeploymentrequest.ts index 6db3650aa..0cb80058b 100644 --- a/client-sdks/platform/typescript/src/models/persistimporteddeploymentrequest.ts +++ b/client-sdks/platform/typescript/src/models/persistimporteddeploymentrequest.ts @@ -13,6918 +13,1130 @@ import { KubernetesBasePlatform, KubernetesBasePlatform$outboundSchema, } from "./kubernetesbaseplatform.js"; +import { + ModePersist, + ModePersist$outboundSchema, + PersistImportedDeploymentRequestEnvironmentInfoUnion, + PersistImportedDeploymentRequestEnvironmentInfoUnion$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoUnion$outboundSchema, + PersistImportedDeploymentRequestInput, + PersistImportedDeploymentRequestInput$Outbound, + PersistImportedDeploymentRequestInput$outboundSchema, + PersistImportedDeploymentRequestManagementEnum, + PersistImportedDeploymentRequestManagementEnum$outboundSchema, + PersistImportedDeploymentRequestOverrideUnion, + PersistImportedDeploymentRequestOverrideUnion$Outbound, + PersistImportedDeploymentRequestOverrideUnion$outboundSchema, + PersistImportedDeploymentRequestPlatformEnum, + PersistImportedDeploymentRequestPlatformEnum$outboundSchema, + PersistImportedDeploymentRequestStackSettings, + PersistImportedDeploymentRequestStackSettings$Outbound, + PersistImportedDeploymentRequestStackSettings$outboundSchema, +} from "./persistimporteddeploymentrequestoverrideunion.js"; import { StackInputValueRequest, StackInputValueRequest$Outbound, StackInputValueRequest$outboundSchema, } from "./stackinputvaluerequest.js"; -export const ModePersist = { - Persist: "persist", -} as const; -export type ModePersist = ClosedEnum; +export type PersistImportedDeploymentRequestManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; /** - * Represents the target cloud platform. - */ -export const PersistImportedDeploymentRequestPlatformEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. + * AWS-specific binding specification */ -export type PersistImportedDeploymentRequestPlatformEnum = ClosedEnum< - typeof PersistImportedDeploymentRequestPlatformEnum ->; - -export type PersistImportedDeploymentRequestPoolsAutoscale = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; +export type PersistImportedDeploymentRequestExtendAwResource = { /** - * Maximum machine count. + * Optional condition for additional filtering (rare) */ - max: number; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Minimum machine count. + * Resource ARNs to bind to */ - min: number; - mode: "autoscale"; + resources: Array; }; -export type PersistImportedDeploymentRequestPoolsFixed = { +/** + * AWS-specific binding specification + */ +export type PersistImportedDeploymentRequestExtendAwStack = { /** - * Provider machine type selected for this deployment. + * Optional condition for additional filtering (rare) */ - machine?: string | null | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Number of machines to run. + * Resource ARNs to bind to */ - machines: number; - mode: "fixed"; + resources: Array; }; /** - * User-selected deployment settings for one compute pool. - */ -export type PersistImportedDeploymentRequestPoolsUnion = - | PersistImportedDeploymentRequestPoolsFixed - | PersistImportedDeploymentRequestPoolsAutoscale; - -/** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. + * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestCompute = { +export type PersistImportedDeploymentRequestExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: PersistImportedDeploymentRequestExtendAwResource | undefined; /** - * Selected compute choices keyed by pool ID. + * AWS-specific binding specification */ - pools?: { - [k: string]: - | PersistImportedDeploymentRequestPoolsFixed - | PersistImportedDeploymentRequestPoolsAutoscale; - } | undefined; + stack?: PersistImportedDeploymentRequestExtendAwStack | undefined; }; -export type PersistImportedDeploymentRequestComputeUnion = - | PersistImportedDeploymentRequestCompute - | any; - /** - * Deployment model: how updates are delivered to the remote environment. + * IAM effect. Defaults to Allow. */ -export const PersistImportedDeploymentRequestDeploymentModel = { - Push: "push", - Pull: "pull", +export const PersistImportedDeploymentRequestExtendEffect = { + Allow: "Allow", + Deny: "Deny", } as const; /** - * Deployment model: how updates are delivered to the remote environment. + * IAM effect. Defaults to Allow. */ -export type PersistImportedDeploymentRequestDeploymentModel = ClosedEnum< - typeof PersistImportedDeploymentRequestDeploymentModel +export type PersistImportedDeploymentRequestExtendEffect = ClosedEnum< + typeof PersistImportedDeploymentRequestExtendEffect >; -export type PersistImportedDeploymentRequestAws = { - certificateArn: string; -}; - -export type PersistImportedDeploymentRequestAwsUnion = - | PersistImportedDeploymentRequestAws - | any; - -export type PersistImportedDeploymentRequestAzureStackSettings = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; -}; - -export type PersistImportedDeploymentRequestAzureUnion = - | PersistImportedDeploymentRequestAzureStackSettings - | any; - -export type PersistImportedDeploymentRequestGcpStackSettings = { - certificateName: string; -}; - -export type PersistImportedDeploymentRequestGcpUnion = - | PersistImportedDeploymentRequestGcpStackSettings - | any; - /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestTlsSecretRef = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; +export type PersistImportedDeploymentRequestExtendAwGrant = { /** - * Secret name. + * AWS IAM actions (only for AWS) */ - secretName: string; -}; - -export type PersistImportedDeploymentRequestDomainsKubernetes = { + actions?: Array | null | undefined; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Azure actions (only for Azure) */ - tlsSecretRef: PersistImportedDeploymentRequestTlsSecretRef; -}; - -export type PersistImportedDeploymentRequestDomainsKubernetesUnion = - | PersistImportedDeploymentRequestDomainsKubernetes - | any; - -/** - * Platform-specific certificate references for custom domains. - */ -export type PersistImportedDeploymentRequestDomainsCertificate = { - aws?: PersistImportedDeploymentRequestAws | any | null | undefined; - azure?: - | PersistImportedDeploymentRequestAzureStackSettings - | any - | null - | undefined; - gcp?: - | PersistImportedDeploymentRequestGcpStackSettings - | any - | null - | undefined; - kubernetes?: - | PersistImportedDeploymentRequestDomainsKubernetes - | any - | null - | undefined; -}; - -/** - * Custom domain configuration for a single resource. - */ -export type PersistImportedDeploymentRequestCustomDomains = { + dataActions?: Array | null | undefined; /** - * Platform-specific certificate references for custom domains. + * GCP permissions that require an exact residual custom role. */ - certificate: PersistImportedDeploymentRequestDomainsCertificate; + permissions?: Array | null | undefined; /** - * Fully qualified domain name to use. + * Provider predefined roles to bind directly. */ - domain: string; -}; - -/** - * Domain configuration for the stack. - * - * @remarks - * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. - */ -export type PersistImportedDeploymentRequestDomains = { + predefinedRoles?: Array | null | undefined; /** - * Custom domain configuration per resource ID. + * GCP residual custom permissions to pair with predefined roles. */ - customDomains?: - | { [k: string]: PersistImportedDeploymentRequestCustomDomains } - | null - | undefined; -}; - -export type PersistImportedDeploymentRequestDomainsUnion = - | PersistImportedDeploymentRequestDomains - | any; - -/** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ -export type PersistImportedDeploymentRequestExternalBindings = {}; - -/** - * How heartbeat health checks are handled. - */ -export const PersistImportedDeploymentRequestHeartbeats = { - Off: "off", - On: "on", -} as const; -/** - * How heartbeat health checks are handled. - */ -export type PersistImportedDeploymentRequestHeartbeats = ClosedEnum< - typeof PersistImportedDeploymentRequestHeartbeats ->; - -/** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. - */ -export type PersistImportedDeploymentRequestCloud = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; + residualPermissions?: Array | null | undefined; }; -export type PersistImportedDeploymentRequestCloudUnion = - | PersistImportedDeploymentRequestCloud - | any; - /** - * Ownership model for the Kubernetes cluster. - */ -export const PersistImportedDeploymentRequestOwnership = { - Managed: "managed", - Existing: "existing", - External: "external", -} as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type PersistImportedDeploymentRequestOwnership = ClosedEnum< - typeof PersistImportedDeploymentRequestOwnership ->; - -/** - * Kubernetes cluster setup settings. + * AWS-specific platform permission configuration */ -export type PersistImportedDeploymentRequestCluster = { - cloud?: PersistImportedDeploymentRequestCloud | any | null | undefined; - /** - * Namespace where the Alien chart and application resources run. - */ - namespace?: string | null | undefined; +export type PersistImportedDeploymentRequestExtendAw = { /** - * Ownership model for the Kubernetes cluster. + * Generic binding configuration for permissions */ - ownership: PersistImportedDeploymentRequestOwnership; -}; - -export type PersistImportedDeploymentRequestClusterUnion = - | PersistImportedDeploymentRequestCluster - | any; - -export type PersistImportedDeploymentRequestCertificateNone2 = { - mode: "none"; -}; - -export type PersistImportedDeploymentRequestCertificateManagedTLSSecret2 = { - mode: "managedTlsSecret"; + binding: PersistImportedDeploymentRequestExtendAwBinding; /** - * Secret name template. Runtime may substitute resource/deployment tokens. + * Short admin-facing description of why this entry exists. */ - secretNameTemplate: string; -}; - -export type PersistImportedDeploymentRequestCertificateAwsAcmArn2 = { + description?: string | null | undefined; /** - * Existing ACM certificate ARN. + * IAM effect. Defaults to Allow. */ - certificateArn: string; - mode: "awsAcmArn"; -}; - -export type PersistImportedDeploymentRequestCertificateManagedAcmImport2 = { - mode: "managedAcmImport"; + effect?: PersistImportedDeploymentRequestExtendEffect | undefined; /** - * ACM region. Defaults to the deployment region when omitted. + * Grant permissions for a specific cloud platform */ - region?: string | null | undefined; + grant: PersistImportedDeploymentRequestExtendAwGrant; /** - * Tags applied to runtime-imported ACM certificates. + * Stable admin-facing label for this permission entry. */ - tags?: { [k: string]: string } | undefined; + label?: string | null | undefined; }; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Azure-specific binding specification */ -export type PersistImportedDeploymentRequestCertificateTLSSecretRef2 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; +export type PersistImportedDeploymentRequestExtendAzureResource = { /** - * Secret name. + * Scope (subscription/resource group/resource level) */ - secretName: string; - mode: "tlsSecretRef"; + scope: string; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Azure-specific binding specification */ -export type PersistImportedDeploymentRequestCertificateUnion2 = - | PersistImportedDeploymentRequestCertificateTLSSecretRef2 - | PersistImportedDeploymentRequestCertificateManagedAcmImport2 - | PersistImportedDeploymentRequestCertificateAwsAcmArn2 - | PersistImportedDeploymentRequestCertificateManagedTLSSecret2 - | PersistImportedDeploymentRequestCertificateNone2; - -export const PersistImportedDeploymentRequestModeCustom = { - Custom: "custom", -} as const; -export type PersistImportedDeploymentRequestModeCustom = ClosedEnum< - typeof PersistImportedDeploymentRequestModeCustom ->; - -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4 = - ClosedEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4 - >; - -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4; - }; - -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum4 = { - GkeGateway: "gkeGateway", -} as const; -export type PersistImportedDeploymentRequestProviderGkeGatewayEnum4 = - ClosedEnum; - -export type PersistImportedDeploymentRequestProviderGkeGateway4 = { - provider: PersistImportedDeploymentRequestProviderGkeGatewayEnum4; +export type PersistImportedDeploymentRequestExtendAzureStack = { /** - * Optional static address name for the Gateway frontend. + * Scope (subscription/resource group/resource level) */ - staticAddressName?: string | null | undefined; + scope: string; }; -export const PersistImportedDeploymentRequestProviderAwsAlbEnum4 = { - AwsAlb: "awsAlb", -} as const; -export type PersistImportedDeploymentRequestProviderAwsAlbEnum4 = ClosedEnum< - typeof PersistImportedDeploymentRequestProviderAwsAlbEnum4 ->; - -export type PersistImportedDeploymentRequestProviderAwsAlb4 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: PersistImportedDeploymentRequestProviderAwsAlbEnum4; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestExtendAzureBinding = { /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Azure-specific binding specification */ - subnetIds?: Array | undefined; + resource?: PersistImportedDeploymentRequestExtendAzureResource | undefined; /** - * ALB target type, usually `ip`. + * Azure-specific binding specification */ - targetType: string; + stack?: PersistImportedDeploymentRequestExtendAzureStack | undefined; }; -export type PersistImportedDeploymentRequestProviderUnion4 = - | PersistImportedDeploymentRequestProviderAwsAlb4 - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4 - | PersistImportedDeploymentRequestProviderGkeGateway4 - | any; - /** - * Shared Gateway API route profile values. + * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestRouteGateway2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; +export type PersistImportedDeploymentRequestExtendAzureGrant = { /** - * Route controller identifier, for example a cloud Gateway controller. + * AWS IAM actions (only for AWS) */ - controller?: string | null | undefined; + actions?: Array | null | undefined; /** - * GatewayClass selected for generated Gateways. + * Azure actions (only for Azure) */ - gatewayClassName: string; + dataActions?: Array | null | undefined; /** - * Labels applied to route objects. + * GCP permissions that require an exact residual custom role. */ - labels?: { [k: string]: string } | undefined; + permissions?: Array | null | undefined; /** - * Listener port, usually 443. + * Provider predefined roles to bind directly. */ - listenerPort: number; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb4 - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4 - | PersistImportedDeploymentRequestProviderGkeGateway4 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3 = - ClosedEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3 - >; - -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3; - }; - -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum3 = { - GkeGateway: "gkeGateway", -} as const; -export type PersistImportedDeploymentRequestProviderGkeGatewayEnum3 = - ClosedEnum; - -export type PersistImportedDeploymentRequestProviderGkeGateway3 = { - provider: PersistImportedDeploymentRequestProviderGkeGatewayEnum3; + predefinedRoles?: Array | null | undefined; /** - * Optional static address name for the Gateway frontend. + * GCP residual custom permissions to pair with predefined roles. */ - staticAddressName?: string | null | undefined; + residualPermissions?: Array | null | undefined; }; -export const PersistImportedDeploymentRequestProviderAwsAlbEnum3 = { - AwsAlb: "awsAlb", -} as const; -export type PersistImportedDeploymentRequestProviderAwsAlbEnum3 = ClosedEnum< - typeof PersistImportedDeploymentRequestProviderAwsAlbEnum3 ->; - -export type PersistImportedDeploymentRequestProviderAwsAlb3 = { +/** + * Azure-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestExtendAzure = { /** - * Optional ALB IP address type, such as `dualstack`. + * Generic binding configuration for permissions */ - ipAddressType?: string | null | undefined; - provider: PersistImportedDeploymentRequestProviderAwsAlbEnum3; + binding: PersistImportedDeploymentRequestExtendAzureBinding; /** - * Internet-facing or internal ALB scheme. + * Short admin-facing description of why this entry exists. */ - scheme: string; + description?: string | null | undefined; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Grant permissions for a specific cloud platform */ - subnetIds?: Array | undefined; + grant: PersistImportedDeploymentRequestExtendAzureGrant; /** - * ALB target type, usually `ip`. + * Stable admin-facing label for this permission entry. */ - targetType: string; + label?: string | null | undefined; }; -export type PersistImportedDeploymentRequestProviderUnion3 = - | PersistImportedDeploymentRequestProviderAwsAlb3 - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3 - | PersistImportedDeploymentRequestProviderGkeGateway3 - | any; - /** - * Shared Ingress route profile values. + * GCP IAM condition */ -export type PersistImportedDeploymentRequestRouteIngress2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb3 - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3 - | PersistImportedDeploymentRequestProviderGkeGateway3 - | any - | null - | undefined; - routeApi: "ingress"; +export type PersistImportedDeploymentRequestExtendConditionResource = { + expression: string; + title: string; }; +export type PersistImportedDeploymentRequestExtendResourceConditionUnion = + | PersistImportedDeploymentRequestExtendConditionResource + | any; + /** - * Kubernetes route API selected for public endpoints. + * GCP-specific binding specification */ -export type PersistImportedDeploymentRequestRouteUnion2 = - | PersistImportedDeploymentRequestRouteIngress2 - | PersistImportedDeploymentRequestRouteGateway2; - -export type PersistImportedDeploymentRequestExposureCustom = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | PersistImportedDeploymentRequestCertificateTLSSecretRef2 - | PersistImportedDeploymentRequestCertificateManagedAcmImport2 - | PersistImportedDeploymentRequestCertificateAwsAcmArn2 - | PersistImportedDeploymentRequestCertificateManagedTLSSecret2 - | PersistImportedDeploymentRequestCertificateNone2; - /** - * Hostname routed by the Kubernetes public endpoint. - */ - domain: string; - mode: PersistImportedDeploymentRequestModeCustom; +export type PersistImportedDeploymentRequestExtendGcpResource = { + condition?: + | PersistImportedDeploymentRequestExtendConditionResource + | any + | null + | undefined; /** - * Kubernetes route API selected for public endpoints. + * Scope (project/resource level) */ - route: - | PersistImportedDeploymentRequestRouteIngress2 - | PersistImportedDeploymentRequestRouteGateway2; -}; - -export type PersistImportedDeploymentRequestCertificateNone1 = { - mode: "none"; + scope: string; }; -export type PersistImportedDeploymentRequestCertificateManagedTLSSecret1 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; +/** + * GCP IAM condition + */ +export type PersistImportedDeploymentRequestExtendConditionStack = { + expression: string; + title: string; }; -export type PersistImportedDeploymentRequestCertificateAwsAcmArn1 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; -}; +export type PersistImportedDeploymentRequestExtendStackConditionUnion = + | PersistImportedDeploymentRequestExtendConditionStack + | any; -export type PersistImportedDeploymentRequestCertificateManagedAcmImport1 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; +/** + * GCP-specific binding specification + */ +export type PersistImportedDeploymentRequestExtendGcpStack = { + condition?: + | PersistImportedDeploymentRequestExtendConditionStack + | any + | null + | undefined; /** - * Tags applied to runtime-imported ACM certificates. + * Scope (project/resource level) */ - tags?: { [k: string]: string } | undefined; + scope: string; }; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestCertificateTLSSecretRef1 = { +export type PersistImportedDeploymentRequestExtendGcpBinding = { /** - * Secret namespace. Defaults to the release namespace when omitted. + * GCP-specific binding specification */ - namespace?: string | null | undefined; + resource?: PersistImportedDeploymentRequestExtendGcpResource | undefined; /** - * Secret name. + * GCP-specific binding specification */ - secretName: string; - mode: "tlsSecretRef"; + stack?: PersistImportedDeploymentRequestExtendGcpStack | undefined; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestCertificateUnion1 = - | PersistImportedDeploymentRequestCertificateTLSSecretRef1 - | PersistImportedDeploymentRequestCertificateManagedAcmImport1 - | PersistImportedDeploymentRequestCertificateAwsAcmArn1 - | PersistImportedDeploymentRequestCertificateManagedTLSSecret1 - | PersistImportedDeploymentRequestCertificateNone1; - -export const PersistImportedDeploymentRequestModeGenerated = { - Generated: "generated", -} as const; -export type PersistImportedDeploymentRequestModeGenerated = ClosedEnum< - typeof PersistImportedDeploymentRequestModeGenerated ->; - -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2 = - ClosedEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2 - >; - -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2; - }; - -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum2 = { - GkeGateway: "gkeGateway", -} as const; -export type PersistImportedDeploymentRequestProviderGkeGatewayEnum2 = - ClosedEnum; - -export type PersistImportedDeploymentRequestProviderGkeGateway2 = { - provider: PersistImportedDeploymentRequestProviderGkeGatewayEnum2; +export type PersistImportedDeploymentRequestExtendGcpGrant = { /** - * Optional static address name for the Gateway frontend. + * AWS IAM actions (only for AWS) */ - staticAddressName?: string | null | undefined; -}; - -export const PersistImportedDeploymentRequestProviderAwsAlbEnum2 = { - AwsAlb: "awsAlb", -} as const; -export type PersistImportedDeploymentRequestProviderAwsAlbEnum2 = ClosedEnum< - typeof PersistImportedDeploymentRequestProviderAwsAlbEnum2 ->; - -export type PersistImportedDeploymentRequestProviderAwsAlb2 = { + actions?: Array | null | undefined; /** - * Optional ALB IP address type, such as `dualstack`. + * Azure actions (only for Azure) */ - ipAddressType?: string | null | undefined; - provider: PersistImportedDeploymentRequestProviderAwsAlbEnum2; + dataActions?: Array | null | undefined; /** - * Internet-facing or internal ALB scheme. + * GCP permissions that require an exact residual custom role. */ - scheme: string; + permissions?: Array | null | undefined; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Provider predefined roles to bind directly. */ - subnetIds?: Array | undefined; + predefinedRoles?: Array | null | undefined; /** - * ALB target type, usually `ip`. + * GCP residual custom permissions to pair with predefined roles. */ - targetType: string; + residualPermissions?: Array | null | undefined; }; -export type PersistImportedDeploymentRequestProviderUnion2 = - | PersistImportedDeploymentRequestProviderAwsAlb2 - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2 - | PersistImportedDeploymentRequestProviderGkeGateway2 - | any; - /** - * Shared Gateway API route profile values. + * GCP-specific platform permission configuration */ -export type PersistImportedDeploymentRequestRouteGateway1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; +export type PersistImportedDeploymentRequestExtendGcp = { /** - * GatewayClass selected for generated Gateways. + * Generic binding configuration for permissions */ - gatewayClassName: string; + binding: PersistImportedDeploymentRequestExtendGcpBinding; /** - * Labels applied to route objects. + * Short admin-facing description of why this entry exists. */ - labels?: { [k: string]: string } | undefined; + description?: string | null | undefined; /** - * Listener port, usually 443. + * Grant permissions for a specific cloud platform */ - listenerPort: number; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb2 - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2 - | PersistImportedDeploymentRequestProviderGkeGateway2 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1 = - ClosedEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1 - >; - -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1; - }; - -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum1 = { - GkeGateway: "gkeGateway", -} as const; -export type PersistImportedDeploymentRequestProviderGkeGatewayEnum1 = - ClosedEnum; - -export type PersistImportedDeploymentRequestProviderGkeGateway1 = { - provider: PersistImportedDeploymentRequestProviderGkeGatewayEnum1; + grant: PersistImportedDeploymentRequestExtendGcpGrant; /** - * Optional static address name for the Gateway frontend. + * Stable admin-facing label for this permission entry. */ - staticAddressName?: string | null | undefined; + label?: string | null | undefined; }; -export const PersistImportedDeploymentRequestProviderAwsAlbEnum1 = { - AwsAlb: "awsAlb", -} as const; -export type PersistImportedDeploymentRequestProviderAwsAlbEnum1 = ClosedEnum< - typeof PersistImportedDeploymentRequestProviderAwsAlbEnum1 ->; - -export type PersistImportedDeploymentRequestProviderAwsAlb1 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: PersistImportedDeploymentRequestProviderAwsAlbEnum1; +/** + * Platform-specific permission configurations + */ +export type PersistImportedDeploymentRequestExtendPlatforms = { /** - * Internet-facing or internal ALB scheme. + * AWS permission configurations */ - scheme: string; + aws?: Array | null | undefined; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Azure permission configurations */ - subnetIds?: Array | undefined; + azure?: Array | null | undefined; /** - * ALB target type, usually `ip`. + * GCP permission configurations */ - targetType: string; + gcp?: Array | null | undefined; }; -export type PersistImportedDeploymentRequestProviderUnion1 = - | PersistImportedDeploymentRequestProviderAwsAlb1 - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1 - | PersistImportedDeploymentRequestProviderGkeGateway1 - | any; - /** - * Shared Ingress route profile values. + * A permission set that can be applied across different cloud platforms */ -export type PersistImportedDeploymentRequestRouteIngress1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; +export type PersistImportedDeploymentRequestExtend = { /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. + * Human-readable description of what this permission set allows */ - controller?: string | null | undefined; + description: string; /** - * `spec.ingressClassName` for generated Ingresses. + * Unique identifier for the permission set (e.g., "storage/data-read") */ - ingressClassName: string; + id: string; /** - * Labels applied to route objects. + * Platform-specific permission configurations */ - labels?: { [k: string]: string } | undefined; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb1 - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1 - | PersistImportedDeploymentRequestProviderGkeGateway1 - | any - | null - | undefined; - routeApi: "ingress"; + platforms: PersistImportedDeploymentRequestExtendPlatforms; }; /** - * Kubernetes route API selected for public endpoints. + * Reference to a permission set - either by name or inline definition */ -export type PersistImportedDeploymentRequestRouteUnion1 = - | PersistImportedDeploymentRequestRouteIngress1 - | PersistImportedDeploymentRequestRouteGateway1; +export type PersistImportedDeploymentRequestExtendUnion = + | PersistImportedDeploymentRequestExtend + | string; -export type PersistImportedDeploymentRequestExposureGenerated = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | PersistImportedDeploymentRequestCertificateTLSSecretRef1 - | PersistImportedDeploymentRequestCertificateManagedAcmImport1 - | PersistImportedDeploymentRequestCertificateAwsAcmArn1 - | PersistImportedDeploymentRequestCertificateManagedTLSSecret1 - | PersistImportedDeploymentRequestCertificateNone1; - mode: PersistImportedDeploymentRequestModeGenerated; +export type PersistImportedDeploymentRequestManagement1 = { /** - * Kubernetes route API selected for public endpoints. + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource */ - route: - | PersistImportedDeploymentRequestRouteIngress1 - | PersistImportedDeploymentRequestRouteGateway1; -}; - -export const PersistImportedDeploymentRequestModeDisabled = { - Disabled: "disabled", -} as const; -export type PersistImportedDeploymentRequestModeDisabled = ClosedEnum< - typeof PersistImportedDeploymentRequestModeDisabled ->; - -export type PersistImportedDeploymentRequestExposureDisabled = { - mode: PersistImportedDeploymentRequestModeDisabled; + extend: { + [k: string]: Array; + }; }; -export type PersistImportedDeploymentRequestExposureUnion = - | PersistImportedDeploymentRequestExposureCustom - | PersistImportedDeploymentRequestExposureGenerated - | PersistImportedDeploymentRequestExposureDisabled - | any; - /** - * Kubernetes runtime substrate configuration. - * - * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. + * Management permissions configuration for stack management access */ -export type PersistImportedDeploymentRequestKubernetes = { - cluster?: PersistImportedDeploymentRequestCluster | any | null | undefined; - exposure?: - | PersistImportedDeploymentRequestExposureCustom - | PersistImportedDeploymentRequestExposureGenerated - | PersistImportedDeploymentRequestExposureDisabled - | any - | null - | undefined; -}; - -export type PersistImportedDeploymentRequestKubernetesUnion = - | PersistImportedDeploymentRequestKubernetes - | any; - -export const PersistImportedDeploymentRequestTypeByoVnetAzure = { - ByoVnetAzure: "byo-vnet-azure", -} as const; -export type PersistImportedDeploymentRequestTypeByoVnetAzure = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeByoVnetAzure ->; +export type PersistImportedDeploymentRequestManagementUnion = + | PersistImportedDeploymentRequestManagement1 + | PersistImportedDeploymentRequestManagement2 + | PersistImportedDeploymentRequestManagementEnum; -export type PersistImportedDeploymentRequestNetworkByoVnetAzure = { +/** + * AWS-specific binding specification + */ +export type PersistImportedDeploymentRequestProfileAwResource = { /** - * Name of the dedicated classic Application Gateway subnet within the VNet. + * Optional condition for additional filtering (rare) */ - applicationGatewaySubnetName?: string | null | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Name of the private subnet within the VNet + * Resource ARNs to bind to */ - privateSubnetName: string; + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type PersistImportedDeploymentRequestProfileAwStack = { /** - * Name of the public subnet within the VNet + * Optional condition for additional filtering (rare) */ - publicSubnetName: string; - type: PersistImportedDeploymentRequestTypeByoVnetAzure; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * The full resource ID of the existing VNet + * Resource ARNs to bind to */ - vnetResourceId: string; + resources: Array; }; -export const PersistImportedDeploymentRequestTypeByoVpcGcp = { - ByoVpcGcp: "byo-vpc-gcp", -} as const; -export type PersistImportedDeploymentRequestTypeByoVpcGcp = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeByoVpcGcp ->; - -export type PersistImportedDeploymentRequestNetworkByoVpcGcp = { - /** - * The name of the existing VPC network - */ - networkName: string; +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestProfileAwBinding = { /** - * The region of the subnet + * AWS-specific binding specification */ - region: string; + resource?: PersistImportedDeploymentRequestProfileAwResource | undefined; /** - * The name of the subnet to use + * AWS-specific binding specification */ - subnetName: string; - type: PersistImportedDeploymentRequestTypeByoVpcGcp; + stack?: PersistImportedDeploymentRequestProfileAwStack | undefined; }; -export const PersistImportedDeploymentRequestTypeByoVpcAws = { - ByoVpcAws: "byo-vpc-aws", +/** + * IAM effect. Defaults to Allow. + */ +export const PersistImportedDeploymentRequestProfileEffect = { + Allow: "Allow", + Deny: "Deny", } as const; -export type PersistImportedDeploymentRequestTypeByoVpcAws = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeByoVpcAws +/** + * IAM effect. Defaults to Allow. + */ +export type PersistImportedDeploymentRequestProfileEffect = ClosedEnum< + typeof PersistImportedDeploymentRequestProfileEffect >; -export type PersistImportedDeploymentRequestNetworkByoVpcAws = { +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestProfileAwGrant = { /** - * IDs of private subnets + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) */ - privateSubnetIds: Array; + dataActions?: Array | null | undefined; /** - * IDs of public subnets (required for public ingress) + * GCP permissions that require an exact residual custom role. */ - publicSubnetIds: Array; + permissions?: Array | null | undefined; /** - * Optional security group IDs to use + * Provider predefined roles to bind directly. */ - securityGroupIds?: Array | undefined; - type: PersistImportedDeploymentRequestTypeByoVpcAws; + predefinedRoles?: Array | null | undefined; /** - * The ID of the existing VPC + * GCP residual custom permissions to pair with predefined roles. */ - vpcId: string; + residualPermissions?: Array | null | undefined; }; -export const PersistImportedDeploymentRequestTypeCreate = { - Create: "create", -} as const; -export type PersistImportedDeploymentRequestTypeCreate = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeCreate ->; - -export type PersistImportedDeploymentRequestNetworkCreate = { +/** + * AWS-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestProfileAw = { /** - * Number of availability zones (default: 2). + * Generic binding configuration for permissions */ - availabilityZones?: number | undefined; + binding: PersistImportedDeploymentRequestProfileAwBinding; /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + * Short admin-facing description of why this entry exists. */ - cidr?: string | null | undefined; - type: PersistImportedDeploymentRequestTypeCreate; -}; - -export const PersistImportedDeploymentRequestTypeUseDefault = { - UseDefault: "use-default", -} as const; -export type PersistImportedDeploymentRequestTypeUseDefault = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeUseDefault ->; - -export type PersistImportedDeploymentRequestNetworkUseDefault = { - type: PersistImportedDeploymentRequestTypeUseDefault; -}; - -export type PersistImportedDeploymentRequestNetworkUnion = - | PersistImportedDeploymentRequestNetworkByoVpcAws - | PersistImportedDeploymentRequestNetworkByoVpcGcp - | PersistImportedDeploymentRequestNetworkByoVnetAzure - | PersistImportedDeploymentRequestNetworkUseDefault - | PersistImportedDeploymentRequestNetworkCreate - | any; - -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export const PersistImportedDeploymentRequestTelemetry = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export type PersistImportedDeploymentRequestTelemetry = ClosedEnum< - typeof PersistImportedDeploymentRequestTelemetry ->; - -/** - * How updates are delivered to the deployment. - */ -export const PersistImportedDeploymentRequestUpdates = { - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How updates are delivered to the deployment. - */ -export type PersistImportedDeploymentRequestUpdates = ClosedEnum< - typeof PersistImportedDeploymentRequestUpdates ->; - -/** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ -export type PersistImportedDeploymentRequestStackSettings = { - compute?: PersistImportedDeploymentRequestCompute | any | null | undefined; - /** - * Deployment model: how updates are delivered to the remote environment. - */ - deploymentModel?: PersistImportedDeploymentRequestDeploymentModel | undefined; - domains?: PersistImportedDeploymentRequestDomains | any | null | undefined; - /** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ - externalBindings?: - | PersistImportedDeploymentRequestExternalBindings - | null - | undefined; + description?: string | null | undefined; /** - * How heartbeat health checks are handled. + * IAM effect. Defaults to Allow. */ - heartbeats?: PersistImportedDeploymentRequestHeartbeats | undefined; - kubernetes?: - | PersistImportedDeploymentRequestKubernetes - | any - | null - | undefined; - network?: - | PersistImportedDeploymentRequestNetworkByoVpcAws - | PersistImportedDeploymentRequestNetworkByoVpcGcp - | PersistImportedDeploymentRequestNetworkByoVnetAzure - | PersistImportedDeploymentRequestNetworkUseDefault - | PersistImportedDeploymentRequestNetworkCreate - | any - | null - | undefined; + effect?: PersistImportedDeploymentRequestProfileEffect | undefined; /** - * How telemetry (logs, metrics, traces) is handled. + * Grant permissions for a specific cloud platform */ - telemetry?: PersistImportedDeploymentRequestTelemetry | undefined; + grant: PersistImportedDeploymentRequestProfileAwGrant; /** - * How updates are delivered to the deployment. + * Stable admin-facing label for this permission entry. */ - updates?: PersistImportedDeploymentRequestUpdates | undefined; + label?: string | null | undefined; }; -export const PersistImportedDeploymentRequestPlatformTest = { - Test: "test", -} as const; -export type PersistImportedDeploymentRequestPlatformTest = ClosedEnum< - typeof PersistImportedDeploymentRequestPlatformTest ->; - /** - * Test platform environment information (mock) + * Azure-specific binding specification */ -export type PersistImportedDeploymentRequestEnvironmentInfoTest = { +export type PersistImportedDeploymentRequestProfileAzureResource = { /** - * Test identifier for this environment + * Scope (subscription/resource group/resource level) */ - testId: string; - platform: PersistImportedDeploymentRequestPlatformTest; + scope: string; }; -export const PersistImportedDeploymentRequestPlatformLocal = { - Local: "local", -} as const; -export type PersistImportedDeploymentRequestPlatformLocal = ClosedEnum< - typeof PersistImportedDeploymentRequestPlatformLocal ->; - /** - * Local platform environment information + * Azure-specific binding specification */ -export type PersistImportedDeploymentRequestEnvironmentInfoLocal = { - /** - * Architecture (e.g., "x86_64", "aarch64") - */ - arch: string; - /** - * Hostname of the machine running the deployment - */ - hostname: string; +export type PersistImportedDeploymentRequestProfileAzureStack = { /** - * Operating system (e.g., "linux", "macos", "windows") + * Scope (subscription/resource group/resource level) */ - os: string; - platform: PersistImportedDeploymentRequestPlatformLocal; + scope: string; }; -export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure = { - Azure: "azure", -} as const; -export type PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure = - ClosedEnum< - typeof PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure - >; - /** - * Azure-specific environment information + * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestEnvironmentInfoAzure = { - /** - * Azure location/region - */ - location: string; +export type PersistImportedDeploymentRequestProfileAzureBinding = { /** - * Azure subscription ID + * Azure-specific binding specification */ - subscriptionId: string; + resource?: PersistImportedDeploymentRequestProfileAzureResource | undefined; /** - * Azure tenant ID + * Azure-specific binding specification */ - tenantId: string; - platform: PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure; + stack?: PersistImportedDeploymentRequestProfileAzureStack | undefined; }; -export const PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp = { - Gcp: "gcp", -} as const; -export type PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp = - ClosedEnum; - /** - * GCP-specific environment information + * Grant permissions for a specific cloud platform */ -export type PersistImportedDeploymentRequestEnvironmentInfoGcp = { +export type PersistImportedDeploymentRequestProfileAzureGrant = { /** - * GCP project ID (e.g., "my-project") + * AWS IAM actions (only for AWS) */ - projectId: string; + actions?: Array | null | undefined; /** - * GCP project number (e.g., "123456789012") + * Azure actions (only for Azure) */ - projectNumber: string; + dataActions?: Array | null | undefined; /** - * GCP region + * GCP permissions that require an exact residual custom role. */ - region: string; - platform: PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp; -}; - -export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAws = { - Aws: "aws", -} as const; -export type PersistImportedDeploymentRequestEnvironmentInfoPlatformAws = - ClosedEnum; - -/** - * AWS-specific environment information - */ -export type PersistImportedDeploymentRequestEnvironmentInfoAws = { + permissions?: Array | null | undefined; /** - * AWS account ID + * Provider predefined roles to bind directly. */ - accountId: string; + predefinedRoles?: Array | null | undefined; /** - * AWS region + * GCP residual custom permissions to pair with predefined roles. */ - region: string; - platform: PersistImportedDeploymentRequestEnvironmentInfoPlatformAws; + residualPermissions?: Array | null | undefined; }; /** - * Platform-specific environment information + * Azure-specific platform permission configuration */ -export type PersistImportedDeploymentRequestEnvironmentInfoUnion = - | PersistImportedDeploymentRequestEnvironmentInfoGcp - | PersistImportedDeploymentRequestEnvironmentInfoAzure - | PersistImportedDeploymentRequestEnvironmentInfoLocal - | PersistImportedDeploymentRequestEnvironmentInfoAws - | PersistImportedDeploymentRequestEnvironmentInfoTest - | any; - -export const PersistImportedDeploymentRequestTypeStringList = { - StringList: "stringList", -} as const; -export type PersistImportedDeploymentRequestTypeStringList = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeStringList ->; - -export type PersistImportedDeploymentRequestDefaultStringList = { - type: PersistImportedDeploymentRequestTypeStringList; +export type PersistImportedDeploymentRequestProfileAzure = { /** - * String list default. + * Generic binding configuration for permissions */ - value: Array; -}; - -export const PersistImportedDeploymentRequestTypeBoolean = { - Boolean: "boolean", -} as const; -export type PersistImportedDeploymentRequestTypeBoolean = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeBoolean ->; - -export type PersistImportedDeploymentRequestDefaultBoolean = { - type: PersistImportedDeploymentRequestTypeBoolean; + binding: PersistImportedDeploymentRequestProfileAzureBinding; /** - * Boolean default. + * Short admin-facing description of why this entry exists. */ - value: boolean; -}; - -export const PersistImportedDeploymentRequestTypeNumber = { - Number: "number", -} as const; -export type PersistImportedDeploymentRequestTypeNumber = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeNumber ->; - -export type PersistImportedDeploymentRequestDefaultNumber = { - type: PersistImportedDeploymentRequestTypeNumber; + description?: string | null | undefined; /** - * Number default. + * Grant permissions for a specific cloud platform */ - value: string; -}; - -export const PersistImportedDeploymentRequestTypeString = { - String: "string", -} as const; -export type PersistImportedDeploymentRequestTypeString = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeString ->; - -export type PersistImportedDeploymentRequestDefaultString = { - type: PersistImportedDeploymentRequestTypeString; + grant: PersistImportedDeploymentRequestProfileAzureGrant; /** - * String default. + * Stable admin-facing label for this permission entry. */ - value: string; + label?: string | null | undefined; }; -export type PersistImportedDeploymentRequestDefaultUnion = - | PersistImportedDeploymentRequestDefaultString - | PersistImportedDeploymentRequestDefaultNumber - | PersistImportedDeploymentRequestDefaultBoolean - | PersistImportedDeploymentRequestDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const PersistImportedDeploymentRequestTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; /** - * Environment variable handling for a stack input mapping. + * GCP IAM condition */ -export type PersistImportedDeploymentRequestTypeEnvEnum = ClosedEnum< - typeof PersistImportedDeploymentRequestTypeEnvEnum ->; +export type PersistImportedDeploymentRequestProfileConditionResource = { + expression: string; + title: string; +}; -export type PersistImportedDeploymentRequestTypeUnion = - | PersistImportedDeploymentRequestTypeEnvEnum +export type PersistImportedDeploymentRequestProfileResourceConditionUnion = + | PersistImportedDeploymentRequestProfileConditionResource | any; /** - * How a resolved stack input is injected into runtime environment variables. + * GCP-specific binding specification */ -export type PersistImportedDeploymentRequestEnv = { - /** - * Environment variable name. - */ - name: string; +export type PersistImportedDeploymentRequestProfileGcpResource = { + condition?: + | PersistImportedDeploymentRequestProfileConditionResource + | any + | null + | undefined; /** - * Target resource IDs or patterns. None means every env-capable resource. + * Scope (project/resource level) */ - targetResources?: Array | null | undefined; - type?: PersistImportedDeploymentRequestTypeEnvEnum | any | null | undefined; + scope: string; }; /** - * Primitive stack input kind. - */ -export const PersistImportedDeploymentRequestKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. + * GCP IAM condition */ -export type PersistImportedDeploymentRequestKind = ClosedEnum< - typeof PersistImportedDeploymentRequestKind ->; +export type PersistImportedDeploymentRequestProfileConditionStack = { + expression: string; + title: string; +}; -/** - * Represents the target cloud platform. - */ -export const PersistImportedDeploymentRequestPreparedStackPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type PersistImportedDeploymentRequestPreparedStackPlatform = ClosedEnum< - typeof PersistImportedDeploymentRequestPreparedStackPlatform ->; +export type PersistImportedDeploymentRequestProfileStackConditionUnion = + | PersistImportedDeploymentRequestProfileConditionStack + | any; /** - * Who can provide a stack input value. - */ -export const PersistImportedDeploymentRequestProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. + * GCP-specific binding specification */ -export type PersistImportedDeploymentRequestProvidedBy = ClosedEnum< - typeof PersistImportedDeploymentRequestProvidedBy ->; +export type PersistImportedDeploymentRequestProfileGcpStack = { + condition?: + | PersistImportedDeploymentRequestProfileConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; /** - * Portable stack input validation constraints. + * Generic binding configuration for permissions */ -export type PersistImportedDeploymentRequestValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; +export type PersistImportedDeploymentRequestProfileGcpBinding = { /** - * Maximum string-list items. + * GCP-specific binding specification */ - maxItems?: number | null | undefined; + resource?: PersistImportedDeploymentRequestProfileGcpResource | undefined; /** - * Maximum string length. + * GCP-specific binding specification */ - maxLength?: number | null | undefined; + stack?: PersistImportedDeploymentRequestProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestProfileGcpGrant = { /** - * Minimum number. + * AWS IAM actions (only for AWS) */ - min?: string | null | undefined; + actions?: Array | null | undefined; /** - * Minimum string-list items. + * Azure actions (only for Azure) */ - minItems?: number | null | undefined; + dataActions?: Array | null | undefined; /** - * Minimum string length. + * GCP permissions that require an exact residual custom role. */ - minLength?: number | null | undefined; + permissions?: Array | null | undefined; /** - * Portable whole-value regex pattern. + * Provider predefined roles to bind directly. */ - pattern?: string | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Allowed string enum values. + * GCP residual custom permissions to pair with predefined roles. */ - values?: Array | null | undefined; + residualPermissions?: Array | null | undefined; }; -export type PersistImportedDeploymentRequestValidationUnion = - | PersistImportedDeploymentRequestValidation - | any; - /** - * Stack input definition serialized into a release stack. + * GCP-specific platform permission configuration */ -export type PersistImportedDeploymentRequestInput = { - default?: - | PersistImportedDeploymentRequestDefaultString - | PersistImportedDeploymentRequestDefaultNumber - | PersistImportedDeploymentRequestDefaultBoolean - | PersistImportedDeploymentRequestDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; +export type PersistImportedDeploymentRequestProfileGcp = { /** - * Runtime env-var mappings for v1 input resolution. + * Generic binding configuration for permissions */ - env?: Array | undefined; + binding: PersistImportedDeploymentRequestProfileGcpBinding; /** - * Stable input ID used by CLI/API calls. + * Short admin-facing description of why this entry exists. */ - id: string; + description?: string | null | undefined; /** - * Primitive stack input kind. + * Grant permissions for a specific cloud platform */ - kind: PersistImportedDeploymentRequestKind; + grant: PersistImportedDeploymentRequestProfileGcpGrant; /** - * Human-facing field label. + * Stable admin-facing label for this permission entry. */ - label: string; + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type PersistImportedDeploymentRequestProfilePlatforms = { /** - * Example placeholder shown in UI. + * AWS permission configurations */ - placeholder?: string | null | undefined; + aws?: Array | null | undefined; /** - * Platforms where this input applies. + * Azure permission configurations */ - platforms?: - | Array + azure?: + | Array | null | undefined; /** - * Who can provide this value. - */ - providedBy: Array; - /** - * Whether a resolved value is required before deployment can proceed. - */ - required: boolean; - validation?: - | PersistImportedDeploymentRequestValidation - | any - | null - | undefined; -}; - -export const PersistImportedDeploymentRequestManagementEnum = { - Auto: "auto", -} as const; -export type PersistImportedDeploymentRequestManagementEnum = ClosedEnum< - typeof PersistImportedDeploymentRequestManagementEnum ->; - -/** - * AWS-specific binding specification - */ -export type PersistImportedDeploymentRequestOverrideAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to + * GCP permission configurations */ - resources: Array; + gcp?: Array | null | undefined; }; /** - * AWS-specific binding specification + * A permission set that can be applied across different cloud platforms */ -export type PersistImportedDeploymentRequestOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; +export type PersistImportedDeploymentRequestProfile = { /** - * Resource ARNs to bind to + * Human-readable description of what this permission set allows */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type PersistImportedDeploymentRequestOverrideAwBinding = { + description: string; /** - * AWS-specific binding specification + * Unique identifier for the permission set (e.g., "storage/data-read") */ - resource?: PersistImportedDeploymentRequestOverrideAwResource | undefined; + id: string; /** - * AWS-specific binding specification + * Platform-specific permission configurations */ - stack?: PersistImportedDeploymentRequestOverrideAwStack | undefined; + platforms: PersistImportedDeploymentRequestProfilePlatforms; }; /** - * IAM effect. Defaults to Allow. - */ -export const PersistImportedDeploymentRequestOverrideEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. + * Reference to a permission set - either by name or inline definition */ -export type PersistImportedDeploymentRequestOverrideEffect = ClosedEnum< - typeof PersistImportedDeploymentRequestOverrideEffect ->; +export type PersistImportedDeploymentRequestProfileUnion = + | PersistImportedDeploymentRequestProfile + | string; /** - * Grant permissions for a specific cloud platform + * Combined permissions configuration that contains both profiles and management */ -export type PersistImportedDeploymentRequestOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; +export type PersistImportedDeploymentRequestPermissions = { /** - * Provider predefined roles to bind directly. + * Management permissions configuration for stack management access */ - predefinedRoles?: Array | null | undefined; + management?: + | PersistImportedDeploymentRequestManagement1 + | PersistImportedDeploymentRequestManagement2 + | PersistImportedDeploymentRequestManagementEnum + | undefined; /** - * GCP residual custom permissions to pair with predefined roles. + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration */ - residualPermissions?: Array | null | undefined; + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; }; /** - * AWS-specific platform permission configuration + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type PersistImportedDeploymentRequestOverrideAw = { - /** - * Generic binding configuration for permissions - */ - binding: PersistImportedDeploymentRequestOverrideAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: PersistImportedDeploymentRequestOverrideEffect | undefined; +export type PersistImportedDeploymentRequestConfig = { /** - * Grant permissions for a specific cloud platform + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ - grant: PersistImportedDeploymentRequestOverrideAwGrant; + id: string; /** - * Stable admin-facing label for this permission entry. + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - label?: string | null | undefined; + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; }; /** - * Azure-specific binding specification + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. */ -export type PersistImportedDeploymentRequestOverrideAzureResource = { +export type PersistImportedDeploymentRequestDependency = { + id: string; /** - * Scope (subscription/resource group/resource level) + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. */ - scope: string; + type: string; }; /** - * Azure-specific binding specification + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type PersistImportedDeploymentRequestOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - +export const PersistImportedDeploymentRequestLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; /** - * Generic binding configuration for permissions + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type PersistImportedDeploymentRequestOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: PersistImportedDeploymentRequestOverrideAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: PersistImportedDeploymentRequestOverrideAzureStack | undefined; -}; +export type PersistImportedDeploymentRequestLifecycle = ClosedEnum< + typeof PersistImportedDeploymentRequestLifecycle +>; -/** - * Grant permissions for a specific cloud platform - */ -export type PersistImportedDeploymentRequestOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; +export type PersistImportedDeploymentRequestResources = { /** - * Azure actions (only for Azure) + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - dataActions?: Array | null | undefined; + config: PersistImportedDeploymentRequestConfig; /** - * GCP permissions that require an exact residual custom role. + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list */ - permissions?: Array | null | undefined; + dependencies: Array; /** - * Provider predefined roles to bind directly. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - predefinedRoles?: Array | null | undefined; + lifecycle: PersistImportedDeploymentRequestLifecycle; /** - * GCP residual custom permissions to pair with predefined roles. + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). */ - residualPermissions?: Array | null | undefined; + remoteAccess?: boolean | undefined; }; /** - * Azure-specific platform permission configuration + * Represents the target cloud platform. + */ +export const PersistImportedDeploymentRequestSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type PersistImportedDeploymentRequestSupportedPlatform = ClosedEnum< + typeof PersistImportedDeploymentRequestSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. */ -export type PersistImportedDeploymentRequestOverrideAzure = { +export type PersistImportedDeploymentRequestPreparedStack = { /** - * Generic binding configuration for permissions + * Unique identifier for the stack */ - binding: PersistImportedDeploymentRequestOverrideAzureBinding; + id: string; /** - * Short admin-facing description of why this entry exists. + * Input definitions required before setup or deployment can proceed. */ - description?: string | null | undefined; + inputs?: Array | undefined; /** - * Grant permissions for a specific cloud platform + * Combined permissions configuration that contains both profiles and management */ - grant: PersistImportedDeploymentRequestOverrideAzureGrant; + permissions?: PersistImportedDeploymentRequestPermissions | undefined; /** - * Stable admin-facing label for this permission entry. + * Map of resource IDs to their configurations and lifecycle settings */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type PersistImportedDeploymentRequestOverrideConditionResource = { - expression: string; - title: string; -}; - -export type PersistImportedDeploymentRequestOverrideResourceConditionUnion = - | PersistImportedDeploymentRequestOverrideConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type PersistImportedDeploymentRequestOverrideGcpResource = { - condition?: - | PersistImportedDeploymentRequestOverrideConditionResource - | any - | null - | undefined; + resources: { [k: string]: PersistImportedDeploymentRequestResources }; /** - * Scope (project/resource level) + * Which platforms this stack supports. When None, all platforms are supported. */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type PersistImportedDeploymentRequestOverrideConditionStack = { - expression: string; - title: string; + supportedPlatforms?: + | Array + | null + | undefined; }; -export type PersistImportedDeploymentRequestOverrideStackConditionUnion = - | PersistImportedDeploymentRequestOverrideConditionStack +export type PersistImportedDeploymentRequestPreparedStackUnion = + | PersistImportedDeploymentRequestPreparedStack | any; /** - * GCP-specific binding specification + * Runtime metadata for deployment + * + * @remarks + * + * Stores deployment state that needs to persist across step calls. */ -export type PersistImportedDeploymentRequestOverrideGcpStack = { - condition?: - | PersistImportedDeploymentRequestOverrideConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type PersistImportedDeploymentRequestOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: PersistImportedDeploymentRequestOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: PersistImportedDeploymentRequestOverrideGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type PersistImportedDeploymentRequestOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type PersistImportedDeploymentRequestOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: PersistImportedDeploymentRequestOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: PersistImportedDeploymentRequestOverrideGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type PersistImportedDeploymentRequestOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type PersistImportedDeploymentRequestOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: PersistImportedDeploymentRequestOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type PersistImportedDeploymentRequestOverrideUnion = - | PersistImportedDeploymentRequestOverride - | string; - -export type PersistImportedDeploymentRequestManagement2 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { - [k: string]: Array; - }; -}; - -/** - * AWS-specific binding specification - */ -export type PersistImportedDeploymentRequestExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type PersistImportedDeploymentRequestExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type PersistImportedDeploymentRequestExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: PersistImportedDeploymentRequestExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: PersistImportedDeploymentRequestExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const PersistImportedDeploymentRequestExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type PersistImportedDeploymentRequestExtendEffect = ClosedEnum< - typeof PersistImportedDeploymentRequestExtendEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type PersistImportedDeploymentRequestExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type PersistImportedDeploymentRequestExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: PersistImportedDeploymentRequestExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: PersistImportedDeploymentRequestExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: PersistImportedDeploymentRequestExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type PersistImportedDeploymentRequestExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type PersistImportedDeploymentRequestExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type PersistImportedDeploymentRequestExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: PersistImportedDeploymentRequestExtendAzureResource | undefined; +export type PersistImportedDeploymentRequestRuntimeMetadata = { /** - * Azure-specific binding specification - */ - stack?: PersistImportedDeploymentRequestExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type PersistImportedDeploymentRequestExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type PersistImportedDeploymentRequestExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: PersistImportedDeploymentRequestExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: PersistImportedDeploymentRequestExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type PersistImportedDeploymentRequestExtendConditionResource = { - expression: string; - title: string; -}; - -export type PersistImportedDeploymentRequestExtendResourceConditionUnion = - | PersistImportedDeploymentRequestExtendConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type PersistImportedDeploymentRequestExtendGcpResource = { - condition?: - | PersistImportedDeploymentRequestExtendConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type PersistImportedDeploymentRequestExtendConditionStack = { - expression: string; - title: string; -}; - -export type PersistImportedDeploymentRequestExtendStackConditionUnion = - | PersistImportedDeploymentRequestExtendConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type PersistImportedDeploymentRequestExtendGcpStack = { - condition?: - | PersistImportedDeploymentRequestExtendConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type PersistImportedDeploymentRequestExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: PersistImportedDeploymentRequestExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: PersistImportedDeploymentRequestExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type PersistImportedDeploymentRequestExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type PersistImportedDeploymentRequestExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: PersistImportedDeploymentRequestExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: PersistImportedDeploymentRequestExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type PersistImportedDeploymentRequestExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type PersistImportedDeploymentRequestExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: PersistImportedDeploymentRequestExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type PersistImportedDeploymentRequestExtendUnion = - | PersistImportedDeploymentRequestExtend - | string; - -export type PersistImportedDeploymentRequestManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { - [k: string]: Array; - }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type PersistImportedDeploymentRequestManagementUnion = - | PersistImportedDeploymentRequestManagement1 - | PersistImportedDeploymentRequestManagement2 - | PersistImportedDeploymentRequestManagementEnum; - -/** - * AWS-specific binding specification - */ -export type PersistImportedDeploymentRequestProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type PersistImportedDeploymentRequestProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type PersistImportedDeploymentRequestProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: PersistImportedDeploymentRequestProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: PersistImportedDeploymentRequestProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const PersistImportedDeploymentRequestProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type PersistImportedDeploymentRequestProfileEffect = ClosedEnum< - typeof PersistImportedDeploymentRequestProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type PersistImportedDeploymentRequestProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type PersistImportedDeploymentRequestProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: PersistImportedDeploymentRequestProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: PersistImportedDeploymentRequestProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: PersistImportedDeploymentRequestProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type PersistImportedDeploymentRequestProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type PersistImportedDeploymentRequestProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type PersistImportedDeploymentRequestProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: PersistImportedDeploymentRequestProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: PersistImportedDeploymentRequestProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type PersistImportedDeploymentRequestProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type PersistImportedDeploymentRequestProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: PersistImportedDeploymentRequestProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: PersistImportedDeploymentRequestProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type PersistImportedDeploymentRequestProfileConditionResource = { - expression: string; - title: string; -}; - -export type PersistImportedDeploymentRequestProfileResourceConditionUnion = - | PersistImportedDeploymentRequestProfileConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type PersistImportedDeploymentRequestProfileGcpResource = { - condition?: - | PersistImportedDeploymentRequestProfileConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type PersistImportedDeploymentRequestProfileConditionStack = { - expression: string; - title: string; -}; - -export type PersistImportedDeploymentRequestProfileStackConditionUnion = - | PersistImportedDeploymentRequestProfileConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type PersistImportedDeploymentRequestProfileGcpStack = { - condition?: - | PersistImportedDeploymentRequestProfileConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type PersistImportedDeploymentRequestProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: PersistImportedDeploymentRequestProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: PersistImportedDeploymentRequestProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type PersistImportedDeploymentRequestProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type PersistImportedDeploymentRequestProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: PersistImportedDeploymentRequestProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: PersistImportedDeploymentRequestProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type PersistImportedDeploymentRequestProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type PersistImportedDeploymentRequestProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: PersistImportedDeploymentRequestProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type PersistImportedDeploymentRequestProfileUnion = - | PersistImportedDeploymentRequestProfile - | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type PersistImportedDeploymentRequestPermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | PersistImportedDeploymentRequestManagement1 - | PersistImportedDeploymentRequestManagement2 - | PersistImportedDeploymentRequestManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type PersistImportedDeploymentRequestConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type PersistImportedDeploymentRequestDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const PersistImportedDeploymentRequestLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type PersistImportedDeploymentRequestLifecycle = ClosedEnum< - typeof PersistImportedDeploymentRequestLifecycle ->; - -export type PersistImportedDeploymentRequestResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: PersistImportedDeploymentRequestConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: PersistImportedDeploymentRequestLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const PersistImportedDeploymentRequestSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type PersistImportedDeploymentRequestSupportedPlatform = ClosedEnum< - typeof PersistImportedDeploymentRequestSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type PersistImportedDeploymentRequestPreparedStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: PersistImportedDeploymentRequestPermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: PersistImportedDeploymentRequestResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -export type PersistImportedDeploymentRequestPreparedStackUnion = - | PersistImportedDeploymentRequestPreparedStack - | any; - -/** - * Runtime metadata for deployment - * - * @remarks - * - * Stores deployment state that needs to persist across step calls. - */ -export type PersistImportedDeploymentRequestRuntimeMetadata = { - /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment - */ - lastSyncedEnvVarsHash?: string | null | undefined; - preparedStack?: - | PersistImportedDeploymentRequestPreparedStack - | any - | null - | undefined; - /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. - */ - registryAccessGranted?: boolean | undefined; -}; - -/** - * Deployment status in the deployment lifecycle - */ -export const PersistImportedDeploymentRequestStatus = { - Pending: "pending", - PreflightsFailed: "preflights-failed", - InitialSetup: "initial-setup", - InitialSetupFailed: "initial-setup-failed", - Provisioning: "provisioning", - ProvisioningFailed: "provisioning-failed", - Running: "running", - RefreshFailed: "refresh-failed", - UpdatePending: "update-pending", - Updating: "updating", - UpdateFailed: "update-failed", - DeletePending: "delete-pending", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - TeardownFailed: "teardown-failed", - Deleted: "deleted", - Error: "error", -} as const; -/** - * Deployment status in the deployment lifecycle - */ -export type PersistImportedDeploymentRequestStatus = ClosedEnum< - typeof PersistImportedDeploymentRequestStatus ->; - -export type PersistImportedDeploymentRequestManagementConfigKubernetes = { - platform: "kubernetes"; -}; - -/** - * Azure management configuration extracted from stack settings - */ -export type PersistImportedDeploymentRequestManagementConfigAzure = { - /** - * The managing Azure Tenant ID for cross-tenant access - */ - managingTenantId: string; - /** - * OIDC issuer URL trusted by the target-side managed identity. - */ - oidcIssuer: string; - /** - * OIDC subject claim trusted by the target-side managed identity. - */ - oidcSubject: string; - platform: "azure"; -}; - -/** - * GCP management configuration extracted from stack settings - */ -export type PersistImportedDeploymentRequestManagementConfigGcp = { - /** - * Service account email for management roles - */ - serviceAccountEmail: string; - platform: "gcp"; -}; - -/** - * AWS management configuration extracted from stack settings - */ -export type PersistImportedDeploymentRequestManagementConfigAws = { - /** - * The managing AWS IAM role ARN that can assume cross-account roles - */ - managingRoleArn: string; - platform: "aws"; -}; - -/** - * Management configuration for different cloud platforms. - * - * @remarks - * - * Platform-derived configuration for cross-account/cross-tenant access. - * This is NOT user-specified - it's derived from the Manager's ServiceAccount. - */ -export type PersistImportedDeploymentRequestManagementConfigUnion = - | PersistImportedDeploymentRequestManagementConfigAws - | PersistImportedDeploymentRequestManagementConfigGcp - | PersistImportedDeploymentRequestManagementConfigAzure - | PersistImportedDeploymentRequestManagementConfigKubernetes; - -export type PersistImportedDeploymentRequest = { - mode: ModePersist; - /** - * Deployment name. Must be unique within the deployment group. - */ - name: string; - /** - * Unique identifier for the deployment group. - */ - deploymentGroupId: string; - managerId: string; - /** - * Represents the target cloud platform. - */ - platform: PersistImportedDeploymentRequestPlatformEnum; - /** - * Base cloud platform for cloud-backed Kubernetes imports. - */ - basePlatform?: KubernetesBasePlatform | undefined; - /** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ - stackSettings: PersistImportedDeploymentRequestStackSettings; - stackState?: any | null | undefined; - /** - * Platform-specific environment information - */ - environmentInfo?: - | PersistImportedDeploymentRequestEnvironmentInfoGcp - | PersistImportedDeploymentRequestEnvironmentInfoAzure - | PersistImportedDeploymentRequestEnvironmentInfoLocal - | PersistImportedDeploymentRequestEnvironmentInfoAws - | PersistImportedDeploymentRequestEnvironmentInfoTest - | any - | null - | undefined; - /** - * Runtime metadata for deployment - * - * @remarks - * - * Stores deployment state that needs to persist across step calls. - */ - runtimeMetadata: PersistImportedDeploymentRequestRuntimeMetadata; - /** - * DeploymentState protocol version owned by the runtime/manager - */ - deploymentProtocolVersion: number; - /** - * Deployment status in the deployment lifecycle - */ - status?: PersistImportedDeploymentRequestStatus | undefined; - /** - * Unique identifier for the release. - */ - currentReleaseId?: string | undefined; - /** - * Unique identifier for the release. - */ - desiredReleaseId?: string | undefined; - importSource?: ImportSourceKind | undefined; - setupMetadata?: { [k: string]: any | null } | undefined; - /** - * Stable target key for the setup contract, e.g. aws/us-east-1 - */ - setupTarget: string; - /** - * Deterministic setup contract fingerprint for one setup target - */ - setupFingerprint: string; - /** - * Setup fingerprint algorithm version - */ - setupFingerprintVersion: number; - deploymentToken?: string | undefined; - /** - * Management configuration for different cloud platforms. - * - * @remarks - * - * Platform-derived configuration for cross-account/cross-tenant access. - * This is NOT user-specified - it's derived from the Manager's ServiceAccount. - */ - managementConfig?: - | PersistImportedDeploymentRequestManagementConfigAws - | PersistImportedDeploymentRequestManagementConfigGcp - | PersistImportedDeploymentRequestManagementConfigAzure - | PersistImportedDeploymentRequestManagementConfigKubernetes - | undefined; - inputValues?: { [k: string]: StackInputValueRequest } | undefined; -}; - -/** @internal */ -export const ModePersist$outboundSchema: z.ZodEnum = z.enum( - ModePersist, -); - -/** @internal */ -export const PersistImportedDeploymentRequestPlatformEnum$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestPlatformEnum, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestPoolsAutoscale$Outbound = { - machine?: string | null | undefined; - max: number; - min: number; - mode: "autoscale"; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestPoolsAutoscale$Outbound, - PersistImportedDeploymentRequestPoolsAutoscale - > = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), - }); - -export function persistImportedDeploymentRequestPoolsAutoscaleToJSON( - persistImportedDeploymentRequestPoolsAutoscale: - PersistImportedDeploymentRequestPoolsAutoscale, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema.parse( - persistImportedDeploymentRequestPoolsAutoscale, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestPoolsFixed$Outbound = { - machine?: string | null | undefined; - machines: number; - mode: "fixed"; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestPoolsFixed$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestPoolsFixed$Outbound, - PersistImportedDeploymentRequestPoolsFixed - > = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), - }); - -export function persistImportedDeploymentRequestPoolsFixedToJSON( - persistImportedDeploymentRequestPoolsFixed: - PersistImportedDeploymentRequestPoolsFixed, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestPoolsFixed$outboundSchema.parse( - persistImportedDeploymentRequestPoolsFixed, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestPoolsUnion$Outbound = - | PersistImportedDeploymentRequestPoolsFixed$Outbound - | PersistImportedDeploymentRequestPoolsAutoscale$Outbound; - -/** @internal */ -export const PersistImportedDeploymentRequestPoolsUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestPoolsUnion$Outbound, - PersistImportedDeploymentRequestPoolsUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestPoolsFixed$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema), - ]); - -export function persistImportedDeploymentRequestPoolsUnionToJSON( - persistImportedDeploymentRequestPoolsUnion: - PersistImportedDeploymentRequestPoolsUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestPoolsUnion$outboundSchema.parse( - persistImportedDeploymentRequestPoolsUnion, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCompute$Outbound = { - pools?: { - [k: string]: - | PersistImportedDeploymentRequestPoolsFixed$Outbound - | PersistImportedDeploymentRequestPoolsAutoscale$Outbound; - } | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestCompute$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCompute$Outbound, - PersistImportedDeploymentRequestCompute -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => PersistImportedDeploymentRequestPoolsFixed$outboundSchema), - z.lazy(() => - PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema - ), - ]), - ).optional(), -}); - -export function persistImportedDeploymentRequestComputeToJSON( - persistImportedDeploymentRequestCompute: - PersistImportedDeploymentRequestCompute, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCompute$outboundSchema.parse( - persistImportedDeploymentRequestCompute, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestComputeUnion$Outbound = - | PersistImportedDeploymentRequestCompute$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestComputeUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestComputeUnion$Outbound, - PersistImportedDeploymentRequestComputeUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestCompute$outboundSchema), - z.any(), - ]); - -export function persistImportedDeploymentRequestComputeUnionToJSON( - persistImportedDeploymentRequestComputeUnion: - PersistImportedDeploymentRequestComputeUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestComputeUnion$outboundSchema.parse( - persistImportedDeploymentRequestComputeUnion, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestDeploymentModel$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestDeploymentModel, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestAws$Outbound = { - certificateArn: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestAws$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestAws$Outbound, - PersistImportedDeploymentRequestAws -> = z.object({ - certificateArn: z.string(), -}); - -export function persistImportedDeploymentRequestAwsToJSON( - persistImportedDeploymentRequestAws: PersistImportedDeploymentRequestAws, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestAws$outboundSchema.parse( - persistImportedDeploymentRequestAws, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestAwsUnion$Outbound = - | PersistImportedDeploymentRequestAws$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestAwsUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestAwsUnion$Outbound, - PersistImportedDeploymentRequestAwsUnion -> = z.union([ - z.lazy(() => PersistImportedDeploymentRequestAws$outboundSchema), - z.any(), -]); - -export function persistImportedDeploymentRequestAwsUnionToJSON( - persistImportedDeploymentRequestAwsUnion: - PersistImportedDeploymentRequestAwsUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestAwsUnion$outboundSchema.parse( - persistImportedDeploymentRequestAwsUnion, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestAzureStackSettings$Outbound = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestAzureStackSettings$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestAzureStackSettings$Outbound, - PersistImportedDeploymentRequestAzureStackSettings - > = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), - }); - -export function persistImportedDeploymentRequestAzureStackSettingsToJSON( - persistImportedDeploymentRequestAzureStackSettings: - PersistImportedDeploymentRequestAzureStackSettings, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestAzureStackSettings$outboundSchema.parse( - persistImportedDeploymentRequestAzureStackSettings, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestAzureUnion$Outbound = - | PersistImportedDeploymentRequestAzureStackSettings$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestAzureUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestAzureUnion$Outbound, - PersistImportedDeploymentRequestAzureUnion - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestAzureStackSettings$outboundSchema - ), - z.any(), - ]); - -export function persistImportedDeploymentRequestAzureUnionToJSON( - persistImportedDeploymentRequestAzureUnion: - PersistImportedDeploymentRequestAzureUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestAzureUnion$outboundSchema.parse( - persistImportedDeploymentRequestAzureUnion, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestGcpStackSettings$Outbound = { - certificateName: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestGcpStackSettings$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestGcpStackSettings$Outbound, - PersistImportedDeploymentRequestGcpStackSettings - > = z.object({ - certificateName: z.string(), - }); - -export function persistImportedDeploymentRequestGcpStackSettingsToJSON( - persistImportedDeploymentRequestGcpStackSettings: - PersistImportedDeploymentRequestGcpStackSettings, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestGcpStackSettings$outboundSchema.parse( - persistImportedDeploymentRequestGcpStackSettings, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestGcpUnion$Outbound = - | PersistImportedDeploymentRequestGcpStackSettings$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestGcpUnion$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestGcpUnion$Outbound, - PersistImportedDeploymentRequestGcpUnion -> = z.union([ - z.lazy(() => PersistImportedDeploymentRequestGcpStackSettings$outboundSchema), - z.any(), -]); - -export function persistImportedDeploymentRequestGcpUnionToJSON( - persistImportedDeploymentRequestGcpUnion: - PersistImportedDeploymentRequestGcpUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestGcpUnion$outboundSchema.parse( - persistImportedDeploymentRequestGcpUnion, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestTlsSecretRef$Outbound = { - namespace?: string | null | undefined; - secretName: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestTlsSecretRef$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestTlsSecretRef$Outbound, - PersistImportedDeploymentRequestTlsSecretRef - > = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - }); - -export function persistImportedDeploymentRequestTlsSecretRefToJSON( - persistImportedDeploymentRequestTlsSecretRef: - PersistImportedDeploymentRequestTlsSecretRef, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestTlsSecretRef$outboundSchema.parse( - persistImportedDeploymentRequestTlsSecretRef, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestDomainsKubernetes$Outbound = { - tlsSecretRef: PersistImportedDeploymentRequestTlsSecretRef$Outbound; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestDomainsKubernetes$Outbound, - PersistImportedDeploymentRequestDomainsKubernetes - > = z.object({ - tlsSecretRef: z.lazy(() => - PersistImportedDeploymentRequestTlsSecretRef$outboundSchema - ), - }); - -export function persistImportedDeploymentRequestDomainsKubernetesToJSON( - persistImportedDeploymentRequestDomainsKubernetes: - PersistImportedDeploymentRequestDomainsKubernetes, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema.parse( - persistImportedDeploymentRequestDomainsKubernetes, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestDomainsKubernetesUnion$Outbound = - | PersistImportedDeploymentRequestDomainsKubernetes$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestDomainsKubernetesUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestDomainsKubernetesUnion$Outbound, - PersistImportedDeploymentRequestDomainsKubernetesUnion - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema - ), - z.any(), - ]); - -export function persistImportedDeploymentRequestDomainsKubernetesUnionToJSON( - persistImportedDeploymentRequestDomainsKubernetesUnion: - PersistImportedDeploymentRequestDomainsKubernetesUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestDomainsKubernetesUnion$outboundSchema.parse( - persistImportedDeploymentRequestDomainsKubernetesUnion, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestDomainsCertificate$Outbound = { - aws?: PersistImportedDeploymentRequestAws$Outbound | any | null | undefined; - azure?: - | PersistImportedDeploymentRequestAzureStackSettings$Outbound - | any - | null - | undefined; - gcp?: - | PersistImportedDeploymentRequestGcpStackSettings$Outbound - | any - | null - | undefined; - kubernetes?: - | PersistImportedDeploymentRequestDomainsKubernetes$Outbound - | any - | null - | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestDomainsCertificate$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestDomainsCertificate$Outbound, - PersistImportedDeploymentRequestDomainsCertificate - > = z.object({ - aws: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestAws$outboundSchema), - z.any(), - ]), - ).optional(), - azure: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestAzureStackSettings$outboundSchema - ), - z.any(), - ]), - ).optional(), - gcp: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestGcpStackSettings$outboundSchema - ), - z.any(), - ]), - ).optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema - ), - z.any(), - ]), - ).optional(), - }); - -export function persistImportedDeploymentRequestDomainsCertificateToJSON( - persistImportedDeploymentRequestDomainsCertificate: - PersistImportedDeploymentRequestDomainsCertificate, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestDomainsCertificate$outboundSchema.parse( - persistImportedDeploymentRequestDomainsCertificate, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCustomDomains$Outbound = { - certificate: PersistImportedDeploymentRequestDomainsCertificate$Outbound; - domain: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestCustomDomains$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCustomDomains$Outbound, - PersistImportedDeploymentRequestCustomDomains - > = z.object({ - certificate: z.lazy(() => - PersistImportedDeploymentRequestDomainsCertificate$outboundSchema - ), - domain: z.string(), - }); - -export function persistImportedDeploymentRequestCustomDomainsToJSON( - persistImportedDeploymentRequestCustomDomains: - PersistImportedDeploymentRequestCustomDomains, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCustomDomains$outboundSchema.parse( - persistImportedDeploymentRequestCustomDomains, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestDomains$Outbound = { - customDomains?: - | { [k: string]: PersistImportedDeploymentRequestCustomDomains$Outbound } - | null - | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestDomains$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestDomains$Outbound, - PersistImportedDeploymentRequestDomains -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => - PersistImportedDeploymentRequestCustomDomains$outboundSchema - ), - ), - ).optional(), -}); - -export function persistImportedDeploymentRequestDomainsToJSON( - persistImportedDeploymentRequestDomains: - PersistImportedDeploymentRequestDomains, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestDomains$outboundSchema.parse( - persistImportedDeploymentRequestDomains, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestDomainsUnion$Outbound = - | PersistImportedDeploymentRequestDomains$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestDomainsUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestDomainsUnion$Outbound, - PersistImportedDeploymentRequestDomainsUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestDomains$outboundSchema), - z.any(), - ]); - -export function persistImportedDeploymentRequestDomainsUnionToJSON( - persistImportedDeploymentRequestDomainsUnion: - PersistImportedDeploymentRequestDomainsUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestDomainsUnion$outboundSchema.parse( - persistImportedDeploymentRequestDomainsUnion, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestExternalBindings$Outbound = {}; - -/** @internal */ -export const PersistImportedDeploymentRequestExternalBindings$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestExternalBindings$Outbound, - PersistImportedDeploymentRequestExternalBindings - > = z.object({}); - -export function persistImportedDeploymentRequestExternalBindingsToJSON( - persistImportedDeploymentRequestExternalBindings: - PersistImportedDeploymentRequestExternalBindings, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestExternalBindings$outboundSchema.parse( - persistImportedDeploymentRequestExternalBindings, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestHeartbeats$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestHeartbeats, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestCloud$Outbound = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestCloud$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCloud$Outbound, - PersistImportedDeploymentRequestCloud -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); - -export function persistImportedDeploymentRequestCloudToJSON( - persistImportedDeploymentRequestCloud: PersistImportedDeploymentRequestCloud, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCloud$outboundSchema.parse( - persistImportedDeploymentRequestCloud, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCloudUnion$Outbound = - | PersistImportedDeploymentRequestCloud$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestCloudUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCloudUnion$Outbound, - PersistImportedDeploymentRequestCloudUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestCloud$outboundSchema), - z.any(), - ]); - -export function persistImportedDeploymentRequestCloudUnionToJSON( - persistImportedDeploymentRequestCloudUnion: - PersistImportedDeploymentRequestCloudUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCloudUnion$outboundSchema.parse( - persistImportedDeploymentRequestCloudUnion, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestOwnership$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestOwnership, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestCluster$Outbound = { - cloud?: - | PersistImportedDeploymentRequestCloud$Outbound - | any - | null - | undefined; - namespace?: string | null | undefined; - ownership: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestCluster$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestCluster$Outbound, - PersistImportedDeploymentRequestCluster -> = z.object({ - cloud: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestCloud$outboundSchema), - z.any(), - ]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: PersistImportedDeploymentRequestOwnership$outboundSchema, -}); - -export function persistImportedDeploymentRequestClusterToJSON( - persistImportedDeploymentRequestCluster: - PersistImportedDeploymentRequestCluster, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCluster$outboundSchema.parse( - persistImportedDeploymentRequestCluster, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestClusterUnion$Outbound = - | PersistImportedDeploymentRequestCluster$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestClusterUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestClusterUnion$Outbound, - PersistImportedDeploymentRequestClusterUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestCluster$outboundSchema), - z.any(), - ]); - -export function persistImportedDeploymentRequestClusterUnionToJSON( - persistImportedDeploymentRequestClusterUnion: - PersistImportedDeploymentRequestClusterUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestClusterUnion$outboundSchema.parse( - persistImportedDeploymentRequestClusterUnion, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateNone2$Outbound = { - mode: "none"; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateNone2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateNone2$Outbound, - PersistImportedDeploymentRequestCertificateNone2 - > = z.object({ - mode: z.literal("none"), - }); - -export function persistImportedDeploymentRequestCertificateNone2ToJSON( - persistImportedDeploymentRequestCertificateNone2: - PersistImportedDeploymentRequestCertificateNone2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateNone2$outboundSchema.parse( - persistImportedDeploymentRequestCertificateNone2, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound = - { - mode: "managedTlsSecret"; - secretNameTemplate: string; - }; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound, - PersistImportedDeploymentRequestCertificateManagedTLSSecret2 - > = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function persistImportedDeploymentRequestCertificateManagedTLSSecret2ToJSON( - persistImportedDeploymentRequestCertificateManagedTLSSecret2: - PersistImportedDeploymentRequestCertificateManagedTLSSecret2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema - .parse(persistImportedDeploymentRequestCertificateManagedTLSSecret2), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound = { - certificateArn: string; - mode: "awsAcmArn"; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound, - PersistImportedDeploymentRequestCertificateAwsAcmArn2 - > = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), - }); - -export function persistImportedDeploymentRequestCertificateAwsAcmArn2ToJSON( - persistImportedDeploymentRequestCertificateAwsAcmArn2: - PersistImportedDeploymentRequestCertificateAwsAcmArn2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema.parse( - persistImportedDeploymentRequestCertificateAwsAcmArn2, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound = - { - mode: "managedAcmImport"; - region?: string | null | undefined; - tags?: { [k: string]: string } | undefined; - }; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound, - PersistImportedDeploymentRequestCertificateManagedAcmImport2 - > = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function persistImportedDeploymentRequestCertificateManagedAcmImport2ToJSON( - persistImportedDeploymentRequestCertificateManagedAcmImport2: - PersistImportedDeploymentRequestCertificateManagedAcmImport2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema - .parse(persistImportedDeploymentRequestCertificateManagedAcmImport2), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound = - { - namespace?: string | null | undefined; - secretName: string; - mode: "tlsSecretRef"; - }; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound, - PersistImportedDeploymentRequestCertificateTLSSecretRef2 - > = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function persistImportedDeploymentRequestCertificateTLSSecretRef2ToJSON( - persistImportedDeploymentRequestCertificateTLSSecretRef2: - PersistImportedDeploymentRequestCertificateTLSSecretRef2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema - .parse(persistImportedDeploymentRequestCertificateTLSSecretRef2), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateUnion2$Outbound = - | PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound - | PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound - | PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound - | PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound - | PersistImportedDeploymentRequestCertificateNone2$Outbound; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateUnion2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateUnion2$Outbound, - PersistImportedDeploymentRequestCertificateUnion2 - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateNone2$outboundSchema - ), - ]); - -export function persistImportedDeploymentRequestCertificateUnion2ToJSON( - persistImportedDeploymentRequestCertificateUnion2: - PersistImportedDeploymentRequestCertificateUnion2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateUnion2$outboundSchema.parse( - persistImportedDeploymentRequestCertificateUnion2, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestModeCustom$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestModeCustom, - ); - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4$outboundSchema: - z.ZodEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4 - > = z.enum( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound = - { - albName?: string | null | undefined; - albNamespace?: string | null | undefined; - frontend: string; - provider: string; - }; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound, - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4 - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4$outboundSchema, - }); - -export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4ToJSON( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema - .parse( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum4$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum4); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderGkeGateway4$Outbound = { - provider: string; - staticAddressName?: string | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderGkeGateway4$Outbound, - PersistImportedDeploymentRequestProviderGkeGateway4 - > = z.object({ - provider: - PersistImportedDeploymentRequestProviderGkeGatewayEnum4$outboundSchema, - staticAddressName: z.nullable(z.string()).optional(), - }); - -export function persistImportedDeploymentRequestProviderGkeGateway4ToJSON( - persistImportedDeploymentRequestProviderGkeGateway4: - PersistImportedDeploymentRequestProviderGkeGateway4, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema.parse( - persistImportedDeploymentRequestProviderGkeGateway4, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlbEnum4$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum4); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderAwsAlb4$Outbound = { - ipAddressType?: string | null | undefined; - provider: string; - scheme: string; - subnetIds?: Array | undefined; - targetType: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderAwsAlb4$Outbound, - PersistImportedDeploymentRequestProviderAwsAlb4 - > = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: - PersistImportedDeploymentRequestProviderAwsAlbEnum4$outboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), - }); - -export function persistImportedDeploymentRequestProviderAwsAlb4ToJSON( - persistImportedDeploymentRequestProviderAwsAlb4: - PersistImportedDeploymentRequestProviderAwsAlb4, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema.parse( - persistImportedDeploymentRequestProviderAwsAlb4, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestProviderUnion4$Outbound = - | PersistImportedDeploymentRequestProviderAwsAlb4$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway4$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderUnion4$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderUnion4$Outbound, - PersistImportedDeploymentRequestProviderUnion4 - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema - ), - z.any(), - ]); - -export function persistImportedDeploymentRequestProviderUnion4ToJSON( - persistImportedDeploymentRequestProviderUnion4: - PersistImportedDeploymentRequestProviderUnion4, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderUnion4$outboundSchema.parse( - persistImportedDeploymentRequestProviderUnion4, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestRouteGateway2$Outbound = { - annotations?: { [k: string]: string } | undefined; - controller?: string | null | undefined; - gatewayClassName: string; - labels?: { [k: string]: string } | undefined; - listenerPort: number; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb4$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway4$Outbound - | any - | null - | undefined; - routeApi: "gateway"; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestRouteGateway2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestRouteGateway2$Outbound, - PersistImportedDeploymentRequestRouteGateway2 - > = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema - ), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), - }); - -export function persistImportedDeploymentRequestRouteGateway2ToJSON( - persistImportedDeploymentRequestRouteGateway2: - PersistImportedDeploymentRequestRouteGateway2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestRouteGateway2$outboundSchema.parse( - persistImportedDeploymentRequestRouteGateway2, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3$outboundSchema: - z.ZodEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3 - > = z.enum( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound = - { - albName?: string | null | undefined; - albNamespace?: string | null | undefined; - frontend: string; - provider: string; - }; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound, - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3 - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3$outboundSchema, - }); - -export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3ToJSON( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema - .parse( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum3$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum3); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderGkeGateway3$Outbound = { - provider: string; - staticAddressName?: string | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderGkeGateway3$Outbound, - PersistImportedDeploymentRequestProviderGkeGateway3 - > = z.object({ - provider: - PersistImportedDeploymentRequestProviderGkeGatewayEnum3$outboundSchema, - staticAddressName: z.nullable(z.string()).optional(), - }); - -export function persistImportedDeploymentRequestProviderGkeGateway3ToJSON( - persistImportedDeploymentRequestProviderGkeGateway3: - PersistImportedDeploymentRequestProviderGkeGateway3, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema.parse( - persistImportedDeploymentRequestProviderGkeGateway3, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlbEnum3$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum3); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderAwsAlb3$Outbound = { - ipAddressType?: string | null | undefined; - provider: string; - scheme: string; - subnetIds?: Array | undefined; - targetType: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderAwsAlb3$Outbound, - PersistImportedDeploymentRequestProviderAwsAlb3 - > = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: - PersistImportedDeploymentRequestProviderAwsAlbEnum3$outboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), - }); - -export function persistImportedDeploymentRequestProviderAwsAlb3ToJSON( - persistImportedDeploymentRequestProviderAwsAlb3: - PersistImportedDeploymentRequestProviderAwsAlb3, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema.parse( - persistImportedDeploymentRequestProviderAwsAlb3, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestProviderUnion3$Outbound = - | PersistImportedDeploymentRequestProviderAwsAlb3$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway3$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderUnion3$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderUnion3$Outbound, - PersistImportedDeploymentRequestProviderUnion3 - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema - ), - z.any(), - ]); - -export function persistImportedDeploymentRequestProviderUnion3ToJSON( - persistImportedDeploymentRequestProviderUnion3: - PersistImportedDeploymentRequestProviderUnion3, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderUnion3$outboundSchema.parse( - persistImportedDeploymentRequestProviderUnion3, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestRouteIngress2$Outbound = { - annotations?: { [k: string]: string } | undefined; - controller?: string | null | undefined; - ingressClassName: string; - labels?: { [k: string]: string } | undefined; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb3$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway3$Outbound - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestRouteIngress2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestRouteIngress2$Outbound, - PersistImportedDeploymentRequestRouteIngress2 - > = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema - ), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), - }); - -export function persistImportedDeploymentRequestRouteIngress2ToJSON( - persistImportedDeploymentRequestRouteIngress2: - PersistImportedDeploymentRequestRouteIngress2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestRouteIngress2$outboundSchema.parse( - persistImportedDeploymentRequestRouteIngress2, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestRouteUnion2$Outbound = - | PersistImportedDeploymentRequestRouteIngress2$Outbound - | PersistImportedDeploymentRequestRouteGateway2$Outbound; - -/** @internal */ -export const PersistImportedDeploymentRequestRouteUnion2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestRouteUnion2$Outbound, - PersistImportedDeploymentRequestRouteUnion2 - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestRouteIngress2$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestRouteGateway2$outboundSchema), - ]); - -export function persistImportedDeploymentRequestRouteUnion2ToJSON( - persistImportedDeploymentRequestRouteUnion2: - PersistImportedDeploymentRequestRouteUnion2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestRouteUnion2$outboundSchema.parse( - persistImportedDeploymentRequestRouteUnion2, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestExposureCustom$Outbound = { - certificate: - | PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound - | PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound - | PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound - | PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound - | PersistImportedDeploymentRequestCertificateNone2$Outbound; - domain: string; - mode: string; - route: - | PersistImportedDeploymentRequestRouteIngress2$Outbound - | PersistImportedDeploymentRequestRouteGateway2$Outbound; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestExposureCustom$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestExposureCustom$Outbound, - PersistImportedDeploymentRequestExposureCustom - > = z.object({ - certificate: z.union([ - z.lazy(() => - PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateNone2$outboundSchema - ), - ]), - domain: z.string(), - mode: PersistImportedDeploymentRequestModeCustom$outboundSchema, - route: z.union([ - z.lazy(() => - PersistImportedDeploymentRequestRouteIngress2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestRouteGateway2$outboundSchema - ), - ]), - }); - -export function persistImportedDeploymentRequestExposureCustomToJSON( - persistImportedDeploymentRequestExposureCustom: - PersistImportedDeploymentRequestExposureCustom, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestExposureCustom$outboundSchema.parse( - persistImportedDeploymentRequestExposureCustom, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateNone1$Outbound = { - mode: "none"; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateNone1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateNone1$Outbound, - PersistImportedDeploymentRequestCertificateNone1 - > = z.object({ - mode: z.literal("none"), - }); - -export function persistImportedDeploymentRequestCertificateNone1ToJSON( - persistImportedDeploymentRequestCertificateNone1: - PersistImportedDeploymentRequestCertificateNone1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateNone1$outboundSchema.parse( - persistImportedDeploymentRequestCertificateNone1, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound = - { - mode: "managedTlsSecret"; - secretNameTemplate: string; - }; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound, - PersistImportedDeploymentRequestCertificateManagedTLSSecret1 - > = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function persistImportedDeploymentRequestCertificateManagedTLSSecret1ToJSON( - persistImportedDeploymentRequestCertificateManagedTLSSecret1: - PersistImportedDeploymentRequestCertificateManagedTLSSecret1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema - .parse(persistImportedDeploymentRequestCertificateManagedTLSSecret1), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound = { - certificateArn: string; - mode: "awsAcmArn"; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound, - PersistImportedDeploymentRequestCertificateAwsAcmArn1 - > = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), - }); - -export function persistImportedDeploymentRequestCertificateAwsAcmArn1ToJSON( - persistImportedDeploymentRequestCertificateAwsAcmArn1: - PersistImportedDeploymentRequestCertificateAwsAcmArn1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema.parse( - persistImportedDeploymentRequestCertificateAwsAcmArn1, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound = - { - mode: "managedAcmImport"; - region?: string | null | undefined; - tags?: { [k: string]: string } | undefined; - }; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound, - PersistImportedDeploymentRequestCertificateManagedAcmImport1 - > = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function persistImportedDeploymentRequestCertificateManagedAcmImport1ToJSON( - persistImportedDeploymentRequestCertificateManagedAcmImport1: - PersistImportedDeploymentRequestCertificateManagedAcmImport1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema - .parse(persistImportedDeploymentRequestCertificateManagedAcmImport1), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound = - { - namespace?: string | null | undefined; - secretName: string; - mode: "tlsSecretRef"; - }; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound, - PersistImportedDeploymentRequestCertificateTLSSecretRef1 - > = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function persistImportedDeploymentRequestCertificateTLSSecretRef1ToJSON( - persistImportedDeploymentRequestCertificateTLSSecretRef1: - PersistImportedDeploymentRequestCertificateTLSSecretRef1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema - .parse(persistImportedDeploymentRequestCertificateTLSSecretRef1), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestCertificateUnion1$Outbound = - | PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound - | PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound - | PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound - | PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound - | PersistImportedDeploymentRequestCertificateNone1$Outbound; - -/** @internal */ -export const PersistImportedDeploymentRequestCertificateUnion1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestCertificateUnion1$Outbound, - PersistImportedDeploymentRequestCertificateUnion1 - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateNone1$outboundSchema - ), - ]); - -export function persistImportedDeploymentRequestCertificateUnion1ToJSON( - persistImportedDeploymentRequestCertificateUnion1: - PersistImportedDeploymentRequestCertificateUnion1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestCertificateUnion1$outboundSchema.parse( - persistImportedDeploymentRequestCertificateUnion1, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestModeGenerated$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestModeGenerated, - ); - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2$outboundSchema: - z.ZodEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2 - > = z.enum( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound = - { - albName?: string | null | undefined; - albNamespace?: string | null | undefined; - frontend: string; - provider: string; - }; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound, - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2 - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2$outboundSchema, - }); - -export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2ToJSON( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema - .parse( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum2$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum2); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderGkeGateway2$Outbound = { - provider: string; - staticAddressName?: string | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderGkeGateway2$Outbound, - PersistImportedDeploymentRequestProviderGkeGateway2 - > = z.object({ - provider: - PersistImportedDeploymentRequestProviderGkeGatewayEnum2$outboundSchema, - staticAddressName: z.nullable(z.string()).optional(), - }); - -export function persistImportedDeploymentRequestProviderGkeGateway2ToJSON( - persistImportedDeploymentRequestProviderGkeGateway2: - PersistImportedDeploymentRequestProviderGkeGateway2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema.parse( - persistImportedDeploymentRequestProviderGkeGateway2, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlbEnum2$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum2); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderAwsAlb2$Outbound = { - ipAddressType?: string | null | undefined; - provider: string; - scheme: string; - subnetIds?: Array | undefined; - targetType: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderAwsAlb2$Outbound, - PersistImportedDeploymentRequestProviderAwsAlb2 - > = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: - PersistImportedDeploymentRequestProviderAwsAlbEnum2$outboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), - }); - -export function persistImportedDeploymentRequestProviderAwsAlb2ToJSON( - persistImportedDeploymentRequestProviderAwsAlb2: - PersistImportedDeploymentRequestProviderAwsAlb2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema.parse( - persistImportedDeploymentRequestProviderAwsAlb2, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestProviderUnion2$Outbound = - | PersistImportedDeploymentRequestProviderAwsAlb2$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway2$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderUnion2$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderUnion2$Outbound, - PersistImportedDeploymentRequestProviderUnion2 - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema - ), - z.any(), - ]); - -export function persistImportedDeploymentRequestProviderUnion2ToJSON( - persistImportedDeploymentRequestProviderUnion2: - PersistImportedDeploymentRequestProviderUnion2, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderUnion2$outboundSchema.parse( - persistImportedDeploymentRequestProviderUnion2, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestRouteGateway1$Outbound = { - annotations?: { [k: string]: string } | undefined; - controller?: string | null | undefined; - gatewayClassName: string; - labels?: { [k: string]: string } | undefined; - listenerPort: number; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb2$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway2$Outbound - | any - | null - | undefined; - routeApi: "gateway"; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestRouteGateway1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestRouteGateway1$Outbound, - PersistImportedDeploymentRequestRouteGateway1 - > = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema - ), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), - }); - -export function persistImportedDeploymentRequestRouteGateway1ToJSON( - persistImportedDeploymentRequestRouteGateway1: - PersistImportedDeploymentRequestRouteGateway1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestRouteGateway1$outboundSchema.parse( - persistImportedDeploymentRequestRouteGateway1, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1$outboundSchema: - z.ZodEnum< - typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1 - > = z.enum( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound = - { - albName?: string | null | undefined; - albNamespace?: string | null | undefined; - frontend: string; - provider: string; - }; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound, - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1 - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1$outboundSchema, - }); - -export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1ToJSON( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1: - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema - .parse( - persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGatewayEnum1$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum1); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderGkeGateway1$Outbound = { - provider: string; - staticAddressName?: string | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderGkeGateway1$Outbound, - PersistImportedDeploymentRequestProviderGkeGateway1 - > = z.object({ - provider: - PersistImportedDeploymentRequestProviderGkeGatewayEnum1$outboundSchema, - staticAddressName: z.nullable(z.string()).optional(), - }); - -export function persistImportedDeploymentRequestProviderGkeGateway1ToJSON( - persistImportedDeploymentRequestProviderGkeGateway1: - PersistImportedDeploymentRequestProviderGkeGateway1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema.parse( - persistImportedDeploymentRequestProviderGkeGateway1, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlbEnum1$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum1); - -/** @internal */ -export type PersistImportedDeploymentRequestProviderAwsAlb1$Outbound = { - ipAddressType?: string | null | undefined; - provider: string; - scheme: string; - subnetIds?: Array | undefined; - targetType: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderAwsAlb1$Outbound, - PersistImportedDeploymentRequestProviderAwsAlb1 - > = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: - PersistImportedDeploymentRequestProviderAwsAlbEnum1$outboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), - }); - -export function persistImportedDeploymentRequestProviderAwsAlb1ToJSON( - persistImportedDeploymentRequestProviderAwsAlb1: - PersistImportedDeploymentRequestProviderAwsAlb1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema.parse( - persistImportedDeploymentRequestProviderAwsAlb1, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestProviderUnion1$Outbound = - | PersistImportedDeploymentRequestProviderAwsAlb1$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway1$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestProviderUnion1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestProviderUnion1$Outbound, - PersistImportedDeploymentRequestProviderUnion1 - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema - ), - z.any(), - ]); - -export function persistImportedDeploymentRequestProviderUnion1ToJSON( - persistImportedDeploymentRequestProviderUnion1: - PersistImportedDeploymentRequestProviderUnion1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestProviderUnion1$outboundSchema.parse( - persistImportedDeploymentRequestProviderUnion1, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestRouteIngress1$Outbound = { - annotations?: { [k: string]: string } | undefined; - controller?: string | null | undefined; - ingressClassName: string; - labels?: { [k: string]: string } | undefined; - provider?: - | PersistImportedDeploymentRequestProviderAwsAlb1$Outbound - | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound - | PersistImportedDeploymentRequestProviderGkeGateway1$Outbound - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestRouteIngress1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestRouteIngress1$Outbound, - PersistImportedDeploymentRequestRouteIngress1 - > = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema - ), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), - }); - -export function persistImportedDeploymentRequestRouteIngress1ToJSON( - persistImportedDeploymentRequestRouteIngress1: - PersistImportedDeploymentRequestRouteIngress1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestRouteIngress1$outboundSchema.parse( - persistImportedDeploymentRequestRouteIngress1, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestRouteUnion1$Outbound = - | PersistImportedDeploymentRequestRouteIngress1$Outbound - | PersistImportedDeploymentRequestRouteGateway1$Outbound; - -/** @internal */ -export const PersistImportedDeploymentRequestRouteUnion1$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestRouteUnion1$Outbound, - PersistImportedDeploymentRequestRouteUnion1 - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestRouteIngress1$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestRouteGateway1$outboundSchema), - ]); - -export function persistImportedDeploymentRequestRouteUnion1ToJSON( - persistImportedDeploymentRequestRouteUnion1: - PersistImportedDeploymentRequestRouteUnion1, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestRouteUnion1$outboundSchema.parse( - persistImportedDeploymentRequestRouteUnion1, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestExposureGenerated$Outbound = { - certificate: - | PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound - | PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound - | PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound - | PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound - | PersistImportedDeploymentRequestCertificateNone1$Outbound; - mode: string; - route: - | PersistImportedDeploymentRequestRouteIngress1$Outbound - | PersistImportedDeploymentRequestRouteGateway1$Outbound; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestExposureGenerated$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestExposureGenerated$Outbound, - PersistImportedDeploymentRequestExposureGenerated - > = z.object({ - certificate: z.union([ - z.lazy(() => - PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestCertificateNone1$outboundSchema - ), - ]), - mode: PersistImportedDeploymentRequestModeGenerated$outboundSchema, - route: z.union([ - z.lazy(() => - PersistImportedDeploymentRequestRouteIngress1$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestRouteGateway1$outboundSchema - ), - ]), - }); - -export function persistImportedDeploymentRequestExposureGeneratedToJSON( - persistImportedDeploymentRequestExposureGenerated: - PersistImportedDeploymentRequestExposureGenerated, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestExposureGenerated$outboundSchema.parse( - persistImportedDeploymentRequestExposureGenerated, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestModeDisabled$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestModeDisabled, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestExposureDisabled$Outbound = { - mode: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestExposureDisabled$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestExposureDisabled$Outbound, - PersistImportedDeploymentRequestExposureDisabled - > = z.object({ - mode: PersistImportedDeploymentRequestModeDisabled$outboundSchema, - }); - -export function persistImportedDeploymentRequestExposureDisabledToJSON( - persistImportedDeploymentRequestExposureDisabled: - PersistImportedDeploymentRequestExposureDisabled, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestExposureDisabled$outboundSchema.parse( - persistImportedDeploymentRequestExposureDisabled, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestExposureUnion$Outbound = - | PersistImportedDeploymentRequestExposureCustom$Outbound - | PersistImportedDeploymentRequestExposureGenerated$Outbound - | PersistImportedDeploymentRequestExposureDisabled$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestExposureUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestExposureUnion$Outbound, - PersistImportedDeploymentRequestExposureUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestExposureCustom$outboundSchema), - z.lazy(() => - PersistImportedDeploymentRequestExposureGenerated$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestExposureDisabled$outboundSchema - ), - z.any(), - ]); - -export function persistImportedDeploymentRequestExposureUnionToJSON( - persistImportedDeploymentRequestExposureUnion: - PersistImportedDeploymentRequestExposureUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestExposureUnion$outboundSchema.parse( - persistImportedDeploymentRequestExposureUnion, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestKubernetes$Outbound = { - cluster?: - | PersistImportedDeploymentRequestCluster$Outbound - | any - | null - | undefined; - exposure?: - | PersistImportedDeploymentRequestExposureCustom$Outbound - | PersistImportedDeploymentRequestExposureGenerated$Outbound - | PersistImportedDeploymentRequestExposureDisabled$Outbound - | any - | null - | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestKubernetes$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestKubernetes$Outbound, - PersistImportedDeploymentRequestKubernetes - > = z.object({ - cluster: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestCluster$outboundSchema), - z.any(), - ]), - ).optional(), - exposure: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestExposureCustom$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestExposureGenerated$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestExposureDisabled$outboundSchema - ), - z.any(), - ]), - ).optional(), - }); - -export function persistImportedDeploymentRequestKubernetesToJSON( - persistImportedDeploymentRequestKubernetes: - PersistImportedDeploymentRequestKubernetes, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestKubernetes$outboundSchema.parse( - persistImportedDeploymentRequestKubernetes, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestKubernetesUnion$Outbound = - | PersistImportedDeploymentRequestKubernetes$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestKubernetesUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestKubernetesUnion$Outbound, - PersistImportedDeploymentRequestKubernetesUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestKubernetes$outboundSchema), - z.any(), - ]); - -export function persistImportedDeploymentRequestKubernetesUnionToJSON( - persistImportedDeploymentRequestKubernetesUnion: - PersistImportedDeploymentRequestKubernetesUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestKubernetesUnion$outboundSchema.parse( - persistImportedDeploymentRequestKubernetesUnion, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestTypeByoVnetAzure$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeByoVnetAzure, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound = { - application_gateway_subnet_name?: string | null | undefined; - private_subnet_name: string; - public_subnet_name: string; - type: string; - vnet_resource_id: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound, - PersistImportedDeploymentRequestNetworkByoVnetAzure - > = z.object({ - applicationGatewaySubnetName: z.nullable(z.string()).optional(), - privateSubnetName: z.string(), - publicSubnetName: z.string(), - type: PersistImportedDeploymentRequestTypeByoVnetAzure$outboundSchema, - vnetResourceId: z.string(), - }).transform((v) => { - return remap$(v, { - applicationGatewaySubnetName: "application_gateway_subnet_name", - privateSubnetName: "private_subnet_name", - publicSubnetName: "public_subnet_name", - vnetResourceId: "vnet_resource_id", - }); - }); - -export function persistImportedDeploymentRequestNetworkByoVnetAzureToJSON( - persistImportedDeploymentRequestNetworkByoVnetAzure: - PersistImportedDeploymentRequestNetworkByoVnetAzure, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema.parse( - persistImportedDeploymentRequestNetworkByoVnetAzure, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestTypeByoVpcGcp$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeByoVpcGcp, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound = { - network_name: string; - region: string; - subnet_name: string; - type: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound, - PersistImportedDeploymentRequestNetworkByoVpcGcp - > = z.object({ - networkName: z.string(), - region: z.string(), - subnetName: z.string(), - type: PersistImportedDeploymentRequestTypeByoVpcGcp$outboundSchema, - }).transform((v) => { - return remap$(v, { - networkName: "network_name", - subnetName: "subnet_name", - }); - }); - -export function persistImportedDeploymentRequestNetworkByoVpcGcpToJSON( - persistImportedDeploymentRequestNetworkByoVpcGcp: - PersistImportedDeploymentRequestNetworkByoVpcGcp, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema.parse( - persistImportedDeploymentRequestNetworkByoVpcGcp, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestTypeByoVpcAws$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeByoVpcAws, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound = { - private_subnet_ids: Array; - public_subnet_ids: Array; - security_group_ids?: Array | undefined; - type: string; - vpc_id: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound, - PersistImportedDeploymentRequestNetworkByoVpcAws - > = z.object({ - privateSubnetIds: z.array(z.string()), - publicSubnetIds: z.array(z.string()), - securityGroupIds: z.array(z.string()).optional(), - type: PersistImportedDeploymentRequestTypeByoVpcAws$outboundSchema, - vpcId: z.string(), - }).transform((v) => { - return remap$(v, { - privateSubnetIds: "private_subnet_ids", - publicSubnetIds: "public_subnet_ids", - securityGroupIds: "security_group_ids", - vpcId: "vpc_id", - }); - }); - -export function persistImportedDeploymentRequestNetworkByoVpcAwsToJSON( - persistImportedDeploymentRequestNetworkByoVpcAws: - PersistImportedDeploymentRequestNetworkByoVpcAws, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema.parse( - persistImportedDeploymentRequestNetworkByoVpcAws, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestTypeCreate$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeCreate, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestNetworkCreate$Outbound = { - availability_zones?: number | undefined; - cidr?: string | null | undefined; - type: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestNetworkCreate$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestNetworkCreate$Outbound, - PersistImportedDeploymentRequestNetworkCreate - > = z.object({ - availabilityZones: z.int().optional(), - cidr: z.nullable(z.string()).optional(), - type: PersistImportedDeploymentRequestTypeCreate$outboundSchema, - }).transform((v) => { - return remap$(v, { - availabilityZones: "availability_zones", - }); - }); - -export function persistImportedDeploymentRequestNetworkCreateToJSON( - persistImportedDeploymentRequestNetworkCreate: - PersistImportedDeploymentRequestNetworkCreate, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestNetworkCreate$outboundSchema.parse( - persistImportedDeploymentRequestNetworkCreate, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestTypeUseDefault$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeUseDefault, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestNetworkUseDefault$Outbound = { - type: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestNetworkUseDefault$Outbound, - PersistImportedDeploymentRequestNetworkUseDefault - > = z.object({ - type: PersistImportedDeploymentRequestTypeUseDefault$outboundSchema, - }); - -export function persistImportedDeploymentRequestNetworkUseDefaultToJSON( - persistImportedDeploymentRequestNetworkUseDefault: - PersistImportedDeploymentRequestNetworkUseDefault, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema.parse( - persistImportedDeploymentRequestNetworkUseDefault, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestNetworkUnion$Outbound = - | PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound - | PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound - | PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound - | PersistImportedDeploymentRequestNetworkUseDefault$Outbound - | PersistImportedDeploymentRequestNetworkCreate$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestNetworkUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestNetworkUnion$Outbound, - PersistImportedDeploymentRequestNetworkUnion - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema - ), - z.lazy(() => PersistImportedDeploymentRequestNetworkCreate$outboundSchema), - z.any(), - ]); - -export function persistImportedDeploymentRequestNetworkUnionToJSON( - persistImportedDeploymentRequestNetworkUnion: - PersistImportedDeploymentRequestNetworkUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestNetworkUnion$outboundSchema.parse( - persistImportedDeploymentRequestNetworkUnion, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestTelemetry$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTelemetry, - ); - -/** @internal */ -export const PersistImportedDeploymentRequestUpdates$outboundSchema: z.ZodEnum< - typeof PersistImportedDeploymentRequestUpdates -> = z.enum(PersistImportedDeploymentRequestUpdates); - -/** @internal */ -export type PersistImportedDeploymentRequestStackSettings$Outbound = { - compute?: - | PersistImportedDeploymentRequestCompute$Outbound - | any - | null - | undefined; - deploymentModel?: string | undefined; - domains?: - | PersistImportedDeploymentRequestDomains$Outbound - | any - | null - | undefined; - externalBindings?: - | PersistImportedDeploymentRequestExternalBindings$Outbound - | null - | undefined; - heartbeats?: string | undefined; - kubernetes?: - | PersistImportedDeploymentRequestKubernetes$Outbound - | any - | null - | undefined; - network?: - | PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound - | PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound - | PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound - | PersistImportedDeploymentRequestNetworkUseDefault$Outbound - | PersistImportedDeploymentRequestNetworkCreate$Outbound - | any - | null - | undefined; - telemetry?: string | undefined; - updates?: string | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestStackSettings$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestStackSettings$Outbound, - PersistImportedDeploymentRequestStackSettings - > = z.object({ - compute: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestCompute$outboundSchema), - z.any(), - ]), - ).optional(), - deploymentModel: - PersistImportedDeploymentRequestDeploymentModel$outboundSchema.optional(), - domains: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestDomains$outboundSchema), - z.any(), - ]), - ).optional(), - externalBindings: z.nullable( - z.lazy(() => - PersistImportedDeploymentRequestExternalBindings$outboundSchema - ), - ).optional(), - heartbeats: PersistImportedDeploymentRequestHeartbeats$outboundSchema - .optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestKubernetes$outboundSchema), - z.any(), - ]), - ).optional(), - network: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestNetworkCreate$outboundSchema - ), - z.any(), - ]), - ).optional(), - telemetry: PersistImportedDeploymentRequestTelemetry$outboundSchema - .optional(), - updates: PersistImportedDeploymentRequestUpdates$outboundSchema.optional(), - }); - -export function persistImportedDeploymentRequestStackSettingsToJSON( - persistImportedDeploymentRequestStackSettings: - PersistImportedDeploymentRequestStackSettings, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestStackSettings$outboundSchema.parse( - persistImportedDeploymentRequestStackSettings, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestPlatformTest$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestPlatformTest, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound = { - testId: string; - platform: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoTest - > = z.object({ - testId: z.string(), - platform: PersistImportedDeploymentRequestPlatformTest$outboundSchema, - }); - -export function persistImportedDeploymentRequestEnvironmentInfoTestToJSON( - persistImportedDeploymentRequestEnvironmentInfoTest: - PersistImportedDeploymentRequestEnvironmentInfoTest, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoTest, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestPlatformLocal$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestPlatformLocal, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound = { - arch: string; - hostname: string; - os: string; - platform: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoLocal - > = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: PersistImportedDeploymentRequestPlatformLocal$outboundSchema, - }); - -export function persistImportedDeploymentRequestEnvironmentInfoLocalToJSON( - persistImportedDeploymentRequestEnvironmentInfoLocal: - PersistImportedDeploymentRequestEnvironmentInfoLocal, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoLocal, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure$outboundSchema: - z.ZodEnum< - typeof PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure - > = z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure); - -/** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound = { - location: string; - subscriptionId: string; - tenantId: string; - platform: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoAzure - > = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: - PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure$outboundSchema, - }); - -export function persistImportedDeploymentRequestEnvironmentInfoAzureToJSON( - persistImportedDeploymentRequestEnvironmentInfoAzure: - PersistImportedDeploymentRequestEnvironmentInfoAzure, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoAzure, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp$outboundSchema: - z.ZodEnum = - z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp); - -/** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound = { - projectId: string; - projectNumber: string; - region: string; - platform: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoGcp - > = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: - PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp$outboundSchema, - }); - -export function persistImportedDeploymentRequestEnvironmentInfoGcpToJSON( - persistImportedDeploymentRequestEnvironmentInfoGcp: - PersistImportedDeploymentRequestEnvironmentInfoGcp, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoGcp, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAws$outboundSchema: - z.ZodEnum = - z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformAws); - -/** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound = { - accountId: string; - region: string; - platform: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoAws - > = z.object({ - accountId: z.string(), - region: z.string(), - platform: - PersistImportedDeploymentRequestEnvironmentInfoPlatformAws$outboundSchema, - }); - -export function persistImportedDeploymentRequestEnvironmentInfoAwsToJSON( - persistImportedDeploymentRequestEnvironmentInfoAws: - PersistImportedDeploymentRequestEnvironmentInfoAws, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoAws, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestEnvironmentInfoUnion$Outbound = - | PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestEnvironmentInfoUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestEnvironmentInfoUnion$Outbound, - PersistImportedDeploymentRequestEnvironmentInfoUnion - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema - ), - z.any(), - ]); - -export function persistImportedDeploymentRequestEnvironmentInfoUnionToJSON( - persistImportedDeploymentRequestEnvironmentInfoUnion: - PersistImportedDeploymentRequestEnvironmentInfoUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestEnvironmentInfoUnion$outboundSchema.parse( - persistImportedDeploymentRequestEnvironmentInfoUnion, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestTypeStringList$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeStringList, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestDefaultStringList$Outbound = { - type: string; - value: Array; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestDefaultStringList$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestDefaultStringList$Outbound, - PersistImportedDeploymentRequestDefaultStringList - > = z.object({ - type: PersistImportedDeploymentRequestTypeStringList$outboundSchema, - value: z.array(z.string()), - }); - -export function persistImportedDeploymentRequestDefaultStringListToJSON( - persistImportedDeploymentRequestDefaultStringList: - PersistImportedDeploymentRequestDefaultStringList, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestDefaultStringList$outboundSchema.parse( - persistImportedDeploymentRequestDefaultStringList, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestTypeBoolean$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeBoolean, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestDefaultBoolean$Outbound = { - type: string; - value: boolean; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestDefaultBoolean$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestDefaultBoolean$Outbound, - PersistImportedDeploymentRequestDefaultBoolean - > = z.object({ - type: PersistImportedDeploymentRequestTypeBoolean$outboundSchema, - value: z.boolean(), - }); - -export function persistImportedDeploymentRequestDefaultBooleanToJSON( - persistImportedDeploymentRequestDefaultBoolean: - PersistImportedDeploymentRequestDefaultBoolean, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestDefaultBoolean$outboundSchema.parse( - persistImportedDeploymentRequestDefaultBoolean, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestTypeNumber$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeNumber, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestDefaultNumber$Outbound = { - type: string; - value: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestDefaultNumber$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestDefaultNumber$Outbound, - PersistImportedDeploymentRequestDefaultNumber - > = z.object({ - type: PersistImportedDeploymentRequestTypeNumber$outboundSchema, - value: z.string(), - }); - -export function persistImportedDeploymentRequestDefaultNumberToJSON( - persistImportedDeploymentRequestDefaultNumber: - PersistImportedDeploymentRequestDefaultNumber, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestDefaultNumber$outboundSchema.parse( - persistImportedDeploymentRequestDefaultNumber, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestTypeString$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeString, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestDefaultString$Outbound = { - type: string; - value: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestDefaultString$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestDefaultString$Outbound, - PersistImportedDeploymentRequestDefaultString - > = z.object({ - type: PersistImportedDeploymentRequestTypeString$outboundSchema, - value: z.string(), - }); - -export function persistImportedDeploymentRequestDefaultStringToJSON( - persistImportedDeploymentRequestDefaultString: - PersistImportedDeploymentRequestDefaultString, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestDefaultString$outboundSchema.parse( - persistImportedDeploymentRequestDefaultString, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestDefaultUnion$Outbound = - | PersistImportedDeploymentRequestDefaultString$Outbound - | PersistImportedDeploymentRequestDefaultNumber$Outbound - | PersistImportedDeploymentRequestDefaultBoolean$Outbound - | PersistImportedDeploymentRequestDefaultStringList$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestDefaultUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestDefaultUnion$Outbound, - PersistImportedDeploymentRequestDefaultUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestDefaultString$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestDefaultNumber$outboundSchema), - z.lazy(() => PersistImportedDeploymentRequestDefaultBoolean$outboundSchema), - z.lazy(() => - PersistImportedDeploymentRequestDefaultStringList$outboundSchema - ), - z.any(), - ]); - -export function persistImportedDeploymentRequestDefaultUnionToJSON( - persistImportedDeploymentRequestDefaultUnion: - PersistImportedDeploymentRequestDefaultUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestDefaultUnion$outboundSchema.parse( - persistImportedDeploymentRequestDefaultUnion, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestTypeEnvEnum$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestTypeEnvEnum, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestTypeUnion$Outbound = string | any; - -/** @internal */ -export const PersistImportedDeploymentRequestTypeUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestTypeUnion$Outbound, - PersistImportedDeploymentRequestTypeUnion - > = z.union([ - PersistImportedDeploymentRequestTypeEnvEnum$outboundSchema, - z.any(), - ]); - -export function persistImportedDeploymentRequestTypeUnionToJSON( - persistImportedDeploymentRequestTypeUnion: - PersistImportedDeploymentRequestTypeUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestTypeUnion$outboundSchema.parse( - persistImportedDeploymentRequestTypeUnion, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestEnv$Outbound = { - name: string; - targetResources?: Array | null | undefined; - type?: string | any | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestEnv$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestEnv$Outbound, - PersistImportedDeploymentRequestEnv -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - PersistImportedDeploymentRequestTypeEnvEnum$outboundSchema, - z.any(), - ]), - ).optional(), -}); - -export function persistImportedDeploymentRequestEnvToJSON( - persistImportedDeploymentRequestEnv: PersistImportedDeploymentRequestEnv, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestEnv$outboundSchema.parse( - persistImportedDeploymentRequestEnv, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestKind$outboundSchema: z.ZodEnum< - typeof PersistImportedDeploymentRequestKind -> = z.enum(PersistImportedDeploymentRequestKind); - -/** @internal */ -export const PersistImportedDeploymentRequestPreparedStackPlatform$outboundSchema: - z.ZodEnum = z - .enum(PersistImportedDeploymentRequestPreparedStackPlatform); - -/** @internal */ -export const PersistImportedDeploymentRequestProvidedBy$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestProvidedBy, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestValidation$Outbound = { - format?: string | null | undefined; - max?: string | null | undefined; - maxItems?: number | null | undefined; - maxLength?: number | null | undefined; - min?: string | null | undefined; - minItems?: number | null | undefined; - minLength?: number | null | undefined; - pattern?: string | null | undefined; - values?: Array | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestValidation$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestValidation$Outbound, - PersistImportedDeploymentRequestValidation - > = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); - -export function persistImportedDeploymentRequestValidationToJSON( - persistImportedDeploymentRequestValidation: - PersistImportedDeploymentRequestValidation, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestValidation$outboundSchema.parse( - persistImportedDeploymentRequestValidation, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestValidationUnion$Outbound = - | PersistImportedDeploymentRequestValidation$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestValidationUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestValidationUnion$Outbound, - PersistImportedDeploymentRequestValidationUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestValidation$outboundSchema), - z.any(), - ]); - -export function persistImportedDeploymentRequestValidationUnionToJSON( - persistImportedDeploymentRequestValidationUnion: - PersistImportedDeploymentRequestValidationUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestValidationUnion$outboundSchema.parse( - persistImportedDeploymentRequestValidationUnion, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestInput$Outbound = { - default?: - | PersistImportedDeploymentRequestDefaultString$Outbound - | PersistImportedDeploymentRequestDefaultNumber$Outbound - | PersistImportedDeploymentRequestDefaultBoolean$Outbound - | PersistImportedDeploymentRequestDefaultStringList$Outbound - | any - | null - | undefined; - description: string; - env?: Array | undefined; - id: string; - kind: string; - label: string; - placeholder?: string | null | undefined; - platforms?: Array | null | undefined; - providedBy: Array; - required: boolean; - validation?: - | PersistImportedDeploymentRequestValidation$Outbound - | any - | null - | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestInput$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestInput$Outbound, - PersistImportedDeploymentRequestInput -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestDefaultString$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestDefaultNumber$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestDefaultBoolean$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestDefaultStringList$outboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array(z.lazy(() => PersistImportedDeploymentRequestEnv$outboundSchema)) - .optional(), - id: z.string(), - kind: PersistImportedDeploymentRequestKind$outboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array( - PersistImportedDeploymentRequestPreparedStackPlatform$outboundSchema, - ), - ).optional(), - providedBy: z.array( - PersistImportedDeploymentRequestProvidedBy$outboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => PersistImportedDeploymentRequestValidation$outboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function persistImportedDeploymentRequestInputToJSON( - persistImportedDeploymentRequestInput: PersistImportedDeploymentRequestInput, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestInput$outboundSchema.parse( - persistImportedDeploymentRequestInput, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestManagementEnum$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestManagementEnum, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideAwResource$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideAwResource$Outbound, - PersistImportedDeploymentRequestOverrideAwResource - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function persistImportedDeploymentRequestOverrideAwResourceToJSON( - persistImportedDeploymentRequestOverrideAwResource: - PersistImportedDeploymentRequestOverrideAwResource, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideAwResource$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAwResource, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideAwStack$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideAwStack$Outbound, - PersistImportedDeploymentRequestOverrideAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function persistImportedDeploymentRequestOverrideAwStackToJSON( - persistImportedDeploymentRequestOverrideAwStack: - PersistImportedDeploymentRequestOverrideAwStack, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideAwStack$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAwStack, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideAwBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestOverrideAwResource$Outbound - | undefined; - stack?: PersistImportedDeploymentRequestOverrideAwStack$Outbound | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideAwBinding$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideAwBinding$Outbound, - PersistImportedDeploymentRequestOverrideAwBinding - > = z.object({ - resource: z.lazy(() => - PersistImportedDeploymentRequestOverrideAwResource$outboundSchema - ).optional(), - stack: z.lazy(() => - PersistImportedDeploymentRequestOverrideAwStack$outboundSchema - ).optional(), - }); - -export function persistImportedDeploymentRequestOverrideAwBindingToJSON( - persistImportedDeploymentRequestOverrideAwBinding: - PersistImportedDeploymentRequestOverrideAwBinding, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideAwBinding$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAwBinding, - ), - ); -} - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideEffect$outboundSchema: - z.ZodEnum = z.enum( - PersistImportedDeploymentRequestOverrideEffect, - ); - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideAwGrant$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideAwGrant$Outbound, - PersistImportedDeploymentRequestOverrideAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function persistImportedDeploymentRequestOverrideAwGrantToJSON( - persistImportedDeploymentRequestOverrideAwGrant: - PersistImportedDeploymentRequestOverrideAwGrant, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideAwGrant$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAwGrant, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideAw$Outbound = { - binding: PersistImportedDeploymentRequestOverrideAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: PersistImportedDeploymentRequestOverrideAwGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideAw$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideAw$Outbound, - PersistImportedDeploymentRequestOverrideAw - > = z.object({ - binding: z.lazy(() => - PersistImportedDeploymentRequestOverrideAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: PersistImportedDeploymentRequestOverrideEffect$outboundSchema - .optional(), - grant: z.lazy(() => - PersistImportedDeploymentRequestOverrideAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function persistImportedDeploymentRequestOverrideAwToJSON( - persistImportedDeploymentRequestOverrideAw: - PersistImportedDeploymentRequestOverrideAw, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideAw$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAw, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideAzureResource$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideAzureResource$Outbound, - PersistImportedDeploymentRequestOverrideAzureResource - > = z.object({ - scope: z.string(), - }); - -export function persistImportedDeploymentRequestOverrideAzureResourceToJSON( - persistImportedDeploymentRequestOverrideAzureResource: - PersistImportedDeploymentRequestOverrideAzureResource, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideAzureResource$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAzureResource, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideAzureStack$Outbound = { - scope: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideAzureStack$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideAzureStack$Outbound, - PersistImportedDeploymentRequestOverrideAzureStack - > = z.object({ - scope: z.string(), - }); - -export function persistImportedDeploymentRequestOverrideAzureStackToJSON( - persistImportedDeploymentRequestOverrideAzureStack: - PersistImportedDeploymentRequestOverrideAzureStack, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideAzureStack$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAzureStack, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideAzureBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestOverrideAzureResource$Outbound - | undefined; - stack?: - | PersistImportedDeploymentRequestOverrideAzureStack$Outbound - | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideAzureBinding$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideAzureBinding$Outbound, - PersistImportedDeploymentRequestOverrideAzureBinding - > = z.object({ - resource: z.lazy(() => - PersistImportedDeploymentRequestOverrideAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - PersistImportedDeploymentRequestOverrideAzureStack$outboundSchema - ).optional(), - }); - -export function persistImportedDeploymentRequestOverrideAzureBindingToJSON( - persistImportedDeploymentRequestOverrideAzureBinding: - PersistImportedDeploymentRequestOverrideAzureBinding, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideAzureBinding$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAzureBinding, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideAzureGrant$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideAzureGrant$Outbound, - PersistImportedDeploymentRequestOverrideAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function persistImportedDeploymentRequestOverrideAzureGrantToJSON( - persistImportedDeploymentRequestOverrideAzureGrant: - PersistImportedDeploymentRequestOverrideAzureGrant, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideAzureGrant$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAzureGrant, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideAzure$Outbound = { - binding: PersistImportedDeploymentRequestOverrideAzureBinding$Outbound; - description?: string | null | undefined; - grant: PersistImportedDeploymentRequestOverrideAzureGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideAzure$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideAzure$Outbound, - PersistImportedDeploymentRequestOverrideAzure - > = z.object({ - binding: z.lazy(() => - PersistImportedDeploymentRequestOverrideAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - PersistImportedDeploymentRequestOverrideAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function persistImportedDeploymentRequestOverrideAzureToJSON( - persistImportedDeploymentRequestOverrideAzure: - PersistImportedDeploymentRequestOverrideAzure, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideAzure$outboundSchema.parse( - persistImportedDeploymentRequestOverrideAzure, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideConditionResource$Outbound = - { - expression: string; - title: string; - }; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideConditionResource$Outbound, - PersistImportedDeploymentRequestOverrideConditionResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function persistImportedDeploymentRequestOverrideConditionResourceToJSON( - persistImportedDeploymentRequestOverrideConditionResource: - PersistImportedDeploymentRequestOverrideConditionResource, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema - .parse(persistImportedDeploymentRequestOverrideConditionResource), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideResourceConditionUnion$Outbound = - | PersistImportedDeploymentRequestOverrideConditionResource$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideResourceConditionUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideResourceConditionUnion$Outbound, - PersistImportedDeploymentRequestOverrideResourceConditionUnion - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema - ), - z.any(), - ]); - -export function persistImportedDeploymentRequestOverrideResourceConditionUnionToJSON( - persistImportedDeploymentRequestOverrideResourceConditionUnion: - PersistImportedDeploymentRequestOverrideResourceConditionUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideResourceConditionUnion$outboundSchema - .parse(persistImportedDeploymentRequestOverrideResourceConditionUnion), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideGcpResource$Outbound = { - condition?: - | PersistImportedDeploymentRequestOverrideConditionResource$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideGcpResource$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideGcpResource$Outbound, - PersistImportedDeploymentRequestOverrideGcpResource - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function persistImportedDeploymentRequestOverrideGcpResourceToJSON( - persistImportedDeploymentRequestOverrideGcpResource: - PersistImportedDeploymentRequestOverrideGcpResource, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideGcpResource$outboundSchema.parse( - persistImportedDeploymentRequestOverrideGcpResource, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideConditionStack$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideConditionStack$Outbound, - PersistImportedDeploymentRequestOverrideConditionStack - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function persistImportedDeploymentRequestOverrideConditionStackToJSON( - persistImportedDeploymentRequestOverrideConditionStack: - PersistImportedDeploymentRequestOverrideConditionStack, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema.parse( - persistImportedDeploymentRequestOverrideConditionStack, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideStackConditionUnion$Outbound = - | PersistImportedDeploymentRequestOverrideConditionStack$Outbound - | any; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideStackConditionUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideStackConditionUnion$Outbound, - PersistImportedDeploymentRequestOverrideStackConditionUnion - > = z.union([ - z.lazy(() => - PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema - ), - z.any(), - ]); - -export function persistImportedDeploymentRequestOverrideStackConditionUnionToJSON( - persistImportedDeploymentRequestOverrideStackConditionUnion: - PersistImportedDeploymentRequestOverrideStackConditionUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideStackConditionUnion$outboundSchema - .parse(persistImportedDeploymentRequestOverrideStackConditionUnion), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideGcpStack$Outbound = { - condition?: - | PersistImportedDeploymentRequestOverrideConditionStack$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideGcpStack$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideGcpStack$Outbound, - PersistImportedDeploymentRequestOverrideGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function persistImportedDeploymentRequestOverrideGcpStackToJSON( - persistImportedDeploymentRequestOverrideGcpStack: - PersistImportedDeploymentRequestOverrideGcpStack, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideGcpStack$outboundSchema.parse( - persistImportedDeploymentRequestOverrideGcpStack, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideGcpBinding$Outbound = { - resource?: - | PersistImportedDeploymentRequestOverrideGcpResource$Outbound - | undefined; - stack?: PersistImportedDeploymentRequestOverrideGcpStack$Outbound | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideGcpBinding$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideGcpBinding$Outbound, - PersistImportedDeploymentRequestOverrideGcpBinding - > = z.object({ - resource: z.lazy(() => - PersistImportedDeploymentRequestOverrideGcpResource$outboundSchema - ).optional(), - stack: z.lazy(() => - PersistImportedDeploymentRequestOverrideGcpStack$outboundSchema - ).optional(), - }); - -export function persistImportedDeploymentRequestOverrideGcpBindingToJSON( - persistImportedDeploymentRequestOverrideGcpBinding: - PersistImportedDeploymentRequestOverrideGcpBinding, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideGcpBinding$outboundSchema.parse( - persistImportedDeploymentRequestOverrideGcpBinding, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideGcpGrant$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideGcpGrant$Outbound, - PersistImportedDeploymentRequestOverrideGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function persistImportedDeploymentRequestOverrideGcpGrantToJSON( - persistImportedDeploymentRequestOverrideGcpGrant: - PersistImportedDeploymentRequestOverrideGcpGrant, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideGcpGrant$outboundSchema.parse( - persistImportedDeploymentRequestOverrideGcpGrant, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverrideGcp$Outbound = { - binding: PersistImportedDeploymentRequestOverrideGcpBinding$Outbound; - description?: string | null | undefined; - grant: PersistImportedDeploymentRequestOverrideGcpGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const PersistImportedDeploymentRequestOverrideGcp$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideGcp$Outbound, - PersistImportedDeploymentRequestOverrideGcp - > = z.object({ - binding: z.lazy(() => - PersistImportedDeploymentRequestOverrideGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - PersistImportedDeploymentRequestOverrideGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function persistImportedDeploymentRequestOverrideGcpToJSON( - persistImportedDeploymentRequestOverrideGcp: - PersistImportedDeploymentRequestOverrideGcp, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideGcp$outboundSchema.parse( - persistImportedDeploymentRequestOverrideGcp, - ), - ); -} - -/** @internal */ -export type PersistImportedDeploymentRequestOverridePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment + */ + lastSyncedEnvVarsHash?: string | null | undefined; + preparedStack?: + | PersistImportedDeploymentRequestPreparedStack + | any | null | undefined; + /** + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. + */ + registryAccessGranted?: boolean | undefined; }; -/** @internal */ -export const PersistImportedDeploymentRequestOverridePlatforms$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverridePlatforms$Outbound, - PersistImportedDeploymentRequestOverridePlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - PersistImportedDeploymentRequestOverrideAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - PersistImportedDeploymentRequestOverrideAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - PersistImportedDeploymentRequestOverrideGcp$outboundSchema - )), - ).optional(), - }); - -export function persistImportedDeploymentRequestOverridePlatformsToJSON( - persistImportedDeploymentRequestOverridePlatforms: - PersistImportedDeploymentRequestOverridePlatforms, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverridePlatforms$outboundSchema.parse( - persistImportedDeploymentRequestOverridePlatforms, - ), - ); -} +/** + * Deployment status in the deployment lifecycle + */ +export const PersistImportedDeploymentRequestStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", +} as const; +/** + * Deployment status in the deployment lifecycle + */ +export type PersistImportedDeploymentRequestStatus = ClosedEnum< + typeof PersistImportedDeploymentRequestStatus +>; -/** @internal */ -export type PersistImportedDeploymentRequestOverride$Outbound = { - description: string; - id: string; - platforms: PersistImportedDeploymentRequestOverridePlatforms$Outbound; +export type PersistImportedDeploymentRequestManagementConfigKubernetes = { + platform: "kubernetes"; }; -/** @internal */ -export const PersistImportedDeploymentRequestOverride$outboundSchema: z.ZodType< - PersistImportedDeploymentRequestOverride$Outbound, - PersistImportedDeploymentRequestOverride -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - PersistImportedDeploymentRequestOverridePlatforms$outboundSchema - ), -}); +/** + * Azure management configuration extracted from stack settings + */ +export type PersistImportedDeploymentRequestManagementConfigAzure = { + /** + * The managing Azure Tenant ID for cross-tenant access + */ + managingTenantId: string; + /** + * OIDC issuer URL trusted by the target-side managed identity. + */ + oidcIssuer: string; + /** + * OIDC subject claim trusted by the target-side managed identity. + */ + oidcSubject: string; + platform: "azure"; +}; -export function persistImportedDeploymentRequestOverrideToJSON( - persistImportedDeploymentRequestOverride: - PersistImportedDeploymentRequestOverride, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverride$outboundSchema.parse( - persistImportedDeploymentRequestOverride, - ), - ); -} +/** + * GCP management configuration extracted from stack settings + */ +export type PersistImportedDeploymentRequestManagementConfigGcp = { + /** + * Service account email for management roles + */ + serviceAccountEmail: string; + platform: "gcp"; +}; -/** @internal */ -export type PersistImportedDeploymentRequestOverrideUnion$Outbound = - | PersistImportedDeploymentRequestOverride$Outbound - | string; +/** + * AWS management configuration extracted from stack settings + */ +export type PersistImportedDeploymentRequestManagementConfigAws = { + /** + * The managing AWS IAM role ARN that can assume cross-account roles + */ + managingRoleArn: string; + platform: "aws"; +}; -/** @internal */ -export const PersistImportedDeploymentRequestOverrideUnion$outboundSchema: - z.ZodType< - PersistImportedDeploymentRequestOverrideUnion$Outbound, - PersistImportedDeploymentRequestOverrideUnion - > = z.union([ - z.lazy(() => PersistImportedDeploymentRequestOverride$outboundSchema), - z.string(), - ]); +/** + * Management configuration for different cloud platforms. + * + * @remarks + * + * Platform-derived configuration for cross-account/cross-tenant access. + * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + */ +export type PersistImportedDeploymentRequestManagementConfigUnion = + | PersistImportedDeploymentRequestManagementConfigAws + | PersistImportedDeploymentRequestManagementConfigGcp + | PersistImportedDeploymentRequestManagementConfigAzure + | PersistImportedDeploymentRequestManagementConfigKubernetes; -export function persistImportedDeploymentRequestOverrideUnionToJSON( - persistImportedDeploymentRequestOverrideUnion: - PersistImportedDeploymentRequestOverrideUnion, -): string { - return JSON.stringify( - PersistImportedDeploymentRequestOverrideUnion$outboundSchema.parse( - persistImportedDeploymentRequestOverrideUnion, - ), - ); -} +export type PersistImportedDeploymentRequest = { + mode: ModePersist; + /** + * Deployment name. Must be unique within the deployment group. + */ + name: string; + /** + * Unique identifier for the deployment group. + */ + deploymentGroupId: string; + managerId: string; + /** + * Represents the target cloud platform. + */ + platform: PersistImportedDeploymentRequestPlatformEnum; + /** + * Base cloud platform for cloud-backed Kubernetes imports. + */ + basePlatform?: KubernetesBasePlatform | undefined; + /** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ + stackSettings: PersistImportedDeploymentRequestStackSettings; + stackState?: any | null | undefined; + /** + * Platform-specific environment information + */ + environmentInfo?: + | PersistImportedDeploymentRequestEnvironmentInfoUnion + | null + | undefined; + /** + * Runtime metadata for deployment + * + * @remarks + * + * Stores deployment state that needs to persist across step calls. + */ + runtimeMetadata: PersistImportedDeploymentRequestRuntimeMetadata; + /** + * DeploymentState protocol version owned by the runtime/manager + */ + deploymentProtocolVersion: number; + /** + * Deployment status in the deployment lifecycle + */ + status?: PersistImportedDeploymentRequestStatus | undefined; + /** + * Unique identifier for the release. + */ + currentReleaseId?: string | undefined; + /** + * Unique identifier for the release. + */ + desiredReleaseId?: string | undefined; + importSource?: ImportSourceKind | undefined; + setupMetadata?: { [k: string]: any | null } | undefined; + /** + * Stable target key for the setup contract, e.g. aws/us-east-1 + */ + setupTarget: string; + /** + * Deterministic setup contract fingerprint for one setup target + */ + setupFingerprint: string; + /** + * Setup fingerprint algorithm version + */ + setupFingerprintVersion: number; + deploymentToken?: string | undefined; + /** + * Management configuration for different cloud platforms. + * + * @remarks + * + * Platform-derived configuration for cross-account/cross-tenant access. + * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + */ + managementConfig?: + | PersistImportedDeploymentRequestManagementConfigAws + | PersistImportedDeploymentRequestManagementConfigGcp + | PersistImportedDeploymentRequestManagementConfigAzure + | PersistImportedDeploymentRequestManagementConfigKubernetes + | undefined; + inputValues?: { [k: string]: StackInputValueRequest } | undefined; +}; /** @internal */ export type PersistImportedDeploymentRequestManagement2$Outbound = { override: { - [k: string]: Array< - PersistImportedDeploymentRequestOverride$Outbound | string - >; + [k: string]: Array; }; }; @@ -6936,10 +1148,7 @@ export const PersistImportedDeploymentRequestManagement2$outboundSchema: > = z.object({ override: z.record( z.string(), - z.array(z.union([ - z.lazy(() => PersistImportedDeploymentRequestOverride$outboundSchema), - z.string(), - ])), + z.array(PersistImportedDeploymentRequestOverrideUnion$outboundSchema), ), }); @@ -8618,9 +2827,8 @@ export const PersistImportedDeploymentRequestPreparedStack$outboundSchema: PersistImportedDeploymentRequestPreparedStack > = z.object({ id: z.string(), - inputs: z.array( - z.lazy(() => PersistImportedDeploymentRequestInput$outboundSchema), - ).optional(), + inputs: z.array(PersistImportedDeploymentRequestInput$outboundSchema) + .optional(), permissions: z.lazy(() => PersistImportedDeploymentRequestPermissions$outboundSchema ).optional(), @@ -8874,12 +3082,7 @@ export type PersistImportedDeploymentRequest$Outbound = { stackSettings: PersistImportedDeploymentRequestStackSettings$Outbound; stackState?: any | null | undefined; environmentInfo?: - | PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound - | PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound - | any + | PersistImportedDeploymentRequestEnvironmentInfoUnion$Outbound | null | undefined; runtimeMetadata: PersistImportedDeploymentRequestRuntimeMetadata$Outbound; @@ -8913,29 +3116,10 @@ export const PersistImportedDeploymentRequest$outboundSchema: z.ZodType< managerId: z.string(), platform: PersistImportedDeploymentRequestPlatformEnum$outboundSchema, basePlatform: KubernetesBasePlatform$outboundSchema.optional(), - stackSettings: z.lazy(() => - PersistImportedDeploymentRequestStackSettings$outboundSchema - ), + stackSettings: PersistImportedDeploymentRequestStackSettings$outboundSchema, stackState: z.nullable(z.any()).optional(), environmentInfo: z.nullable( - z.union([ - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema - ), - z.lazy(() => - PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema - ), - z.any(), - ]), + PersistImportedDeploymentRequestEnvironmentInfoUnion$outboundSchema, ).optional(), runtimeMetadata: z.lazy(() => PersistImportedDeploymentRequestRuntimeMetadata$outboundSchema diff --git a/client-sdks/platform/typescript/src/models/persistimporteddeploymentrequestoverrideunion.ts b/client-sdks/platform/typescript/src/models/persistimporteddeploymentrequestoverrideunion.ts new file mode 100644 index 000000000..64f8290ee --- /dev/null +++ b/client-sdks/platform/typescript/src/models/persistimporteddeploymentrequestoverrideunion.ts @@ -0,0 +1,5808 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { ClosedEnum } from "../types/enums.js"; + +export const ModePersist = { + Persist: "persist", +} as const; +export type ModePersist = ClosedEnum; + +/** + * Represents the target cloud platform. + */ +export const PersistImportedDeploymentRequestPlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type PersistImportedDeploymentRequestPlatformEnum = ClosedEnum< + typeof PersistImportedDeploymentRequestPlatformEnum +>; + +export type PersistImportedDeploymentRequestPoolsAutoscale = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Maximum machine count. + */ + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; +}; + +export type PersistImportedDeploymentRequestPoolsFixed = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Number of machines to run. + */ + machines: number; + mode: "fixed"; +}; + +/** + * User-selected deployment settings for one compute pool. + */ +export type PersistImportedDeploymentRequestPoolsUnion = + | PersistImportedDeploymentRequestPoolsFixed + | PersistImportedDeploymentRequestPoolsAutoscale; + +/** + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. + */ +export type PersistImportedDeploymentRequestCompute = { + /** + * Selected compute choices keyed by pool ID. + */ + pools?: { + [k: string]: + | PersistImportedDeploymentRequestPoolsFixed + | PersistImportedDeploymentRequestPoolsAutoscale; + } | undefined; +}; + +export type PersistImportedDeploymentRequestComputeUnion = + | PersistImportedDeploymentRequestCompute + | any; + +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export const PersistImportedDeploymentRequestDeploymentModel = { + Push: "push", + Pull: "pull", +} as const; +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export type PersistImportedDeploymentRequestDeploymentModel = ClosedEnum< + typeof PersistImportedDeploymentRequestDeploymentModel +>; + +export type PersistImportedDeploymentRequestAws = { + certificateArn: string; +}; + +export type PersistImportedDeploymentRequestAwsUnion = + | PersistImportedDeploymentRequestAws + | any; + +export type PersistImportedDeploymentRequestAzureStackSettings = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +export type PersistImportedDeploymentRequestAzureUnion = + | PersistImportedDeploymentRequestAzureStackSettings + | any; + +export type PersistImportedDeploymentRequestGcpStackSettings = { + certificateName: string; +}; + +export type PersistImportedDeploymentRequestGcpUnion = + | PersistImportedDeploymentRequestGcpStackSettings + | any; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type PersistImportedDeploymentRequestTlsSecretRef = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; +}; + +export type PersistImportedDeploymentRequestDomainsKubernetes = { + /** + * Namespace-scoped Kubernetes TLS Secret reference. + */ + tlsSecretRef: PersistImportedDeploymentRequestTlsSecretRef; +}; + +export type PersistImportedDeploymentRequestDomainsKubernetesUnion = + | PersistImportedDeploymentRequestDomainsKubernetes + | any; + +/** + * Platform-specific certificate references for custom domains. + */ +export type PersistImportedDeploymentRequestDomainsCertificate = { + aws?: PersistImportedDeploymentRequestAws | any | null | undefined; + azure?: + | PersistImportedDeploymentRequestAzureStackSettings + | any + | null + | undefined; + gcp?: + | PersistImportedDeploymentRequestGcpStackSettings + | any + | null + | undefined; + kubernetes?: + | PersistImportedDeploymentRequestDomainsKubernetes + | any + | null + | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type PersistImportedDeploymentRequestCustomDomains = { + /** + * Platform-specific certificate references for custom domains. + */ + certificate: PersistImportedDeploymentRequestDomainsCertificate; + /** + * Fully qualified domain name to use. + */ + domain: string; +}; + +/** + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. + */ +export type PersistImportedDeploymentRequestDomains = { + /** + * Custom domain configuration per resource ID. + */ + customDomains?: + | { [k: string]: PersistImportedDeploymentRequestCustomDomains } + | null + | undefined; +}; + +export type PersistImportedDeploymentRequestDomainsUnion = + | PersistImportedDeploymentRequestDomains + | any; + +/** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ +export type PersistImportedDeploymentRequestExternalBindings = {}; + +/** + * How heartbeat health checks are handled. + */ +export const PersistImportedDeploymentRequestHeartbeats = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type PersistImportedDeploymentRequestHeartbeats = ClosedEnum< + typeof PersistImportedDeploymentRequestHeartbeats +>; + +/** + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + */ +export type PersistImportedDeploymentRequestCloud = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +export type PersistImportedDeploymentRequestCloudUnion = + | PersistImportedDeploymentRequestCloud + | any; + +/** + * Ownership model for the Kubernetes cluster. + */ +export const PersistImportedDeploymentRequestOwnership = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type PersistImportedDeploymentRequestOwnership = ClosedEnum< + typeof PersistImportedDeploymentRequestOwnership +>; + +/** + * Kubernetes cluster setup settings. + */ +export type PersistImportedDeploymentRequestCluster = { + cloud?: PersistImportedDeploymentRequestCloud | any | null | undefined; + /** + * Namespace where the Alien chart and application resources run. + */ + namespace?: string | null | undefined; + /** + * Ownership model for the Kubernetes cluster. + */ + ownership: PersistImportedDeploymentRequestOwnership; +}; + +export type PersistImportedDeploymentRequestClusterUnion = + | PersistImportedDeploymentRequestCluster + | any; + +export type PersistImportedDeploymentRequestCertificateNone2 = { + mode: "none"; +}; + +export type PersistImportedDeploymentRequestCertificateManagedTLSSecret2 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type PersistImportedDeploymentRequestCertificateAwsAcmArn2 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type PersistImportedDeploymentRequestCertificateManagedAcmImport2 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type PersistImportedDeploymentRequestCertificateTLSSecretRef2 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type PersistImportedDeploymentRequestCertificateUnion2 = + | PersistImportedDeploymentRequestCertificateTLSSecretRef2 + | PersistImportedDeploymentRequestCertificateManagedAcmImport2 + | PersistImportedDeploymentRequestCertificateAwsAcmArn2 + | PersistImportedDeploymentRequestCertificateManagedTLSSecret2 + | PersistImportedDeploymentRequestCertificateNone2; + +export const PersistImportedDeploymentRequestModeCustom = { + Custom: "custom", +} as const; +export type PersistImportedDeploymentRequestModeCustom = ClosedEnum< + typeof PersistImportedDeploymentRequestModeCustom +>; + +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4 = + ClosedEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4 + >; + +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4; + }; + +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum4 = { + GkeGateway: "gkeGateway", +} as const; +export type PersistImportedDeploymentRequestProviderGkeGatewayEnum4 = + ClosedEnum; + +export type PersistImportedDeploymentRequestProviderGkeGateway4 = { + provider: PersistImportedDeploymentRequestProviderGkeGatewayEnum4; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const PersistImportedDeploymentRequestProviderAwsAlbEnum4 = { + AwsAlb: "awsAlb", +} as const; +export type PersistImportedDeploymentRequestProviderAwsAlbEnum4 = ClosedEnum< + typeof PersistImportedDeploymentRequestProviderAwsAlbEnum4 +>; + +export type PersistImportedDeploymentRequestProviderAwsAlb4 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: PersistImportedDeploymentRequestProviderAwsAlbEnum4; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type PersistImportedDeploymentRequestProviderUnion4 = + | PersistImportedDeploymentRequestProviderAwsAlb4 + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4 + | PersistImportedDeploymentRequestProviderGkeGateway4 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type PersistImportedDeploymentRequestRouteGateway2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb4 + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4 + | PersistImportedDeploymentRequestProviderGkeGateway4 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3 = + ClosedEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3 + >; + +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3; + }; + +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum3 = { + GkeGateway: "gkeGateway", +} as const; +export type PersistImportedDeploymentRequestProviderGkeGatewayEnum3 = + ClosedEnum; + +export type PersistImportedDeploymentRequestProviderGkeGateway3 = { + provider: PersistImportedDeploymentRequestProviderGkeGatewayEnum3; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const PersistImportedDeploymentRequestProviderAwsAlbEnum3 = { + AwsAlb: "awsAlb", +} as const; +export type PersistImportedDeploymentRequestProviderAwsAlbEnum3 = ClosedEnum< + typeof PersistImportedDeploymentRequestProviderAwsAlbEnum3 +>; + +export type PersistImportedDeploymentRequestProviderAwsAlb3 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: PersistImportedDeploymentRequestProviderAwsAlbEnum3; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type PersistImportedDeploymentRequestProviderUnion3 = + | PersistImportedDeploymentRequestProviderAwsAlb3 + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3 + | PersistImportedDeploymentRequestProviderGkeGateway3 + | any; + +/** + * Shared Ingress route profile values. + */ +export type PersistImportedDeploymentRequestRouteIngress2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb3 + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3 + | PersistImportedDeploymentRequestProviderGkeGateway3 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type PersistImportedDeploymentRequestRouteUnion2 = + | PersistImportedDeploymentRequestRouteIngress2 + | PersistImportedDeploymentRequestRouteGateway2; + +export type PersistImportedDeploymentRequestExposureCustom = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | PersistImportedDeploymentRequestCertificateTLSSecretRef2 + | PersistImportedDeploymentRequestCertificateManagedAcmImport2 + | PersistImportedDeploymentRequestCertificateAwsAcmArn2 + | PersistImportedDeploymentRequestCertificateManagedTLSSecret2 + | PersistImportedDeploymentRequestCertificateNone2; + /** + * Hostname routed by the Kubernetes public endpoint. + */ + domain: string; + mode: PersistImportedDeploymentRequestModeCustom; + /** + * Kubernetes route API selected for public endpoints. + */ + route: + | PersistImportedDeploymentRequestRouteIngress2 + | PersistImportedDeploymentRequestRouteGateway2; +}; + +export type PersistImportedDeploymentRequestCertificateNone1 = { + mode: "none"; +}; + +export type PersistImportedDeploymentRequestCertificateManagedTLSSecret1 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type PersistImportedDeploymentRequestCertificateAwsAcmArn1 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type PersistImportedDeploymentRequestCertificateManagedAcmImport1 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type PersistImportedDeploymentRequestCertificateTLSSecretRef1 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type PersistImportedDeploymentRequestCertificateUnion1 = + | PersistImportedDeploymentRequestCertificateTLSSecretRef1 + | PersistImportedDeploymentRequestCertificateManagedAcmImport1 + | PersistImportedDeploymentRequestCertificateAwsAcmArn1 + | PersistImportedDeploymentRequestCertificateManagedTLSSecret1 + | PersistImportedDeploymentRequestCertificateNone1; + +export const PersistImportedDeploymentRequestModeGenerated = { + Generated: "generated", +} as const; +export type PersistImportedDeploymentRequestModeGenerated = ClosedEnum< + typeof PersistImportedDeploymentRequestModeGenerated +>; + +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2 = + ClosedEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2 + >; + +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2; + }; + +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum2 = { + GkeGateway: "gkeGateway", +} as const; +export type PersistImportedDeploymentRequestProviderGkeGatewayEnum2 = + ClosedEnum; + +export type PersistImportedDeploymentRequestProviderGkeGateway2 = { + provider: PersistImportedDeploymentRequestProviderGkeGatewayEnum2; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const PersistImportedDeploymentRequestProviderAwsAlbEnum2 = { + AwsAlb: "awsAlb", +} as const; +export type PersistImportedDeploymentRequestProviderAwsAlbEnum2 = ClosedEnum< + typeof PersistImportedDeploymentRequestProviderAwsAlbEnum2 +>; + +export type PersistImportedDeploymentRequestProviderAwsAlb2 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: PersistImportedDeploymentRequestProviderAwsAlbEnum2; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type PersistImportedDeploymentRequestProviderUnion2 = + | PersistImportedDeploymentRequestProviderAwsAlb2 + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2 + | PersistImportedDeploymentRequestProviderGkeGateway2 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type PersistImportedDeploymentRequestRouteGateway1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb2 + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2 + | PersistImportedDeploymentRequestProviderGkeGateway2 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1 = + ClosedEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1 + >; + +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1; + }; + +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum1 = { + GkeGateway: "gkeGateway", +} as const; +export type PersistImportedDeploymentRequestProviderGkeGatewayEnum1 = + ClosedEnum; + +export type PersistImportedDeploymentRequestProviderGkeGateway1 = { + provider: PersistImportedDeploymentRequestProviderGkeGatewayEnum1; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const PersistImportedDeploymentRequestProviderAwsAlbEnum1 = { + AwsAlb: "awsAlb", +} as const; +export type PersistImportedDeploymentRequestProviderAwsAlbEnum1 = ClosedEnum< + typeof PersistImportedDeploymentRequestProviderAwsAlbEnum1 +>; + +export type PersistImportedDeploymentRequestProviderAwsAlb1 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: PersistImportedDeploymentRequestProviderAwsAlbEnum1; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type PersistImportedDeploymentRequestProviderUnion1 = + | PersistImportedDeploymentRequestProviderAwsAlb1 + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1 + | PersistImportedDeploymentRequestProviderGkeGateway1 + | any; + +/** + * Shared Ingress route profile values. + */ +export type PersistImportedDeploymentRequestRouteIngress1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb1 + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1 + | PersistImportedDeploymentRequestProviderGkeGateway1 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type PersistImportedDeploymentRequestRouteUnion1 = + | PersistImportedDeploymentRequestRouteIngress1 + | PersistImportedDeploymentRequestRouteGateway1; + +export type PersistImportedDeploymentRequestExposureGenerated = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | PersistImportedDeploymentRequestCertificateTLSSecretRef1 + | PersistImportedDeploymentRequestCertificateManagedAcmImport1 + | PersistImportedDeploymentRequestCertificateAwsAcmArn1 + | PersistImportedDeploymentRequestCertificateManagedTLSSecret1 + | PersistImportedDeploymentRequestCertificateNone1; + mode: PersistImportedDeploymentRequestModeGenerated; + /** + * Kubernetes route API selected for public endpoints. + */ + route: + | PersistImportedDeploymentRequestRouteIngress1 + | PersistImportedDeploymentRequestRouteGateway1; +}; + +export const PersistImportedDeploymentRequestModeDisabled = { + Disabled: "disabled", +} as const; +export type PersistImportedDeploymentRequestModeDisabled = ClosedEnum< + typeof PersistImportedDeploymentRequestModeDisabled +>; + +export type PersistImportedDeploymentRequestExposureDisabled = { + mode: PersistImportedDeploymentRequestModeDisabled; +}; + +export type PersistImportedDeploymentRequestExposureUnion = + | PersistImportedDeploymentRequestExposureCustom + | PersistImportedDeploymentRequestExposureGenerated + | PersistImportedDeploymentRequestExposureDisabled + | any; + +/** + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. + */ +export type PersistImportedDeploymentRequestKubernetes = { + cluster?: PersistImportedDeploymentRequestCluster | any | null | undefined; + exposure?: + | PersistImportedDeploymentRequestExposureCustom + | PersistImportedDeploymentRequestExposureGenerated + | PersistImportedDeploymentRequestExposureDisabled + | any + | null + | undefined; +}; + +export type PersistImportedDeploymentRequestKubernetesUnion = + | PersistImportedDeploymentRequestKubernetes + | any; + +export const PersistImportedDeploymentRequestTypeByoVnetAzure = { + ByoVnetAzure: "byo-vnet-azure", +} as const; +export type PersistImportedDeploymentRequestTypeByoVnetAzure = ClosedEnum< + typeof PersistImportedDeploymentRequestTypeByoVnetAzure +>; + +export type PersistImportedDeploymentRequestNetworkByoVnetAzure = { + /** + * Name of the dedicated classic Application Gateway subnet within the VNet. + */ + applicationGatewaySubnetName?: string | null | undefined; + /** + * Name of the private subnet within the VNet + */ + privateSubnetName: string; + /** + * Name of the public subnet within the VNet + */ + publicSubnetName: string; + type: PersistImportedDeploymentRequestTypeByoVnetAzure; + /** + * The full resource ID of the existing VNet + */ + vnetResourceId: string; +}; + +export const PersistImportedDeploymentRequestTypeByoVpcGcp = { + ByoVpcGcp: "byo-vpc-gcp", +} as const; +export type PersistImportedDeploymentRequestTypeByoVpcGcp = ClosedEnum< + typeof PersistImportedDeploymentRequestTypeByoVpcGcp +>; + +export type PersistImportedDeploymentRequestNetworkByoVpcGcp = { + /** + * The name of the existing VPC network + */ + networkName: string; + /** + * The region of the subnet + */ + region: string; + /** + * The name of the subnet to use + */ + subnetName: string; + type: PersistImportedDeploymentRequestTypeByoVpcGcp; +}; + +export const PersistImportedDeploymentRequestTypeByoVpcAws = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type PersistImportedDeploymentRequestTypeByoVpcAws = ClosedEnum< + typeof PersistImportedDeploymentRequestTypeByoVpcAws +>; + +export type PersistImportedDeploymentRequestNetworkByoVpcAws = { + /** + * IDs of private subnets + */ + privateSubnetIds: Array; + /** + * IDs of public subnets (required for public ingress) + */ + publicSubnetIds: Array; + /** + * Optional security group IDs to use + */ + securityGroupIds?: Array | undefined; + type: PersistImportedDeploymentRequestTypeByoVpcAws; + /** + * The ID of the existing VPC + */ + vpcId: string; +}; + +export const PersistImportedDeploymentRequestTypeCreate = { + Create: "create", +} as const; +export type PersistImportedDeploymentRequestTypeCreate = ClosedEnum< + typeof PersistImportedDeploymentRequestTypeCreate +>; + +export type PersistImportedDeploymentRequestNetworkCreate = { + /** + * Number of availability zones (default: 2). + */ + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: PersistImportedDeploymentRequestTypeCreate; +}; + +export const PersistImportedDeploymentRequestTypeUseDefault = { + UseDefault: "use-default", +} as const; +export type PersistImportedDeploymentRequestTypeUseDefault = ClosedEnum< + typeof PersistImportedDeploymentRequestTypeUseDefault +>; + +export type PersistImportedDeploymentRequestNetworkUseDefault = { + type: PersistImportedDeploymentRequestTypeUseDefault; +}; + +export type PersistImportedDeploymentRequestNetworkUnion = + | PersistImportedDeploymentRequestNetworkByoVpcAws + | PersistImportedDeploymentRequestNetworkByoVpcGcp + | PersistImportedDeploymentRequestNetworkByoVnetAzure + | PersistImportedDeploymentRequestNetworkUseDefault + | PersistImportedDeploymentRequestNetworkCreate + | any; + +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export const PersistImportedDeploymentRequestTelemetry = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export type PersistImportedDeploymentRequestTelemetry = ClosedEnum< + typeof PersistImportedDeploymentRequestTelemetry +>; + +/** + * How updates are delivered to the deployment. + */ +export const PersistImportedDeploymentRequestUpdates = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How updates are delivered to the deployment. + */ +export type PersistImportedDeploymentRequestUpdates = ClosedEnum< + typeof PersistImportedDeploymentRequestUpdates +>; + +/** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ +export type PersistImportedDeploymentRequestStackSettings = { + compute?: PersistImportedDeploymentRequestCompute | any | null | undefined; + /** + * Deployment model: how updates are delivered to the remote environment. + */ + deploymentModel?: PersistImportedDeploymentRequestDeploymentModel | undefined; + domains?: PersistImportedDeploymentRequestDomains | any | null | undefined; + /** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ + externalBindings?: + | PersistImportedDeploymentRequestExternalBindings + | null + | undefined; + /** + * How heartbeat health checks are handled. + */ + heartbeats?: PersistImportedDeploymentRequestHeartbeats | undefined; + kubernetes?: + | PersistImportedDeploymentRequestKubernetes + | any + | null + | undefined; + network?: + | PersistImportedDeploymentRequestNetworkByoVpcAws + | PersistImportedDeploymentRequestNetworkByoVpcGcp + | PersistImportedDeploymentRequestNetworkByoVnetAzure + | PersistImportedDeploymentRequestNetworkUseDefault + | PersistImportedDeploymentRequestNetworkCreate + | any + | null + | undefined; + /** + * How telemetry (logs, metrics, traces) is handled. + */ + telemetry?: PersistImportedDeploymentRequestTelemetry | undefined; + /** + * How updates are delivered to the deployment. + */ + updates?: PersistImportedDeploymentRequestUpdates | undefined; +}; + +export const PersistImportedDeploymentRequestPlatformTest = { + Test: "test", +} as const; +export type PersistImportedDeploymentRequestPlatformTest = ClosedEnum< + typeof PersistImportedDeploymentRequestPlatformTest +>; + +/** + * Test platform environment information (mock) + */ +export type PersistImportedDeploymentRequestEnvironmentInfoTest = { + /** + * Test identifier for this environment + */ + testId: string; + platform: PersistImportedDeploymentRequestPlatformTest; +}; + +export const PersistImportedDeploymentRequestPlatformLocal = { + Local: "local", +} as const; +export type PersistImportedDeploymentRequestPlatformLocal = ClosedEnum< + typeof PersistImportedDeploymentRequestPlatformLocal +>; + +/** + * Local platform environment information + */ +export type PersistImportedDeploymentRequestEnvironmentInfoLocal = { + /** + * Architecture (e.g., "x86_64", "aarch64") + */ + arch: string; + /** + * Hostname of the machine running the deployment + */ + hostname: string; + /** + * Operating system (e.g., "linux", "macos", "windows") + */ + os: string; + platform: PersistImportedDeploymentRequestPlatformLocal; +}; + +export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure = { + Azure: "azure", +} as const; +export type PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure = + ClosedEnum< + typeof PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure + >; + +/** + * Azure-specific environment information + */ +export type PersistImportedDeploymentRequestEnvironmentInfoAzure = { + /** + * Azure location/region + */ + location: string; + /** + * Azure subscription ID + */ + subscriptionId: string; + /** + * Azure tenant ID + */ + tenantId: string; + platform: PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure; +}; + +export const PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp = { + Gcp: "gcp", +} as const; +export type PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp = + ClosedEnum; + +/** + * GCP-specific environment information + */ +export type PersistImportedDeploymentRequestEnvironmentInfoGcp = { + /** + * GCP project ID (e.g., "my-project") + */ + projectId: string; + /** + * GCP project number (e.g., "123456789012") + */ + projectNumber: string; + /** + * GCP region + */ + region: string; + platform: PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp; +}; + +export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAws = { + Aws: "aws", +} as const; +export type PersistImportedDeploymentRequestEnvironmentInfoPlatformAws = + ClosedEnum; + +/** + * AWS-specific environment information + */ +export type PersistImportedDeploymentRequestEnvironmentInfoAws = { + /** + * AWS account ID + */ + accountId: string; + /** + * AWS region + */ + region: string; + platform: PersistImportedDeploymentRequestEnvironmentInfoPlatformAws; +}; + +/** + * Platform-specific environment information + */ +export type PersistImportedDeploymentRequestEnvironmentInfoUnion = + | PersistImportedDeploymentRequestEnvironmentInfoGcp + | PersistImportedDeploymentRequestEnvironmentInfoAzure + | PersistImportedDeploymentRequestEnvironmentInfoLocal + | PersistImportedDeploymentRequestEnvironmentInfoAws + | PersistImportedDeploymentRequestEnvironmentInfoTest + | any; + +export const PersistImportedDeploymentRequestTypeStringList = { + StringList: "stringList", +} as const; +export type PersistImportedDeploymentRequestTypeStringList = ClosedEnum< + typeof PersistImportedDeploymentRequestTypeStringList +>; + +export type PersistImportedDeploymentRequestDefaultStringList = { + type: PersistImportedDeploymentRequestTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const PersistImportedDeploymentRequestTypeBoolean = { + Boolean: "boolean", +} as const; +export type PersistImportedDeploymentRequestTypeBoolean = ClosedEnum< + typeof PersistImportedDeploymentRequestTypeBoolean +>; + +export type PersistImportedDeploymentRequestDefaultBoolean = { + type: PersistImportedDeploymentRequestTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const PersistImportedDeploymentRequestTypeNumber = { + Number: "number", +} as const; +export type PersistImportedDeploymentRequestTypeNumber = ClosedEnum< + typeof PersistImportedDeploymentRequestTypeNumber +>; + +export type PersistImportedDeploymentRequestDefaultNumber = { + type: PersistImportedDeploymentRequestTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const PersistImportedDeploymentRequestTypeString = { + String: "string", +} as const; +export type PersistImportedDeploymentRequestTypeString = ClosedEnum< + typeof PersistImportedDeploymentRequestTypeString +>; + +export type PersistImportedDeploymentRequestDefaultString = { + type: PersistImportedDeploymentRequestTypeString; + /** + * String default. + */ + value: string; +}; + +export type PersistImportedDeploymentRequestDefaultUnion = + | PersistImportedDeploymentRequestDefaultString + | PersistImportedDeploymentRequestDefaultNumber + | PersistImportedDeploymentRequestDefaultBoolean + | PersistImportedDeploymentRequestDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const PersistImportedDeploymentRequestTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type PersistImportedDeploymentRequestTypeEnvEnum = ClosedEnum< + typeof PersistImportedDeploymentRequestTypeEnvEnum +>; + +export type PersistImportedDeploymentRequestTypeUnion = + | PersistImportedDeploymentRequestTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type PersistImportedDeploymentRequestEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: PersistImportedDeploymentRequestTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const PersistImportedDeploymentRequestKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type PersistImportedDeploymentRequestKind = ClosedEnum< + typeof PersistImportedDeploymentRequestKind +>; + +/** + * Represents the target cloud platform. + */ +export const PersistImportedDeploymentRequestPreparedStackPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type PersistImportedDeploymentRequestPreparedStackPlatform = ClosedEnum< + typeof PersistImportedDeploymentRequestPreparedStackPlatform +>; + +/** + * Who can provide a stack input value. + */ +export const PersistImportedDeploymentRequestProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type PersistImportedDeploymentRequestProvidedBy = ClosedEnum< + typeof PersistImportedDeploymentRequestProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type PersistImportedDeploymentRequestValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type PersistImportedDeploymentRequestValidationUnion = + | PersistImportedDeploymentRequestValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type PersistImportedDeploymentRequestInput = { + default?: + | PersistImportedDeploymentRequestDefaultString + | PersistImportedDeploymentRequestDefaultNumber + | PersistImportedDeploymentRequestDefaultBoolean + | PersistImportedDeploymentRequestDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: PersistImportedDeploymentRequestKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | PersistImportedDeploymentRequestValidation + | any + | null + | undefined; +}; + +export const PersistImportedDeploymentRequestManagementEnum = { + Auto: "auto", +} as const; +export type PersistImportedDeploymentRequestManagementEnum = ClosedEnum< + typeof PersistImportedDeploymentRequestManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type PersistImportedDeploymentRequestOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type PersistImportedDeploymentRequestOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: PersistImportedDeploymentRequestOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: PersistImportedDeploymentRequestOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const PersistImportedDeploymentRequestOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type PersistImportedDeploymentRequestOverrideEffect = ClosedEnum< + typeof PersistImportedDeploymentRequestOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: PersistImportedDeploymentRequestOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type PersistImportedDeploymentRequestOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type PersistImportedDeploymentRequestOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: PersistImportedDeploymentRequestOverrideAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: PersistImportedDeploymentRequestOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type PersistImportedDeploymentRequestOverrideConditionResource = { + expression: string; + title: string; +}; + +export type PersistImportedDeploymentRequestOverrideResourceConditionUnion = + | PersistImportedDeploymentRequestOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type PersistImportedDeploymentRequestOverrideGcpResource = { + condition?: + | PersistImportedDeploymentRequestOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type PersistImportedDeploymentRequestOverrideConditionStack = { + expression: string; + title: string; +}; + +export type PersistImportedDeploymentRequestOverrideStackConditionUnion = + | PersistImportedDeploymentRequestOverrideConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type PersistImportedDeploymentRequestOverrideGcpStack = { + condition?: + | PersistImportedDeploymentRequestOverrideConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type PersistImportedDeploymentRequestOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: PersistImportedDeploymentRequestOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: PersistImportedDeploymentRequestOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type PersistImportedDeploymentRequestOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type PersistImportedDeploymentRequestOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: PersistImportedDeploymentRequestOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: PersistImportedDeploymentRequestOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type PersistImportedDeploymentRequestOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type PersistImportedDeploymentRequestOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: PersistImportedDeploymentRequestOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type PersistImportedDeploymentRequestOverrideUnion = + | PersistImportedDeploymentRequestOverride + | string; + +/** @internal */ +export const ModePersist$outboundSchema: z.ZodEnum = z.enum( + ModePersist, +); + +/** @internal */ +export const PersistImportedDeploymentRequestPlatformEnum$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestPlatformEnum, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestPoolsAutoscale$Outbound = { + machine?: string | null | undefined; + max: number; + min: number; + mode: "autoscale"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPoolsAutoscale$Outbound, + PersistImportedDeploymentRequestPoolsAutoscale + > = z.object({ + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), + }); + +export function persistImportedDeploymentRequestPoolsAutoscaleToJSON( + persistImportedDeploymentRequestPoolsAutoscale: + PersistImportedDeploymentRequestPoolsAutoscale, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema.parse( + persistImportedDeploymentRequestPoolsAutoscale, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestPoolsFixed$Outbound = { + machine?: string | null | undefined; + machines: number; + mode: "fixed"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestPoolsFixed$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPoolsFixed$Outbound, + PersistImportedDeploymentRequestPoolsFixed + > = z.object({ + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), + }); + +export function persistImportedDeploymentRequestPoolsFixedToJSON( + persistImportedDeploymentRequestPoolsFixed: + PersistImportedDeploymentRequestPoolsFixed, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPoolsFixed$outboundSchema.parse( + persistImportedDeploymentRequestPoolsFixed, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestPoolsUnion$Outbound = + | PersistImportedDeploymentRequestPoolsFixed$Outbound + | PersistImportedDeploymentRequestPoolsAutoscale$Outbound; + +/** @internal */ +export const PersistImportedDeploymentRequestPoolsUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestPoolsUnion$Outbound, + PersistImportedDeploymentRequestPoolsUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestPoolsFixed$outboundSchema), + z.lazy(() => PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema), + ]); + +export function persistImportedDeploymentRequestPoolsUnionToJSON( + persistImportedDeploymentRequestPoolsUnion: + PersistImportedDeploymentRequestPoolsUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestPoolsUnion$outboundSchema.parse( + persistImportedDeploymentRequestPoolsUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCompute$Outbound = { + pools?: { + [k: string]: + | PersistImportedDeploymentRequestPoolsFixed$Outbound + | PersistImportedDeploymentRequestPoolsAutoscale$Outbound; + } | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCompute$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestCompute$Outbound, + PersistImportedDeploymentRequestCompute +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => PersistImportedDeploymentRequestPoolsFixed$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestPoolsAutoscale$outboundSchema + ), + ]), + ).optional(), +}); + +export function persistImportedDeploymentRequestComputeToJSON( + persistImportedDeploymentRequestCompute: + PersistImportedDeploymentRequestCompute, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCompute$outboundSchema.parse( + persistImportedDeploymentRequestCompute, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestComputeUnion$Outbound = + | PersistImportedDeploymentRequestCompute$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestComputeUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestComputeUnion$Outbound, + PersistImportedDeploymentRequestComputeUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestCompute$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestComputeUnionToJSON( + persistImportedDeploymentRequestComputeUnion: + PersistImportedDeploymentRequestComputeUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestComputeUnion$outboundSchema.parse( + persistImportedDeploymentRequestComputeUnion, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestDeploymentModel$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestDeploymentModel, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestAws$Outbound = { + certificateArn: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestAws$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestAws$Outbound, + PersistImportedDeploymentRequestAws +> = z.object({ + certificateArn: z.string(), +}); + +export function persistImportedDeploymentRequestAwsToJSON( + persistImportedDeploymentRequestAws: PersistImportedDeploymentRequestAws, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestAws$outboundSchema.parse( + persistImportedDeploymentRequestAws, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestAwsUnion$Outbound = + | PersistImportedDeploymentRequestAws$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestAwsUnion$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestAwsUnion$Outbound, + PersistImportedDeploymentRequestAwsUnion +> = z.union([ + z.lazy(() => PersistImportedDeploymentRequestAws$outboundSchema), + z.any(), +]); + +export function persistImportedDeploymentRequestAwsUnionToJSON( + persistImportedDeploymentRequestAwsUnion: + PersistImportedDeploymentRequestAwsUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestAwsUnion$outboundSchema.parse( + persistImportedDeploymentRequestAwsUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestAzureStackSettings$Outbound = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestAzureStackSettings$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestAzureStackSettings$Outbound, + PersistImportedDeploymentRequestAzureStackSettings + > = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestAzureStackSettingsToJSON( + persistImportedDeploymentRequestAzureStackSettings: + PersistImportedDeploymentRequestAzureStackSettings, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestAzureStackSettings$outboundSchema.parse( + persistImportedDeploymentRequestAzureStackSettings, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestAzureUnion$Outbound = + | PersistImportedDeploymentRequestAzureStackSettings$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestAzureUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestAzureUnion$Outbound, + PersistImportedDeploymentRequestAzureUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestAzureStackSettings$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestAzureUnionToJSON( + persistImportedDeploymentRequestAzureUnion: + PersistImportedDeploymentRequestAzureUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestAzureUnion$outboundSchema.parse( + persistImportedDeploymentRequestAzureUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestGcpStackSettings$Outbound = { + certificateName: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestGcpStackSettings$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestGcpStackSettings$Outbound, + PersistImportedDeploymentRequestGcpStackSettings + > = z.object({ + certificateName: z.string(), + }); + +export function persistImportedDeploymentRequestGcpStackSettingsToJSON( + persistImportedDeploymentRequestGcpStackSettings: + PersistImportedDeploymentRequestGcpStackSettings, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestGcpStackSettings$outboundSchema.parse( + persistImportedDeploymentRequestGcpStackSettings, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestGcpUnion$Outbound = + | PersistImportedDeploymentRequestGcpStackSettings$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestGcpUnion$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestGcpUnion$Outbound, + PersistImportedDeploymentRequestGcpUnion +> = z.union([ + z.lazy(() => PersistImportedDeploymentRequestGcpStackSettings$outboundSchema), + z.any(), +]); + +export function persistImportedDeploymentRequestGcpUnionToJSON( + persistImportedDeploymentRequestGcpUnion: + PersistImportedDeploymentRequestGcpUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestGcpUnion$outboundSchema.parse( + persistImportedDeploymentRequestGcpUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestTlsSecretRef$Outbound = { + namespace?: string | null | undefined; + secretName: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestTlsSecretRef$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestTlsSecretRef$Outbound, + PersistImportedDeploymentRequestTlsSecretRef + > = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + }); + +export function persistImportedDeploymentRequestTlsSecretRefToJSON( + persistImportedDeploymentRequestTlsSecretRef: + PersistImportedDeploymentRequestTlsSecretRef, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestTlsSecretRef$outboundSchema.parse( + persistImportedDeploymentRequestTlsSecretRef, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestDomainsKubernetes$Outbound = { + tlsSecretRef: PersistImportedDeploymentRequestTlsSecretRef$Outbound; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDomainsKubernetes$Outbound, + PersistImportedDeploymentRequestDomainsKubernetes + > = z.object({ + tlsSecretRef: z.lazy(() => + PersistImportedDeploymentRequestTlsSecretRef$outboundSchema + ), + }); + +export function persistImportedDeploymentRequestDomainsKubernetesToJSON( + persistImportedDeploymentRequestDomainsKubernetes: + PersistImportedDeploymentRequestDomainsKubernetes, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema.parse( + persistImportedDeploymentRequestDomainsKubernetes, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestDomainsKubernetesUnion$Outbound = + | PersistImportedDeploymentRequestDomainsKubernetes$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestDomainsKubernetesUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDomainsKubernetesUnion$Outbound, + PersistImportedDeploymentRequestDomainsKubernetesUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestDomainsKubernetesUnionToJSON( + persistImportedDeploymentRequestDomainsKubernetesUnion: + PersistImportedDeploymentRequestDomainsKubernetesUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDomainsKubernetesUnion$outboundSchema.parse( + persistImportedDeploymentRequestDomainsKubernetesUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestDomainsCertificate$Outbound = { + aws?: PersistImportedDeploymentRequestAws$Outbound | any | null | undefined; + azure?: + | PersistImportedDeploymentRequestAzureStackSettings$Outbound + | any + | null + | undefined; + gcp?: + | PersistImportedDeploymentRequestGcpStackSettings$Outbound + | any + | null + | undefined; + kubernetes?: + | PersistImportedDeploymentRequestDomainsKubernetes$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestDomainsCertificate$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDomainsCertificate$Outbound, + PersistImportedDeploymentRequestDomainsCertificate + > = z.object({ + aws: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestAws$outboundSchema), + z.any(), + ]), + ).optional(), + azure: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestAzureStackSettings$outboundSchema + ), + z.any(), + ]), + ).optional(), + gcp: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestGcpStackSettings$outboundSchema + ), + z.any(), + ]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestDomainsKubernetes$outboundSchema + ), + z.any(), + ]), + ).optional(), + }); + +export function persistImportedDeploymentRequestDomainsCertificateToJSON( + persistImportedDeploymentRequestDomainsCertificate: + PersistImportedDeploymentRequestDomainsCertificate, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDomainsCertificate$outboundSchema.parse( + persistImportedDeploymentRequestDomainsCertificate, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCustomDomains$Outbound = { + certificate: PersistImportedDeploymentRequestDomainsCertificate$Outbound; + domain: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCustomDomains$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCustomDomains$Outbound, + PersistImportedDeploymentRequestCustomDomains + > = z.object({ + certificate: z.lazy(() => + PersistImportedDeploymentRequestDomainsCertificate$outboundSchema + ), + domain: z.string(), + }); + +export function persistImportedDeploymentRequestCustomDomainsToJSON( + persistImportedDeploymentRequestCustomDomains: + PersistImportedDeploymentRequestCustomDomains, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCustomDomains$outboundSchema.parse( + persistImportedDeploymentRequestCustomDomains, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestDomains$Outbound = { + customDomains?: + | { [k: string]: PersistImportedDeploymentRequestCustomDomains$Outbound } + | null + | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestDomains$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestDomains$Outbound, + PersistImportedDeploymentRequestDomains +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => + PersistImportedDeploymentRequestCustomDomains$outboundSchema + ), + ), + ).optional(), +}); + +export function persistImportedDeploymentRequestDomainsToJSON( + persistImportedDeploymentRequestDomains: + PersistImportedDeploymentRequestDomains, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDomains$outboundSchema.parse( + persistImportedDeploymentRequestDomains, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestDomainsUnion$Outbound = + | PersistImportedDeploymentRequestDomains$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestDomainsUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDomainsUnion$Outbound, + PersistImportedDeploymentRequestDomainsUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestDomains$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestDomainsUnionToJSON( + persistImportedDeploymentRequestDomainsUnion: + PersistImportedDeploymentRequestDomainsUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDomainsUnion$outboundSchema.parse( + persistImportedDeploymentRequestDomainsUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestExternalBindings$Outbound = {}; + +/** @internal */ +export const PersistImportedDeploymentRequestExternalBindings$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestExternalBindings$Outbound, + PersistImportedDeploymentRequestExternalBindings + > = z.object({}); + +export function persistImportedDeploymentRequestExternalBindingsToJSON( + persistImportedDeploymentRequestExternalBindings: + PersistImportedDeploymentRequestExternalBindings, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestExternalBindings$outboundSchema.parse( + persistImportedDeploymentRequestExternalBindings, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestHeartbeats$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestHeartbeats, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestCloud$Outbound = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCloud$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestCloud$Outbound, + PersistImportedDeploymentRequestCloud +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function persistImportedDeploymentRequestCloudToJSON( + persistImportedDeploymentRequestCloud: PersistImportedDeploymentRequestCloud, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCloud$outboundSchema.parse( + persistImportedDeploymentRequestCloud, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCloudUnion$Outbound = + | PersistImportedDeploymentRequestCloud$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestCloudUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCloudUnion$Outbound, + PersistImportedDeploymentRequestCloudUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestCloud$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestCloudUnionToJSON( + persistImportedDeploymentRequestCloudUnion: + PersistImportedDeploymentRequestCloudUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCloudUnion$outboundSchema.parse( + persistImportedDeploymentRequestCloudUnion, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestOwnership$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestOwnership, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestCluster$Outbound = { + cloud?: + | PersistImportedDeploymentRequestCloud$Outbound + | any + | null + | undefined; + namespace?: string | null | undefined; + ownership: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCluster$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestCluster$Outbound, + PersistImportedDeploymentRequestCluster +> = z.object({ + cloud: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestCloud$outboundSchema), + z.any(), + ]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: PersistImportedDeploymentRequestOwnership$outboundSchema, +}); + +export function persistImportedDeploymentRequestClusterToJSON( + persistImportedDeploymentRequestCluster: + PersistImportedDeploymentRequestCluster, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCluster$outboundSchema.parse( + persistImportedDeploymentRequestCluster, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestClusterUnion$Outbound = + | PersistImportedDeploymentRequestCluster$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestClusterUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestClusterUnion$Outbound, + PersistImportedDeploymentRequestClusterUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestCluster$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestClusterUnionToJSON( + persistImportedDeploymentRequestClusterUnion: + PersistImportedDeploymentRequestClusterUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestClusterUnion$outboundSchema.parse( + persistImportedDeploymentRequestClusterUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateNone2$Outbound = { + mode: "none"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateNone2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateNone2$Outbound, + PersistImportedDeploymentRequestCertificateNone2 + > = z.object({ + mode: z.literal("none"), + }); + +export function persistImportedDeploymentRequestCertificateNone2ToJSON( + persistImportedDeploymentRequestCertificateNone2: + PersistImportedDeploymentRequestCertificateNone2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateNone2$outboundSchema.parse( + persistImportedDeploymentRequestCertificateNone2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound = + { + mode: "managedTlsSecret"; + secretNameTemplate: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound, + PersistImportedDeploymentRequestCertificateManagedTLSSecret2 + > = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function persistImportedDeploymentRequestCertificateManagedTLSSecret2ToJSON( + persistImportedDeploymentRequestCertificateManagedTLSSecret2: + PersistImportedDeploymentRequestCertificateManagedTLSSecret2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema + .parse(persistImportedDeploymentRequestCertificateManagedTLSSecret2), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound = { + certificateArn: string; + mode: "awsAcmArn"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound, + PersistImportedDeploymentRequestCertificateAwsAcmArn2 + > = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function persistImportedDeploymentRequestCertificateAwsAcmArn2ToJSON( + persistImportedDeploymentRequestCertificateAwsAcmArn2: + PersistImportedDeploymentRequestCertificateAwsAcmArn2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema.parse( + persistImportedDeploymentRequestCertificateAwsAcmArn2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound = + { + mode: "managedAcmImport"; + region?: string | null | undefined; + tags?: { [k: string]: string } | undefined; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound, + PersistImportedDeploymentRequestCertificateManagedAcmImport2 + > = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function persistImportedDeploymentRequestCertificateManagedAcmImport2ToJSON( + persistImportedDeploymentRequestCertificateManagedAcmImport2: + PersistImportedDeploymentRequestCertificateManagedAcmImport2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema + .parse(persistImportedDeploymentRequestCertificateManagedAcmImport2), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound = + { + namespace?: string | null | undefined; + secretName: string; + mode: "tlsSecretRef"; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound, + PersistImportedDeploymentRequestCertificateTLSSecretRef2 + > = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function persistImportedDeploymentRequestCertificateTLSSecretRef2ToJSON( + persistImportedDeploymentRequestCertificateTLSSecretRef2: + PersistImportedDeploymentRequestCertificateTLSSecretRef2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema + .parse(persistImportedDeploymentRequestCertificateTLSSecretRef2), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateUnion2$Outbound = + | PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound + | PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound + | PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound + | PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound + | PersistImportedDeploymentRequestCertificateNone2$Outbound; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateUnion2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateUnion2$Outbound, + PersistImportedDeploymentRequestCertificateUnion2 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateNone2$outboundSchema + ), + ]); + +export function persistImportedDeploymentRequestCertificateUnion2ToJSON( + persistImportedDeploymentRequestCertificateUnion2: + PersistImportedDeploymentRequestCertificateUnion2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateUnion2$outboundSchema.parse( + persistImportedDeploymentRequestCertificateUnion2, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestModeCustom$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestModeCustom, + ); + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4 + > = z.enum( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound = + { + albName?: string | null | undefined; + albNamespace?: string | null | undefined; + frontend: string; + provider: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound, + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4 + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum4$outboundSchema, + }); + +export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4ToJSON( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema + .parse( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum4$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum4); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderGkeGateway4$Outbound = { + provider: string; + staticAddressName?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderGkeGateway4$Outbound, + PersistImportedDeploymentRequestProviderGkeGateway4 + > = z.object({ + provider: + PersistImportedDeploymentRequestProviderGkeGatewayEnum4$outboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestProviderGkeGateway4ToJSON( + persistImportedDeploymentRequestProviderGkeGateway4: + PersistImportedDeploymentRequestProviderGkeGateway4, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema.parse( + persistImportedDeploymentRequestProviderGkeGateway4, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlbEnum4$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum4); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAwsAlb4$Outbound = { + ipAddressType?: string | null | undefined; + provider: string; + scheme: string; + subnetIds?: Array | undefined; + targetType: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAwsAlb4$Outbound, + PersistImportedDeploymentRequestProviderAwsAlb4 + > = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: + PersistImportedDeploymentRequestProviderAwsAlbEnum4$outboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), + }); + +export function persistImportedDeploymentRequestProviderAwsAlb4ToJSON( + persistImportedDeploymentRequestProviderAwsAlb4: + PersistImportedDeploymentRequestProviderAwsAlb4, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema.parse( + persistImportedDeploymentRequestProviderAwsAlb4, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestProviderUnion4$Outbound = + | PersistImportedDeploymentRequestProviderAwsAlb4$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway4$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderUnion4$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderUnion4$Outbound, + PersistImportedDeploymentRequestProviderUnion4 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestProviderUnion4ToJSON( + persistImportedDeploymentRequestProviderUnion4: + PersistImportedDeploymentRequestProviderUnion4, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderUnion4$outboundSchema.parse( + persistImportedDeploymentRequestProviderUnion4, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteGateway2$Outbound = { + annotations?: { [k: string]: string } | undefined; + controller?: string | null | undefined; + gatewayClassName: string; + labels?: { [k: string]: string } | undefined; + listenerPort: number; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb4$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway4$Outbound + | any + | null + | undefined; + routeApi: "gateway"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteGateway2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteGateway2$Outbound, + PersistImportedDeploymentRequestRouteGateway2 + > = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb4$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers4$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway4$outboundSchema + ), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), + }); + +export function persistImportedDeploymentRequestRouteGateway2ToJSON( + persistImportedDeploymentRequestRouteGateway2: + PersistImportedDeploymentRequestRouteGateway2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteGateway2$outboundSchema.parse( + persistImportedDeploymentRequestRouteGateway2, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3 + > = z.enum( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound = + { + albName?: string | null | undefined; + albNamespace?: string | null | undefined; + frontend: string; + provider: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound, + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3 + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum3$outboundSchema, + }); + +export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3ToJSON( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema + .parse( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum3$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum3); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderGkeGateway3$Outbound = { + provider: string; + staticAddressName?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderGkeGateway3$Outbound, + PersistImportedDeploymentRequestProviderGkeGateway3 + > = z.object({ + provider: + PersistImportedDeploymentRequestProviderGkeGatewayEnum3$outboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestProviderGkeGateway3ToJSON( + persistImportedDeploymentRequestProviderGkeGateway3: + PersistImportedDeploymentRequestProviderGkeGateway3, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema.parse( + persistImportedDeploymentRequestProviderGkeGateway3, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlbEnum3$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum3); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAwsAlb3$Outbound = { + ipAddressType?: string | null | undefined; + provider: string; + scheme: string; + subnetIds?: Array | undefined; + targetType: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAwsAlb3$Outbound, + PersistImportedDeploymentRequestProviderAwsAlb3 + > = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: + PersistImportedDeploymentRequestProviderAwsAlbEnum3$outboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), + }); + +export function persistImportedDeploymentRequestProviderAwsAlb3ToJSON( + persistImportedDeploymentRequestProviderAwsAlb3: + PersistImportedDeploymentRequestProviderAwsAlb3, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema.parse( + persistImportedDeploymentRequestProviderAwsAlb3, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestProviderUnion3$Outbound = + | PersistImportedDeploymentRequestProviderAwsAlb3$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway3$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderUnion3$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderUnion3$Outbound, + PersistImportedDeploymentRequestProviderUnion3 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestProviderUnion3ToJSON( + persistImportedDeploymentRequestProviderUnion3: + PersistImportedDeploymentRequestProviderUnion3, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderUnion3$outboundSchema.parse( + persistImportedDeploymentRequestProviderUnion3, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteIngress2$Outbound = { + annotations?: { [k: string]: string } | undefined; + controller?: string | null | undefined; + ingressClassName: string; + labels?: { [k: string]: string } | undefined; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb3$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway3$Outbound + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteIngress2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteIngress2$Outbound, + PersistImportedDeploymentRequestRouteIngress2 + > = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb3$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers3$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway3$outboundSchema + ), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), + }); + +export function persistImportedDeploymentRequestRouteIngress2ToJSON( + persistImportedDeploymentRequestRouteIngress2: + PersistImportedDeploymentRequestRouteIngress2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteIngress2$outboundSchema.parse( + persistImportedDeploymentRequestRouteIngress2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteUnion2$Outbound = + | PersistImportedDeploymentRequestRouteIngress2$Outbound + | PersistImportedDeploymentRequestRouteGateway2$Outbound; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteUnion2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteUnion2$Outbound, + PersistImportedDeploymentRequestRouteUnion2 + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestRouteIngress2$outboundSchema), + z.lazy(() => PersistImportedDeploymentRequestRouteGateway2$outboundSchema), + ]); + +export function persistImportedDeploymentRequestRouteUnion2ToJSON( + persistImportedDeploymentRequestRouteUnion2: + PersistImportedDeploymentRequestRouteUnion2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteUnion2$outboundSchema.parse( + persistImportedDeploymentRequestRouteUnion2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestExposureCustom$Outbound = { + certificate: + | PersistImportedDeploymentRequestCertificateTLSSecretRef2$Outbound + | PersistImportedDeploymentRequestCertificateManagedAcmImport2$Outbound + | PersistImportedDeploymentRequestCertificateAwsAcmArn2$Outbound + | PersistImportedDeploymentRequestCertificateManagedTLSSecret2$Outbound + | PersistImportedDeploymentRequestCertificateNone2$Outbound; + domain: string; + mode: string; + route: + | PersistImportedDeploymentRequestRouteIngress2$Outbound + | PersistImportedDeploymentRequestRouteGateway2$Outbound; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestExposureCustom$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestExposureCustom$Outbound, + PersistImportedDeploymentRequestExposureCustom + > = z.object({ + certificate: z.union([ + z.lazy(() => + PersistImportedDeploymentRequestCertificateTLSSecretRef2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedAcmImport2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateAwsAcmArn2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedTLSSecret2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateNone2$outboundSchema + ), + ]), + domain: z.string(), + mode: PersistImportedDeploymentRequestModeCustom$outboundSchema, + route: z.union([ + z.lazy(() => + PersistImportedDeploymentRequestRouteIngress2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestRouteGateway2$outboundSchema + ), + ]), + }); + +export function persistImportedDeploymentRequestExposureCustomToJSON( + persistImportedDeploymentRequestExposureCustom: + PersistImportedDeploymentRequestExposureCustom, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestExposureCustom$outboundSchema.parse( + persistImportedDeploymentRequestExposureCustom, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateNone1$Outbound = { + mode: "none"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateNone1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateNone1$Outbound, + PersistImportedDeploymentRequestCertificateNone1 + > = z.object({ + mode: z.literal("none"), + }); + +export function persistImportedDeploymentRequestCertificateNone1ToJSON( + persistImportedDeploymentRequestCertificateNone1: + PersistImportedDeploymentRequestCertificateNone1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateNone1$outboundSchema.parse( + persistImportedDeploymentRequestCertificateNone1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound = + { + mode: "managedTlsSecret"; + secretNameTemplate: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound, + PersistImportedDeploymentRequestCertificateManagedTLSSecret1 + > = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function persistImportedDeploymentRequestCertificateManagedTLSSecret1ToJSON( + persistImportedDeploymentRequestCertificateManagedTLSSecret1: + PersistImportedDeploymentRequestCertificateManagedTLSSecret1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema + .parse(persistImportedDeploymentRequestCertificateManagedTLSSecret1), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound = { + certificateArn: string; + mode: "awsAcmArn"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound, + PersistImportedDeploymentRequestCertificateAwsAcmArn1 + > = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function persistImportedDeploymentRequestCertificateAwsAcmArn1ToJSON( + persistImportedDeploymentRequestCertificateAwsAcmArn1: + PersistImportedDeploymentRequestCertificateAwsAcmArn1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema.parse( + persistImportedDeploymentRequestCertificateAwsAcmArn1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound = + { + mode: "managedAcmImport"; + region?: string | null | undefined; + tags?: { [k: string]: string } | undefined; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound, + PersistImportedDeploymentRequestCertificateManagedAcmImport1 + > = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function persistImportedDeploymentRequestCertificateManagedAcmImport1ToJSON( + persistImportedDeploymentRequestCertificateManagedAcmImport1: + PersistImportedDeploymentRequestCertificateManagedAcmImport1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema + .parse(persistImportedDeploymentRequestCertificateManagedAcmImport1), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound = + { + namespace?: string | null | undefined; + secretName: string; + mode: "tlsSecretRef"; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound, + PersistImportedDeploymentRequestCertificateTLSSecretRef1 + > = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function persistImportedDeploymentRequestCertificateTLSSecretRef1ToJSON( + persistImportedDeploymentRequestCertificateTLSSecretRef1: + PersistImportedDeploymentRequestCertificateTLSSecretRef1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema + .parse(persistImportedDeploymentRequestCertificateTLSSecretRef1), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestCertificateUnion1$Outbound = + | PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound + | PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound + | PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound + | PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound + | PersistImportedDeploymentRequestCertificateNone1$Outbound; + +/** @internal */ +export const PersistImportedDeploymentRequestCertificateUnion1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestCertificateUnion1$Outbound, + PersistImportedDeploymentRequestCertificateUnion1 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateNone1$outboundSchema + ), + ]); + +export function persistImportedDeploymentRequestCertificateUnion1ToJSON( + persistImportedDeploymentRequestCertificateUnion1: + PersistImportedDeploymentRequestCertificateUnion1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestCertificateUnion1$outboundSchema.parse( + persistImportedDeploymentRequestCertificateUnion1, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestModeGenerated$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestModeGenerated, + ); + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2 + > = z.enum( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound = + { + albName?: string | null | undefined; + albNamespace?: string | null | undefined; + frontend: string; + provider: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound, + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2 + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum2$outboundSchema, + }); + +export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2ToJSON( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema + .parse( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum2$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum2); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderGkeGateway2$Outbound = { + provider: string; + staticAddressName?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderGkeGateway2$Outbound, + PersistImportedDeploymentRequestProviderGkeGateway2 + > = z.object({ + provider: + PersistImportedDeploymentRequestProviderGkeGatewayEnum2$outboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestProviderGkeGateway2ToJSON( + persistImportedDeploymentRequestProviderGkeGateway2: + PersistImportedDeploymentRequestProviderGkeGateway2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema.parse( + persistImportedDeploymentRequestProviderGkeGateway2, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlbEnum2$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum2); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAwsAlb2$Outbound = { + ipAddressType?: string | null | undefined; + provider: string; + scheme: string; + subnetIds?: Array | undefined; + targetType: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAwsAlb2$Outbound, + PersistImportedDeploymentRequestProviderAwsAlb2 + > = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: + PersistImportedDeploymentRequestProviderAwsAlbEnum2$outboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), + }); + +export function persistImportedDeploymentRequestProviderAwsAlb2ToJSON( + persistImportedDeploymentRequestProviderAwsAlb2: + PersistImportedDeploymentRequestProviderAwsAlb2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema.parse( + persistImportedDeploymentRequestProviderAwsAlb2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestProviderUnion2$Outbound = + | PersistImportedDeploymentRequestProviderAwsAlb2$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway2$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderUnion2$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderUnion2$Outbound, + PersistImportedDeploymentRequestProviderUnion2 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestProviderUnion2ToJSON( + persistImportedDeploymentRequestProviderUnion2: + PersistImportedDeploymentRequestProviderUnion2, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderUnion2$outboundSchema.parse( + persistImportedDeploymentRequestProviderUnion2, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteGateway1$Outbound = { + annotations?: { [k: string]: string } | undefined; + controller?: string | null | undefined; + gatewayClassName: string; + labels?: { [k: string]: string } | undefined; + listenerPort: number; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb2$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway2$Outbound + | any + | null + | undefined; + routeApi: "gateway"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteGateway1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteGateway1$Outbound, + PersistImportedDeploymentRequestRouteGateway1 + > = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers2$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway2$outboundSchema + ), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), + }); + +export function persistImportedDeploymentRequestRouteGateway1ToJSON( + persistImportedDeploymentRequestRouteGateway1: + PersistImportedDeploymentRequestRouteGateway1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteGateway1$outboundSchema.parse( + persistImportedDeploymentRequestRouteGateway1, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1 + > = z.enum( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound = + { + albName?: string | null | undefined; + albNamespace?: string | null | undefined; + frontend: string; + provider: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound, + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1 + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainersEnum1$outboundSchema, + }); + +export function persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1ToJSON( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1: + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema + .parse( + persistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGatewayEnum1$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderGkeGatewayEnum1); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderGkeGateway1$Outbound = { + provider: string; + staticAddressName?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderGkeGateway1$Outbound, + PersistImportedDeploymentRequestProviderGkeGateway1 + > = z.object({ + provider: + PersistImportedDeploymentRequestProviderGkeGatewayEnum1$outboundSchema, + staticAddressName: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestProviderGkeGateway1ToJSON( + persistImportedDeploymentRequestProviderGkeGateway1: + PersistImportedDeploymentRequestProviderGkeGateway1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema.parse( + persistImportedDeploymentRequestProviderGkeGateway1, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlbEnum1$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestProviderAwsAlbEnum1); + +/** @internal */ +export type PersistImportedDeploymentRequestProviderAwsAlb1$Outbound = { + ipAddressType?: string | null | undefined; + provider: string; + scheme: string; + subnetIds?: Array | undefined; + targetType: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderAwsAlb1$Outbound, + PersistImportedDeploymentRequestProviderAwsAlb1 + > = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: + PersistImportedDeploymentRequestProviderAwsAlbEnum1$outboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), + }); + +export function persistImportedDeploymentRequestProviderAwsAlb1ToJSON( + persistImportedDeploymentRequestProviderAwsAlb1: + PersistImportedDeploymentRequestProviderAwsAlb1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema.parse( + persistImportedDeploymentRequestProviderAwsAlb1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestProviderUnion1$Outbound = + | PersistImportedDeploymentRequestProviderAwsAlb1$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway1$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestProviderUnion1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestProviderUnion1$Outbound, + PersistImportedDeploymentRequestProviderUnion1 + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestProviderUnion1ToJSON( + persistImportedDeploymentRequestProviderUnion1: + PersistImportedDeploymentRequestProviderUnion1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestProviderUnion1$outboundSchema.parse( + persistImportedDeploymentRequestProviderUnion1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteIngress1$Outbound = { + annotations?: { [k: string]: string } | undefined; + controller?: string | null | undefined; + ingressClassName: string; + labels?: { [k: string]: string } | undefined; + provider?: + | PersistImportedDeploymentRequestProviderAwsAlb1$Outbound + | PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$Outbound + | PersistImportedDeploymentRequestProviderGkeGateway1$Outbound + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteIngress1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteIngress1$Outbound, + PersistImportedDeploymentRequestRouteIngress1 + > = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestProviderAwsAlb1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderAzureApplicationGatewayForContainers1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestProviderGkeGateway1$outboundSchema + ), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), + }); + +export function persistImportedDeploymentRequestRouteIngress1ToJSON( + persistImportedDeploymentRequestRouteIngress1: + PersistImportedDeploymentRequestRouteIngress1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteIngress1$outboundSchema.parse( + persistImportedDeploymentRequestRouteIngress1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestRouteUnion1$Outbound = + | PersistImportedDeploymentRequestRouteIngress1$Outbound + | PersistImportedDeploymentRequestRouteGateway1$Outbound; + +/** @internal */ +export const PersistImportedDeploymentRequestRouteUnion1$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestRouteUnion1$Outbound, + PersistImportedDeploymentRequestRouteUnion1 + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestRouteIngress1$outboundSchema), + z.lazy(() => PersistImportedDeploymentRequestRouteGateway1$outboundSchema), + ]); + +export function persistImportedDeploymentRequestRouteUnion1ToJSON( + persistImportedDeploymentRequestRouteUnion1: + PersistImportedDeploymentRequestRouteUnion1, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestRouteUnion1$outboundSchema.parse( + persistImportedDeploymentRequestRouteUnion1, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestExposureGenerated$Outbound = { + certificate: + | PersistImportedDeploymentRequestCertificateTLSSecretRef1$Outbound + | PersistImportedDeploymentRequestCertificateManagedAcmImport1$Outbound + | PersistImportedDeploymentRequestCertificateAwsAcmArn1$Outbound + | PersistImportedDeploymentRequestCertificateManagedTLSSecret1$Outbound + | PersistImportedDeploymentRequestCertificateNone1$Outbound; + mode: string; + route: + | PersistImportedDeploymentRequestRouteIngress1$Outbound + | PersistImportedDeploymentRequestRouteGateway1$Outbound; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestExposureGenerated$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestExposureGenerated$Outbound, + PersistImportedDeploymentRequestExposureGenerated + > = z.object({ + certificate: z.union([ + z.lazy(() => + PersistImportedDeploymentRequestCertificateTLSSecretRef1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedAcmImport1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateAwsAcmArn1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateManagedTLSSecret1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestCertificateNone1$outboundSchema + ), + ]), + mode: PersistImportedDeploymentRequestModeGenerated$outboundSchema, + route: z.union([ + z.lazy(() => + PersistImportedDeploymentRequestRouteIngress1$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestRouteGateway1$outboundSchema + ), + ]), + }); + +export function persistImportedDeploymentRequestExposureGeneratedToJSON( + persistImportedDeploymentRequestExposureGenerated: + PersistImportedDeploymentRequestExposureGenerated, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestExposureGenerated$outboundSchema.parse( + persistImportedDeploymentRequestExposureGenerated, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestModeDisabled$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestModeDisabled, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestExposureDisabled$Outbound = { + mode: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestExposureDisabled$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestExposureDisabled$Outbound, + PersistImportedDeploymentRequestExposureDisabled + > = z.object({ + mode: PersistImportedDeploymentRequestModeDisabled$outboundSchema, + }); + +export function persistImportedDeploymentRequestExposureDisabledToJSON( + persistImportedDeploymentRequestExposureDisabled: + PersistImportedDeploymentRequestExposureDisabled, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestExposureDisabled$outboundSchema.parse( + persistImportedDeploymentRequestExposureDisabled, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestExposureUnion$Outbound = + | PersistImportedDeploymentRequestExposureCustom$Outbound + | PersistImportedDeploymentRequestExposureGenerated$Outbound + | PersistImportedDeploymentRequestExposureDisabled$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestExposureUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestExposureUnion$Outbound, + PersistImportedDeploymentRequestExposureUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestExposureCustom$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestExposureGenerated$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestExposureDisabled$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestExposureUnionToJSON( + persistImportedDeploymentRequestExposureUnion: + PersistImportedDeploymentRequestExposureUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestExposureUnion$outboundSchema.parse( + persistImportedDeploymentRequestExposureUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestKubernetes$Outbound = { + cluster?: + | PersistImportedDeploymentRequestCluster$Outbound + | any + | null + | undefined; + exposure?: + | PersistImportedDeploymentRequestExposureCustom$Outbound + | PersistImportedDeploymentRequestExposureGenerated$Outbound + | PersistImportedDeploymentRequestExposureDisabled$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestKubernetes$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestKubernetes$Outbound, + PersistImportedDeploymentRequestKubernetes + > = z.object({ + cluster: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestCluster$outboundSchema), + z.any(), + ]), + ).optional(), + exposure: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestExposureCustom$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestExposureGenerated$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestExposureDisabled$outboundSchema + ), + z.any(), + ]), + ).optional(), + }); + +export function persistImportedDeploymentRequestKubernetesToJSON( + persistImportedDeploymentRequestKubernetes: + PersistImportedDeploymentRequestKubernetes, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestKubernetes$outboundSchema.parse( + persistImportedDeploymentRequestKubernetes, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestKubernetesUnion$Outbound = + | PersistImportedDeploymentRequestKubernetes$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestKubernetesUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestKubernetesUnion$Outbound, + PersistImportedDeploymentRequestKubernetesUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestKubernetes$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestKubernetesUnionToJSON( + persistImportedDeploymentRequestKubernetesUnion: + PersistImportedDeploymentRequestKubernetesUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestKubernetesUnion$outboundSchema.parse( + persistImportedDeploymentRequestKubernetesUnion, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeByoVnetAzure$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeByoVnetAzure, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound = { + application_gateway_subnet_name?: string | null | undefined; + private_subnet_name: string; + public_subnet_name: string; + type: string; + vnet_resource_id: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound, + PersistImportedDeploymentRequestNetworkByoVnetAzure + > = z.object({ + applicationGatewaySubnetName: z.nullable(z.string()).optional(), + privateSubnetName: z.string(), + publicSubnetName: z.string(), + type: PersistImportedDeploymentRequestTypeByoVnetAzure$outboundSchema, + vnetResourceId: z.string(), + }).transform((v) => { + return remap$(v, { + applicationGatewaySubnetName: "application_gateway_subnet_name", + privateSubnetName: "private_subnet_name", + publicSubnetName: "public_subnet_name", + vnetResourceId: "vnet_resource_id", + }); + }); + +export function persistImportedDeploymentRequestNetworkByoVnetAzureToJSON( + persistImportedDeploymentRequestNetworkByoVnetAzure: + PersistImportedDeploymentRequestNetworkByoVnetAzure, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema.parse( + persistImportedDeploymentRequestNetworkByoVnetAzure, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeByoVpcGcp$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeByoVpcGcp, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound = { + network_name: string; + region: string; + subnet_name: string; + type: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound, + PersistImportedDeploymentRequestNetworkByoVpcGcp + > = z.object({ + networkName: z.string(), + region: z.string(), + subnetName: z.string(), + type: PersistImportedDeploymentRequestTypeByoVpcGcp$outboundSchema, + }).transform((v) => { + return remap$(v, { + networkName: "network_name", + subnetName: "subnet_name", + }); + }); + +export function persistImportedDeploymentRequestNetworkByoVpcGcpToJSON( + persistImportedDeploymentRequestNetworkByoVpcGcp: + PersistImportedDeploymentRequestNetworkByoVpcGcp, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema.parse( + persistImportedDeploymentRequestNetworkByoVpcGcp, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeByoVpcAws$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeByoVpcAws, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound = { + private_subnet_ids: Array; + public_subnet_ids: Array; + security_group_ids?: Array | undefined; + type: string; + vpc_id: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound, + PersistImportedDeploymentRequestNetworkByoVpcAws + > = z.object({ + privateSubnetIds: z.array(z.string()), + publicSubnetIds: z.array(z.string()), + securityGroupIds: z.array(z.string()).optional(), + type: PersistImportedDeploymentRequestTypeByoVpcAws$outboundSchema, + vpcId: z.string(), + }).transform((v) => { + return remap$(v, { + privateSubnetIds: "private_subnet_ids", + publicSubnetIds: "public_subnet_ids", + securityGroupIds: "security_group_ids", + vpcId: "vpc_id", + }); + }); + +export function persistImportedDeploymentRequestNetworkByoVpcAwsToJSON( + persistImportedDeploymentRequestNetworkByoVpcAws: + PersistImportedDeploymentRequestNetworkByoVpcAws, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema.parse( + persistImportedDeploymentRequestNetworkByoVpcAws, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeCreate$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeCreate, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkCreate$Outbound = { + availability_zones?: number | undefined; + cidr?: string | null | undefined; + type: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkCreate$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkCreate$Outbound, + PersistImportedDeploymentRequestNetworkCreate + > = z.object({ + availabilityZones: z.int().optional(), + cidr: z.nullable(z.string()).optional(), + type: PersistImportedDeploymentRequestTypeCreate$outboundSchema, + }).transform((v) => { + return remap$(v, { + availabilityZones: "availability_zones", + }); + }); + +export function persistImportedDeploymentRequestNetworkCreateToJSON( + persistImportedDeploymentRequestNetworkCreate: + PersistImportedDeploymentRequestNetworkCreate, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkCreate$outboundSchema.parse( + persistImportedDeploymentRequestNetworkCreate, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeUseDefault$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeUseDefault, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkUseDefault$Outbound = { + type: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkUseDefault$Outbound, + PersistImportedDeploymentRequestNetworkUseDefault + > = z.object({ + type: PersistImportedDeploymentRequestTypeUseDefault$outboundSchema, + }); + +export function persistImportedDeploymentRequestNetworkUseDefaultToJSON( + persistImportedDeploymentRequestNetworkUseDefault: + PersistImportedDeploymentRequestNetworkUseDefault, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema.parse( + persistImportedDeploymentRequestNetworkUseDefault, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestNetworkUnion$Outbound = + | PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound + | PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound + | PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound + | PersistImportedDeploymentRequestNetworkUseDefault$Outbound + | PersistImportedDeploymentRequestNetworkCreate$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestNetworkUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestNetworkUnion$Outbound, + PersistImportedDeploymentRequestNetworkUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema + ), + z.lazy(() => PersistImportedDeploymentRequestNetworkCreate$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestNetworkUnionToJSON( + persistImportedDeploymentRequestNetworkUnion: + PersistImportedDeploymentRequestNetworkUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestNetworkUnion$outboundSchema.parse( + persistImportedDeploymentRequestNetworkUnion, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTelemetry$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTelemetry, + ); + +/** @internal */ +export const PersistImportedDeploymentRequestUpdates$outboundSchema: z.ZodEnum< + typeof PersistImportedDeploymentRequestUpdates +> = z.enum(PersistImportedDeploymentRequestUpdates); + +/** @internal */ +export type PersistImportedDeploymentRequestStackSettings$Outbound = { + compute?: + | PersistImportedDeploymentRequestCompute$Outbound + | any + | null + | undefined; + deploymentModel?: string | undefined; + domains?: + | PersistImportedDeploymentRequestDomains$Outbound + | any + | null + | undefined; + externalBindings?: + | PersistImportedDeploymentRequestExternalBindings$Outbound + | null + | undefined; + heartbeats?: string | undefined; + kubernetes?: + | PersistImportedDeploymentRequestKubernetes$Outbound + | any + | null + | undefined; + network?: + | PersistImportedDeploymentRequestNetworkByoVpcAws$Outbound + | PersistImportedDeploymentRequestNetworkByoVpcGcp$Outbound + | PersistImportedDeploymentRequestNetworkByoVnetAzure$Outbound + | PersistImportedDeploymentRequestNetworkUseDefault$Outbound + | PersistImportedDeploymentRequestNetworkCreate$Outbound + | any + | null + | undefined; + telemetry?: string | undefined; + updates?: string | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestStackSettings$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestStackSettings$Outbound, + PersistImportedDeploymentRequestStackSettings + > = z.object({ + compute: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestCompute$outboundSchema), + z.any(), + ]), + ).optional(), + deploymentModel: + PersistImportedDeploymentRequestDeploymentModel$outboundSchema.optional(), + domains: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestDomains$outboundSchema), + z.any(), + ]), + ).optional(), + externalBindings: z.nullable( + z.lazy(() => + PersistImportedDeploymentRequestExternalBindings$outboundSchema + ), + ).optional(), + heartbeats: PersistImportedDeploymentRequestHeartbeats$outboundSchema + .optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestKubernetes$outboundSchema), + z.any(), + ]), + ).optional(), + network: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVpcAws$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVpcGcp$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkByoVnetAzure$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkUseDefault$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestNetworkCreate$outboundSchema + ), + z.any(), + ]), + ).optional(), + telemetry: PersistImportedDeploymentRequestTelemetry$outboundSchema + .optional(), + updates: PersistImportedDeploymentRequestUpdates$outboundSchema.optional(), + }); + +export function persistImportedDeploymentRequestStackSettingsToJSON( + persistImportedDeploymentRequestStackSettings: + PersistImportedDeploymentRequestStackSettings, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestStackSettings$outboundSchema.parse( + persistImportedDeploymentRequestStackSettings, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestPlatformTest$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestPlatformTest, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound = { + testId: string; + platform: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoTest + > = z.object({ + testId: z.string(), + platform: PersistImportedDeploymentRequestPlatformTest$outboundSchema, + }); + +export function persistImportedDeploymentRequestEnvironmentInfoTestToJSON( + persistImportedDeploymentRequestEnvironmentInfoTest: + PersistImportedDeploymentRequestEnvironmentInfoTest, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoTest, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestPlatformLocal$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestPlatformLocal, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound = { + arch: string; + hostname: string; + os: string; + platform: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoLocal + > = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: PersistImportedDeploymentRequestPlatformLocal$outboundSchema, + }); + +export function persistImportedDeploymentRequestEnvironmentInfoLocalToJSON( + persistImportedDeploymentRequestEnvironmentInfoLocal: + PersistImportedDeploymentRequestEnvironmentInfoLocal, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoLocal, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure$outboundSchema: + z.ZodEnum< + typeof PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure + > = z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure); + +/** @internal */ +export type PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound = { + location: string; + subscriptionId: string; + tenantId: string; + platform: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoAzure + > = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: + PersistImportedDeploymentRequestEnvironmentInfoPlatformAzure$outboundSchema, + }); + +export function persistImportedDeploymentRequestEnvironmentInfoAzureToJSON( + persistImportedDeploymentRequestEnvironmentInfoAzure: + PersistImportedDeploymentRequestEnvironmentInfoAzure, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoAzure, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp$outboundSchema: + z.ZodEnum = + z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp); + +/** @internal */ +export type PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound = { + projectId: string; + projectNumber: string; + region: string; + platform: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoGcp + > = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: + PersistImportedDeploymentRequestEnvironmentInfoPlatformGcp$outboundSchema, + }); + +export function persistImportedDeploymentRequestEnvironmentInfoGcpToJSON( + persistImportedDeploymentRequestEnvironmentInfoGcp: + PersistImportedDeploymentRequestEnvironmentInfoGcp, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoGcp, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoPlatformAws$outboundSchema: + z.ZodEnum = + z.enum(PersistImportedDeploymentRequestEnvironmentInfoPlatformAws); + +/** @internal */ +export type PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound = { + accountId: string; + region: string; + platform: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoAws + > = z.object({ + accountId: z.string(), + region: z.string(), + platform: + PersistImportedDeploymentRequestEnvironmentInfoPlatformAws$outboundSchema, + }); + +export function persistImportedDeploymentRequestEnvironmentInfoAwsToJSON( + persistImportedDeploymentRequestEnvironmentInfoAws: + PersistImportedDeploymentRequestEnvironmentInfoAws, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoAws, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestEnvironmentInfoUnion$Outbound = + | PersistImportedDeploymentRequestEnvironmentInfoGcp$Outbound + | PersistImportedDeploymentRequestEnvironmentInfoAzure$Outbound + | PersistImportedDeploymentRequestEnvironmentInfoLocal$Outbound + | PersistImportedDeploymentRequestEnvironmentInfoAws$Outbound + | PersistImportedDeploymentRequestEnvironmentInfoTest$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestEnvironmentInfoUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestEnvironmentInfoUnion$Outbound, + PersistImportedDeploymentRequestEnvironmentInfoUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestEnvironmentInfoGcp$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestEnvironmentInfoAzure$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestEnvironmentInfoLocal$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestEnvironmentInfoAws$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestEnvironmentInfoTest$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestEnvironmentInfoUnionToJSON( + persistImportedDeploymentRequestEnvironmentInfoUnion: + PersistImportedDeploymentRequestEnvironmentInfoUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestEnvironmentInfoUnion$outboundSchema.parse( + persistImportedDeploymentRequestEnvironmentInfoUnion, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeStringList$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeStringList, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestDefaultStringList$Outbound = { + type: string; + value: Array; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestDefaultStringList$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDefaultStringList$Outbound, + PersistImportedDeploymentRequestDefaultStringList + > = z.object({ + type: PersistImportedDeploymentRequestTypeStringList$outboundSchema, + value: z.array(z.string()), + }); + +export function persistImportedDeploymentRequestDefaultStringListToJSON( + persistImportedDeploymentRequestDefaultStringList: + PersistImportedDeploymentRequestDefaultStringList, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDefaultStringList$outboundSchema.parse( + persistImportedDeploymentRequestDefaultStringList, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeBoolean$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeBoolean, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestDefaultBoolean$Outbound = { + type: string; + value: boolean; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestDefaultBoolean$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDefaultBoolean$Outbound, + PersistImportedDeploymentRequestDefaultBoolean + > = z.object({ + type: PersistImportedDeploymentRequestTypeBoolean$outboundSchema, + value: z.boolean(), + }); + +export function persistImportedDeploymentRequestDefaultBooleanToJSON( + persistImportedDeploymentRequestDefaultBoolean: + PersistImportedDeploymentRequestDefaultBoolean, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDefaultBoolean$outboundSchema.parse( + persistImportedDeploymentRequestDefaultBoolean, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeNumber$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeNumber, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestDefaultNumber$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestDefaultNumber$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDefaultNumber$Outbound, + PersistImportedDeploymentRequestDefaultNumber + > = z.object({ + type: PersistImportedDeploymentRequestTypeNumber$outboundSchema, + value: z.string(), + }); + +export function persistImportedDeploymentRequestDefaultNumberToJSON( + persistImportedDeploymentRequestDefaultNumber: + PersistImportedDeploymentRequestDefaultNumber, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDefaultNumber$outboundSchema.parse( + persistImportedDeploymentRequestDefaultNumber, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeString$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeString, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestDefaultString$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestDefaultString$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDefaultString$Outbound, + PersistImportedDeploymentRequestDefaultString + > = z.object({ + type: PersistImportedDeploymentRequestTypeString$outboundSchema, + value: z.string(), + }); + +export function persistImportedDeploymentRequestDefaultStringToJSON( + persistImportedDeploymentRequestDefaultString: + PersistImportedDeploymentRequestDefaultString, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDefaultString$outboundSchema.parse( + persistImportedDeploymentRequestDefaultString, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestDefaultUnion$Outbound = + | PersistImportedDeploymentRequestDefaultString$Outbound + | PersistImportedDeploymentRequestDefaultNumber$Outbound + | PersistImportedDeploymentRequestDefaultBoolean$Outbound + | PersistImportedDeploymentRequestDefaultStringList$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestDefaultUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestDefaultUnion$Outbound, + PersistImportedDeploymentRequestDefaultUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestDefaultString$outboundSchema), + z.lazy(() => PersistImportedDeploymentRequestDefaultNumber$outboundSchema), + z.lazy(() => PersistImportedDeploymentRequestDefaultBoolean$outboundSchema), + z.lazy(() => + PersistImportedDeploymentRequestDefaultStringList$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestDefaultUnionToJSON( + persistImportedDeploymentRequestDefaultUnion: + PersistImportedDeploymentRequestDefaultUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestDefaultUnion$outboundSchema.parse( + persistImportedDeploymentRequestDefaultUnion, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestTypeEnvEnum$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestTypeEnvEnum, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestTypeUnion$Outbound = string | any; + +/** @internal */ +export const PersistImportedDeploymentRequestTypeUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestTypeUnion$Outbound, + PersistImportedDeploymentRequestTypeUnion + > = z.union([ + PersistImportedDeploymentRequestTypeEnvEnum$outboundSchema, + z.any(), + ]); + +export function persistImportedDeploymentRequestTypeUnionToJSON( + persistImportedDeploymentRequestTypeUnion: + PersistImportedDeploymentRequestTypeUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestTypeUnion$outboundSchema.parse( + persistImportedDeploymentRequestTypeUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestEnv$Outbound = { + name: string; + targetResources?: Array | null | undefined; + type?: string | any | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestEnv$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestEnv$Outbound, + PersistImportedDeploymentRequestEnv +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + PersistImportedDeploymentRequestTypeEnvEnum$outboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function persistImportedDeploymentRequestEnvToJSON( + persistImportedDeploymentRequestEnv: PersistImportedDeploymentRequestEnv, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestEnv$outboundSchema.parse( + persistImportedDeploymentRequestEnv, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestKind$outboundSchema: z.ZodEnum< + typeof PersistImportedDeploymentRequestKind +> = z.enum(PersistImportedDeploymentRequestKind); + +/** @internal */ +export const PersistImportedDeploymentRequestPreparedStackPlatform$outboundSchema: + z.ZodEnum = z + .enum(PersistImportedDeploymentRequestPreparedStackPlatform); + +/** @internal */ +export const PersistImportedDeploymentRequestProvidedBy$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestProvidedBy, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestValidation$Outbound = { + format?: string | null | undefined; + max?: string | null | undefined; + maxItems?: number | null | undefined; + maxLength?: number | null | undefined; + min?: string | null | undefined; + minItems?: number | null | undefined; + minLength?: number | null | undefined; + pattern?: string | null | undefined; + values?: Array | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestValidation$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestValidation$Outbound, + PersistImportedDeploymentRequestValidation + > = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function persistImportedDeploymentRequestValidationToJSON( + persistImportedDeploymentRequestValidation: + PersistImportedDeploymentRequestValidation, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestValidation$outboundSchema.parse( + persistImportedDeploymentRequestValidation, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestValidationUnion$Outbound = + | PersistImportedDeploymentRequestValidation$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestValidationUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestValidationUnion$Outbound, + PersistImportedDeploymentRequestValidationUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestValidation$outboundSchema), + z.any(), + ]); + +export function persistImportedDeploymentRequestValidationUnionToJSON( + persistImportedDeploymentRequestValidationUnion: + PersistImportedDeploymentRequestValidationUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestValidationUnion$outboundSchema.parse( + persistImportedDeploymentRequestValidationUnion, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestInput$Outbound = { + default?: + | PersistImportedDeploymentRequestDefaultString$Outbound + | PersistImportedDeploymentRequestDefaultNumber$Outbound + | PersistImportedDeploymentRequestDefaultBoolean$Outbound + | PersistImportedDeploymentRequestDefaultStringList$Outbound + | any + | null + | undefined; + description: string; + env?: Array | undefined; + id: string; + kind: string; + label: string; + placeholder?: string | null | undefined; + platforms?: Array | null | undefined; + providedBy: Array; + required: boolean; + validation?: + | PersistImportedDeploymentRequestValidation$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestInput$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestInput$Outbound, + PersistImportedDeploymentRequestInput +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestDefaultString$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestDefaultNumber$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestDefaultBoolean$outboundSchema + ), + z.lazy(() => + PersistImportedDeploymentRequestDefaultStringList$outboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array(z.lazy(() => PersistImportedDeploymentRequestEnv$outboundSchema)) + .optional(), + id: z.string(), + kind: PersistImportedDeploymentRequestKind$outboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array( + PersistImportedDeploymentRequestPreparedStackPlatform$outboundSchema, + ), + ).optional(), + providedBy: z.array( + PersistImportedDeploymentRequestProvidedBy$outboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => PersistImportedDeploymentRequestValidation$outboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function persistImportedDeploymentRequestInputToJSON( + persistImportedDeploymentRequestInput: PersistImportedDeploymentRequestInput, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestInput$outboundSchema.parse( + persistImportedDeploymentRequestInput, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestManagementEnum$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestManagementEnum, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideAwResource$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideAwResource$Outbound, + PersistImportedDeploymentRequestOverrideAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function persistImportedDeploymentRequestOverrideAwResourceToJSON( + persistImportedDeploymentRequestOverrideAwResource: + PersistImportedDeploymentRequestOverrideAwResource, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideAwResource$outboundSchema.parse( + persistImportedDeploymentRequestOverrideAwResource, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideAwStack$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideAwStack$Outbound, + PersistImportedDeploymentRequestOverrideAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function persistImportedDeploymentRequestOverrideAwStackToJSON( + persistImportedDeploymentRequestOverrideAwStack: + PersistImportedDeploymentRequestOverrideAwStack, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideAwStack$outboundSchema.parse( + persistImportedDeploymentRequestOverrideAwStack, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideAwBinding$Outbound = { + resource?: + | PersistImportedDeploymentRequestOverrideAwResource$Outbound + | undefined; + stack?: PersistImportedDeploymentRequestOverrideAwStack$Outbound | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideAwBinding$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideAwBinding$Outbound, + PersistImportedDeploymentRequestOverrideAwBinding + > = z.object({ + resource: z.lazy(() => + PersistImportedDeploymentRequestOverrideAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestOverrideAwStack$outboundSchema + ).optional(), + }); + +export function persistImportedDeploymentRequestOverrideAwBindingToJSON( + persistImportedDeploymentRequestOverrideAwBinding: + PersistImportedDeploymentRequestOverrideAwBinding, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideAwBinding$outboundSchema.parse( + persistImportedDeploymentRequestOverrideAwBinding, + ), + ); +} + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideEffect$outboundSchema: + z.ZodEnum = z.enum( + PersistImportedDeploymentRequestOverrideEffect, + ); + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideAwGrant$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideAwGrant$Outbound, + PersistImportedDeploymentRequestOverrideAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function persistImportedDeploymentRequestOverrideAwGrantToJSON( + persistImportedDeploymentRequestOverrideAwGrant: + PersistImportedDeploymentRequestOverrideAwGrant, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideAwGrant$outboundSchema.parse( + persistImportedDeploymentRequestOverrideAwGrant, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideAw$Outbound = { + binding: PersistImportedDeploymentRequestOverrideAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: PersistImportedDeploymentRequestOverrideAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideAw$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideAw$Outbound, + PersistImportedDeploymentRequestOverrideAw + > = z.object({ + binding: z.lazy(() => + PersistImportedDeploymentRequestOverrideAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: PersistImportedDeploymentRequestOverrideEffect$outboundSchema + .optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestOverrideAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestOverrideAwToJSON( + persistImportedDeploymentRequestOverrideAw: + PersistImportedDeploymentRequestOverrideAw, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideAw$outboundSchema.parse( + persistImportedDeploymentRequestOverrideAw, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideAzureResource$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideAzureResource$Outbound, + PersistImportedDeploymentRequestOverrideAzureResource + > = z.object({ + scope: z.string(), + }); + +export function persistImportedDeploymentRequestOverrideAzureResourceToJSON( + persistImportedDeploymentRequestOverrideAzureResource: + PersistImportedDeploymentRequestOverrideAzureResource, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideAzureResource$outboundSchema.parse( + persistImportedDeploymentRequestOverrideAzureResource, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideAzureStack$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideAzureStack$Outbound, + PersistImportedDeploymentRequestOverrideAzureStack + > = z.object({ + scope: z.string(), + }); + +export function persistImportedDeploymentRequestOverrideAzureStackToJSON( + persistImportedDeploymentRequestOverrideAzureStack: + PersistImportedDeploymentRequestOverrideAzureStack, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideAzureStack$outboundSchema.parse( + persistImportedDeploymentRequestOverrideAzureStack, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideAzureBinding$Outbound = { + resource?: + | PersistImportedDeploymentRequestOverrideAzureResource$Outbound + | undefined; + stack?: + | PersistImportedDeploymentRequestOverrideAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideAzureBinding$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideAzureBinding$Outbound, + PersistImportedDeploymentRequestOverrideAzureBinding + > = z.object({ + resource: z.lazy(() => + PersistImportedDeploymentRequestOverrideAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestOverrideAzureStack$outboundSchema + ).optional(), + }); + +export function persistImportedDeploymentRequestOverrideAzureBindingToJSON( + persistImportedDeploymentRequestOverrideAzureBinding: + PersistImportedDeploymentRequestOverrideAzureBinding, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideAzureBinding$outboundSchema.parse( + persistImportedDeploymentRequestOverrideAzureBinding, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideAzureGrant$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideAzureGrant$Outbound, + PersistImportedDeploymentRequestOverrideAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function persistImportedDeploymentRequestOverrideAzureGrantToJSON( + persistImportedDeploymentRequestOverrideAzureGrant: + PersistImportedDeploymentRequestOverrideAzureGrant, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideAzureGrant$outboundSchema.parse( + persistImportedDeploymentRequestOverrideAzureGrant, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideAzure$Outbound = { + binding: PersistImportedDeploymentRequestOverrideAzureBinding$Outbound; + description?: string | null | undefined; + grant: PersistImportedDeploymentRequestOverrideAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideAzure$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideAzure$Outbound, + PersistImportedDeploymentRequestOverrideAzure + > = z.object({ + binding: z.lazy(() => + PersistImportedDeploymentRequestOverrideAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestOverrideAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestOverrideAzureToJSON( + persistImportedDeploymentRequestOverrideAzure: + PersistImportedDeploymentRequestOverrideAzure, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideAzure$outboundSchema.parse( + persistImportedDeploymentRequestOverrideAzure, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideConditionResource$Outbound = + { + expression: string; + title: string; + }; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideConditionResource$Outbound, + PersistImportedDeploymentRequestOverrideConditionResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function persistImportedDeploymentRequestOverrideConditionResourceToJSON( + persistImportedDeploymentRequestOverrideConditionResource: + PersistImportedDeploymentRequestOverrideConditionResource, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema + .parse(persistImportedDeploymentRequestOverrideConditionResource), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideResourceConditionUnion$Outbound = + | PersistImportedDeploymentRequestOverrideConditionResource$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideResourceConditionUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideResourceConditionUnion$Outbound, + PersistImportedDeploymentRequestOverrideResourceConditionUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestOverrideResourceConditionUnionToJSON( + persistImportedDeploymentRequestOverrideResourceConditionUnion: + PersistImportedDeploymentRequestOverrideResourceConditionUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideResourceConditionUnion$outboundSchema + .parse(persistImportedDeploymentRequestOverrideResourceConditionUnion), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideGcpResource$Outbound = { + condition?: + | PersistImportedDeploymentRequestOverrideConditionResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideGcpResource$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideGcpResource$Outbound, + PersistImportedDeploymentRequestOverrideGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestOverrideConditionResource$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function persistImportedDeploymentRequestOverrideGcpResourceToJSON( + persistImportedDeploymentRequestOverrideGcpResource: + PersistImportedDeploymentRequestOverrideGcpResource, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideGcpResource$outboundSchema.parse( + persistImportedDeploymentRequestOverrideGcpResource, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideConditionStack$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideConditionStack$Outbound, + PersistImportedDeploymentRequestOverrideConditionStack + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function persistImportedDeploymentRequestOverrideConditionStackToJSON( + persistImportedDeploymentRequestOverrideConditionStack: + PersistImportedDeploymentRequestOverrideConditionStack, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema.parse( + persistImportedDeploymentRequestOverrideConditionStack, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideStackConditionUnion$Outbound = + | PersistImportedDeploymentRequestOverrideConditionStack$Outbound + | any; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideStackConditionUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideStackConditionUnion$Outbound, + PersistImportedDeploymentRequestOverrideStackConditionUnion + > = z.union([ + z.lazy(() => + PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema + ), + z.any(), + ]); + +export function persistImportedDeploymentRequestOverrideStackConditionUnionToJSON( + persistImportedDeploymentRequestOverrideStackConditionUnion: + PersistImportedDeploymentRequestOverrideStackConditionUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideStackConditionUnion$outboundSchema + .parse(persistImportedDeploymentRequestOverrideStackConditionUnion), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideGcpStack$Outbound = { + condition?: + | PersistImportedDeploymentRequestOverrideConditionStack$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideGcpStack$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideGcpStack$Outbound, + PersistImportedDeploymentRequestOverrideGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + PersistImportedDeploymentRequestOverrideConditionStack$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function persistImportedDeploymentRequestOverrideGcpStackToJSON( + persistImportedDeploymentRequestOverrideGcpStack: + PersistImportedDeploymentRequestOverrideGcpStack, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideGcpStack$outboundSchema.parse( + persistImportedDeploymentRequestOverrideGcpStack, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideGcpBinding$Outbound = { + resource?: + | PersistImportedDeploymentRequestOverrideGcpResource$Outbound + | undefined; + stack?: PersistImportedDeploymentRequestOverrideGcpStack$Outbound | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideGcpBinding$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideGcpBinding$Outbound, + PersistImportedDeploymentRequestOverrideGcpBinding + > = z.object({ + resource: z.lazy(() => + PersistImportedDeploymentRequestOverrideGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + PersistImportedDeploymentRequestOverrideGcpStack$outboundSchema + ).optional(), + }); + +export function persistImportedDeploymentRequestOverrideGcpBindingToJSON( + persistImportedDeploymentRequestOverrideGcpBinding: + PersistImportedDeploymentRequestOverrideGcpBinding, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideGcpBinding$outboundSchema.parse( + persistImportedDeploymentRequestOverrideGcpBinding, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideGcpGrant$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideGcpGrant$Outbound, + PersistImportedDeploymentRequestOverrideGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function persistImportedDeploymentRequestOverrideGcpGrantToJSON( + persistImportedDeploymentRequestOverrideGcpGrant: + PersistImportedDeploymentRequestOverrideGcpGrant, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideGcpGrant$outboundSchema.parse( + persistImportedDeploymentRequestOverrideGcpGrant, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideGcp$Outbound = { + binding: PersistImportedDeploymentRequestOverrideGcpBinding$Outbound; + description?: string | null | undefined; + grant: PersistImportedDeploymentRequestOverrideGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideGcp$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideGcp$Outbound, + PersistImportedDeploymentRequestOverrideGcp + > = z.object({ + binding: z.lazy(() => + PersistImportedDeploymentRequestOverrideGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + PersistImportedDeploymentRequestOverrideGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function persistImportedDeploymentRequestOverrideGcpToJSON( + persistImportedDeploymentRequestOverrideGcp: + PersistImportedDeploymentRequestOverrideGcp, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideGcp$outboundSchema.parse( + persistImportedDeploymentRequestOverrideGcp, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverridePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverridePlatforms$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverridePlatforms$Outbound, + PersistImportedDeploymentRequestOverridePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestOverrideAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestOverrideAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + PersistImportedDeploymentRequestOverrideGcp$outboundSchema + )), + ).optional(), + }); + +export function persistImportedDeploymentRequestOverridePlatformsToJSON( + persistImportedDeploymentRequestOverridePlatforms: + PersistImportedDeploymentRequestOverridePlatforms, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverridePlatforms$outboundSchema.parse( + persistImportedDeploymentRequestOverridePlatforms, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverride$Outbound = { + description: string; + id: string; + platforms: PersistImportedDeploymentRequestOverridePlatforms$Outbound; +}; + +/** @internal */ +export const PersistImportedDeploymentRequestOverride$outboundSchema: z.ZodType< + PersistImportedDeploymentRequestOverride$Outbound, + PersistImportedDeploymentRequestOverride +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + PersistImportedDeploymentRequestOverridePlatforms$outboundSchema + ), +}); + +export function persistImportedDeploymentRequestOverrideToJSON( + persistImportedDeploymentRequestOverride: + PersistImportedDeploymentRequestOverride, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverride$outboundSchema.parse( + persistImportedDeploymentRequestOverride, + ), + ); +} + +/** @internal */ +export type PersistImportedDeploymentRequestOverrideUnion$Outbound = + | PersistImportedDeploymentRequestOverride$Outbound + | string; + +/** @internal */ +export const PersistImportedDeploymentRequestOverrideUnion$outboundSchema: + z.ZodType< + PersistImportedDeploymentRequestOverrideUnion$Outbound, + PersistImportedDeploymentRequestOverrideUnion + > = z.union([ + z.lazy(() => PersistImportedDeploymentRequestOverride$outboundSchema), + z.string(), + ]); + +export function persistImportedDeploymentRequestOverrideUnionToJSON( + persistImportedDeploymentRequestOverrideUnion: + PersistImportedDeploymentRequestOverrideUnion, +): string { + return JSON.stringify( + PersistImportedDeploymentRequestOverrideUnion$outboundSchema.parse( + persistImportedDeploymentRequestOverrideUnion, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/projectgcpoauthprovider.ts b/client-sdks/platform/typescript/src/models/projectgcpoauthprovider.ts index 7436ccb9b..e1aab59ce 100644 --- a/client-sdks/platform/typescript/src/models/projectgcpoauthprovider.ts +++ b/client-sdks/platform/typescript/src/models/projectgcpoauthprovider.ts @@ -13,7 +13,7 @@ export type ProjectGcpOAuthProviderCustom = { * Google OAuth web client ID. */ clientId: string; - hasClientSecret: boolean; + hasClientSecret: true; /** * Authorized redirect URIs that must be configured on the Google OAuth client. */ @@ -39,7 +39,7 @@ export const ProjectGcpOAuthProviderCustom$inboundSchema: z.ZodType< > = z.object({ mode: z.literal("custom"), clientId: z.string(), - hasClientSecret: z.boolean(), + hasClientSecret: z.literal(true), redirectUris: z.array(z.string()), }); diff --git a/client-sdks/platform/typescript/src/models/rejoindeploymentrequest.ts b/client-sdks/platform/typescript/src/models/rejoindeploymentrequest.ts new file mode 100644 index 000000000..088f509e9 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/rejoindeploymentrequest.ts @@ -0,0 +1,36 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +/** + * Request schema for re-acquiring a deployment-scoped sync token after local state loss. + */ +export type RejoinDeploymentRequest = { + /** + * Deployment name to rejoin. Must already exist in the caller's deployment group. + */ + name: string; +}; + +/** @internal */ +export type RejoinDeploymentRequest$Outbound = { + name: string; +}; + +/** @internal */ +export const RejoinDeploymentRequest$outboundSchema: z.ZodType< + RejoinDeploymentRequest$Outbound, + RejoinDeploymentRequest +> = z.object({ + name: z.string(), +}); + +export function rejoinDeploymentRequestToJSON( + rejoinDeploymentRequest: RejoinDeploymentRequest, +): string { + return JSON.stringify( + RejoinDeploymentRequest$outboundSchema.parse(rejoinDeploymentRequest), + ); +} diff --git a/client-sdks/platform/typescript/src/models/rejoindeploymentresponse.ts b/client-sdks/platform/typescript/src/models/rejoindeploymentresponse.ts new file mode 100644 index 000000000..ec719c233 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/rejoindeploymentresponse.ts @@ -0,0 +1,38 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type RejoinDeploymentResponse = { + /** + * Unique identifier for the deployment. + */ + deploymentId: string; + /** + * Fresh deployment-scoped sync token. The previously-issued token is NOT revoked — callers that want strict single-token semantics should rotate explicitly via the api-keys endpoints. + */ + token: string; +}; + +/** @internal */ +export const RejoinDeploymentResponse$inboundSchema: z.ZodType< + RejoinDeploymentResponse, + unknown +> = z.object({ + deploymentId: z.string(), + token: z.string(), +}); + +export function rejoinDeploymentResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => RejoinDeploymentResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'RejoinDeploymentResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/releaseinforesources.ts b/client-sdks/platform/typescript/src/models/releaseinforesources.ts new file mode 100644 index 000000000..a69c13daf --- /dev/null +++ b/client-sdks/platform/typescript/src/models/releaseinforesources.ts @@ -0,0 +1,5059 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { + collectExtraKeys as collectExtraKeys$, + safeParse, +} from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + SyncReconcileResponseBasePlatformUnion, + SyncReconcileResponseBasePlatformUnion$inboundSchema, + SyncReconcileResponseComputeBackendUnion, + SyncReconcileResponseComputeBackendUnion$inboundSchema, + SyncReconcileResponseDomainMetadataUnion, + SyncReconcileResponseDomainMetadataUnion$inboundSchema, + SyncReconcileResponseEnvironmentVariables, + SyncReconcileResponseEnvironmentVariables$inboundSchema, +} from "./syncreconcileresponsekeyprefixsecretref2.js"; +import { + SyncReconcileResponseCertificateUnion2, + SyncReconcileResponseCertificateUnion2$inboundSchema, + SyncReconcileResponseClusterUnion, + SyncReconcileResponseClusterUnion$inboundSchema, + SyncReconcileResponseComputeUnion, + SyncReconcileResponseComputeUnion$inboundSchema, + SyncReconcileResponseDeploymentModel, + SyncReconcileResponseDeploymentModel$inboundSchema, + SyncReconcileResponseDomainsUnion, + SyncReconcileResponseDomainsUnion$inboundSchema, + SyncReconcileResponseExternalBindingsUnion6, + SyncReconcileResponseExternalBindingsUnion6$inboundSchema, + SyncReconcileResponseHeartbeats, + SyncReconcileResponseHeartbeats$inboundSchema, + SyncReconcileResponseManagementConfigUnion, + SyncReconcileResponseManagementConfigUnion$inboundSchema, + SyncReconcileResponseModeCustom, + SyncReconcileResponseModeCustom$inboundSchema, + SyncReconcileResponseMonitoringUnion, + SyncReconcileResponseMonitoringUnion$inboundSchema, + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3, + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, + SyncReconcileResponseRouteGateway2, + SyncReconcileResponseRouteGateway2$inboundSchema, + SyncReconcileResponseStackSettingsExternalBindings, + SyncReconcileResponseStackSettingsExternalBindings$inboundSchema, +} from "./syncreconcileresponseproviderazureapplicationgatewayforcontainersenum3.js"; + +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3; + }; + +export const SyncReconcileResponseProviderGkeGatewayEnum3 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncReconcileResponseProviderGkeGatewayEnum3 = ClosedEnum< + typeof SyncReconcileResponseProviderGkeGatewayEnum3 +>; + +export type SyncReconcileResponseProviderGkeGateway3 = { + provider: SyncReconcileResponseProviderGkeGatewayEnum3; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncReconcileResponseProviderAwsAlbEnum3 = { + AwsAlb: "awsAlb", +} as const; +export type SyncReconcileResponseProviderAwsAlbEnum3 = ClosedEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum3 +>; + +export type SyncReconcileResponseProviderAwsAlb3 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncReconcileResponseProviderAwsAlbEnum3; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncReconcileResponseProviderUnion3 = + | SyncReconcileResponseProviderAwsAlb3 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 + | SyncReconcileResponseProviderGkeGateway3 + | any; + +/** + * Shared Ingress route profile values. + */ +export type SyncReconcileResponseRouteIngress2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | SyncReconcileResponseProviderAwsAlb3 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 + | SyncReconcileResponseProviderGkeGateway3 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type SyncReconcileResponseRouteUnion2 = + | SyncReconcileResponseRouteIngress2 + | SyncReconcileResponseRouteGateway2; + +export type SyncReconcileResponseExposureCustom = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: SyncReconcileResponseCertificateUnion2; + /** + * Hostname routed by the Kubernetes public endpoint. + */ + domain: string; + mode: SyncReconcileResponseModeCustom; + /** + * Kubernetes route API selected for public endpoints. + */ + route: + | SyncReconcileResponseRouteIngress2 + | SyncReconcileResponseRouteGateway2; +}; + +export type SyncReconcileResponseCertificateNone1 = { + mode: "none"; +}; + +export type SyncReconcileResponseCertificateManagedTLSSecret1 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type SyncReconcileResponseCertificateAwsAcmArn1 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type SyncReconcileResponseCertificateManagedAcmImport1 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncReconcileResponseCertificateTLSSecretRef1 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type SyncReconcileResponseCertificateUnion1 = + | SyncReconcileResponseCertificateTLSSecretRef1 + | SyncReconcileResponseCertificateManagedAcmImport1 + | SyncReconcileResponseCertificateAwsAcmArn1 + | SyncReconcileResponseCertificateManagedTLSSecret1 + | SyncReconcileResponseCertificateNone1; + +export const SyncReconcileResponseModeGenerated = { + Generated: "generated", +} as const; +export type SyncReconcileResponseModeGenerated = ClosedEnum< + typeof SyncReconcileResponseModeGenerated +>; + +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 = + ClosedEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 + >; + +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2; + }; + +export const SyncReconcileResponseProviderGkeGatewayEnum2 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncReconcileResponseProviderGkeGatewayEnum2 = ClosedEnum< + typeof SyncReconcileResponseProviderGkeGatewayEnum2 +>; + +export type SyncReconcileResponseProviderGkeGateway2 = { + provider: SyncReconcileResponseProviderGkeGatewayEnum2; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncReconcileResponseProviderAwsAlbEnum2 = { + AwsAlb: "awsAlb", +} as const; +export type SyncReconcileResponseProviderAwsAlbEnum2 = ClosedEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum2 +>; + +export type SyncReconcileResponseProviderAwsAlb2 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncReconcileResponseProviderAwsAlbEnum2; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncReconcileResponseProviderUnion2 = + | SyncReconcileResponseProviderAwsAlb2 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 + | SyncReconcileResponseProviderGkeGateway2 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type SyncReconcileResponseRouteGateway1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | SyncReconcileResponseProviderAwsAlb2 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 + | SyncReconcileResponseProviderGkeGateway2 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 = + ClosedEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 + >; + +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1; + }; + +export const SyncReconcileResponseProviderGkeGatewayEnum1 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncReconcileResponseProviderGkeGatewayEnum1 = ClosedEnum< + typeof SyncReconcileResponseProviderGkeGatewayEnum1 +>; + +export type SyncReconcileResponseProviderGkeGateway1 = { + provider: SyncReconcileResponseProviderGkeGatewayEnum1; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncReconcileResponseProviderAwsAlbEnum1 = { + AwsAlb: "awsAlb", +} as const; +export type SyncReconcileResponseProviderAwsAlbEnum1 = ClosedEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum1 +>; + +export type SyncReconcileResponseProviderAwsAlb1 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncReconcileResponseProviderAwsAlbEnum1; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncReconcileResponseProviderUnion1 = + | SyncReconcileResponseProviderAwsAlb1 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 + | SyncReconcileResponseProviderGkeGateway1 + | any; + +/** + * Shared Ingress route profile values. + */ +export type SyncReconcileResponseRouteIngress1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | SyncReconcileResponseProviderAwsAlb1 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 + | SyncReconcileResponseProviderGkeGateway1 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type SyncReconcileResponseRouteUnion1 = + | SyncReconcileResponseRouteIngress1 + | SyncReconcileResponseRouteGateway1; + +export type SyncReconcileResponseExposureGenerated = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | SyncReconcileResponseCertificateTLSSecretRef1 + | SyncReconcileResponseCertificateManagedAcmImport1 + | SyncReconcileResponseCertificateAwsAcmArn1 + | SyncReconcileResponseCertificateManagedTLSSecret1 + | SyncReconcileResponseCertificateNone1; + mode: SyncReconcileResponseModeGenerated; + /** + * Kubernetes route API selected for public endpoints. + */ + route: + | SyncReconcileResponseRouteIngress1 + | SyncReconcileResponseRouteGateway1; +}; + +export const SyncReconcileResponseModeDisabled = { + Disabled: "disabled", +} as const; +export type SyncReconcileResponseModeDisabled = ClosedEnum< + typeof SyncReconcileResponseModeDisabled +>; + +export type SyncReconcileResponseExposureDisabled = { + mode: SyncReconcileResponseModeDisabled; +}; + +export type SyncReconcileResponseExposureUnion = + | SyncReconcileResponseExposureCustom + | SyncReconcileResponseExposureGenerated + | SyncReconcileResponseExposureDisabled + | any; + +/** + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. + */ +export type SyncReconcileResponseKubernetes = { + cluster?: SyncReconcileResponseClusterUnion | null | undefined; + exposure?: + | SyncReconcileResponseExposureCustom + | SyncReconcileResponseExposureGenerated + | SyncReconcileResponseExposureDisabled + | any + | null + | undefined; +}; + +export type SyncReconcileResponseKubernetesUnion = + | SyncReconcileResponseKubernetes + | any; + +export const TargetTypeByoVnetAzure = { + ByoVnetAzure: "byo-vnet-azure", +} as const; +export type TargetTypeByoVnetAzure = ClosedEnum; + +export type SyncReconcileResponseNetworkByoVnetAzure = { + /** + * Name of the dedicated classic Application Gateway subnet within the VNet. + */ + applicationGatewaySubnetName?: string | null | undefined; + /** + * Name of the private subnet within the VNet + */ + privateSubnetName: string; + /** + * Name of the public subnet within the VNet + */ + publicSubnetName: string; + type: TargetTypeByoVnetAzure; + /** + * The full resource ID of the existing VNet + */ + vnetResourceId: string; +}; + +export const TargetTypeByoVpcGcp = { + ByoVpcGcp: "byo-vpc-gcp", +} as const; +export type TargetTypeByoVpcGcp = ClosedEnum; + +export type SyncReconcileResponseNetworkByoVpcGcp = { + /** + * The name of the existing VPC network + */ + networkName: string; + /** + * The region of the subnet + */ + region: string; + /** + * The name of the subnet to use + */ + subnetName: string; + type: TargetTypeByoVpcGcp; +}; + +export const TargetTypeByoVpcAws = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type TargetTypeByoVpcAws = ClosedEnum; + +export type SyncReconcileResponseNetworkByoVpcAws = { + /** + * IDs of private subnets + */ + privateSubnetIds: Array; + /** + * IDs of public subnets (required for public ingress) + */ + publicSubnetIds: Array; + /** + * Optional security group IDs to use + */ + securityGroupIds?: Array | undefined; + type: TargetTypeByoVpcAws; + /** + * The ID of the existing VPC + */ + vpcId: string; +}; + +export const TargetTypeCreate = { + Create: "create", +} as const; +export type TargetTypeCreate = ClosedEnum; + +export type SyncReconcileResponseNetworkCreate = { + /** + * Number of availability zones (default: 2). + */ + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: TargetTypeCreate; +}; + +export const TargetTypeUseDefault = { + UseDefault: "use-default", +} as const; +export type TargetTypeUseDefault = ClosedEnum; + +export type SyncReconcileResponseNetworkUseDefault = { + type: TargetTypeUseDefault; +}; + +export type SyncReconcileResponseNetworkUnion = + | SyncReconcileResponseNetworkByoVpcAws + | SyncReconcileResponseNetworkByoVpcGcp + | SyncReconcileResponseNetworkByoVnetAzure + | SyncReconcileResponseNetworkUseDefault + | SyncReconcileResponseNetworkCreate + | any; + +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export const SyncReconcileResponseTelemetry = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export type SyncReconcileResponseTelemetry = ClosedEnum< + typeof SyncReconcileResponseTelemetry +>; + +/** + * How updates are delivered to the deployment. + */ +export const SyncReconcileResponseUpdates = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How updates are delivered to the deployment. + */ +export type SyncReconcileResponseUpdates = ClosedEnum< + typeof SyncReconcileResponseUpdates +>; + +/** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ +export type SyncReconcileResponseStackSettings = { + compute?: SyncReconcileResponseComputeUnion | null | undefined; + /** + * Deployment model: how updates are delivered to the remote environment. + */ + deploymentModel?: SyncReconcileResponseDeploymentModel | undefined; + domains?: SyncReconcileResponseDomainsUnion | null | undefined; + /** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ + externalBindings?: + | SyncReconcileResponseStackSettingsExternalBindings + | null + | undefined; + /** + * How heartbeat health checks are handled. + */ + heartbeats?: SyncReconcileResponseHeartbeats | undefined; + kubernetes?: SyncReconcileResponseKubernetes | any | null | undefined; + network?: + | SyncReconcileResponseNetworkByoVpcAws + | SyncReconcileResponseNetworkByoVpcGcp + | SyncReconcileResponseNetworkByoVnetAzure + | SyncReconcileResponseNetworkUseDefault + | SyncReconcileResponseNetworkCreate + | any + | null + | undefined; + /** + * How telemetry (logs, metrics, traces) is handled. + */ + telemetry?: SyncReconcileResponseTelemetry | undefined; + /** + * How updates are delivered to the deployment. + */ + updates?: SyncReconcileResponseUpdates | undefined; +}; + +/** + * Deployment configuration + * + * @remarks + * + * Configuration for how to perform the deployment. + * Note: Credentials (ClientConfig) are passed separately to step() function. + */ +export type TargetConfig = { + /** + * Allow frozen resource changes during updates + * + * @remarks + * When true, skips the frozen resources compatibility check. + * This requires running with elevated cloud credentials. + */ + allowFrozenChanges?: boolean | undefined; + basePlatform?: SyncReconcileResponseBasePlatformUnion | null | undefined; + computeBackend?: SyncReconcileResponseComputeBackendUnion | null | undefined; + /** + * Human-readable deployment name for cloud console metadata. + * + * @remarks + * + * This is separate from the physical resource prefix in StackState. It is + * used only for display text such as IAM role descriptions, service + * account descriptions, and custom role titles. + */ + deploymentName?: string | null | undefined; + /** + * Deployment token for pull authentication with the manager's registry. + * + * @remarks + * + * Used by controllers to configure registry credentials so cloud platforms + * and K8s can pull images from the manager's `/v2/` endpoint. + */ + deploymentToken?: string | null | undefined; + domainMetadata?: SyncReconcileResponseDomainMetadataUnion | null | undefined; + /** + * Snapshot of environment variables at a point in time + */ + environmentVariables: SyncReconcileResponseEnvironmentVariables; + /** + * Map from resource ID to external binding. + * + * @remarks + * + * Validated at runtime: binding type must match resource type. + */ + externalBindings?: { + [k: string]: SyncReconcileResponseExternalBindingsUnion6; + } | undefined; + managementConfig?: + | SyncReconcileResponseManagementConfigUnion + | null + | undefined; + /** + * Manager base URL (e.g., "https://manager.alien.dev"). + * + * @remarks + * + * The manager IS the container registry — its `/v2/` endpoint serves as + * the OCI Distribution API. Controllers derive the proxy host from this + * to configure pull auth (RegistryCredentials, imagePullSecrets). + * + * When None (e.g., `alien dev`), controllers use image URIs as-is. + */ + managerUrl?: string | null | undefined; + monitoring?: SyncReconcileResponseMonitoringUnion | null | undefined; + /** + * Native image registry host+prefix for platforms that require it. + * + * @remarks + * + * Lambda (ECR) and Cloud Run (GAR) require native registry URIs. Other + * runtimes, including Azure Container Apps, pull through the manager's + * registry proxy. + * + * Derived by the manager from the artifact registry binding: + * - ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}` + * - GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}` + */ + nativeImageHost?: string | null | undefined; + /** + * Public endpoint URLs for exposed resources (optional override). + * + * @remarks + * + * Use this only when a caller already knows the public URL. Managed public + * endpoint flows should prefer `domain_metadata` plus controller-reported + * load balancer outputs so DNS, certificate renewal, and route readiness + * stay tied to the resource state. + * + * If not set, platforms determine public endpoint URLs from other sources: + * - Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS + * - Local: `http://localhost:{allocated_port}` + * - Custom or disabled exposure: no public endpoint URL unless a controller reports one + * + * Outer key: resource ID. Inner key: endpoint name. Value: public URL. + */ + publicEndpoints?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ + stackSettings?: SyncReconcileResponseStackSettings | undefined; +}; + +export const ReleaseInfoTypeStringList = { + StringList: "stringList", +} as const; +export type ReleaseInfoTypeStringList = ClosedEnum< + typeof ReleaseInfoTypeStringList +>; + +export type DefaultReleaseInfoStringList = { + type: ReleaseInfoTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const ReleaseInfoTypeBoolean = { + Boolean: "boolean", +} as const; +export type ReleaseInfoTypeBoolean = ClosedEnum; + +export type DefaultReleaseInfoBoolean = { + type: ReleaseInfoTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const ReleaseInfoTypeNumber = { + Number: "number", +} as const; +export type ReleaseInfoTypeNumber = ClosedEnum; + +export type DefaultReleaseInfoNumber = { + type: ReleaseInfoTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const ReleaseInfoTypeString = { + String: "string", +} as const; +export type ReleaseInfoTypeString = ClosedEnum; + +export type DefaultReleaseInfoString = { + type: ReleaseInfoTypeString; + /** + * String default. + */ + value: string; +}; + +export type ReleaseInfoDefaultUnion = + | DefaultReleaseInfoString + | DefaultReleaseInfoNumber + | DefaultReleaseInfoBoolean + | DefaultReleaseInfoStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const TypeReleaseInfoEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type TypeReleaseInfoEnvEnum = ClosedEnum; + +export type ReleaseInfoTypeUnion = TypeReleaseInfoEnvEnum | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type ReleaseInfoEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: TypeReleaseInfoEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const ReleaseInfoKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type ReleaseInfoKind = ClosedEnum; + +/** + * Represents the target cloud platform. + */ +export const ReleaseInfoPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type ReleaseInfoPlatform = ClosedEnum; + +/** + * Who can provide a stack input value. + */ +export const ReleaseInfoProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type ReleaseInfoProvidedBy = ClosedEnum; + +/** + * Portable stack input validation constraints. + */ +export type ValidationReleaseInfo = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type ReleaseInfoValidationUnion = ValidationReleaseInfo | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type ReleaseInfoInput = { + default?: + | DefaultReleaseInfoString + | DefaultReleaseInfoNumber + | DefaultReleaseInfoBoolean + | DefaultReleaseInfoStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: ReleaseInfoKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: Array | null | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: ValidationReleaseInfo | any | null | undefined; +}; + +export const ManagementReleaseInfoEnum = { + Auto: "auto", +} as const; +export type ManagementReleaseInfoEnum = ClosedEnum< + typeof ManagementReleaseInfoEnum +>; + +/** + * AWS-specific binding specification + */ +export type OverrideReleaseInfoAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type OverrideReleaseInfoAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type OverrideReleaseInfoAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: OverrideReleaseInfoAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: OverrideReleaseInfoAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const OverrideReleaseInfoEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type OverrideReleaseInfoEffect = ClosedEnum< + typeof OverrideReleaseInfoEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type OverrideReleaseInfoAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type OverrideReleaseInfoAw = { + /** + * Generic binding configuration for permissions + */ + binding: OverrideReleaseInfoAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: OverrideReleaseInfoEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: OverrideReleaseInfoAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type OverrideReleaseInfoAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type OverrideReleaseInfoAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type OverrideReleaseInfoAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: OverrideReleaseInfoAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: OverrideReleaseInfoAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type OverrideReleaseInfoAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type OverrideReleaseInfoAzure = { + /** + * Generic binding configuration for permissions + */ + binding: OverrideReleaseInfoAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: OverrideReleaseInfoAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type OverrideConditionReleaseInfoResource = { + expression: string; + title: string; +}; + +export type OverrideReleaseInfoResourceConditionUnion = + | OverrideConditionReleaseInfoResource + | any; + +/** + * GCP-specific binding specification + */ +export type OverrideReleaseInfoGcpResource = { + condition?: OverrideConditionReleaseInfoResource | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type OverrideConditionReleaseInfo = { + expression: string; + title: string; +}; + +export type OverrideReleaseInfoConditionUnion = + | OverrideConditionReleaseInfo + | any; + +/** + * GCP-specific binding specification + */ +export type OverrideReleaseInfoGcpStack = { + condition?: OverrideConditionReleaseInfo | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type OverrideReleaseInfoGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: OverrideReleaseInfoGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: OverrideReleaseInfoGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type OverrideReleaseInfoGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type OverrideReleaseInfoGcp = { + /** + * Generic binding configuration for permissions + */ + binding: OverrideReleaseInfoGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: OverrideReleaseInfoGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type OverrideReleaseInfoPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type OverrideReleaseInfo = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: OverrideReleaseInfoPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type ReleaseInfoOverrideUnion = OverrideReleaseInfo | string; + +export type ManagementReleaseInfo2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { [k: string]: Array }; +}; + +/** + * AWS-specific binding specification + */ +export type ExtendReleaseInfoAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type ExtendReleaseInfoAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type ExtendReleaseInfoAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: ExtendReleaseInfoAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: ExtendReleaseInfoAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const ExtendReleaseInfoEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type ExtendReleaseInfoEffect = ClosedEnum< + typeof ExtendReleaseInfoEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type ExtendReleaseInfoAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type ExtendReleaseInfoAw = { + /** + * Generic binding configuration for permissions + */ + binding: ExtendReleaseInfoAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: ExtendReleaseInfoEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ExtendReleaseInfoAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type ExtendReleaseInfoAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type ExtendReleaseInfoAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type ExtendReleaseInfoAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: ExtendReleaseInfoAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: ExtendReleaseInfoAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type ExtendReleaseInfoAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type ExtendReleaseInfoAzure = { + /** + * Generic binding configuration for permissions + */ + binding: ExtendReleaseInfoAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ExtendReleaseInfoAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type ExtendConditionReleaseInfoResource = { + expression: string; + title: string; +}; + +export type ExtendReleaseInfoResourceConditionUnion = + | ExtendConditionReleaseInfoResource + | any; + +/** + * GCP-specific binding specification + */ +export type ExtendReleaseInfoGcpResource = { + condition?: ExtendConditionReleaseInfoResource | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type ExtendConditionReleaseInfo = { + expression: string; + title: string; +}; + +export type ExtendReleaseInfoConditionUnion = ExtendConditionReleaseInfo | any; + +/** + * GCP-specific binding specification + */ +export type ExtendReleaseInfoGcpStack = { + condition?: ExtendConditionReleaseInfo | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type ExtendReleaseInfoGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: ExtendReleaseInfoGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: ExtendReleaseInfoGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type ExtendReleaseInfoGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type ExtendReleaseInfoGcp = { + /** + * Generic binding configuration for permissions + */ + binding: ExtendReleaseInfoGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ExtendReleaseInfoGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type ExtendReleaseInfoPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type ExtendReleaseInfo = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: ExtendReleaseInfoPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type ReleaseInfoExtendUnion = ExtendReleaseInfo | string; + +export type ManagementReleaseInfo1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { [k: string]: Array }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type ReleaseInfoManagementUnion = + | ManagementReleaseInfo1 + | ManagementReleaseInfo2 + | ManagementReleaseInfoEnum; + +/** + * AWS-specific binding specification + */ +export type ProfileReleaseInfoAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type ProfileReleaseInfoAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type ProfileReleaseInfoAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: ProfileReleaseInfoAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: ProfileReleaseInfoAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const ProfileReleaseInfoEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type ProfileReleaseInfoEffect = ClosedEnum< + typeof ProfileReleaseInfoEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type ProfileReleaseInfoAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type ProfileReleaseInfoAw = { + /** + * Generic binding configuration for permissions + */ + binding: ProfileReleaseInfoAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: ProfileReleaseInfoEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ProfileReleaseInfoAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type ProfileReleaseInfoAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type ProfileReleaseInfoAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type ProfileReleaseInfoAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: ProfileReleaseInfoAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: ProfileReleaseInfoAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type ProfileReleaseInfoAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type ProfileReleaseInfoAzure = { + /** + * Generic binding configuration for permissions + */ + binding: ProfileReleaseInfoAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ProfileReleaseInfoAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type ProfileConditionReleaseInfoResource = { + expression: string; + title: string; +}; + +export type ProfileReleaseInfoResourceConditionUnion = + | ProfileConditionReleaseInfoResource + | any; + +/** + * GCP-specific binding specification + */ +export type ProfileReleaseInfoGcpResource = { + condition?: ProfileConditionReleaseInfoResource | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type ProfileConditionReleaseInfo = { + expression: string; + title: string; +}; + +export type ProfileReleaseInfoConditionUnion = + | ProfileConditionReleaseInfo + | any; + +/** + * GCP-specific binding specification + */ +export type ProfileReleaseInfoGcpStack = { + condition?: ProfileConditionReleaseInfo | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type ProfileReleaseInfoGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: ProfileReleaseInfoGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: ProfileReleaseInfoGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type ProfileReleaseInfoGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type ProfileReleaseInfoGcp = { + /** + * Generic binding configuration for permissions + */ + binding: ProfileReleaseInfoGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: ProfileReleaseInfoGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type ProfileReleaseInfoPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type ProfileReleaseInfo = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: ProfileReleaseInfoPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type ReleaseInfoProfileUnion = ProfileReleaseInfo | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type ReleaseInfoPermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | ManagementReleaseInfo1 + | ManagementReleaseInfo2 + | ManagementReleaseInfoEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { [k: string]: Array }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type ReleaseInfoConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type ReleaseInfoDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const ReleaseInfoLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type ReleaseInfoLifecycle = ClosedEnum; + +export type ReleaseInfoResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: ReleaseInfoConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: ReleaseInfoLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** @internal */ +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainers3$inboundSchema: + z.ZodType< + SyncReconcileResponseProviderAzureApplicationGatewayForContainers3, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, + }); + +export function syncReconcileResponseProviderAzureApplicationGatewayForContainers3FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseProviderAzureApplicationGatewayForContainers3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderAzureApplicationGatewayForContainers3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderGkeGatewayEnum3$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseProviderGkeGatewayEnum3, + ); + +/** @internal */ +export const SyncReconcileResponseProviderGkeGateway3$inboundSchema: z.ZodType< + SyncReconcileResponseProviderGkeGateway3, + unknown +> = z.object({ + provider: SyncReconcileResponseProviderGkeGatewayEnum3$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncReconcileResponseProviderGkeGateway3FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseProviderGkeGateway3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderGkeGateway3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseProviderGkeGateway3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderAwsAlbEnum3$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum3 +> = z.enum(SyncReconcileResponseProviderAwsAlbEnum3); + +/** @internal */ +export const SyncReconcileResponseProviderAwsAlb3$inboundSchema: z.ZodType< + SyncReconcileResponseProviderAwsAlb3, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncReconcileResponseProviderAwsAlbEnum3$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncReconcileResponseProviderAwsAlb3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderAwsAlb3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderAwsAlb3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderUnion3$inboundSchema: z.ZodType< + SyncReconcileResponseProviderUnion3, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseProviderAwsAlb3$inboundSchema), + z.lazy(() => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => SyncReconcileResponseProviderGkeGateway3$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseProviderUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderUnion3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRouteIngress2$inboundSchema: z.ZodType< + SyncReconcileResponseRouteIngress2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseProviderAwsAlb3$inboundSchema), + z.lazy(() => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => SyncReconcileResponseProviderGkeGateway3$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function syncReconcileResponseRouteIngress2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRouteIngress2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRouteIngress2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRouteUnion2$inboundSchema: z.ZodType< + SyncReconcileResponseRouteUnion2, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseRouteIngress2$inboundSchema), + SyncReconcileResponseRouteGateway2$inboundSchema, +]); + +export function syncReconcileResponseRouteUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseRouteUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRouteUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseExposureCustom$inboundSchema: z.ZodType< + SyncReconcileResponseExposureCustom, + unknown +> = z.object({ + certificate: SyncReconcileResponseCertificateUnion2$inboundSchema, + domain: z.string(), + mode: SyncReconcileResponseModeCustom$inboundSchema, + route: z.union([ + z.lazy(() => SyncReconcileResponseRouteIngress2$inboundSchema), + SyncReconcileResponseRouteGateway2$inboundSchema, + ]), +}); + +export function syncReconcileResponseExposureCustomFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExposureCustom$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseExposureCustom' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateNone1$inboundSchema: z.ZodType< + SyncReconcileResponseCertificateNone1, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function syncReconcileResponseCertificateNone1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateNone1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCertificateNone1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateManagedTLSSecret1$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function syncReconcileResponseCertificateManagedTLSSecret1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCertificateManagedTLSSecret1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateManagedTLSSecret1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCertificateManagedTLSSecret1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateAwsAcmArn1$inboundSchema: + z.ZodType = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function syncReconcileResponseCertificateAwsAcmArn1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCertificateAwsAcmArn1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateAwsAcmArn1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCertificateAwsAcmArn1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateManagedAcmImport1$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function syncReconcileResponseCertificateManagedAcmImport1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCertificateManagedAcmImport1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateManagedAcmImport1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCertificateManagedAcmImport1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateTLSSecretRef1$inboundSchema: + z.ZodType = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function syncReconcileResponseCertificateTLSSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCertificateTLSSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateTLSSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCertificateTLSSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateUnion1$inboundSchema: z.ZodType< + SyncReconcileResponseCertificateUnion1, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => SyncReconcileResponseCertificateManagedAcmImport1$inboundSchema), + z.lazy(() => SyncReconcileResponseCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => SyncReconcileResponseCertificateManagedTLSSecret1$inboundSchema), + z.lazy(() => SyncReconcileResponseCertificateNone1$inboundSchema), +]); + +export function syncReconcileResponseCertificateUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCertificateUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseModeGenerated$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseModeGenerated +> = z.enum(SyncReconcileResponseModeGenerated); + +/** @internal */ +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: + z.ZodEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 + > = z.enum( + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2, + ); + +/** @internal */ +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainers2$inboundSchema: + z.ZodType< + SyncReconcileResponseProviderAzureApplicationGatewayForContainers2, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, + }); + +export function syncReconcileResponseProviderAzureApplicationGatewayForContainers2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseProviderAzureApplicationGatewayForContainers2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderAzureApplicationGatewayForContainers2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderGkeGatewayEnum2$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseProviderGkeGatewayEnum2, + ); + +/** @internal */ +export const SyncReconcileResponseProviderGkeGateway2$inboundSchema: z.ZodType< + SyncReconcileResponseProviderGkeGateway2, + unknown +> = z.object({ + provider: SyncReconcileResponseProviderGkeGatewayEnum2$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncReconcileResponseProviderGkeGateway2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseProviderGkeGateway2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderGkeGateway2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseProviderGkeGateway2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderAwsAlbEnum2$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum2 +> = z.enum(SyncReconcileResponseProviderAwsAlbEnum2); + +/** @internal */ +export const SyncReconcileResponseProviderAwsAlb2$inboundSchema: z.ZodType< + SyncReconcileResponseProviderAwsAlb2, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncReconcileResponseProviderAwsAlbEnum2$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncReconcileResponseProviderAwsAlb2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderAwsAlb2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderAwsAlb2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderUnion2$inboundSchema: z.ZodType< + SyncReconcileResponseProviderUnion2, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseProviderAwsAlb2$inboundSchema), + z.lazy(() => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => SyncReconcileResponseProviderGkeGateway2$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseProviderUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRouteGateway1$inboundSchema: z.ZodType< + SyncReconcileResponseRouteGateway1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseProviderAwsAlb2$inboundSchema), + z.lazy(() => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => SyncReconcileResponseProviderGkeGateway2$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function syncReconcileResponseRouteGateway1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRouteGateway1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRouteGateway1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: + z.ZodEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 + > = z.enum( + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1, + ); + +/** @internal */ +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainers1$inboundSchema: + z.ZodType< + SyncReconcileResponseProviderAzureApplicationGatewayForContainers1, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, + }); + +export function syncReconcileResponseProviderAzureApplicationGatewayForContainers1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseProviderAzureApplicationGatewayForContainers1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderAzureApplicationGatewayForContainers1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderGkeGatewayEnum1$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseProviderGkeGatewayEnum1, + ); + +/** @internal */ +export const SyncReconcileResponseProviderGkeGateway1$inboundSchema: z.ZodType< + SyncReconcileResponseProviderGkeGateway1, + unknown +> = z.object({ + provider: SyncReconcileResponseProviderGkeGatewayEnum1$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncReconcileResponseProviderGkeGateway1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseProviderGkeGateway1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderGkeGateway1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseProviderGkeGateway1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderAwsAlbEnum1$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum1 +> = z.enum(SyncReconcileResponseProviderAwsAlbEnum1); + +/** @internal */ +export const SyncReconcileResponseProviderAwsAlb1$inboundSchema: z.ZodType< + SyncReconcileResponseProviderAwsAlb1, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncReconcileResponseProviderAwsAlbEnum1$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncReconcileResponseProviderAwsAlb1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderAwsAlb1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderAwsAlb1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderUnion1$inboundSchema: z.ZodType< + SyncReconcileResponseProviderUnion1, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseProviderAwsAlb1$inboundSchema), + z.lazy(() => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => SyncReconcileResponseProviderGkeGateway1$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseProviderUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRouteIngress1$inboundSchema: z.ZodType< + SyncReconcileResponseRouteIngress1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseProviderAwsAlb1$inboundSchema), + z.lazy(() => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => SyncReconcileResponseProviderGkeGateway1$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function syncReconcileResponseRouteIngress1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRouteIngress1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRouteIngress1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRouteUnion1$inboundSchema: z.ZodType< + SyncReconcileResponseRouteUnion1, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseRouteIngress1$inboundSchema), + z.lazy(() => SyncReconcileResponseRouteGateway1$inboundSchema), +]); + +export function syncReconcileResponseRouteUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseRouteUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRouteUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseExposureGenerated$inboundSchema: z.ZodType< + SyncReconcileResponseExposureGenerated, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => SyncReconcileResponseCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => + SyncReconcileResponseCertificateManagedAcmImport1$inboundSchema + ), + z.lazy(() => SyncReconcileResponseCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => + SyncReconcileResponseCertificateManagedTLSSecret1$inboundSchema + ), + z.lazy(() => SyncReconcileResponseCertificateNone1$inboundSchema), + ]), + mode: SyncReconcileResponseModeGenerated$inboundSchema, + route: z.union([ + z.lazy(() => SyncReconcileResponseRouteIngress1$inboundSchema), + z.lazy(() => SyncReconcileResponseRouteGateway1$inboundSchema), + ]), +}); + +export function syncReconcileResponseExposureGeneratedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExposureGenerated$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseExposureGenerated' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseModeDisabled$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseModeDisabled +> = z.enum(SyncReconcileResponseModeDisabled); + +/** @internal */ +export const SyncReconcileResponseExposureDisabled$inboundSchema: z.ZodType< + SyncReconcileResponseExposureDisabled, + unknown +> = z.object({ + mode: SyncReconcileResponseModeDisabled$inboundSchema, +}); + +export function syncReconcileResponseExposureDisabledFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExposureDisabled$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseExposureDisabled' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseExposureUnion$inboundSchema: z.ZodType< + SyncReconcileResponseExposureUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseExposureCustom$inboundSchema), + z.lazy(() => SyncReconcileResponseExposureGenerated$inboundSchema), + z.lazy(() => SyncReconcileResponseExposureDisabled$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseExposureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExposureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseExposureUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseKubernetes$inboundSchema: z.ZodType< + SyncReconcileResponseKubernetes, + unknown +> = z.object({ + cluster: z.nullable(SyncReconcileResponseClusterUnion$inboundSchema) + .optional(), + exposure: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseExposureCustom$inboundSchema), + z.lazy(() => SyncReconcileResponseExposureGenerated$inboundSchema), + z.lazy(() => SyncReconcileResponseExposureDisabled$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileResponseKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseKubernetes' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseKubernetesUnion$inboundSchema: z.ZodType< + SyncReconcileResponseKubernetesUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseKubernetes$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseKubernetesUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeByoVnetAzure$inboundSchema: z.ZodEnum< + typeof TargetTypeByoVnetAzure +> = z.enum(TargetTypeByoVnetAzure); + +/** @internal */ +export const SyncReconcileResponseNetworkByoVnetAzure$inboundSchema: z.ZodType< + SyncReconcileResponseNetworkByoVnetAzure, + unknown +> = z.object({ + application_gateway_subnet_name: z.nullable(z.string()).optional(), + private_subnet_name: z.string(), + public_subnet_name: z.string(), + type: TargetTypeByoVnetAzure$inboundSchema, + vnet_resource_id: z.string(), +}).transform((v) => { + return remap$(v, { + "application_gateway_subnet_name": "applicationGatewaySubnetName", + "private_subnet_name": "privateSubnetName", + "public_subnet_name": "publicSubnetName", + "vnet_resource_id": "vnetResourceId", + }); +}); + +export function syncReconcileResponseNetworkByoVnetAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseNetworkByoVnetAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseNetworkByoVnetAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseNetworkByoVnetAzure' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeByoVpcGcp$inboundSchema: z.ZodEnum< + typeof TargetTypeByoVpcGcp +> = z.enum(TargetTypeByoVpcGcp); + +/** @internal */ +export const SyncReconcileResponseNetworkByoVpcGcp$inboundSchema: z.ZodType< + SyncReconcileResponseNetworkByoVpcGcp, + unknown +> = z.object({ + network_name: z.string(), + region: z.string(), + subnet_name: z.string(), + type: TargetTypeByoVpcGcp$inboundSchema, +}).transform((v) => { + return remap$(v, { + "network_name": "networkName", + "subnet_name": "subnetName", + }); +}); + +export function syncReconcileResponseNetworkByoVpcGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseNetworkByoVpcGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseNetworkByoVpcGcp' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeByoVpcAws$inboundSchema: z.ZodEnum< + typeof TargetTypeByoVpcAws +> = z.enum(TargetTypeByoVpcAws); + +/** @internal */ +export const SyncReconcileResponseNetworkByoVpcAws$inboundSchema: z.ZodType< + SyncReconcileResponseNetworkByoVpcAws, + unknown +> = z.object({ + private_subnet_ids: z.array(z.string()), + public_subnet_ids: z.array(z.string()), + security_group_ids: z.array(z.string()).optional(), + type: TargetTypeByoVpcAws$inboundSchema, + vpc_id: z.string(), +}).transform((v) => { + return remap$(v, { + "private_subnet_ids": "privateSubnetIds", + "public_subnet_ids": "publicSubnetIds", + "security_group_ids": "securityGroupIds", + "vpc_id": "vpcId", + }); +}); + +export function syncReconcileResponseNetworkByoVpcAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseNetworkByoVpcAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseNetworkByoVpcAws' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeCreate$inboundSchema: z.ZodEnum< + typeof TargetTypeCreate +> = z.enum(TargetTypeCreate); + +/** @internal */ +export const SyncReconcileResponseNetworkCreate$inboundSchema: z.ZodType< + SyncReconcileResponseNetworkCreate, + unknown +> = z.object({ + availability_zones: z.int().optional(), + cidr: z.nullable(z.string()).optional(), + type: TargetTypeCreate$inboundSchema, +}).transform((v) => { + return remap$(v, { + "availability_zones": "availabilityZones", + }); +}); + +export function syncReconcileResponseNetworkCreateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseNetworkCreate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseNetworkCreate' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeUseDefault$inboundSchema: z.ZodEnum< + typeof TargetTypeUseDefault +> = z.enum(TargetTypeUseDefault); + +/** @internal */ +export const SyncReconcileResponseNetworkUseDefault$inboundSchema: z.ZodType< + SyncReconcileResponseNetworkUseDefault, + unknown +> = z.object({ + type: TargetTypeUseDefault$inboundSchema, +}); + +export function syncReconcileResponseNetworkUseDefaultFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseNetworkUseDefault$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseNetworkUseDefault' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseNetworkUnion$inboundSchema: z.ZodType< + SyncReconcileResponseNetworkUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseNetworkByoVpcAws$inboundSchema), + z.lazy(() => SyncReconcileResponseNetworkByoVpcGcp$inboundSchema), + z.lazy(() => SyncReconcileResponseNetworkByoVnetAzure$inboundSchema), + z.lazy(() => SyncReconcileResponseNetworkUseDefault$inboundSchema), + z.lazy(() => SyncReconcileResponseNetworkCreate$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseNetworkUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseNetworkUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseNetworkUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTelemetry$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseTelemetry +> = z.enum(SyncReconcileResponseTelemetry); + +/** @internal */ +export const SyncReconcileResponseUpdates$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseUpdates +> = z.enum(SyncReconcileResponseUpdates); + +/** @internal */ +export const SyncReconcileResponseStackSettings$inboundSchema: z.ZodType< + SyncReconcileResponseStackSettings, + unknown +> = z.object({ + compute: z.nullable(SyncReconcileResponseComputeUnion$inboundSchema) + .optional(), + deploymentModel: SyncReconcileResponseDeploymentModel$inboundSchema + .optional(), + domains: z.nullable(SyncReconcileResponseDomainsUnion$inboundSchema) + .optional(), + externalBindings: z.nullable( + SyncReconcileResponseStackSettingsExternalBindings$inboundSchema, + ).optional(), + heartbeats: SyncReconcileResponseHeartbeats$inboundSchema.optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseKubernetes$inboundSchema), + z.any(), + ]), + ).optional(), + network: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseNetworkByoVpcAws$inboundSchema), + z.lazy(() => SyncReconcileResponseNetworkByoVpcGcp$inboundSchema), + z.lazy(() => SyncReconcileResponseNetworkByoVnetAzure$inboundSchema), + z.lazy(() => SyncReconcileResponseNetworkUseDefault$inboundSchema), + z.lazy(() => SyncReconcileResponseNetworkCreate$inboundSchema), + z.any(), + ]), + ).optional(), + telemetry: SyncReconcileResponseTelemetry$inboundSchema.optional(), + updates: SyncReconcileResponseUpdates$inboundSchema.optional(), +}); + +export function syncReconcileResponseStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseStackSettings' from JSON`, + ); +} + +/** @internal */ +export const TargetConfig$inboundSchema: z.ZodType = z + .object({ + allowFrozenChanges: z.boolean().optional(), + basePlatform: z.nullable( + SyncReconcileResponseBasePlatformUnion$inboundSchema, + ).optional(), + computeBackend: z.nullable( + SyncReconcileResponseComputeBackendUnion$inboundSchema, + ).optional(), + deploymentName: z.nullable(z.string()).optional(), + deploymentToken: z.nullable(z.string()).optional(), + domainMetadata: z.nullable( + SyncReconcileResponseDomainMetadataUnion$inboundSchema, + ).optional(), + environmentVariables: + SyncReconcileResponseEnvironmentVariables$inboundSchema, + externalBindings: z.record( + z.string(), + SyncReconcileResponseExternalBindingsUnion6$inboundSchema, + ).optional(), + managementConfig: z.nullable( + SyncReconcileResponseManagementConfigUnion$inboundSchema, + ).optional(), + managerUrl: z.nullable(z.string()).optional(), + monitoring: z.nullable(SyncReconcileResponseMonitoringUnion$inboundSchema) + .optional(), + nativeImageHost: z.nullable(z.string()).optional(), + publicEndpoints: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + stackSettings: z.lazy(() => + SyncReconcileResponseStackSettings$inboundSchema + ).optional(), + }); + +export function targetConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => TargetConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'TargetConfig' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoTypeStringList$inboundSchema: z.ZodEnum< + typeof ReleaseInfoTypeStringList +> = z.enum(ReleaseInfoTypeStringList); + +/** @internal */ +export const DefaultReleaseInfoStringList$inboundSchema: z.ZodType< + DefaultReleaseInfoStringList, + unknown +> = z.object({ + type: ReleaseInfoTypeStringList$inboundSchema, + value: z.array(z.string()), +}); + +export function defaultReleaseInfoStringListFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DefaultReleaseInfoStringList$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DefaultReleaseInfoStringList' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoTypeBoolean$inboundSchema: z.ZodEnum< + typeof ReleaseInfoTypeBoolean +> = z.enum(ReleaseInfoTypeBoolean); + +/** @internal */ +export const DefaultReleaseInfoBoolean$inboundSchema: z.ZodType< + DefaultReleaseInfoBoolean, + unknown +> = z.object({ + type: ReleaseInfoTypeBoolean$inboundSchema, + value: z.boolean(), +}); + +export function defaultReleaseInfoBooleanFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DefaultReleaseInfoBoolean$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DefaultReleaseInfoBoolean' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoTypeNumber$inboundSchema: z.ZodEnum< + typeof ReleaseInfoTypeNumber +> = z.enum(ReleaseInfoTypeNumber); + +/** @internal */ +export const DefaultReleaseInfoNumber$inboundSchema: z.ZodType< + DefaultReleaseInfoNumber, + unknown +> = z.object({ + type: ReleaseInfoTypeNumber$inboundSchema, + value: z.string(), +}); + +export function defaultReleaseInfoNumberFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DefaultReleaseInfoNumber$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DefaultReleaseInfoNumber' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoTypeString$inboundSchema: z.ZodEnum< + typeof ReleaseInfoTypeString +> = z.enum(ReleaseInfoTypeString); + +/** @internal */ +export const DefaultReleaseInfoString$inboundSchema: z.ZodType< + DefaultReleaseInfoString, + unknown +> = z.object({ + type: ReleaseInfoTypeString$inboundSchema, + value: z.string(), +}); + +export function defaultReleaseInfoStringFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DefaultReleaseInfoString$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DefaultReleaseInfoString' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoDefaultUnion$inboundSchema: z.ZodType< + ReleaseInfoDefaultUnion, + unknown +> = z.union([ + z.lazy(() => DefaultReleaseInfoString$inboundSchema), + z.lazy(() => DefaultReleaseInfoNumber$inboundSchema), + z.lazy(() => DefaultReleaseInfoBoolean$inboundSchema), + z.lazy(() => DefaultReleaseInfoStringList$inboundSchema), + z.any(), +]); + +export function releaseInfoDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoDefaultUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const TypeReleaseInfoEnvEnum$inboundSchema: z.ZodEnum< + typeof TypeReleaseInfoEnvEnum +> = z.enum(TypeReleaseInfoEnvEnum); + +/** @internal */ +export const ReleaseInfoTypeUnion$inboundSchema: z.ZodType< + ReleaseInfoTypeUnion, + unknown +> = z.union([TypeReleaseInfoEnvEnum$inboundSchema, z.any()]); + +export function releaseInfoTypeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoTypeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoEnv$inboundSchema: z.ZodType = + z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable(z.union([TypeReleaseInfoEnvEnum$inboundSchema, z.any()])) + .optional(), + }); + +export function releaseInfoEnvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoEnv' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoKind$inboundSchema: z.ZodEnum = + z.enum(ReleaseInfoKind); + +/** @internal */ +export const ReleaseInfoPlatform$inboundSchema: z.ZodEnum< + typeof ReleaseInfoPlatform +> = z.enum(ReleaseInfoPlatform); + +/** @internal */ +export const ReleaseInfoProvidedBy$inboundSchema: z.ZodEnum< + typeof ReleaseInfoProvidedBy +> = z.enum(ReleaseInfoProvidedBy); + +/** @internal */ +export const ValidationReleaseInfo$inboundSchema: z.ZodType< + ValidationReleaseInfo, + unknown +> = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), +}); + +export function validationReleaseInfoFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ValidationReleaseInfo$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ValidationReleaseInfo' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoValidationUnion$inboundSchema: z.ZodType< + ReleaseInfoValidationUnion, + unknown +> = z.union([z.lazy(() => ValidationReleaseInfo$inboundSchema), z.any()]); + +export function releaseInfoValidationUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoValidationUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoInput$inboundSchema: z.ZodType< + ReleaseInfoInput, + unknown +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => DefaultReleaseInfoString$inboundSchema), + z.lazy(() => DefaultReleaseInfoNumber$inboundSchema), + z.lazy(() => DefaultReleaseInfoBoolean$inboundSchema), + z.lazy(() => DefaultReleaseInfoStringList$inboundSchema), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array(z.lazy(() => ReleaseInfoEnv$inboundSchema)).optional(), + id: z.string(), + kind: ReleaseInfoKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable(z.array(ReleaseInfoPlatform$inboundSchema)).optional(), + providedBy: z.array(ReleaseInfoProvidedBy$inboundSchema), + required: z.boolean(), + validation: z.nullable( + z.union([z.lazy(() => ValidationReleaseInfo$inboundSchema), z.any()]), + ).optional(), +}); + +export function releaseInfoInputFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoInput$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoInput' from JSON`, + ); +} + +/** @internal */ +export const ManagementReleaseInfoEnum$inboundSchema: z.ZodEnum< + typeof ManagementReleaseInfoEnum +> = z.enum(ManagementReleaseInfoEnum); + +/** @internal */ +export const OverrideReleaseInfoAwResource$inboundSchema: z.ZodType< + OverrideReleaseInfoAwResource, + unknown +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function overrideReleaseInfoAwResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoAwResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoAwResource' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoAwStack$inboundSchema: z.ZodType< + OverrideReleaseInfoAwStack, + unknown +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function overrideReleaseInfoAwStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoAwStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoAwStack' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoAwBinding$inboundSchema: z.ZodType< + OverrideReleaseInfoAwBinding, + unknown +> = z.object({ + resource: z.lazy(() => OverrideReleaseInfoAwResource$inboundSchema) + .optional(), + stack: z.lazy(() => OverrideReleaseInfoAwStack$inboundSchema).optional(), +}); + +export function overrideReleaseInfoAwBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoAwBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoAwBinding' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoEffect$inboundSchema: z.ZodEnum< + typeof OverrideReleaseInfoEffect +> = z.enum(OverrideReleaseInfoEffect); + +/** @internal */ +export const OverrideReleaseInfoAwGrant$inboundSchema: z.ZodType< + OverrideReleaseInfoAwGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function overrideReleaseInfoAwGrantFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoAwGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoAwGrant' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoAw$inboundSchema: z.ZodType< + OverrideReleaseInfoAw, + unknown +> = z.object({ + binding: z.lazy(() => OverrideReleaseInfoAwBinding$inboundSchema), + description: z.nullable(z.string()).optional(), + effect: OverrideReleaseInfoEffect$inboundSchema.optional(), + grant: z.lazy(() => OverrideReleaseInfoAwGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function overrideReleaseInfoAwFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoAw' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoAzureResource$inboundSchema: z.ZodType< + OverrideReleaseInfoAzureResource, + unknown +> = z.object({ + scope: z.string(), +}); + +export function overrideReleaseInfoAzureResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoAzureResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoAzureResource' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoAzureStack$inboundSchema: z.ZodType< + OverrideReleaseInfoAzureStack, + unknown +> = z.object({ + scope: z.string(), +}); + +export function overrideReleaseInfoAzureStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoAzureStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoAzureStack' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoAzureBinding$inboundSchema: z.ZodType< + OverrideReleaseInfoAzureBinding, + unknown +> = z.object({ + resource: z.lazy(() => OverrideReleaseInfoAzureResource$inboundSchema) + .optional(), + stack: z.lazy(() => OverrideReleaseInfoAzureStack$inboundSchema).optional(), +}); + +export function overrideReleaseInfoAzureBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoAzureBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoAzureGrant$inboundSchema: z.ZodType< + OverrideReleaseInfoAzureGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function overrideReleaseInfoAzureGrantFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoAzureGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoAzure$inboundSchema: z.ZodType< + OverrideReleaseInfoAzure, + unknown +> = z.object({ + binding: z.lazy(() => OverrideReleaseInfoAzureBinding$inboundSchema), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => OverrideReleaseInfoAzureGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function overrideReleaseInfoAzureFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const OverrideConditionReleaseInfoResource$inboundSchema: z.ZodType< + OverrideConditionReleaseInfoResource, + unknown +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function overrideConditionReleaseInfoResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + OverrideConditionReleaseInfoResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideConditionReleaseInfoResource' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoResourceConditionUnion$inboundSchema: z.ZodType< + OverrideReleaseInfoResourceConditionUnion, + unknown +> = z.union([ + z.lazy(() => OverrideConditionReleaseInfoResource$inboundSchema), + z.any(), +]); + +export function overrideReleaseInfoResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + OverrideReleaseInfoResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + OverrideReleaseInfoResourceConditionUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'OverrideReleaseInfoResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoGcpResource$inboundSchema: z.ZodType< + OverrideReleaseInfoGcpResource, + unknown +> = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => OverrideConditionReleaseInfoResource$inboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), +}); + +export function overrideReleaseInfoGcpResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoGcpResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoGcpResource' from JSON`, + ); +} + +/** @internal */ +export const OverrideConditionReleaseInfo$inboundSchema: z.ZodType< + OverrideConditionReleaseInfo, + unknown +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function overrideConditionReleaseInfoFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideConditionReleaseInfo$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideConditionReleaseInfo' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoConditionUnion$inboundSchema: z.ZodType< + OverrideReleaseInfoConditionUnion, + unknown +> = z.union([ + z.lazy(() => OverrideConditionReleaseInfo$inboundSchema), + z.any(), +]); + +export function overrideReleaseInfoConditionUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoConditionUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoGcpStack$inboundSchema: z.ZodType< + OverrideReleaseInfoGcpStack, + unknown +> = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => OverrideConditionReleaseInfo$inboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), +}); + +export function overrideReleaseInfoGcpStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoGcpStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoGcpStack' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoGcpBinding$inboundSchema: z.ZodType< + OverrideReleaseInfoGcpBinding, + unknown +> = z.object({ + resource: z.lazy(() => OverrideReleaseInfoGcpResource$inboundSchema) + .optional(), + stack: z.lazy(() => OverrideReleaseInfoGcpStack$inboundSchema).optional(), +}); + +export function overrideReleaseInfoGcpBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoGcpBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoGcpGrant$inboundSchema: z.ZodType< + OverrideReleaseInfoGcpGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function overrideReleaseInfoGcpGrantFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoGcpGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoGcp$inboundSchema: z.ZodType< + OverrideReleaseInfoGcp, + unknown +> = z.object({ + binding: z.lazy(() => OverrideReleaseInfoGcpBinding$inboundSchema), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => OverrideReleaseInfoGcpGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function overrideReleaseInfoGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfoPlatforms$inboundSchema: z.ZodType< + OverrideReleaseInfoPlatforms, + unknown +> = z.object({ + aws: z.nullable(z.array(z.lazy(() => OverrideReleaseInfoAw$inboundSchema))) + .optional(), + azure: z.nullable( + z.array(z.lazy(() => OverrideReleaseInfoAzure$inboundSchema)), + ).optional(), + gcp: z.nullable(z.array(z.lazy(() => OverrideReleaseInfoGcp$inboundSchema))) + .optional(), +}); + +export function overrideReleaseInfoPlatformsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfoPlatforms$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfoPlatforms' from JSON`, + ); +} + +/** @internal */ +export const OverrideReleaseInfo$inboundSchema: z.ZodType< + OverrideReleaseInfo, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => OverrideReleaseInfoPlatforms$inboundSchema), +}); + +export function overrideReleaseInfoFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => OverrideReleaseInfo$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'OverrideReleaseInfo' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoOverrideUnion$inboundSchema: z.ZodType< + ReleaseInfoOverrideUnion, + unknown +> = z.union([z.lazy(() => OverrideReleaseInfo$inboundSchema), z.string()]); + +export function releaseInfoOverrideUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoOverrideUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoOverrideUnion' from JSON`, + ); +} + +/** @internal */ +export const ManagementReleaseInfo2$inboundSchema: z.ZodType< + ManagementReleaseInfo2, + unknown +> = z.object({ + override: z.record( + z.string(), + z.array( + z.union([z.lazy(() => OverrideReleaseInfo$inboundSchema), z.string()]), + ), + ), +}); + +export function managementReleaseInfo2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagementReleaseInfo2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagementReleaseInfo2' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoAwResource$inboundSchema: z.ZodType< + ExtendReleaseInfoAwResource, + unknown +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function extendReleaseInfoAwResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoAwResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoAwResource' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoAwStack$inboundSchema: z.ZodType< + ExtendReleaseInfoAwStack, + unknown +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function extendReleaseInfoAwStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoAwStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoAwStack' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoAwBinding$inboundSchema: z.ZodType< + ExtendReleaseInfoAwBinding, + unknown +> = z.object({ + resource: z.lazy(() => ExtendReleaseInfoAwResource$inboundSchema).optional(), + stack: z.lazy(() => ExtendReleaseInfoAwStack$inboundSchema).optional(), +}); + +export function extendReleaseInfoAwBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoAwBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoAwBinding' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoEffect$inboundSchema: z.ZodEnum< + typeof ExtendReleaseInfoEffect +> = z.enum(ExtendReleaseInfoEffect); + +/** @internal */ +export const ExtendReleaseInfoAwGrant$inboundSchema: z.ZodType< + ExtendReleaseInfoAwGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function extendReleaseInfoAwGrantFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoAwGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoAwGrant' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoAw$inboundSchema: z.ZodType< + ExtendReleaseInfoAw, + unknown +> = z.object({ + binding: z.lazy(() => ExtendReleaseInfoAwBinding$inboundSchema), + description: z.nullable(z.string()).optional(), + effect: ExtendReleaseInfoEffect$inboundSchema.optional(), + grant: z.lazy(() => ExtendReleaseInfoAwGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function extendReleaseInfoAwFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoAw' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoAzureResource$inboundSchema: z.ZodType< + ExtendReleaseInfoAzureResource, + unknown +> = z.object({ + scope: z.string(), +}); + +export function extendReleaseInfoAzureResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoAzureResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoAzureResource' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoAzureStack$inboundSchema: z.ZodType< + ExtendReleaseInfoAzureStack, + unknown +> = z.object({ + scope: z.string(), +}); + +export function extendReleaseInfoAzureStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoAzureStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoAzureStack' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoAzureBinding$inboundSchema: z.ZodType< + ExtendReleaseInfoAzureBinding, + unknown +> = z.object({ + resource: z.lazy(() => ExtendReleaseInfoAzureResource$inboundSchema) + .optional(), + stack: z.lazy(() => ExtendReleaseInfoAzureStack$inboundSchema).optional(), +}); + +export function extendReleaseInfoAzureBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoAzureBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoAzureGrant$inboundSchema: z.ZodType< + ExtendReleaseInfoAzureGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function extendReleaseInfoAzureGrantFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoAzureGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoAzure$inboundSchema: z.ZodType< + ExtendReleaseInfoAzure, + unknown +> = z.object({ + binding: z.lazy(() => ExtendReleaseInfoAzureBinding$inboundSchema), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => ExtendReleaseInfoAzureGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function extendReleaseInfoAzureFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const ExtendConditionReleaseInfoResource$inboundSchema: z.ZodType< + ExtendConditionReleaseInfoResource, + unknown +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function extendConditionReleaseInfoResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ExtendConditionReleaseInfoResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendConditionReleaseInfoResource' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoResourceConditionUnion$inboundSchema: z.ZodType< + ExtendReleaseInfoResourceConditionUnion, + unknown +> = z.union([ + z.lazy(() => ExtendConditionReleaseInfoResource$inboundSchema), + z.any(), +]); + +export function extendReleaseInfoResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + ExtendReleaseInfoResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ExtendReleaseInfoResourceConditionUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ExtendReleaseInfoResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoGcpResource$inboundSchema: z.ZodType< + ExtendReleaseInfoGcpResource, + unknown +> = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => ExtendConditionReleaseInfoResource$inboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), +}); + +export function extendReleaseInfoGcpResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoGcpResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoGcpResource' from JSON`, + ); +} + +/** @internal */ +export const ExtendConditionReleaseInfo$inboundSchema: z.ZodType< + ExtendConditionReleaseInfo, + unknown +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function extendConditionReleaseInfoFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendConditionReleaseInfo$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendConditionReleaseInfo' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoConditionUnion$inboundSchema: z.ZodType< + ExtendReleaseInfoConditionUnion, + unknown +> = z.union([z.lazy(() => ExtendConditionReleaseInfo$inboundSchema), z.any()]); + +export function extendReleaseInfoConditionUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoConditionUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoGcpStack$inboundSchema: z.ZodType< + ExtendReleaseInfoGcpStack, + unknown +> = z.object({ + condition: z.nullable( + z.union([z.lazy(() => ExtendConditionReleaseInfo$inboundSchema), z.any()]), + ).optional(), + scope: z.string(), +}); + +export function extendReleaseInfoGcpStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoGcpStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoGcpStack' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoGcpBinding$inboundSchema: z.ZodType< + ExtendReleaseInfoGcpBinding, + unknown +> = z.object({ + resource: z.lazy(() => ExtendReleaseInfoGcpResource$inboundSchema).optional(), + stack: z.lazy(() => ExtendReleaseInfoGcpStack$inboundSchema).optional(), +}); + +export function extendReleaseInfoGcpBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoGcpBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoGcpGrant$inboundSchema: z.ZodType< + ExtendReleaseInfoGcpGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function extendReleaseInfoGcpGrantFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoGcpGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoGcp$inboundSchema: z.ZodType< + ExtendReleaseInfoGcp, + unknown +> = z.object({ + binding: z.lazy(() => ExtendReleaseInfoGcpBinding$inboundSchema), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => ExtendReleaseInfoGcpGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function extendReleaseInfoGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfoPlatforms$inboundSchema: z.ZodType< + ExtendReleaseInfoPlatforms, + unknown +> = z.object({ + aws: z.nullable(z.array(z.lazy(() => ExtendReleaseInfoAw$inboundSchema))) + .optional(), + azure: z.nullable(z.array(z.lazy(() => ExtendReleaseInfoAzure$inboundSchema))) + .optional(), + gcp: z.nullable(z.array(z.lazy(() => ExtendReleaseInfoGcp$inboundSchema))) + .optional(), +}); + +export function extendReleaseInfoPlatformsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfoPlatforms$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfoPlatforms' from JSON`, + ); +} + +/** @internal */ +export const ExtendReleaseInfo$inboundSchema: z.ZodType< + ExtendReleaseInfo, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => ExtendReleaseInfoPlatforms$inboundSchema), +}); + +export function extendReleaseInfoFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ExtendReleaseInfo$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ExtendReleaseInfo' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoExtendUnion$inboundSchema: z.ZodType< + ReleaseInfoExtendUnion, + unknown +> = z.union([z.lazy(() => ExtendReleaseInfo$inboundSchema), z.string()]); + +export function releaseInfoExtendUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoExtendUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoExtendUnion' from JSON`, + ); +} + +/** @internal */ +export const ManagementReleaseInfo1$inboundSchema: z.ZodType< + ManagementReleaseInfo1, + unknown +> = z.object({ + extend: z.record( + z.string(), + z.array( + z.union([z.lazy(() => ExtendReleaseInfo$inboundSchema), z.string()]), + ), + ), +}); + +export function managementReleaseInfo1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ManagementReleaseInfo1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ManagementReleaseInfo1' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoManagementUnion$inboundSchema: z.ZodType< + ReleaseInfoManagementUnion, + unknown +> = z.union([ + z.lazy(() => ManagementReleaseInfo1$inboundSchema), + z.lazy(() => ManagementReleaseInfo2$inboundSchema), + ManagementReleaseInfoEnum$inboundSchema, +]); + +export function releaseInfoManagementUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoManagementUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoManagementUnion' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoAwResource$inboundSchema: z.ZodType< + ProfileReleaseInfoAwResource, + unknown +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function profileReleaseInfoAwResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoAwResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoAwResource' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoAwStack$inboundSchema: z.ZodType< + ProfileReleaseInfoAwStack, + unknown +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function profileReleaseInfoAwStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoAwStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoAwStack' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoAwBinding$inboundSchema: z.ZodType< + ProfileReleaseInfoAwBinding, + unknown +> = z.object({ + resource: z.lazy(() => ProfileReleaseInfoAwResource$inboundSchema).optional(), + stack: z.lazy(() => ProfileReleaseInfoAwStack$inboundSchema).optional(), +}); + +export function profileReleaseInfoAwBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoAwBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoAwBinding' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoEffect$inboundSchema: z.ZodEnum< + typeof ProfileReleaseInfoEffect +> = z.enum(ProfileReleaseInfoEffect); + +/** @internal */ +export const ProfileReleaseInfoAwGrant$inboundSchema: z.ZodType< + ProfileReleaseInfoAwGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function profileReleaseInfoAwGrantFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoAwGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoAwGrant' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoAw$inboundSchema: z.ZodType< + ProfileReleaseInfoAw, + unknown +> = z.object({ + binding: z.lazy(() => ProfileReleaseInfoAwBinding$inboundSchema), + description: z.nullable(z.string()).optional(), + effect: ProfileReleaseInfoEffect$inboundSchema.optional(), + grant: z.lazy(() => ProfileReleaseInfoAwGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function profileReleaseInfoAwFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoAw' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoAzureResource$inboundSchema: z.ZodType< + ProfileReleaseInfoAzureResource, + unknown +> = z.object({ + scope: z.string(), +}); + +export function profileReleaseInfoAzureResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoAzureResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoAzureResource' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoAzureStack$inboundSchema: z.ZodType< + ProfileReleaseInfoAzureStack, + unknown +> = z.object({ + scope: z.string(), +}); + +export function profileReleaseInfoAzureStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoAzureStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoAzureStack' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoAzureBinding$inboundSchema: z.ZodType< + ProfileReleaseInfoAzureBinding, + unknown +> = z.object({ + resource: z.lazy(() => ProfileReleaseInfoAzureResource$inboundSchema) + .optional(), + stack: z.lazy(() => ProfileReleaseInfoAzureStack$inboundSchema).optional(), +}); + +export function profileReleaseInfoAzureBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoAzureBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoAzureGrant$inboundSchema: z.ZodType< + ProfileReleaseInfoAzureGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function profileReleaseInfoAzureGrantFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoAzureGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoAzure$inboundSchema: z.ZodType< + ProfileReleaseInfoAzure, + unknown +> = z.object({ + binding: z.lazy(() => ProfileReleaseInfoAzureBinding$inboundSchema), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => ProfileReleaseInfoAzureGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function profileReleaseInfoAzureFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const ProfileConditionReleaseInfoResource$inboundSchema: z.ZodType< + ProfileConditionReleaseInfoResource, + unknown +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function profileConditionReleaseInfoResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + ProfileConditionReleaseInfoResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileConditionReleaseInfoResource' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoResourceConditionUnion$inboundSchema: z.ZodType< + ProfileReleaseInfoResourceConditionUnion, + unknown +> = z.union([ + z.lazy(() => ProfileConditionReleaseInfoResource$inboundSchema), + z.any(), +]); + +export function profileReleaseInfoResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + ProfileReleaseInfoResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + ProfileReleaseInfoResourceConditionUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'ProfileReleaseInfoResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoGcpResource$inboundSchema: z.ZodType< + ProfileReleaseInfoGcpResource, + unknown +> = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => ProfileConditionReleaseInfoResource$inboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), +}); + +export function profileReleaseInfoGcpResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoGcpResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoGcpResource' from JSON`, + ); +} + +/** @internal */ +export const ProfileConditionReleaseInfo$inboundSchema: z.ZodType< + ProfileConditionReleaseInfo, + unknown +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function profileConditionReleaseInfoFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileConditionReleaseInfo$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileConditionReleaseInfo' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoConditionUnion$inboundSchema: z.ZodType< + ProfileReleaseInfoConditionUnion, + unknown +> = z.union([z.lazy(() => ProfileConditionReleaseInfo$inboundSchema), z.any()]); + +export function profileReleaseInfoConditionUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoConditionUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoGcpStack$inboundSchema: z.ZodType< + ProfileReleaseInfoGcpStack, + unknown +> = z.object({ + condition: z.nullable( + z.union([z.lazy(() => ProfileConditionReleaseInfo$inboundSchema), z.any()]), + ).optional(), + scope: z.string(), +}); + +export function profileReleaseInfoGcpStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoGcpStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoGcpStack' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoGcpBinding$inboundSchema: z.ZodType< + ProfileReleaseInfoGcpBinding, + unknown +> = z.object({ + resource: z.lazy(() => ProfileReleaseInfoGcpResource$inboundSchema) + .optional(), + stack: z.lazy(() => ProfileReleaseInfoGcpStack$inboundSchema).optional(), +}); + +export function profileReleaseInfoGcpBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoGcpBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoGcpGrant$inboundSchema: z.ZodType< + ProfileReleaseInfoGcpGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function profileReleaseInfoGcpGrantFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoGcpGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoGcp$inboundSchema: z.ZodType< + ProfileReleaseInfoGcp, + unknown +> = z.object({ + binding: z.lazy(() => ProfileReleaseInfoGcpBinding$inboundSchema), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => ProfileReleaseInfoGcpGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function profileReleaseInfoGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfoPlatforms$inboundSchema: z.ZodType< + ProfileReleaseInfoPlatforms, + unknown +> = z.object({ + aws: z.nullable(z.array(z.lazy(() => ProfileReleaseInfoAw$inboundSchema))) + .optional(), + azure: z.nullable( + z.array(z.lazy(() => ProfileReleaseInfoAzure$inboundSchema)), + ).optional(), + gcp: z.nullable(z.array(z.lazy(() => ProfileReleaseInfoGcp$inboundSchema))) + .optional(), +}); + +export function profileReleaseInfoPlatformsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfoPlatforms$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfoPlatforms' from JSON`, + ); +} + +/** @internal */ +export const ProfileReleaseInfo$inboundSchema: z.ZodType< + ProfileReleaseInfo, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => ProfileReleaseInfoPlatforms$inboundSchema), +}); + +export function profileReleaseInfoFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ProfileReleaseInfo$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ProfileReleaseInfo' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoProfileUnion$inboundSchema: z.ZodType< + ReleaseInfoProfileUnion, + unknown +> = z.union([z.lazy(() => ProfileReleaseInfo$inboundSchema), z.string()]); + +export function releaseInfoProfileUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoProfileUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoProfileUnion' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoPermissions$inboundSchema: z.ZodType< + ReleaseInfoPermissions, + unknown +> = z.object({ + management: z.union([ + z.lazy(() => ManagementReleaseInfo1$inboundSchema), + z.lazy(() => ManagementReleaseInfo2$inboundSchema), + ManagementReleaseInfoEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([z.lazy(() => ProfileReleaseInfo$inboundSchema), z.string()]), + ), + ), + ), +}); + +export function releaseInfoPermissionsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoPermissions$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoPermissions' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoConfig$inboundSchema: z.ZodType< + ReleaseInfoConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function releaseInfoConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoConfig' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoDependency$inboundSchema: z.ZodType< + ReleaseInfoDependency, + unknown +> = z.object({ + id: z.string(), + type: z.string(), +}); + +export function releaseInfoDependencyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoDependency$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoDependency' from JSON`, + ); +} + +/** @internal */ +export const ReleaseInfoLifecycle$inboundSchema: z.ZodEnum< + typeof ReleaseInfoLifecycle +> = z.enum(ReleaseInfoLifecycle); + +/** @internal */ +export const ReleaseInfoResources$inboundSchema: z.ZodType< + ReleaseInfoResources, + unknown +> = z.object({ + config: z.lazy(() => ReleaseInfoConfig$inboundSchema), + dependencies: z.array(z.lazy(() => ReleaseInfoDependency$inboundSchema)), + lifecycle: ReleaseInfoLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), +}); + +export function releaseInfoResourcesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => ReleaseInfoResources$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'ReleaseInfoResources' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/setfirstpartydeploymentinputsrequest.ts b/client-sdks/platform/typescript/src/models/setfirstpartydeploymentinputsrequest.ts new file mode 100644 index 000000000..d9bc04182 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/setfirstpartydeploymentinputsrequest.ts @@ -0,0 +1,69 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; +import { + StackInputValueRequest, + StackInputValueRequest$Outbound, + StackInputValueRequest$outboundSchema, +} from "./stackinputvaluerequest.js"; + +/** + * Represents the target cloud platform. + */ +export const SetFirstPartyDeploymentInputsRequestPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SetFirstPartyDeploymentInputsRequestPlatform = ClosedEnum< + typeof SetFirstPartyDeploymentInputsRequestPlatform +>; + +export type SetFirstPartyDeploymentInputsRequest = { + /** + * Represents the target cloud platform. + */ + platform: SetFirstPartyDeploymentInputsRequestPlatform; + inputValues?: { [k: string]: StackInputValueRequest } | undefined; +}; + +/** @internal */ +export const SetFirstPartyDeploymentInputsRequestPlatform$outboundSchema: + z.ZodEnum = z.enum( + SetFirstPartyDeploymentInputsRequestPlatform, + ); + +/** @internal */ +export type SetFirstPartyDeploymentInputsRequest$Outbound = { + platform: string; + inputValues?: { [k: string]: StackInputValueRequest$Outbound } | undefined; +}; + +/** @internal */ +export const SetFirstPartyDeploymentInputsRequest$outboundSchema: z.ZodType< + SetFirstPartyDeploymentInputsRequest$Outbound, + SetFirstPartyDeploymentInputsRequest +> = z.object({ + platform: SetFirstPartyDeploymentInputsRequestPlatform$outboundSchema, + inputValues: z.record(z.string(), StackInputValueRequest$outboundSchema) + .optional(), +}); + +export function setFirstPartyDeploymentInputsRequestToJSON( + setFirstPartyDeploymentInputsRequest: SetFirstPartyDeploymentInputsRequest, +): string { + return JSON.stringify( + SetFirstPartyDeploymentInputsRequest$outboundSchema.parse( + setFirstPartyDeploymentInputsRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/setfirstpartydeploymentinputsresponse.ts b/client-sdks/platform/typescript/src/models/setfirstpartydeploymentinputsresponse.ts new file mode 100644 index 000000000..69d9fa083 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/setfirstpartydeploymentinputsresponse.ts @@ -0,0 +1,31 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export type SetFirstPartyDeploymentInputsResponse = { + ok: boolean; +}; + +/** @internal */ +export const SetFirstPartyDeploymentInputsResponse$inboundSchema: z.ZodType< + SetFirstPartyDeploymentInputsResponse, + unknown +> = z.object({ + ok: z.boolean(), +}); + +export function setFirstPartyDeploymentInputsResponseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SetFirstPartyDeploymentInputsResponse$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SetFirstPartyDeploymentInputsResponse' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/settargetagentversionrequest.ts b/client-sdks/platform/typescript/src/models/settargetagentversionrequest.ts new file mode 100644 index 000000000..74be90c2b --- /dev/null +++ b/client-sdks/platform/typescript/src/models/settargetagentversionrequest.ts @@ -0,0 +1,38 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; + +/** + * Set or clear the target agent version + */ +export type SetTargetAgentVersionRequest = { + /** + * Target agent version (semver). null or omitted clears the target. + */ + targetAgentVersion?: string | null | undefined; +}; + +/** @internal */ +export type SetTargetAgentVersionRequest$Outbound = { + targetAgentVersion?: string | null | undefined; +}; + +/** @internal */ +export const SetTargetAgentVersionRequest$outboundSchema: z.ZodType< + SetTargetAgentVersionRequest$Outbound, + SetTargetAgentVersionRequest +> = z.object({ + targetAgentVersion: z.nullable(z.string()).optional(), +}); + +export function setTargetAgentVersionRequestToJSON( + setTargetAgentVersionRequest: SetTargetAgentVersionRequest, +): string { + return JSON.stringify( + SetTargetAgentVersionRequest$outboundSchema.parse( + setTargetAgentVersionRequest, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/statuslifecycle18.ts b/client-sdks/platform/typescript/src/models/statuslifecycle18.ts new file mode 100644 index 000000000..74d3702d4 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/statuslifecycle18.ts @@ -0,0 +1,3846 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { ClosedEnum } from "../types/enums.js"; +import { + CollectionIssue26, + CollectionIssue26$Outbound, + CollectionIssue26$outboundSchema, +} from "./collectionissue26.js"; + +export const Health26 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health26 = ClosedEnum; + +export const StatusLifecycle26 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle26 = ClosedEnum; + +export type HeartbeatStatus26 = { + collectionIssues: Array; + health: Health26; + lifecycle: StatusLifecycle26; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal6 = { + name: string; + path?: string | null | undefined; + serviceStatus?: string | null | undefined; + status: HeartbeatStatus26; + backend: "local"; +}; + +export const Reason25 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason25 = ClosedEnum; + +export const CollectionIssueSeverity25 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity25 = ClosedEnum< + typeof CollectionIssueSeverity25 +>; + +export type CollectionIssue25 = { + message: string; + reason: Reason25; + severity: CollectionIssueSeverity25; + source: string; +}; + +export const Health25 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health25 = ClosedEnum; + +export const StatusLifecycle25 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle25 = ClosedEnum; + +export type HeartbeatStatus25 = { + collectionIssues: Array; + health: Health25; + lifecycle: StatusLifecycle25; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzureServiceBus = { + accessedAt?: string | null | undefined; + activeMessageCount?: number | null | undefined; + autoDeleteOnIdle?: string | null | undefined; + createdAt?: string | null | undefined; + deadLetterMessageCount?: number | null | undefined; + deadLetteringOnMessageExpiration?: boolean | null | undefined; + defaultMessageTimeToLive?: string | null | undefined; + duplicateDetectionHistoryTimeWindow?: string | null | undefined; + enableBatchedOperations?: boolean | null | undefined; + enableExpress?: boolean | null | undefined; + enablePartitioning?: boolean | null | undefined; + endpoint?: string | null | undefined; + forwardDeadLetteredMessagesTo?: string | null | undefined; + forwardTo?: string | null | undefined; + lockDuration?: string | null | undefined; + maxDeliveryCount?: number | null | undefined; + maxMessageSizeInKilobytes?: number | null | undefined; + maxSizeInMegabytes?: number | null | undefined; + messageCount?: number | null | undefined; + name: string; + namespaceName: string; + queueStatus?: string | null | undefined; + requiresDuplicateDetection?: boolean | null | undefined; + requiresSession?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + scheduledMessageCount?: number | null | undefined; + sizeInBytes?: number | null | undefined; + status: HeartbeatStatus25; + transferDeadLetterMessageCount?: number | null | undefined; + transferMessageCount?: number | null | undefined; + updatedAt?: string | null | undefined; + backend: "azureServiceBus"; +}; + +export const Reason24 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason24 = ClosedEnum; + +export const CollectionIssueSeverity24 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity24 = ClosedEnum< + typeof CollectionIssueSeverity24 +>; + +export type CollectionIssue24 = { + message: string; + reason: Reason24; + severity: CollectionIssueSeverity24; + source: string; +}; + +export const Health24 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health24 = ClosedEnum; + +export const StatusLifecycle24 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle24 = ClosedEnum; + +export type HeartbeatStatus24 = { + collectionIssues: Array; + health: Health24; + lifecycle: StatusLifecycle24; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcpPubSub = { + endpoint?: string | null | undefined; + kmsKeyName?: string | null | undefined; + messageStorageAllowedPersistenceRegions: Array; + messageStorageEnforceInTransit?: boolean | null | undefined; + projectId?: string | null | undefined; + schemaEncoding?: string | null | undefined; + schemaFirstRevisionId?: string | null | undefined; + schemaLastRevisionId?: string | null | undefined; + schemaName?: string | null | undefined; + status: HeartbeatStatus24; + subscriptionAckDeadlineSeconds?: number | null | undefined; + subscriptionDeadLetterMaxDeliveryAttempts?: number | null | undefined; + subscriptionDeadLetterTopic?: string | null | undefined; + subscriptionDetached?: boolean | null | undefined; + subscriptionEnableMessageOrdering?: boolean | null | undefined; + subscriptionFilter?: string | null | undefined; + subscriptionFullName?: string | null | undefined; + subscriptionLabels: { [k: string]: string }; + subscriptionMessageRetentionDuration?: string | null | undefined; + subscriptionName?: string | null | undefined; + subscriptionPushAttributes: { [k: string]: string }; + subscriptionPushConfigPresent?: boolean | null | undefined; + subscriptionPushEndpoint?: string | null | undefined; + subscriptionPushNoWrapperWriteMetadata?: boolean | null | undefined; + subscriptionPushOidcAudience?: string | null | undefined; + subscriptionPushOidcServiceAccountEmail?: string | null | undefined; + subscriptionPushPubsubWrapperWriteMetadata?: boolean | null | undefined; + subscriptionRetainAckedMessages?: boolean | null | undefined; + subscriptionState?: string | null | undefined; + topicFullName?: string | null | undefined; + topicLabels: { [k: string]: string }; + topicMessageRetentionDuration?: string | null | undefined; + topicName: string; + topicState?: string | null | undefined; + backend: "gcpPubSub"; +}; + +export const Reason23 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason23 = ClosedEnum; + +export const CollectionIssueSeverity23 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity23 = ClosedEnum< + typeof CollectionIssueSeverity23 +>; + +export type CollectionIssue23 = { + message: string; + reason: Reason23; + severity: CollectionIssueSeverity23; + source: string; +}; + +export const Health23 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health23 = ClosedEnum; + +export const StatusLifecycle23 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle23 = ClosedEnum; + +export type HeartbeatStatus23 = { + collectionIssues: Array; + health: Health23; + lifecycle: StatusLifecycle23; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAwsSqs = { + approximateCounts: boolean; + approximateDelayedMessages?: number | null | undefined; + approximateInFlightMessages?: number | null | undefined; + approximateVisibleMessages?: number | null | undefined; + contentBasedDeduplication?: boolean | null | undefined; + deduplicationScope?: string | null | undefined; + delaySeconds?: number | null | undefined; + fifoQueue?: boolean | null | undefined; + fifoThroughputLimit?: string | null | undefined; + kmsDataKeyReusePeriodSeconds?: number | null | undefined; + kmsMasterKeyId?: string | null | undefined; + maximumMessageSize?: number | null | undefined; + messageRetentionPeriodSeconds?: number | null | undefined; + name: string; + queueArn?: string | null | undefined; + queueUrl?: string | null | undefined; + receiveMessageWaitTimeSeconds?: number | null | undefined; + redriveAllowPolicy?: string | null | undefined; + redrivePolicy?: string | null | undefined; + region?: string | null | undefined; + sqsManagedSseEnabled?: boolean | null | undefined; + sseEnabled?: boolean | null | undefined; + status: HeartbeatStatus23; + visibilityTimeoutSeconds?: number | null | undefined; + backend: "awsSqs"; +}; + +export type SyncReconcileRequestDataUnion6 = + | DataAwsSqs + | DataGcpPubSub + | DataAzureServiceBus + | DataLocal6; + +export type DataQueue = { + data: DataAwsSqs | DataGcpPubSub | DataAzureServiceBus | DataLocal6; + resourceType: "queue"; +}; + +export const CpuUnit10 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit10 = ClosedEnum; + +export type Cpu10 = { + unit: CpuUnit10; + value: number; +}; + +export type CpuUnion10 = Cpu10 | any; + +export type InvolvedObject8 = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +export type InvolvedObjectUnion8 = InvolvedObject8 | any; + +export type SyncReconcileRequestSource8 = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +export type SourceUnion8 = SyncReconcileRequestSource8 | any; + +export type SyncReconcileRequestEvent11 = { + count?: number | null | undefined; + eventTime?: Date | null | undefined; + firstTimestamp?: Date | null | undefined; + involvedObject?: InvolvedObject8 | any | null | undefined; + lastTimestamp?: Date | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource8 | any | null | undefined; + type?: string | null | undefined; +}; + +export const MemoryUnit10 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit10 = ClosedEnum; + +export type Memory10 = { + unit: MemoryUnit10; + value: number; +}; + +export type MemoryUnion10 = Memory10 | any; + +export type NodeCounts = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const CpuAllocatableUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuAllocatableUnit = ClosedEnum; + +export type CpuAllocatable = { + unit: CpuAllocatableUnit; + value: number; +}; + +export type AllocatableCpuUnion = CpuAllocatable | any; + +export const MemoryAllocatableUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryAllocatableUnit = ClosedEnum; + +export type MemoryAllocatable = { + unit: MemoryAllocatableUnit; + value: number; +}; + +export type AllocatableMemoryUnion = MemoryAllocatable | any; + +export type Allocatable = { + cpu?: CpuAllocatable | any | null | undefined; + memory?: MemoryAllocatable | any | null | undefined; + pods?: number | null | undefined; +}; + +export const CpuCapacityUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuCapacityUnit = ClosedEnum; + +export type CpuCapacity = { + unit: CpuCapacityUnit; + value: number; +}; + +export type CapacityCpuUnion = CpuCapacity | any; + +export const MemoryCapacityUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryCapacityUnit = ClosedEnum; + +export type MemoryCapacity = { + unit: MemoryCapacityUnit; + value: number; +}; + +export type CapacityMemoryUnion = MemoryCapacity | any; + +export type Capacity = { + cpu?: CpuCapacity | any | null | undefined; + memory?: MemoryCapacity | any | null | undefined; + pods?: number | null | undefined; +}; + +export type NodeStatusCondition = { + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +export const UsageCpuUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UsageCpuUnit = ClosedEnum; + +export type UsageCpu = { + unit: UsageCpuUnit; + value: number; +}; + +export type UsageCpuUnion = UsageCpu | any; + +export const UsageMemoryUnit = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UsageMemoryUnit = ClosedEnum; + +export type UsageMemory = { + unit: UsageMemoryUnit; + value: number; +}; + +export type UsageMemoryUnion = UsageMemory | any; + +export type SyncReconcileRequestUsage = { + cpu?: UsageCpu | any | null | undefined; + memory?: UsageMemory | any | null | undefined; +}; + +export type Usage = SyncReconcileRequestUsage | any; + +export type NodeStatus = { + allocatable: Allocatable; + capacity: Capacity; + conditions?: Array | undefined; + containerRuntimeVersion?: string | null | undefined; + kubeletVersion?: string | null | undefined; + labels: { [k: string]: string }; + name: string; + ready: boolean; + roles: Array; + uid?: string | null | undefined; + usage?: SyncReconcileRequestUsage | any | null | undefined; +}; + +export type PodCounts = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const Reason22 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason22 = ClosedEnum; + +export const CollectionIssueSeverity22 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity22 = ClosedEnum< + typeof CollectionIssueSeverity22 +>; + +export type CollectionIssue22 = { + message: string; + reason: Reason22; + severity: CollectionIssueSeverity22; + source: string; +}; + +export const Health22 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health22 = ClosedEnum; + +export const StatusLifecycle22 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle22 = ClosedEnum; + +export type HeartbeatStatus22 = { + collectionIssues: Array; + health: Health22; + lifecycle: StatusLifecycle22; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type SyncReconcileRequestData1 = { + cpu?: Cpu10 | any | null | undefined; + events: Array; + memory?: Memory10 | any | null | undefined; + name: string; + namespace?: string | null | undefined; + nodeCounts: NodeCounts; + nodeStatuses?: Array | undefined; + podCounts: PodCounts; + region?: string | null | undefined; + status: HeartbeatStatus22; + version?: string | null | undefined; +}; + +export type DataKubernetesCluster = { + data: SyncReconcileRequestData1; + resourceType: "kubernetes-cluster"; +}; + +export type Nodes4 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export const Reason21 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason21 = ClosedEnum; + +export const CollectionIssueSeverity21 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity21 = ClosedEnum< + typeof CollectionIssueSeverity21 +>; + +export type CollectionIssue21 = { + message: string; + reason: Reason21; + severity: CollectionIssueSeverity21; + source: string; +}; + +export const Health21 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health21 = ClosedEnum; + +export const StatusLifecycle21 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle21 = ClosedEnum; + +export type HeartbeatStatus21 = { + collectionIssues: Array; + health: Health21; + lifecycle: StatusLifecycle21; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataLocal5 = { + dockerApiVersion?: string | null | undefined; + dockerArch?: string | null | undefined; + dockerAvailable: boolean; + dockerOs?: string | null | undefined; + dockerVersion?: string | null | undefined; + hostIdentifier?: string | null | undefined; + name: string; + networkAvailable: boolean; + networkName?: string | null | undefined; + nodes: Nodes4; + runningContainers?: number | null | undefined; + status: HeartbeatStatus21; + trackedContainers?: number | null | undefined; + backend: "local"; +}; + +export const Category3 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", +} as const; +export type Category3 = ClosedEnum; + +export type CapacityBlocker3 = { + category: Category3; + message: string; + observedAt: Date; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; +}; + +export type CapacityBlockerUnion3 = CapacityBlocker3 | any; + +export const UtilizationUnit3 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UtilizationUnit3 = ClosedEnum; + +export type Utilization3 = { + unit: UtilizationUnit3; + value: number; +}; + +export type UtilizationUnion3 = Utilization3 | any; + +export type Recommendation3 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization3 | any | null | undefined; +}; + +export type RecommendationUnion3 = Recommendation3 | any; + +export type CapacityGroup3 = { + capacityBlocker?: CapacityBlocker3 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation3 | any | null | undefined; +}; + +export const CpuUnit9 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit9 = ClosedEnum; + +export type Cpu9 = { + unit: CpuUnit9; + value: number; +}; + +export type CpuUnion9 = Cpu9 | any; + +export const MemoryUnit9 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit9 = ClosedEnum; + +export type Memory9 = { + unit: MemoryUnit9; + value: number; +}; + +export type MemoryUnion9 = Memory9 | any; + +export type Nodes3 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export type ProviderFleet3 = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +export const Reason20 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason20 = ClosedEnum; + +export const CollectionIssueSeverity20 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity20 = ClosedEnum< + typeof CollectionIssueSeverity20 +>; + +export type CollectionIssue20 = { + message: string; + reason: Reason20; + severity: CollectionIssueSeverity20; + source: string; +}; + +export const Health20 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health20 = ClosedEnum; + +export const StatusLifecycle20 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle20 = ClosedEnum; + +export type HeartbeatStatus20 = { + collectionIssues: Array; + health: Health20; + lifecycle: StatusLifecycle20; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataAzure2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu9 | any | null | undefined; + memory?: Memory9 | any | null | undefined; + name: string; + nodes: Nodes3; + providerFleets: Array; + region?: string | null | undefined; + status: HeartbeatStatus20; + backend: "azure"; +}; + +export const Category2 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", +} as const; +export type Category2 = ClosedEnum; + +export type CapacityBlocker2 = { + category: Category2; + message: string; + observedAt: Date; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; +}; + +export type CapacityBlockerUnion2 = CapacityBlocker2 | any; + +export const UtilizationUnit2 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UtilizationUnit2 = ClosedEnum; + +export type Utilization2 = { + unit: UtilizationUnit2; + value: number; +}; + +export type UtilizationUnion2 = Utilization2 | any; + +export type Recommendation2 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization2 | any | null | undefined; +}; + +export type RecommendationUnion2 = Recommendation2 | any; + +export type CapacityGroup2 = { + capacityBlocker?: CapacityBlocker2 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation2 | any | null | undefined; +}; + +export const CpuUnit8 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit8 = ClosedEnum; + +export type Cpu8 = { + unit: CpuUnit8; + value: number; +}; + +export type CpuUnion8 = Cpu8 | any; + +export const MemoryUnit8 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit8 = ClosedEnum; + +export type Memory8 = { + unit: MemoryUnit8; + value: number; +}; + +export type MemoryUnion8 = Memory8 | any; + +export type Nodes2 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export type ProviderFleet2 = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +export const Reason19 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason19 = ClosedEnum; + +export const CollectionIssueSeverity19 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity19 = ClosedEnum< + typeof CollectionIssueSeverity19 +>; + +export type CollectionIssue19 = { + message: string; + reason: Reason19; + severity: CollectionIssueSeverity19; + source: string; +}; + +export const Health19 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health19 = ClosedEnum; + +export const StatusLifecycle19 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle19 = ClosedEnum; + +export type HeartbeatStatus19 = { + collectionIssues: Array; + health: Health19; + lifecycle: StatusLifecycle19; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +export type DataGcp2 = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu8 | any | null | undefined; + memory?: Memory8 | any | null | undefined; + name: string; + nodes: Nodes2; + providerFleets: Array; + region?: string | null | undefined; + status: HeartbeatStatus19; + backend: "gcp"; +}; + +export const Category1 = { + Quota: "quota", + Capacity: "capacity", + Allocation: "allocation", + Other: "other", +} as const; +export type Category1 = ClosedEnum; + +export type CapacityBlocker1 = { + category: Category1; + message: string; + observedAt: Date; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; +}; + +export type CapacityBlockerUnion1 = CapacityBlocker1 | any; + +export const UtilizationUnit1 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type UtilizationUnit1 = ClosedEnum; + +export type Utilization1 = { + unit: UtilizationUnit1; + value: number; +}; + +export type UtilizationUnion1 = Utilization1 | any; + +export type Recommendation1 = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization1 | any | null | undefined; +}; + +export type RecommendationUnion1 = Recommendation1 | any; + +export type CapacityGroup1 = { + capacityBlocker?: CapacityBlocker1 | any | null | undefined; + currentMachines: number; + desiredMachines: number; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation1 | any | null | undefined; +}; + +export const CpuUnit7 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type CpuUnit7 = ClosedEnum; + +export type Cpu7 = { + unit: CpuUnit7; + value: number; +}; + +export type CpuUnion7 = Cpu7 | any; + +export const MemoryUnit7 = { + Count: "count", + Percent: "percent", + Bytes: "bytes", + Cores: "cores", + Milliseconds: "milliseconds", + RequestsPerSecond: "requests-per-second", +} as const; +export type MemoryUnit7 = ClosedEnum; + +export type Memory7 = { + unit: MemoryUnit7; + value: number; +}; + +export type MemoryUnion7 = Memory7 | any; + +export type Nodes1 = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +export type ProviderFleet1 = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +export const Reason18 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason18 = ClosedEnum; + +export const CollectionIssueSeverity18 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity18 = ClosedEnum< + typeof CollectionIssueSeverity18 +>; + +export type CollectionIssue18 = { + message: string; + reason: Reason18; + severity: CollectionIssueSeverity18; + source: string; +}; + +export const Health18 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health18 = ClosedEnum; + +export const StatusLifecycle18 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle18 = ClosedEnum; + +/** @internal */ +export const Health26$outboundSchema: z.ZodEnum = z.enum( + Health26, +); + +/** @internal */ +export const StatusLifecycle26$outboundSchema: z.ZodEnum< + typeof StatusLifecycle26 +> = z.enum(StatusLifecycle26); + +/** @internal */ +export type HeartbeatStatus26$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus26$outboundSchema: z.ZodType< + HeartbeatStatus26$Outbound, + HeartbeatStatus26 +> = z.object({ + collectionIssues: z.array(CollectionIssue26$outboundSchema), + health: Health26$outboundSchema, + lifecycle: StatusLifecycle26$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus26ToJSON( + heartbeatStatus26: HeartbeatStatus26, +): string { + return JSON.stringify( + HeartbeatStatus26$outboundSchema.parse(heartbeatStatus26), + ); +} + +/** @internal */ +export type DataLocal6$Outbound = { + name: string; + path?: string | null | undefined; + serviceStatus?: string | null | undefined; + status: HeartbeatStatus26$Outbound; + backend: "local"; +}; + +/** @internal */ +export const DataLocal6$outboundSchema: z.ZodType< + DataLocal6$Outbound, + DataLocal6 +> = z.object({ + name: z.string(), + path: z.nullable(z.string()).optional(), + serviceStatus: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus26$outboundSchema), + backend: z.literal("local"), +}); + +export function dataLocal6ToJSON(dataLocal6: DataLocal6): string { + return JSON.stringify(DataLocal6$outboundSchema.parse(dataLocal6)); +} + +/** @internal */ +export const Reason25$outboundSchema: z.ZodEnum = z.enum( + Reason25, +); + +/** @internal */ +export const CollectionIssueSeverity25$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity25 +> = z.enum(CollectionIssueSeverity25); + +/** @internal */ +export type CollectionIssue25$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue25$outboundSchema: z.ZodType< + CollectionIssue25$Outbound, + CollectionIssue25 +> = z.object({ + message: z.string(), + reason: Reason25$outboundSchema, + severity: CollectionIssueSeverity25$outboundSchema, + source: z.string(), +}); + +export function collectionIssue25ToJSON( + collectionIssue25: CollectionIssue25, +): string { + return JSON.stringify( + CollectionIssue25$outboundSchema.parse(collectionIssue25), + ); +} + +/** @internal */ +export const Health25$outboundSchema: z.ZodEnum = z.enum( + Health25, +); + +/** @internal */ +export const StatusLifecycle25$outboundSchema: z.ZodEnum< + typeof StatusLifecycle25 +> = z.enum(StatusLifecycle25); + +/** @internal */ +export type HeartbeatStatus25$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus25$outboundSchema: z.ZodType< + HeartbeatStatus25$Outbound, + HeartbeatStatus25 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue25$outboundSchema)), + health: Health25$outboundSchema, + lifecycle: StatusLifecycle25$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus25ToJSON( + heartbeatStatus25: HeartbeatStatus25, +): string { + return JSON.stringify( + HeartbeatStatus25$outboundSchema.parse(heartbeatStatus25), + ); +} + +/** @internal */ +export type DataAzureServiceBus$Outbound = { + accessedAt?: string | null | undefined; + activeMessageCount?: number | null | undefined; + autoDeleteOnIdle?: string | null | undefined; + createdAt?: string | null | undefined; + deadLetterMessageCount?: number | null | undefined; + deadLetteringOnMessageExpiration?: boolean | null | undefined; + defaultMessageTimeToLive?: string | null | undefined; + duplicateDetectionHistoryTimeWindow?: string | null | undefined; + enableBatchedOperations?: boolean | null | undefined; + enableExpress?: boolean | null | undefined; + enablePartitioning?: boolean | null | undefined; + endpoint?: string | null | undefined; + forwardDeadLetteredMessagesTo?: string | null | undefined; + forwardTo?: string | null | undefined; + lockDuration?: string | null | undefined; + maxDeliveryCount?: number | null | undefined; + maxMessageSizeInKilobytes?: number | null | undefined; + maxSizeInMegabytes?: number | null | undefined; + messageCount?: number | null | undefined; + name: string; + namespaceName: string; + queueStatus?: string | null | undefined; + requiresDuplicateDetection?: boolean | null | undefined; + requiresSession?: boolean | null | undefined; + resourceGroup?: string | null | undefined; + resourceId?: string | null | undefined; + scheduledMessageCount?: number | null | undefined; + sizeInBytes?: number | null | undefined; + status: HeartbeatStatus25$Outbound; + transferDeadLetterMessageCount?: number | null | undefined; + transferMessageCount?: number | null | undefined; + updatedAt?: string | null | undefined; + backend: "azureServiceBus"; +}; + +/** @internal */ +export const DataAzureServiceBus$outboundSchema: z.ZodType< + DataAzureServiceBus$Outbound, + DataAzureServiceBus +> = z.object({ + accessedAt: z.nullable(z.string()).optional(), + activeMessageCount: z.nullable(z.int()).optional(), + autoDeleteOnIdle: z.nullable(z.string()).optional(), + createdAt: z.nullable(z.string()).optional(), + deadLetterMessageCount: z.nullable(z.int()).optional(), + deadLetteringOnMessageExpiration: z.nullable(z.boolean()).optional(), + defaultMessageTimeToLive: z.nullable(z.string()).optional(), + duplicateDetectionHistoryTimeWindow: z.nullable(z.string()).optional(), + enableBatchedOperations: z.nullable(z.boolean()).optional(), + enableExpress: z.nullable(z.boolean()).optional(), + enablePartitioning: z.nullable(z.boolean()).optional(), + endpoint: z.nullable(z.string()).optional(), + forwardDeadLetteredMessagesTo: z.nullable(z.string()).optional(), + forwardTo: z.nullable(z.string()).optional(), + lockDuration: z.nullable(z.string()).optional(), + maxDeliveryCount: z.nullable(z.int()).optional(), + maxMessageSizeInKilobytes: z.nullable(z.int()).optional(), + maxSizeInMegabytes: z.nullable(z.int()).optional(), + messageCount: z.nullable(z.int()).optional(), + name: z.string(), + namespaceName: z.string(), + queueStatus: z.nullable(z.string()).optional(), + requiresDuplicateDetection: z.nullable(z.boolean()).optional(), + requiresSession: z.nullable(z.boolean()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + resourceId: z.nullable(z.string()).optional(), + scheduledMessageCount: z.nullable(z.int()).optional(), + sizeInBytes: z.nullable(z.int()).optional(), + status: z.lazy(() => HeartbeatStatus25$outboundSchema), + transferDeadLetterMessageCount: z.nullable(z.int()).optional(), + transferMessageCount: z.nullable(z.int()).optional(), + updatedAt: z.nullable(z.string()).optional(), + backend: z.literal("azureServiceBus"), +}); + +export function dataAzureServiceBusToJSON( + dataAzureServiceBus: DataAzureServiceBus, +): string { + return JSON.stringify( + DataAzureServiceBus$outboundSchema.parse(dataAzureServiceBus), + ); +} + +/** @internal */ +export const Reason24$outboundSchema: z.ZodEnum = z.enum( + Reason24, +); + +/** @internal */ +export const CollectionIssueSeverity24$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity24 +> = z.enum(CollectionIssueSeverity24); + +/** @internal */ +export type CollectionIssue24$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue24$outboundSchema: z.ZodType< + CollectionIssue24$Outbound, + CollectionIssue24 +> = z.object({ + message: z.string(), + reason: Reason24$outboundSchema, + severity: CollectionIssueSeverity24$outboundSchema, + source: z.string(), +}); + +export function collectionIssue24ToJSON( + collectionIssue24: CollectionIssue24, +): string { + return JSON.stringify( + CollectionIssue24$outboundSchema.parse(collectionIssue24), + ); +} + +/** @internal */ +export const Health24$outboundSchema: z.ZodEnum = z.enum( + Health24, +); + +/** @internal */ +export const StatusLifecycle24$outboundSchema: z.ZodEnum< + typeof StatusLifecycle24 +> = z.enum(StatusLifecycle24); + +/** @internal */ +export type HeartbeatStatus24$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus24$outboundSchema: z.ZodType< + HeartbeatStatus24$Outbound, + HeartbeatStatus24 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue24$outboundSchema)), + health: Health24$outboundSchema, + lifecycle: StatusLifecycle24$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus24ToJSON( + heartbeatStatus24: HeartbeatStatus24, +): string { + return JSON.stringify( + HeartbeatStatus24$outboundSchema.parse(heartbeatStatus24), + ); +} + +/** @internal */ +export type DataGcpPubSub$Outbound = { + endpoint?: string | null | undefined; + kmsKeyName?: string | null | undefined; + messageStorageAllowedPersistenceRegions: Array; + messageStorageEnforceInTransit?: boolean | null | undefined; + projectId?: string | null | undefined; + schemaEncoding?: string | null | undefined; + schemaFirstRevisionId?: string | null | undefined; + schemaLastRevisionId?: string | null | undefined; + schemaName?: string | null | undefined; + status: HeartbeatStatus24$Outbound; + subscriptionAckDeadlineSeconds?: number | null | undefined; + subscriptionDeadLetterMaxDeliveryAttempts?: number | null | undefined; + subscriptionDeadLetterTopic?: string | null | undefined; + subscriptionDetached?: boolean | null | undefined; + subscriptionEnableMessageOrdering?: boolean | null | undefined; + subscriptionFilter?: string | null | undefined; + subscriptionFullName?: string | null | undefined; + subscriptionLabels: { [k: string]: string }; + subscriptionMessageRetentionDuration?: string | null | undefined; + subscriptionName?: string | null | undefined; + subscriptionPushAttributes: { [k: string]: string }; + subscriptionPushConfigPresent?: boolean | null | undefined; + subscriptionPushEndpoint?: string | null | undefined; + subscriptionPushNoWrapperWriteMetadata?: boolean | null | undefined; + subscriptionPushOidcAudience?: string | null | undefined; + subscriptionPushOidcServiceAccountEmail?: string | null | undefined; + subscriptionPushPubsubWrapperWriteMetadata?: boolean | null | undefined; + subscriptionRetainAckedMessages?: boolean | null | undefined; + subscriptionState?: string | null | undefined; + topicFullName?: string | null | undefined; + topicLabels: { [k: string]: string }; + topicMessageRetentionDuration?: string | null | undefined; + topicName: string; + topicState?: string | null | undefined; + backend: "gcpPubSub"; +}; + +/** @internal */ +export const DataGcpPubSub$outboundSchema: z.ZodType< + DataGcpPubSub$Outbound, + DataGcpPubSub +> = z.object({ + endpoint: z.nullable(z.string()).optional(), + kmsKeyName: z.nullable(z.string()).optional(), + messageStorageAllowedPersistenceRegions: z.array(z.string()), + messageStorageEnforceInTransit: z.nullable(z.boolean()).optional(), + projectId: z.nullable(z.string()).optional(), + schemaEncoding: z.nullable(z.string()).optional(), + schemaFirstRevisionId: z.nullable(z.string()).optional(), + schemaLastRevisionId: z.nullable(z.string()).optional(), + schemaName: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus24$outboundSchema), + subscriptionAckDeadlineSeconds: z.nullable(z.int()).optional(), + subscriptionDeadLetterMaxDeliveryAttempts: z.nullable(z.int()).optional(), + subscriptionDeadLetterTopic: z.nullable(z.string()).optional(), + subscriptionDetached: z.nullable(z.boolean()).optional(), + subscriptionEnableMessageOrdering: z.nullable(z.boolean()).optional(), + subscriptionFilter: z.nullable(z.string()).optional(), + subscriptionFullName: z.nullable(z.string()).optional(), + subscriptionLabels: z.record(z.string(), z.string()), + subscriptionMessageRetentionDuration: z.nullable(z.string()).optional(), + subscriptionName: z.nullable(z.string()).optional(), + subscriptionPushAttributes: z.record(z.string(), z.string()), + subscriptionPushConfigPresent: z.nullable(z.boolean()).optional(), + subscriptionPushEndpoint: z.nullable(z.string()).optional(), + subscriptionPushNoWrapperWriteMetadata: z.nullable(z.boolean()).optional(), + subscriptionPushOidcAudience: z.nullable(z.string()).optional(), + subscriptionPushOidcServiceAccountEmail: z.nullable(z.string()).optional(), + subscriptionPushPubsubWrapperWriteMetadata: z.nullable(z.boolean()) + .optional(), + subscriptionRetainAckedMessages: z.nullable(z.boolean()).optional(), + subscriptionState: z.nullable(z.string()).optional(), + topicFullName: z.nullable(z.string()).optional(), + topicLabels: z.record(z.string(), z.string()), + topicMessageRetentionDuration: z.nullable(z.string()).optional(), + topicName: z.string(), + topicState: z.nullable(z.string()).optional(), + backend: z.literal("gcpPubSub"), +}); + +export function dataGcpPubSubToJSON(dataGcpPubSub: DataGcpPubSub): string { + return JSON.stringify(DataGcpPubSub$outboundSchema.parse(dataGcpPubSub)); +} + +/** @internal */ +export const Reason23$outboundSchema: z.ZodEnum = z.enum( + Reason23, +); + +/** @internal */ +export const CollectionIssueSeverity23$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity23 +> = z.enum(CollectionIssueSeverity23); + +/** @internal */ +export type CollectionIssue23$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue23$outboundSchema: z.ZodType< + CollectionIssue23$Outbound, + CollectionIssue23 +> = z.object({ + message: z.string(), + reason: Reason23$outboundSchema, + severity: CollectionIssueSeverity23$outboundSchema, + source: z.string(), +}); + +export function collectionIssue23ToJSON( + collectionIssue23: CollectionIssue23, +): string { + return JSON.stringify( + CollectionIssue23$outboundSchema.parse(collectionIssue23), + ); +} + +/** @internal */ +export const Health23$outboundSchema: z.ZodEnum = z.enum( + Health23, +); + +/** @internal */ +export const StatusLifecycle23$outboundSchema: z.ZodEnum< + typeof StatusLifecycle23 +> = z.enum(StatusLifecycle23); + +/** @internal */ +export type HeartbeatStatus23$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus23$outboundSchema: z.ZodType< + HeartbeatStatus23$Outbound, + HeartbeatStatus23 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue23$outboundSchema)), + health: Health23$outboundSchema, + lifecycle: StatusLifecycle23$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus23ToJSON( + heartbeatStatus23: HeartbeatStatus23, +): string { + return JSON.stringify( + HeartbeatStatus23$outboundSchema.parse(heartbeatStatus23), + ); +} + +/** @internal */ +export type DataAwsSqs$Outbound = { + approximateCounts: boolean; + approximateDelayedMessages?: number | null | undefined; + approximateInFlightMessages?: number | null | undefined; + approximateVisibleMessages?: number | null | undefined; + contentBasedDeduplication?: boolean | null | undefined; + deduplicationScope?: string | null | undefined; + delaySeconds?: number | null | undefined; + fifoQueue?: boolean | null | undefined; + fifoThroughputLimit?: string | null | undefined; + kmsDataKeyReusePeriodSeconds?: number | null | undefined; + kmsMasterKeyId?: string | null | undefined; + maximumMessageSize?: number | null | undefined; + messageRetentionPeriodSeconds?: number | null | undefined; + name: string; + queueArn?: string | null | undefined; + queueUrl?: string | null | undefined; + receiveMessageWaitTimeSeconds?: number | null | undefined; + redriveAllowPolicy?: string | null | undefined; + redrivePolicy?: string | null | undefined; + region?: string | null | undefined; + sqsManagedSseEnabled?: boolean | null | undefined; + sseEnabled?: boolean | null | undefined; + status: HeartbeatStatus23$Outbound; + visibilityTimeoutSeconds?: number | null | undefined; + backend: "awsSqs"; +}; + +/** @internal */ +export const DataAwsSqs$outboundSchema: z.ZodType< + DataAwsSqs$Outbound, + DataAwsSqs +> = z.object({ + approximateCounts: z.boolean(), + approximateDelayedMessages: z.nullable(z.int()).optional(), + approximateInFlightMessages: z.nullable(z.int()).optional(), + approximateVisibleMessages: z.nullable(z.int()).optional(), + contentBasedDeduplication: z.nullable(z.boolean()).optional(), + deduplicationScope: z.nullable(z.string()).optional(), + delaySeconds: z.nullable(z.int()).optional(), + fifoQueue: z.nullable(z.boolean()).optional(), + fifoThroughputLimit: z.nullable(z.string()).optional(), + kmsDataKeyReusePeriodSeconds: z.nullable(z.int()).optional(), + kmsMasterKeyId: z.nullable(z.string()).optional(), + maximumMessageSize: z.nullable(z.int()).optional(), + messageRetentionPeriodSeconds: z.nullable(z.int()).optional(), + name: z.string(), + queueArn: z.nullable(z.string()).optional(), + queueUrl: z.nullable(z.string()).optional(), + receiveMessageWaitTimeSeconds: z.nullable(z.int()).optional(), + redriveAllowPolicy: z.nullable(z.string()).optional(), + redrivePolicy: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + sqsManagedSseEnabled: z.nullable(z.boolean()).optional(), + sseEnabled: z.nullable(z.boolean()).optional(), + status: z.lazy(() => HeartbeatStatus23$outboundSchema), + visibilityTimeoutSeconds: z.nullable(z.int()).optional(), + backend: z.literal("awsSqs"), +}); + +export function dataAwsSqsToJSON(dataAwsSqs: DataAwsSqs): string { + return JSON.stringify(DataAwsSqs$outboundSchema.parse(dataAwsSqs)); +} + +/** @internal */ +export type SyncReconcileRequestDataUnion6$Outbound = + | DataAwsSqs$Outbound + | DataGcpPubSub$Outbound + | DataAzureServiceBus$Outbound + | DataLocal6$Outbound; + +/** @internal */ +export const SyncReconcileRequestDataUnion6$outboundSchema: z.ZodType< + SyncReconcileRequestDataUnion6$Outbound, + SyncReconcileRequestDataUnion6 +> = z.union([ + z.lazy(() => DataAwsSqs$outboundSchema), + z.lazy(() => DataGcpPubSub$outboundSchema), + z.lazy(() => DataAzureServiceBus$outboundSchema), + z.lazy(() => DataLocal6$outboundSchema), +]); + +export function syncReconcileRequestDataUnion6ToJSON( + syncReconcileRequestDataUnion6: SyncReconcileRequestDataUnion6, +): string { + return JSON.stringify( + SyncReconcileRequestDataUnion6$outboundSchema.parse( + syncReconcileRequestDataUnion6, + ), + ); +} + +/** @internal */ +export type DataQueue$Outbound = { + data: + | DataAwsSqs$Outbound + | DataGcpPubSub$Outbound + | DataAzureServiceBus$Outbound + | DataLocal6$Outbound; + resourceType: "queue"; +}; + +/** @internal */ +export const DataQueue$outboundSchema: z.ZodType< + DataQueue$Outbound, + DataQueue +> = z.object({ + data: z.union([ + z.lazy(() => DataAwsSqs$outboundSchema), + z.lazy(() => DataGcpPubSub$outboundSchema), + z.lazy(() => DataAzureServiceBus$outboundSchema), + z.lazy(() => DataLocal6$outboundSchema), + ]), + resourceType: z.literal("queue"), +}); + +export function dataQueueToJSON(dataQueue: DataQueue): string { + return JSON.stringify(DataQueue$outboundSchema.parse(dataQueue)); +} + +/** @internal */ +export const CpuUnit10$outboundSchema: z.ZodEnum = z.enum( + CpuUnit10, +); + +/** @internal */ +export type Cpu10$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Cpu10$outboundSchema: z.ZodType = z.object({ + unit: CpuUnit10$outboundSchema, + value: z.number(), +}); + +export function cpu10ToJSON(cpu10: Cpu10): string { + return JSON.stringify(Cpu10$outboundSchema.parse(cpu10)); +} + +/** @internal */ +export type CpuUnion10$Outbound = Cpu10$Outbound | any; + +/** @internal */ +export const CpuUnion10$outboundSchema: z.ZodType< + CpuUnion10$Outbound, + CpuUnion10 +> = z.union([z.lazy(() => Cpu10$outboundSchema), z.any()]); + +export function cpuUnion10ToJSON(cpuUnion10: CpuUnion10): string { + return JSON.stringify(CpuUnion10$outboundSchema.parse(cpuUnion10)); +} + +/** @internal */ +export type InvolvedObject8$Outbound = { + apiVersion?: string | null | undefined; + fieldPath?: string | null | undefined; + kind?: string | null | undefined; + name?: string | null | undefined; + namespace?: string | null | undefined; + resourceVersion?: string | null | undefined; + uid?: string | null | undefined; +}; + +/** @internal */ +export const InvolvedObject8$outboundSchema: z.ZodType< + InvolvedObject8$Outbound, + InvolvedObject8 +> = z.object({ + apiVersion: z.nullable(z.string()).optional(), + fieldPath: z.nullable(z.string()).optional(), + kind: z.nullable(z.string()).optional(), + name: z.nullable(z.string()).optional(), + namespace: z.nullable(z.string()).optional(), + resourceVersion: z.nullable(z.string()).optional(), + uid: z.nullable(z.string()).optional(), +}); + +export function involvedObject8ToJSON( + involvedObject8: InvolvedObject8, +): string { + return JSON.stringify(InvolvedObject8$outboundSchema.parse(involvedObject8)); +} + +/** @internal */ +export type InvolvedObjectUnion8$Outbound = InvolvedObject8$Outbound | any; + +/** @internal */ +export const InvolvedObjectUnion8$outboundSchema: z.ZodType< + InvolvedObjectUnion8$Outbound, + InvolvedObjectUnion8 +> = z.union([z.lazy(() => InvolvedObject8$outboundSchema), z.any()]); + +export function involvedObjectUnion8ToJSON( + involvedObjectUnion8: InvolvedObjectUnion8, +): string { + return JSON.stringify( + InvolvedObjectUnion8$outboundSchema.parse(involvedObjectUnion8), + ); +} + +/** @internal */ +export type SyncReconcileRequestSource8$Outbound = { + component?: string | null | undefined; + host?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestSource8$outboundSchema: z.ZodType< + SyncReconcileRequestSource8$Outbound, + SyncReconcileRequestSource8 +> = z.object({ + component: z.nullable(z.string()).optional(), + host: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestSource8ToJSON( + syncReconcileRequestSource8: SyncReconcileRequestSource8, +): string { + return JSON.stringify( + SyncReconcileRequestSource8$outboundSchema.parse( + syncReconcileRequestSource8, + ), + ); +} + +/** @internal */ +export type SourceUnion8$Outbound = SyncReconcileRequestSource8$Outbound | any; + +/** @internal */ +export const SourceUnion8$outboundSchema: z.ZodType< + SourceUnion8$Outbound, + SourceUnion8 +> = z.union([ + z.lazy(() => SyncReconcileRequestSource8$outboundSchema), + z.any(), +]); + +export function sourceUnion8ToJSON(sourceUnion8: SourceUnion8): string { + return JSON.stringify(SourceUnion8$outboundSchema.parse(sourceUnion8)); +} + +/** @internal */ +export type SyncReconcileRequestEvent11$Outbound = { + count?: number | null | undefined; + eventTime?: string | null | undefined; + firstTimestamp?: string | null | undefined; + involvedObject?: InvolvedObject8$Outbound | any | null | undefined; + lastTimestamp?: string | null | undefined; + message: string; + raw?: any | null | undefined; + reason: string; + source?: SyncReconcileRequestSource8$Outbound | any | null | undefined; + type?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestEvent11$outboundSchema: z.ZodType< + SyncReconcileRequestEvent11$Outbound, + SyncReconcileRequestEvent11 +> = z.object({ + count: z.nullable(z.int()).optional(), + eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), + firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + involvedObject: z.nullable( + z.union([z.lazy(() => InvolvedObject8$outboundSchema), z.any()]), + ).optional(), + lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) + .optional(), + message: z.string(), + raw: z.nullable(z.any()).optional(), + reason: z.string(), + source: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestSource8$outboundSchema), + z.any(), + ]), + ).optional(), + type: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestEvent11ToJSON( + syncReconcileRequestEvent11: SyncReconcileRequestEvent11, +): string { + return JSON.stringify( + SyncReconcileRequestEvent11$outboundSchema.parse( + syncReconcileRequestEvent11, + ), + ); +} + +/** @internal */ +export const MemoryUnit10$outboundSchema: z.ZodEnum = z + .enum(MemoryUnit10); + +/** @internal */ +export type Memory10$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Memory10$outboundSchema: z.ZodType = z + .object({ + unit: MemoryUnit10$outboundSchema, + value: z.number(), + }); + +export function memory10ToJSON(memory10: Memory10): string { + return JSON.stringify(Memory10$outboundSchema.parse(memory10)); +} + +/** @internal */ +export type MemoryUnion10$Outbound = Memory10$Outbound | any; + +/** @internal */ +export const MemoryUnion10$outboundSchema: z.ZodType< + MemoryUnion10$Outbound, + MemoryUnion10 +> = z.union([z.lazy(() => Memory10$outboundSchema), z.any()]); + +export function memoryUnion10ToJSON(memoryUnion10: MemoryUnion10): string { + return JSON.stringify(MemoryUnion10$outboundSchema.parse(memoryUnion10)); +} + +/** @internal */ +export type NodeCounts$Outbound = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +/** @internal */ +export const NodeCounts$outboundSchema: z.ZodType< + NodeCounts$Outbound, + NodeCounts +> = z.object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), +}); + +export function nodeCountsToJSON(nodeCounts: NodeCounts): string { + return JSON.stringify(NodeCounts$outboundSchema.parse(nodeCounts)); +} + +/** @internal */ +export const CpuAllocatableUnit$outboundSchema: z.ZodEnum< + typeof CpuAllocatableUnit +> = z.enum(CpuAllocatableUnit); + +/** @internal */ +export type CpuAllocatable$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const CpuAllocatable$outboundSchema: z.ZodType< + CpuAllocatable$Outbound, + CpuAllocatable +> = z.object({ + unit: CpuAllocatableUnit$outboundSchema, + value: z.number(), +}); + +export function cpuAllocatableToJSON(cpuAllocatable: CpuAllocatable): string { + return JSON.stringify(CpuAllocatable$outboundSchema.parse(cpuAllocatable)); +} + +/** @internal */ +export type AllocatableCpuUnion$Outbound = CpuAllocatable$Outbound | any; + +/** @internal */ +export const AllocatableCpuUnion$outboundSchema: z.ZodType< + AllocatableCpuUnion$Outbound, + AllocatableCpuUnion +> = z.union([z.lazy(() => CpuAllocatable$outboundSchema), z.any()]); + +export function allocatableCpuUnionToJSON( + allocatableCpuUnion: AllocatableCpuUnion, +): string { + return JSON.stringify( + AllocatableCpuUnion$outboundSchema.parse(allocatableCpuUnion), + ); +} + +/** @internal */ +export const MemoryAllocatableUnit$outboundSchema: z.ZodEnum< + typeof MemoryAllocatableUnit +> = z.enum(MemoryAllocatableUnit); + +/** @internal */ +export type MemoryAllocatable$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const MemoryAllocatable$outboundSchema: z.ZodType< + MemoryAllocatable$Outbound, + MemoryAllocatable +> = z.object({ + unit: MemoryAllocatableUnit$outboundSchema, + value: z.number(), +}); + +export function memoryAllocatableToJSON( + memoryAllocatable: MemoryAllocatable, +): string { + return JSON.stringify( + MemoryAllocatable$outboundSchema.parse(memoryAllocatable), + ); +} + +/** @internal */ +export type AllocatableMemoryUnion$Outbound = MemoryAllocatable$Outbound | any; + +/** @internal */ +export const AllocatableMemoryUnion$outboundSchema: z.ZodType< + AllocatableMemoryUnion$Outbound, + AllocatableMemoryUnion +> = z.union([z.lazy(() => MemoryAllocatable$outboundSchema), z.any()]); + +export function allocatableMemoryUnionToJSON( + allocatableMemoryUnion: AllocatableMemoryUnion, +): string { + return JSON.stringify( + AllocatableMemoryUnion$outboundSchema.parse(allocatableMemoryUnion), + ); +} + +/** @internal */ +export type Allocatable$Outbound = { + cpu?: CpuAllocatable$Outbound | any | null | undefined; + memory?: MemoryAllocatable$Outbound | any | null | undefined; + pods?: number | null | undefined; +}; + +/** @internal */ +export const Allocatable$outboundSchema: z.ZodType< + Allocatable$Outbound, + Allocatable +> = z.object({ + cpu: z.nullable( + z.union([z.lazy(() => CpuAllocatable$outboundSchema), z.any()]), + ).optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryAllocatable$outboundSchema), z.any()]), + ).optional(), + pods: z.nullable(z.int()).optional(), +}); + +export function allocatableToJSON(allocatable: Allocatable): string { + return JSON.stringify(Allocatable$outboundSchema.parse(allocatable)); +} + +/** @internal */ +export const CpuCapacityUnit$outboundSchema: z.ZodEnum = + z.enum(CpuCapacityUnit); + +/** @internal */ +export type CpuCapacity$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const CpuCapacity$outboundSchema: z.ZodType< + CpuCapacity$Outbound, + CpuCapacity +> = z.object({ + unit: CpuCapacityUnit$outboundSchema, + value: z.number(), +}); + +export function cpuCapacityToJSON(cpuCapacity: CpuCapacity): string { + return JSON.stringify(CpuCapacity$outboundSchema.parse(cpuCapacity)); +} + +/** @internal */ +export type CapacityCpuUnion$Outbound = CpuCapacity$Outbound | any; + +/** @internal */ +export const CapacityCpuUnion$outboundSchema: z.ZodType< + CapacityCpuUnion$Outbound, + CapacityCpuUnion +> = z.union([z.lazy(() => CpuCapacity$outboundSchema), z.any()]); + +export function capacityCpuUnionToJSON( + capacityCpuUnion: CapacityCpuUnion, +): string { + return JSON.stringify( + CapacityCpuUnion$outboundSchema.parse(capacityCpuUnion), + ); +} + +/** @internal */ +export const MemoryCapacityUnit$outboundSchema: z.ZodEnum< + typeof MemoryCapacityUnit +> = z.enum(MemoryCapacityUnit); + +/** @internal */ +export type MemoryCapacity$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const MemoryCapacity$outboundSchema: z.ZodType< + MemoryCapacity$Outbound, + MemoryCapacity +> = z.object({ + unit: MemoryCapacityUnit$outboundSchema, + value: z.number(), +}); + +export function memoryCapacityToJSON(memoryCapacity: MemoryCapacity): string { + return JSON.stringify(MemoryCapacity$outboundSchema.parse(memoryCapacity)); +} + +/** @internal */ +export type CapacityMemoryUnion$Outbound = MemoryCapacity$Outbound | any; + +/** @internal */ +export const CapacityMemoryUnion$outboundSchema: z.ZodType< + CapacityMemoryUnion$Outbound, + CapacityMemoryUnion +> = z.union([z.lazy(() => MemoryCapacity$outboundSchema), z.any()]); + +export function capacityMemoryUnionToJSON( + capacityMemoryUnion: CapacityMemoryUnion, +): string { + return JSON.stringify( + CapacityMemoryUnion$outboundSchema.parse(capacityMemoryUnion), + ); +} + +/** @internal */ +export type Capacity$Outbound = { + cpu?: CpuCapacity$Outbound | any | null | undefined; + memory?: MemoryCapacity$Outbound | any | null | undefined; + pods?: number | null | undefined; +}; + +/** @internal */ +export const Capacity$outboundSchema: z.ZodType = z + .object({ + cpu: z.nullable( + z.union([z.lazy(() => CpuCapacity$outboundSchema), z.any()]), + ).optional(), + memory: z.nullable( + z.union([z.lazy(() => MemoryCapacity$outboundSchema), z.any()]), + ).optional(), + pods: z.nullable(z.int()).optional(), + }); + +export function capacityToJSON(capacity: Capacity): string { + return JSON.stringify(Capacity$outboundSchema.parse(capacity)); +} + +/** @internal */ +export type NodeStatusCondition$Outbound = { + message?: string | null | undefined; + reason?: string | null | undefined; + status: string; + type: string; +}; + +/** @internal */ +export const NodeStatusCondition$outboundSchema: z.ZodType< + NodeStatusCondition$Outbound, + NodeStatusCondition +> = z.object({ + message: z.nullable(z.string()).optional(), + reason: z.nullable(z.string()).optional(), + status: z.string(), + type: z.string(), +}); + +export function nodeStatusConditionToJSON( + nodeStatusCondition: NodeStatusCondition, +): string { + return JSON.stringify( + NodeStatusCondition$outboundSchema.parse(nodeStatusCondition), + ); +} + +/** @internal */ +export const UsageCpuUnit$outboundSchema: z.ZodEnum = z + .enum(UsageCpuUnit); + +/** @internal */ +export type UsageCpu$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const UsageCpu$outboundSchema: z.ZodType = z + .object({ + unit: UsageCpuUnit$outboundSchema, + value: z.number(), + }); + +export function usageCpuToJSON(usageCpu: UsageCpu): string { + return JSON.stringify(UsageCpu$outboundSchema.parse(usageCpu)); +} + +/** @internal */ +export type UsageCpuUnion$Outbound = UsageCpu$Outbound | any; + +/** @internal */ +export const UsageCpuUnion$outboundSchema: z.ZodType< + UsageCpuUnion$Outbound, + UsageCpuUnion +> = z.union([z.lazy(() => UsageCpu$outboundSchema), z.any()]); + +export function usageCpuUnionToJSON(usageCpuUnion: UsageCpuUnion): string { + return JSON.stringify(UsageCpuUnion$outboundSchema.parse(usageCpuUnion)); +} + +/** @internal */ +export const UsageMemoryUnit$outboundSchema: z.ZodEnum = + z.enum(UsageMemoryUnit); + +/** @internal */ +export type UsageMemory$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const UsageMemory$outboundSchema: z.ZodType< + UsageMemory$Outbound, + UsageMemory +> = z.object({ + unit: UsageMemoryUnit$outboundSchema, + value: z.number(), +}); + +export function usageMemoryToJSON(usageMemory: UsageMemory): string { + return JSON.stringify(UsageMemory$outboundSchema.parse(usageMemory)); +} + +/** @internal */ +export type UsageMemoryUnion$Outbound = UsageMemory$Outbound | any; + +/** @internal */ +export const UsageMemoryUnion$outboundSchema: z.ZodType< + UsageMemoryUnion$Outbound, + UsageMemoryUnion +> = z.union([z.lazy(() => UsageMemory$outboundSchema), z.any()]); + +export function usageMemoryUnionToJSON( + usageMemoryUnion: UsageMemoryUnion, +): string { + return JSON.stringify( + UsageMemoryUnion$outboundSchema.parse(usageMemoryUnion), + ); +} + +/** @internal */ +export type SyncReconcileRequestUsage$Outbound = { + cpu?: UsageCpu$Outbound | any | null | undefined; + memory?: UsageMemory$Outbound | any | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestUsage$outboundSchema: z.ZodType< + SyncReconcileRequestUsage$Outbound, + SyncReconcileRequestUsage +> = z.object({ + cpu: z.nullable(z.union([z.lazy(() => UsageCpu$outboundSchema), z.any()])) + .optional(), + memory: z.nullable( + z.union([z.lazy(() => UsageMemory$outboundSchema), z.any()]), + ).optional(), +}); + +export function syncReconcileRequestUsageToJSON( + syncReconcileRequestUsage: SyncReconcileRequestUsage, +): string { + return JSON.stringify( + SyncReconcileRequestUsage$outboundSchema.parse(syncReconcileRequestUsage), + ); +} + +/** @internal */ +export type Usage$Outbound = SyncReconcileRequestUsage$Outbound | any; + +/** @internal */ +export const Usage$outboundSchema: z.ZodType = z.union([ + z.lazy(() => SyncReconcileRequestUsage$outboundSchema), + z.any(), +]); + +export function usageToJSON(usage: Usage): string { + return JSON.stringify(Usage$outboundSchema.parse(usage)); +} + +/** @internal */ +export type NodeStatus$Outbound = { + allocatable: Allocatable$Outbound; + capacity: Capacity$Outbound; + conditions?: Array | undefined; + containerRuntimeVersion?: string | null | undefined; + kubeletVersion?: string | null | undefined; + labels: { [k: string]: string }; + name: string; + ready: boolean; + roles: Array; + uid?: string | null | undefined; + usage?: SyncReconcileRequestUsage$Outbound | any | null | undefined; +}; + +/** @internal */ +export const NodeStatus$outboundSchema: z.ZodType< + NodeStatus$Outbound, + NodeStatus +> = z.object({ + allocatable: z.lazy(() => Allocatable$outboundSchema), + capacity: z.lazy(() => Capacity$outboundSchema), + conditions: z.array(z.lazy(() => NodeStatusCondition$outboundSchema)) + .optional(), + containerRuntimeVersion: z.nullable(z.string()).optional(), + kubeletVersion: z.nullable(z.string()).optional(), + labels: z.record(z.string(), z.string()), + name: z.string(), + ready: z.boolean(), + roles: z.array(z.string()), + uid: z.nullable(z.string()).optional(), + usage: z.nullable( + z.union([z.lazy(() => SyncReconcileRequestUsage$outboundSchema), z.any()]), + ).optional(), +}); + +export function nodeStatusToJSON(nodeStatus: NodeStatus): string { + return JSON.stringify(NodeStatus$outboundSchema.parse(nodeStatus)); +} + +/** @internal */ +export type PodCounts$Outbound = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +/** @internal */ +export const PodCounts$outboundSchema: z.ZodType< + PodCounts$Outbound, + PodCounts +> = z.object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), +}); + +export function podCountsToJSON(podCounts: PodCounts): string { + return JSON.stringify(PodCounts$outboundSchema.parse(podCounts)); +} + +/** @internal */ +export const Reason22$outboundSchema: z.ZodEnum = z.enum( + Reason22, +); + +/** @internal */ +export const CollectionIssueSeverity22$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity22 +> = z.enum(CollectionIssueSeverity22); + +/** @internal */ +export type CollectionIssue22$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue22$outboundSchema: z.ZodType< + CollectionIssue22$Outbound, + CollectionIssue22 +> = z.object({ + message: z.string(), + reason: Reason22$outboundSchema, + severity: CollectionIssueSeverity22$outboundSchema, + source: z.string(), +}); + +export function collectionIssue22ToJSON( + collectionIssue22: CollectionIssue22, +): string { + return JSON.stringify( + CollectionIssue22$outboundSchema.parse(collectionIssue22), + ); +} + +/** @internal */ +export const Health22$outboundSchema: z.ZodEnum = z.enum( + Health22, +); + +/** @internal */ +export const StatusLifecycle22$outboundSchema: z.ZodEnum< + typeof StatusLifecycle22 +> = z.enum(StatusLifecycle22); + +/** @internal */ +export type HeartbeatStatus22$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus22$outboundSchema: z.ZodType< + HeartbeatStatus22$Outbound, + HeartbeatStatus22 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue22$outboundSchema)), + health: Health22$outboundSchema, + lifecycle: StatusLifecycle22$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus22ToJSON( + heartbeatStatus22: HeartbeatStatus22, +): string { + return JSON.stringify( + HeartbeatStatus22$outboundSchema.parse(heartbeatStatus22), + ); +} + +/** @internal */ +export type SyncReconcileRequestData1$Outbound = { + cpu?: Cpu10$Outbound | any | null | undefined; + events: Array; + memory?: Memory10$Outbound | any | null | undefined; + name: string; + namespace?: string | null | undefined; + nodeCounts: NodeCounts$Outbound; + nodeStatuses?: Array | undefined; + podCounts: PodCounts$Outbound; + region?: string | null | undefined; + status: HeartbeatStatus22$Outbound; + version?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestData1$outboundSchema: z.ZodType< + SyncReconcileRequestData1$Outbound, + SyncReconcileRequestData1 +> = z.object({ + cpu: z.nullable(z.union([z.lazy(() => Cpu10$outboundSchema), z.any()])) + .optional(), + events: z.array(z.lazy(() => SyncReconcileRequestEvent11$outboundSchema)), + memory: z.nullable(z.union([z.lazy(() => Memory10$outboundSchema), z.any()])) + .optional(), + name: z.string(), + namespace: z.nullable(z.string()).optional(), + nodeCounts: z.lazy(() => NodeCounts$outboundSchema), + nodeStatuses: z.array(z.lazy(() => NodeStatus$outboundSchema)).optional(), + podCounts: z.lazy(() => PodCounts$outboundSchema), + region: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus22$outboundSchema), + version: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestData1ToJSON( + syncReconcileRequestData1: SyncReconcileRequestData1, +): string { + return JSON.stringify( + SyncReconcileRequestData1$outboundSchema.parse(syncReconcileRequestData1), + ); +} + +/** @internal */ +export type DataKubernetesCluster$Outbound = { + data: SyncReconcileRequestData1$Outbound; + resourceType: "kubernetes-cluster"; +}; + +/** @internal */ +export const DataKubernetesCluster$outboundSchema: z.ZodType< + DataKubernetesCluster$Outbound, + DataKubernetesCluster +> = z.object({ + data: z.lazy(() => SyncReconcileRequestData1$outboundSchema), + resourceType: z.literal("kubernetes-cluster"), +}); + +export function dataKubernetesClusterToJSON( + dataKubernetesCluster: DataKubernetesCluster, +): string { + return JSON.stringify( + DataKubernetesCluster$outboundSchema.parse(dataKubernetesCluster), + ); +} + +/** @internal */ +export type Nodes4$Outbound = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +/** @internal */ +export const Nodes4$outboundSchema: z.ZodType = z + .object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + }); + +export function nodes4ToJSON(nodes4: Nodes4): string { + return JSON.stringify(Nodes4$outboundSchema.parse(nodes4)); +} + +/** @internal */ +export const Reason21$outboundSchema: z.ZodEnum = z.enum( + Reason21, +); + +/** @internal */ +export const CollectionIssueSeverity21$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity21 +> = z.enum(CollectionIssueSeverity21); + +/** @internal */ +export type CollectionIssue21$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue21$outboundSchema: z.ZodType< + CollectionIssue21$Outbound, + CollectionIssue21 +> = z.object({ + message: z.string(), + reason: Reason21$outboundSchema, + severity: CollectionIssueSeverity21$outboundSchema, + source: z.string(), +}); + +export function collectionIssue21ToJSON( + collectionIssue21: CollectionIssue21, +): string { + return JSON.stringify( + CollectionIssue21$outboundSchema.parse(collectionIssue21), + ); +} + +/** @internal */ +export const Health21$outboundSchema: z.ZodEnum = z.enum( + Health21, +); + +/** @internal */ +export const StatusLifecycle21$outboundSchema: z.ZodEnum< + typeof StatusLifecycle21 +> = z.enum(StatusLifecycle21); + +/** @internal */ +export type HeartbeatStatus21$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus21$outboundSchema: z.ZodType< + HeartbeatStatus21$Outbound, + HeartbeatStatus21 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue21$outboundSchema)), + health: Health21$outboundSchema, + lifecycle: StatusLifecycle21$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus21ToJSON( + heartbeatStatus21: HeartbeatStatus21, +): string { + return JSON.stringify( + HeartbeatStatus21$outboundSchema.parse(heartbeatStatus21), + ); +} + +/** @internal */ +export type DataLocal5$Outbound = { + dockerApiVersion?: string | null | undefined; + dockerArch?: string | null | undefined; + dockerAvailable: boolean; + dockerOs?: string | null | undefined; + dockerVersion?: string | null | undefined; + hostIdentifier?: string | null | undefined; + name: string; + networkAvailable: boolean; + networkName?: string | null | undefined; + nodes: Nodes4$Outbound; + runningContainers?: number | null | undefined; + status: HeartbeatStatus21$Outbound; + trackedContainers?: number | null | undefined; + backend: "local"; +}; + +/** @internal */ +export const DataLocal5$outboundSchema: z.ZodType< + DataLocal5$Outbound, + DataLocal5 +> = z.object({ + dockerApiVersion: z.nullable(z.string()).optional(), + dockerArch: z.nullable(z.string()).optional(), + dockerAvailable: z.boolean(), + dockerOs: z.nullable(z.string()).optional(), + dockerVersion: z.nullable(z.string()).optional(), + hostIdentifier: z.nullable(z.string()).optional(), + name: z.string(), + networkAvailable: z.boolean(), + networkName: z.nullable(z.string()).optional(), + nodes: z.lazy(() => Nodes4$outboundSchema), + runningContainers: z.nullable(z.int()).optional(), + status: z.lazy(() => HeartbeatStatus21$outboundSchema), + trackedContainers: z.nullable(z.int()).optional(), + backend: z.literal("local"), +}); + +export function dataLocal5ToJSON(dataLocal5: DataLocal5): string { + return JSON.stringify(DataLocal5$outboundSchema.parse(dataLocal5)); +} + +/** @internal */ +export const Category3$outboundSchema: z.ZodEnum = z.enum( + Category3, +); + +/** @internal */ +export type CapacityBlocker3$Outbound = { + category: string; + message: string; + observedAt: string; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; +}; + +/** @internal */ +export const CapacityBlocker3$outboundSchema: z.ZodType< + CapacityBlocker3$Outbound, + CapacityBlocker3 +> = z.object({ + category: Category3$outboundSchema, + message: z.string(), + observedAt: z.date().transform(v => v.toISOString()), + providerCode: z.nullable(z.string()).optional(), + providerReference: z.nullable(z.string()).optional(), +}); + +export function capacityBlocker3ToJSON( + capacityBlocker3: CapacityBlocker3, +): string { + return JSON.stringify( + CapacityBlocker3$outboundSchema.parse(capacityBlocker3), + ); +} + +/** @internal */ +export type CapacityBlockerUnion3$Outbound = CapacityBlocker3$Outbound | any; + +/** @internal */ +export const CapacityBlockerUnion3$outboundSchema: z.ZodType< + CapacityBlockerUnion3$Outbound, + CapacityBlockerUnion3 +> = z.union([z.lazy(() => CapacityBlocker3$outboundSchema), z.any()]); + +export function capacityBlockerUnion3ToJSON( + capacityBlockerUnion3: CapacityBlockerUnion3, +): string { + return JSON.stringify( + CapacityBlockerUnion3$outboundSchema.parse(capacityBlockerUnion3), + ); +} + +/** @internal */ +export const UtilizationUnit3$outboundSchema: z.ZodEnum< + typeof UtilizationUnit3 +> = z.enum(UtilizationUnit3); + +/** @internal */ +export type Utilization3$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Utilization3$outboundSchema: z.ZodType< + Utilization3$Outbound, + Utilization3 +> = z.object({ + unit: UtilizationUnit3$outboundSchema, + value: z.number(), +}); + +export function utilization3ToJSON(utilization3: Utilization3): string { + return JSON.stringify(Utilization3$outboundSchema.parse(utilization3)); +} + +/** @internal */ +export type UtilizationUnion3$Outbound = Utilization3$Outbound | any; + +/** @internal */ +export const UtilizationUnion3$outboundSchema: z.ZodType< + UtilizationUnion3$Outbound, + UtilizationUnion3 +> = z.union([z.lazy(() => Utilization3$outboundSchema), z.any()]); + +export function utilizationUnion3ToJSON( + utilizationUnion3: UtilizationUnion3, +): string { + return JSON.stringify( + UtilizationUnion3$outboundSchema.parse(utilizationUnion3), + ); +} + +/** @internal */ +export type Recommendation3$Outbound = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization3$Outbound | any | null | undefined; +}; + +/** @internal */ +export const Recommendation3$outboundSchema: z.ZodType< + Recommendation3$Outbound, + Recommendation3 +> = z.object({ + desiredMachines: z.int(), + reason: z.nullable(z.string()).optional(), + unschedulableReplicas: z.nullable(z.int()).optional(), + utilization: z.nullable( + z.union([z.lazy(() => Utilization3$outboundSchema), z.any()]), + ).optional(), +}); + +export function recommendation3ToJSON( + recommendation3: Recommendation3, +): string { + return JSON.stringify(Recommendation3$outboundSchema.parse(recommendation3)); +} + +/** @internal */ +export type RecommendationUnion3$Outbound = Recommendation3$Outbound | any; + +/** @internal */ +export const RecommendationUnion3$outboundSchema: z.ZodType< + RecommendationUnion3$Outbound, + RecommendationUnion3 +> = z.union([z.lazy(() => Recommendation3$outboundSchema), z.any()]); + +export function recommendationUnion3ToJSON( + recommendationUnion3: RecommendationUnion3, +): string { + return JSON.stringify( + RecommendationUnion3$outboundSchema.parse(recommendationUnion3), + ); +} + +/** @internal */ +export type CapacityGroup3$Outbound = { + capacityBlocker?: CapacityBlocker3$Outbound | any | null | undefined; + currentMachines: number; + desiredMachines: number; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation3$Outbound | any | null | undefined; +}; + +/** @internal */ +export const CapacityGroup3$outboundSchema: z.ZodType< + CapacityGroup3$Outbound, + CapacityGroup3 +> = z.object({ + capacityBlocker: z.nullable( + z.union([z.lazy(() => CapacityBlocker3$outboundSchema), z.any()]), + ).optional(), + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + instanceType: z.nullable(z.string()).optional(), + maxMachines: z.nullable(z.int()).optional(), + minMachines: z.nullable(z.int()).optional(), + recommendation: z.nullable( + z.union([z.lazy(() => Recommendation3$outboundSchema), z.any()]), + ).optional(), +}); + +export function capacityGroup3ToJSON(capacityGroup3: CapacityGroup3): string { + return JSON.stringify(CapacityGroup3$outboundSchema.parse(capacityGroup3)); +} + +/** @internal */ +export const CpuUnit9$outboundSchema: z.ZodEnum = z.enum( + CpuUnit9, +); + +/** @internal */ +export type Cpu9$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Cpu9$outboundSchema: z.ZodType = z.object({ + unit: CpuUnit9$outboundSchema, + value: z.number(), +}); + +export function cpu9ToJSON(cpu9: Cpu9): string { + return JSON.stringify(Cpu9$outboundSchema.parse(cpu9)); +} + +/** @internal */ +export type CpuUnion9$Outbound = Cpu9$Outbound | any; + +/** @internal */ +export const CpuUnion9$outboundSchema: z.ZodType< + CpuUnion9$Outbound, + CpuUnion9 +> = z.union([z.lazy(() => Cpu9$outboundSchema), z.any()]); + +export function cpuUnion9ToJSON(cpuUnion9: CpuUnion9): string { + return JSON.stringify(CpuUnion9$outboundSchema.parse(cpuUnion9)); +} + +/** @internal */ +export const MemoryUnit9$outboundSchema: z.ZodEnum = z.enum( + MemoryUnit9, +); + +/** @internal */ +export type Memory9$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Memory9$outboundSchema: z.ZodType = z + .object({ + unit: MemoryUnit9$outboundSchema, + value: z.number(), + }); + +export function memory9ToJSON(memory9: Memory9): string { + return JSON.stringify(Memory9$outboundSchema.parse(memory9)); +} + +/** @internal */ +export type MemoryUnion9$Outbound = Memory9$Outbound | any; + +/** @internal */ +export const MemoryUnion9$outboundSchema: z.ZodType< + MemoryUnion9$Outbound, + MemoryUnion9 +> = z.union([z.lazy(() => Memory9$outboundSchema), z.any()]); + +export function memoryUnion9ToJSON(memoryUnion9: MemoryUnion9): string { + return JSON.stringify(MemoryUnion9$outboundSchema.parse(memoryUnion9)); +} + +/** @internal */ +export type Nodes3$Outbound = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +/** @internal */ +export const Nodes3$outboundSchema: z.ZodType = z + .object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + }); + +export function nodes3ToJSON(nodes3: Nodes3): string { + return JSON.stringify(Nodes3$outboundSchema.parse(nodes3)); +} + +/** @internal */ +export type ProviderFleet3$Outbound = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +/** @internal */ +export const ProviderFleet3$outboundSchema: z.ZodType< + ProviderFleet3$Outbound, + ProviderFleet3 +> = z.object({ + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + location: z.nullable(z.string()).optional(), + providerId: z.string(), +}); + +export function providerFleet3ToJSON(providerFleet3: ProviderFleet3): string { + return JSON.stringify(ProviderFleet3$outboundSchema.parse(providerFleet3)); +} + +/** @internal */ +export const Reason20$outboundSchema: z.ZodEnum = z.enum( + Reason20, +); + +/** @internal */ +export const CollectionIssueSeverity20$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity20 +> = z.enum(CollectionIssueSeverity20); + +/** @internal */ +export type CollectionIssue20$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue20$outboundSchema: z.ZodType< + CollectionIssue20$Outbound, + CollectionIssue20 +> = z.object({ + message: z.string(), + reason: Reason20$outboundSchema, + severity: CollectionIssueSeverity20$outboundSchema, + source: z.string(), +}); + +export function collectionIssue20ToJSON( + collectionIssue20: CollectionIssue20, +): string { + return JSON.stringify( + CollectionIssue20$outboundSchema.parse(collectionIssue20), + ); +} + +/** @internal */ +export const Health20$outboundSchema: z.ZodEnum = z.enum( + Health20, +); + +/** @internal */ +export const StatusLifecycle20$outboundSchema: z.ZodEnum< + typeof StatusLifecycle20 +> = z.enum(StatusLifecycle20); + +/** @internal */ +export type HeartbeatStatus20$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus20$outboundSchema: z.ZodType< + HeartbeatStatus20$Outbound, + HeartbeatStatus20 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue20$outboundSchema)), + health: Health20$outboundSchema, + lifecycle: StatusLifecycle20$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus20ToJSON( + heartbeatStatus20: HeartbeatStatus20, +): string { + return JSON.stringify( + HeartbeatStatus20$outboundSchema.parse(heartbeatStatus20), + ); +} + +/** @internal */ +export type DataAzure2$Outbound = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu9$Outbound | any | null | undefined; + memory?: Memory9$Outbound | any | null | undefined; + name: string; + nodes: Nodes3$Outbound; + providerFleets: Array; + region?: string | null | undefined; + status: HeartbeatStatus20$Outbound; + backend: "azure"; +}; + +/** @internal */ +export const DataAzure2$outboundSchema: z.ZodType< + DataAzure2$Outbound, + DataAzure2 +> = z.object({ + backendClusterId: z.nullable(z.string()).optional(), + capacityGroups: z.array(z.lazy(() => CapacityGroup3$outboundSchema)), + cpu: z.nullable(z.union([z.lazy(() => Cpu9$outboundSchema), z.any()])) + .optional(), + memory: z.nullable(z.union([z.lazy(() => Memory9$outboundSchema), z.any()])) + .optional(), + name: z.string(), + nodes: z.lazy(() => Nodes3$outboundSchema), + providerFleets: z.array(z.lazy(() => ProviderFleet3$outboundSchema)), + region: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus20$outboundSchema), + backend: z.literal("azure"), +}); + +export function dataAzure2ToJSON(dataAzure2: DataAzure2): string { + return JSON.stringify(DataAzure2$outboundSchema.parse(dataAzure2)); +} + +/** @internal */ +export const Category2$outboundSchema: z.ZodEnum = z.enum( + Category2, +); + +/** @internal */ +export type CapacityBlocker2$Outbound = { + category: string; + message: string; + observedAt: string; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; +}; + +/** @internal */ +export const CapacityBlocker2$outboundSchema: z.ZodType< + CapacityBlocker2$Outbound, + CapacityBlocker2 +> = z.object({ + category: Category2$outboundSchema, + message: z.string(), + observedAt: z.date().transform(v => v.toISOString()), + providerCode: z.nullable(z.string()).optional(), + providerReference: z.nullable(z.string()).optional(), +}); + +export function capacityBlocker2ToJSON( + capacityBlocker2: CapacityBlocker2, +): string { + return JSON.stringify( + CapacityBlocker2$outboundSchema.parse(capacityBlocker2), + ); +} + +/** @internal */ +export type CapacityBlockerUnion2$Outbound = CapacityBlocker2$Outbound | any; + +/** @internal */ +export const CapacityBlockerUnion2$outboundSchema: z.ZodType< + CapacityBlockerUnion2$Outbound, + CapacityBlockerUnion2 +> = z.union([z.lazy(() => CapacityBlocker2$outboundSchema), z.any()]); + +export function capacityBlockerUnion2ToJSON( + capacityBlockerUnion2: CapacityBlockerUnion2, +): string { + return JSON.stringify( + CapacityBlockerUnion2$outboundSchema.parse(capacityBlockerUnion2), + ); +} + +/** @internal */ +export const UtilizationUnit2$outboundSchema: z.ZodEnum< + typeof UtilizationUnit2 +> = z.enum(UtilizationUnit2); + +/** @internal */ +export type Utilization2$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Utilization2$outboundSchema: z.ZodType< + Utilization2$Outbound, + Utilization2 +> = z.object({ + unit: UtilizationUnit2$outboundSchema, + value: z.number(), +}); + +export function utilization2ToJSON(utilization2: Utilization2): string { + return JSON.stringify(Utilization2$outboundSchema.parse(utilization2)); +} + +/** @internal */ +export type UtilizationUnion2$Outbound = Utilization2$Outbound | any; + +/** @internal */ +export const UtilizationUnion2$outboundSchema: z.ZodType< + UtilizationUnion2$Outbound, + UtilizationUnion2 +> = z.union([z.lazy(() => Utilization2$outboundSchema), z.any()]); + +export function utilizationUnion2ToJSON( + utilizationUnion2: UtilizationUnion2, +): string { + return JSON.stringify( + UtilizationUnion2$outboundSchema.parse(utilizationUnion2), + ); +} + +/** @internal */ +export type Recommendation2$Outbound = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization2$Outbound | any | null | undefined; +}; + +/** @internal */ +export const Recommendation2$outboundSchema: z.ZodType< + Recommendation2$Outbound, + Recommendation2 +> = z.object({ + desiredMachines: z.int(), + reason: z.nullable(z.string()).optional(), + unschedulableReplicas: z.nullable(z.int()).optional(), + utilization: z.nullable( + z.union([z.lazy(() => Utilization2$outboundSchema), z.any()]), + ).optional(), +}); + +export function recommendation2ToJSON( + recommendation2: Recommendation2, +): string { + return JSON.stringify(Recommendation2$outboundSchema.parse(recommendation2)); +} + +/** @internal */ +export type RecommendationUnion2$Outbound = Recommendation2$Outbound | any; + +/** @internal */ +export const RecommendationUnion2$outboundSchema: z.ZodType< + RecommendationUnion2$Outbound, + RecommendationUnion2 +> = z.union([z.lazy(() => Recommendation2$outboundSchema), z.any()]); + +export function recommendationUnion2ToJSON( + recommendationUnion2: RecommendationUnion2, +): string { + return JSON.stringify( + RecommendationUnion2$outboundSchema.parse(recommendationUnion2), + ); +} + +/** @internal */ +export type CapacityGroup2$Outbound = { + capacityBlocker?: CapacityBlocker2$Outbound | any | null | undefined; + currentMachines: number; + desiredMachines: number; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation2$Outbound | any | null | undefined; +}; + +/** @internal */ +export const CapacityGroup2$outboundSchema: z.ZodType< + CapacityGroup2$Outbound, + CapacityGroup2 +> = z.object({ + capacityBlocker: z.nullable( + z.union([z.lazy(() => CapacityBlocker2$outboundSchema), z.any()]), + ).optional(), + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + instanceType: z.nullable(z.string()).optional(), + maxMachines: z.nullable(z.int()).optional(), + minMachines: z.nullable(z.int()).optional(), + recommendation: z.nullable( + z.union([z.lazy(() => Recommendation2$outboundSchema), z.any()]), + ).optional(), +}); + +export function capacityGroup2ToJSON(capacityGroup2: CapacityGroup2): string { + return JSON.stringify(CapacityGroup2$outboundSchema.parse(capacityGroup2)); +} + +/** @internal */ +export const CpuUnit8$outboundSchema: z.ZodEnum = z.enum( + CpuUnit8, +); + +/** @internal */ +export type Cpu8$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Cpu8$outboundSchema: z.ZodType = z.object({ + unit: CpuUnit8$outboundSchema, + value: z.number(), +}); + +export function cpu8ToJSON(cpu8: Cpu8): string { + return JSON.stringify(Cpu8$outboundSchema.parse(cpu8)); +} + +/** @internal */ +export type CpuUnion8$Outbound = Cpu8$Outbound | any; + +/** @internal */ +export const CpuUnion8$outboundSchema: z.ZodType< + CpuUnion8$Outbound, + CpuUnion8 +> = z.union([z.lazy(() => Cpu8$outboundSchema), z.any()]); + +export function cpuUnion8ToJSON(cpuUnion8: CpuUnion8): string { + return JSON.stringify(CpuUnion8$outboundSchema.parse(cpuUnion8)); +} + +/** @internal */ +export const MemoryUnit8$outboundSchema: z.ZodEnum = z.enum( + MemoryUnit8, +); + +/** @internal */ +export type Memory8$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Memory8$outboundSchema: z.ZodType = z + .object({ + unit: MemoryUnit8$outboundSchema, + value: z.number(), + }); + +export function memory8ToJSON(memory8: Memory8): string { + return JSON.stringify(Memory8$outboundSchema.parse(memory8)); +} + +/** @internal */ +export type MemoryUnion8$Outbound = Memory8$Outbound | any; + +/** @internal */ +export const MemoryUnion8$outboundSchema: z.ZodType< + MemoryUnion8$Outbound, + MemoryUnion8 +> = z.union([z.lazy(() => Memory8$outboundSchema), z.any()]); + +export function memoryUnion8ToJSON(memoryUnion8: MemoryUnion8): string { + return JSON.stringify(MemoryUnion8$outboundSchema.parse(memoryUnion8)); +} + +/** @internal */ +export type Nodes2$Outbound = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +/** @internal */ +export const Nodes2$outboundSchema: z.ZodType = z + .object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + }); + +export function nodes2ToJSON(nodes2: Nodes2): string { + return JSON.stringify(Nodes2$outboundSchema.parse(nodes2)); +} + +/** @internal */ +export type ProviderFleet2$Outbound = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +/** @internal */ +export const ProviderFleet2$outboundSchema: z.ZodType< + ProviderFleet2$Outbound, + ProviderFleet2 +> = z.object({ + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + location: z.nullable(z.string()).optional(), + providerId: z.string(), +}); + +export function providerFleet2ToJSON(providerFleet2: ProviderFleet2): string { + return JSON.stringify(ProviderFleet2$outboundSchema.parse(providerFleet2)); +} + +/** @internal */ +export const Reason19$outboundSchema: z.ZodEnum = z.enum( + Reason19, +); + +/** @internal */ +export const CollectionIssueSeverity19$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity19 +> = z.enum(CollectionIssueSeverity19); + +/** @internal */ +export type CollectionIssue19$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue19$outboundSchema: z.ZodType< + CollectionIssue19$Outbound, + CollectionIssue19 +> = z.object({ + message: z.string(), + reason: Reason19$outboundSchema, + severity: CollectionIssueSeverity19$outboundSchema, + source: z.string(), +}); + +export function collectionIssue19ToJSON( + collectionIssue19: CollectionIssue19, +): string { + return JSON.stringify( + CollectionIssue19$outboundSchema.parse(collectionIssue19), + ); +} + +/** @internal */ +export const Health19$outboundSchema: z.ZodEnum = z.enum( + Health19, +); + +/** @internal */ +export const StatusLifecycle19$outboundSchema: z.ZodEnum< + typeof StatusLifecycle19 +> = z.enum(StatusLifecycle19); + +/** @internal */ +export type HeartbeatStatus19$Outbound = { + collectionIssues: Array; + health: string; + lifecycle: string; + message?: string | null | undefined; + partial: boolean; + stale: boolean; +}; + +/** @internal */ +export const HeartbeatStatus19$outboundSchema: z.ZodType< + HeartbeatStatus19$Outbound, + HeartbeatStatus19 +> = z.object({ + collectionIssues: z.array(z.lazy(() => CollectionIssue19$outboundSchema)), + health: Health19$outboundSchema, + lifecycle: StatusLifecycle19$outboundSchema, + message: z.nullable(z.string()).optional(), + partial: z.boolean(), + stale: z.boolean(), +}); + +export function heartbeatStatus19ToJSON( + heartbeatStatus19: HeartbeatStatus19, +): string { + return JSON.stringify( + HeartbeatStatus19$outboundSchema.parse(heartbeatStatus19), + ); +} + +/** @internal */ +export type DataGcp2$Outbound = { + backendClusterId?: string | null | undefined; + capacityGroups: Array; + cpu?: Cpu8$Outbound | any | null | undefined; + memory?: Memory8$Outbound | any | null | undefined; + name: string; + nodes: Nodes2$Outbound; + providerFleets: Array; + region?: string | null | undefined; + status: HeartbeatStatus19$Outbound; + backend: "gcp"; +}; + +/** @internal */ +export const DataGcp2$outboundSchema: z.ZodType = z + .object({ + backendClusterId: z.nullable(z.string()).optional(), + capacityGroups: z.array(z.lazy(() => CapacityGroup2$outboundSchema)), + cpu: z.nullable(z.union([z.lazy(() => Cpu8$outboundSchema), z.any()])) + .optional(), + memory: z.nullable(z.union([z.lazy(() => Memory8$outboundSchema), z.any()])) + .optional(), + name: z.string(), + nodes: z.lazy(() => Nodes2$outboundSchema), + providerFleets: z.array(z.lazy(() => ProviderFleet2$outboundSchema)), + region: z.nullable(z.string()).optional(), + status: z.lazy(() => HeartbeatStatus19$outboundSchema), + backend: z.literal("gcp"), + }); + +export function dataGcp2ToJSON(dataGcp2: DataGcp2): string { + return JSON.stringify(DataGcp2$outboundSchema.parse(dataGcp2)); +} + +/** @internal */ +export const Category1$outboundSchema: z.ZodEnum = z.enum( + Category1, +); + +/** @internal */ +export type CapacityBlocker1$Outbound = { + category: string; + message: string; + observedAt: string; + providerCode?: string | null | undefined; + providerReference?: string | null | undefined; +}; + +/** @internal */ +export const CapacityBlocker1$outboundSchema: z.ZodType< + CapacityBlocker1$Outbound, + CapacityBlocker1 +> = z.object({ + category: Category1$outboundSchema, + message: z.string(), + observedAt: z.date().transform(v => v.toISOString()), + providerCode: z.nullable(z.string()).optional(), + providerReference: z.nullable(z.string()).optional(), +}); + +export function capacityBlocker1ToJSON( + capacityBlocker1: CapacityBlocker1, +): string { + return JSON.stringify( + CapacityBlocker1$outboundSchema.parse(capacityBlocker1), + ); +} + +/** @internal */ +export type CapacityBlockerUnion1$Outbound = CapacityBlocker1$Outbound | any; + +/** @internal */ +export const CapacityBlockerUnion1$outboundSchema: z.ZodType< + CapacityBlockerUnion1$Outbound, + CapacityBlockerUnion1 +> = z.union([z.lazy(() => CapacityBlocker1$outboundSchema), z.any()]); + +export function capacityBlockerUnion1ToJSON( + capacityBlockerUnion1: CapacityBlockerUnion1, +): string { + return JSON.stringify( + CapacityBlockerUnion1$outboundSchema.parse(capacityBlockerUnion1), + ); +} + +/** @internal */ +export const UtilizationUnit1$outboundSchema: z.ZodEnum< + typeof UtilizationUnit1 +> = z.enum(UtilizationUnit1); + +/** @internal */ +export type Utilization1$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Utilization1$outboundSchema: z.ZodType< + Utilization1$Outbound, + Utilization1 +> = z.object({ + unit: UtilizationUnit1$outboundSchema, + value: z.number(), +}); + +export function utilization1ToJSON(utilization1: Utilization1): string { + return JSON.stringify(Utilization1$outboundSchema.parse(utilization1)); +} + +/** @internal */ +export type UtilizationUnion1$Outbound = Utilization1$Outbound | any; + +/** @internal */ +export const UtilizationUnion1$outboundSchema: z.ZodType< + UtilizationUnion1$Outbound, + UtilizationUnion1 +> = z.union([z.lazy(() => Utilization1$outboundSchema), z.any()]); + +export function utilizationUnion1ToJSON( + utilizationUnion1: UtilizationUnion1, +): string { + return JSON.stringify( + UtilizationUnion1$outboundSchema.parse(utilizationUnion1), + ); +} + +/** @internal */ +export type Recommendation1$Outbound = { + desiredMachines: number; + reason?: string | null | undefined; + unschedulableReplicas?: number | null | undefined; + utilization?: Utilization1$Outbound | any | null | undefined; +}; + +/** @internal */ +export const Recommendation1$outboundSchema: z.ZodType< + Recommendation1$Outbound, + Recommendation1 +> = z.object({ + desiredMachines: z.int(), + reason: z.nullable(z.string()).optional(), + unschedulableReplicas: z.nullable(z.int()).optional(), + utilization: z.nullable( + z.union([z.lazy(() => Utilization1$outboundSchema), z.any()]), + ).optional(), +}); + +export function recommendation1ToJSON( + recommendation1: Recommendation1, +): string { + return JSON.stringify(Recommendation1$outboundSchema.parse(recommendation1)); +} + +/** @internal */ +export type RecommendationUnion1$Outbound = Recommendation1$Outbound | any; + +/** @internal */ +export const RecommendationUnion1$outboundSchema: z.ZodType< + RecommendationUnion1$Outbound, + RecommendationUnion1 +> = z.union([z.lazy(() => Recommendation1$outboundSchema), z.any()]); + +export function recommendationUnion1ToJSON( + recommendationUnion1: RecommendationUnion1, +): string { + return JSON.stringify( + RecommendationUnion1$outboundSchema.parse(recommendationUnion1), + ); +} + +/** @internal */ +export type CapacityGroup1$Outbound = { + capacityBlocker?: CapacityBlocker1$Outbound | any | null | undefined; + currentMachines: number; + desiredMachines: number; + groupId: string; + instanceType?: string | null | undefined; + maxMachines?: number | null | undefined; + minMachines?: number | null | undefined; + recommendation?: Recommendation1$Outbound | any | null | undefined; +}; + +/** @internal */ +export const CapacityGroup1$outboundSchema: z.ZodType< + CapacityGroup1$Outbound, + CapacityGroup1 +> = z.object({ + capacityBlocker: z.nullable( + z.union([z.lazy(() => CapacityBlocker1$outboundSchema), z.any()]), + ).optional(), + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + instanceType: z.nullable(z.string()).optional(), + maxMachines: z.nullable(z.int()).optional(), + minMachines: z.nullable(z.int()).optional(), + recommendation: z.nullable( + z.union([z.lazy(() => Recommendation1$outboundSchema), z.any()]), + ).optional(), +}); + +export function capacityGroup1ToJSON(capacityGroup1: CapacityGroup1): string { + return JSON.stringify(CapacityGroup1$outboundSchema.parse(capacityGroup1)); +} + +/** @internal */ +export const CpuUnit7$outboundSchema: z.ZodEnum = z.enum( + CpuUnit7, +); + +/** @internal */ +export type Cpu7$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Cpu7$outboundSchema: z.ZodType = z.object({ + unit: CpuUnit7$outboundSchema, + value: z.number(), +}); + +export function cpu7ToJSON(cpu7: Cpu7): string { + return JSON.stringify(Cpu7$outboundSchema.parse(cpu7)); +} + +/** @internal */ +export type CpuUnion7$Outbound = Cpu7$Outbound | any; + +/** @internal */ +export const CpuUnion7$outboundSchema: z.ZodType< + CpuUnion7$Outbound, + CpuUnion7 +> = z.union([z.lazy(() => Cpu7$outboundSchema), z.any()]); + +export function cpuUnion7ToJSON(cpuUnion7: CpuUnion7): string { + return JSON.stringify(CpuUnion7$outboundSchema.parse(cpuUnion7)); +} + +/** @internal */ +export const MemoryUnit7$outboundSchema: z.ZodEnum = z.enum( + MemoryUnit7, +); + +/** @internal */ +export type Memory7$Outbound = { + unit: string; + value: number; +}; + +/** @internal */ +export const Memory7$outboundSchema: z.ZodType = z + .object({ + unit: MemoryUnit7$outboundSchema, + value: z.number(), + }); + +export function memory7ToJSON(memory7: Memory7): string { + return JSON.stringify(Memory7$outboundSchema.parse(memory7)); +} + +/** @internal */ +export type MemoryUnion7$Outbound = Memory7$Outbound | any; + +/** @internal */ +export const MemoryUnion7$outboundSchema: z.ZodType< + MemoryUnion7$Outbound, + MemoryUnion7 +> = z.union([z.lazy(() => Memory7$outboundSchema), z.any()]); + +export function memoryUnion7ToJSON(memoryUnion7: MemoryUnion7): string { + return JSON.stringify(MemoryUnion7$outboundSchema.parse(memoryUnion7)); +} + +/** @internal */ +export type Nodes1$Outbound = { + current?: number | null | undefined; + desired?: number | null | undefined; + ready?: number | null | undefined; +}; + +/** @internal */ +export const Nodes1$outboundSchema: z.ZodType = z + .object({ + current: z.nullable(z.int()).optional(), + desired: z.nullable(z.int()).optional(), + ready: z.nullable(z.int()).optional(), + }); + +export function nodes1ToJSON(nodes1: Nodes1): string { + return JSON.stringify(Nodes1$outboundSchema.parse(nodes1)); +} + +/** @internal */ +export type ProviderFleet1$Outbound = { + currentMachines: number; + desiredMachines: number; + groupId: string; + location?: string | null | undefined; + providerId: string; +}; + +/** @internal */ +export const ProviderFleet1$outboundSchema: z.ZodType< + ProviderFleet1$Outbound, + ProviderFleet1 +> = z.object({ + currentMachines: z.int(), + desiredMachines: z.int(), + groupId: z.string(), + location: z.nullable(z.string()).optional(), + providerId: z.string(), +}); + +export function providerFleet1ToJSON(providerFleet1: ProviderFleet1): string { + return JSON.stringify(ProviderFleet1$outboundSchema.parse(providerFleet1)); +} + +/** @internal */ +export const Reason18$outboundSchema: z.ZodEnum = z.enum( + Reason18, +); + +/** @internal */ +export const CollectionIssueSeverity18$outboundSchema: z.ZodEnum< + typeof CollectionIssueSeverity18 +> = z.enum(CollectionIssueSeverity18); + +/** @internal */ +export type CollectionIssue18$Outbound = { + message: string; + reason: string; + severity: string; + source: string; +}; + +/** @internal */ +export const CollectionIssue18$outboundSchema: z.ZodType< + CollectionIssue18$Outbound, + CollectionIssue18 +> = z.object({ + message: z.string(), + reason: Reason18$outboundSchema, + severity: CollectionIssueSeverity18$outboundSchema, + source: z.string(), +}); + +export function collectionIssue18ToJSON( + collectionIssue18: CollectionIssue18, +): string { + return JSON.stringify( + CollectionIssue18$outboundSchema.parse(collectionIssue18), + ); +} + +/** @internal */ +export const Health18$outboundSchema: z.ZodEnum = z.enum( + Health18, +); + +/** @internal */ +export const StatusLifecycle18$outboundSchema: z.ZodEnum< + typeof StatusLifecycle18 +> = z.enum(StatusLifecycle18); diff --git a/client-sdks/platform/typescript/src/models/syncacquireresponse.ts b/client-sdks/platform/typescript/src/models/syncacquireresponse.ts index 63494ae3c..fa0be0462 100644 --- a/client-sdks/platform/typescript/src/models/syncacquireresponse.ts +++ b/client-sdks/platform/typescript/src/models/syncacquireresponse.ts @@ -4,10 +4,7 @@ import * as z from "zod/v4"; import { remap as remap$ } from "../lib/primitives.js"; -import { - collectExtraKeys as collectExtraKeys$, - safeParse, -} from "../lib/schemas.js"; +import { safeParse } from "../lib/schemas.js"; import { ClosedEnum } from "../types/enums.js"; import { Result as SafeParseResult } from "../types/fp.js"; import { APIError, APIError$inboundSchema } from "./apierror.js"; @@ -16,22457 +13,876 @@ import { DeploymentSetupMethod$inboundSchema, } from "./deploymentsetupmethod.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + SyncAcquireResponseBasePlatformUnion, + SyncAcquireResponseBasePlatformUnion$inboundSchema, + SyncAcquireResponseComputeBackendUnion, + SyncAcquireResponseComputeBackendUnion$inboundSchema, + SyncAcquireResponseCurrent, + SyncAcquireResponseCurrent$inboundSchema, + SyncAcquireResponseDomainMetadataUnion, + SyncAcquireResponseDomainMetadataUnion$inboundSchema, + SyncAcquireResponseEnvironmentVariables, + SyncAcquireResponseEnvironmentVariables$inboundSchema, +} from "./syncacquireresponsekeyprefixsecretref2.js"; +import { + SyncAcquireResponseCertificateUnion2, + SyncAcquireResponseCertificateUnion2$inboundSchema, + SyncAcquireResponseClusterUnion, + SyncAcquireResponseClusterUnion$inboundSchema, + SyncAcquireResponseComputeUnion, + SyncAcquireResponseComputeUnion$inboundSchema, + SyncAcquireResponseDeploymentModel, + SyncAcquireResponseDeploymentModel$inboundSchema, + SyncAcquireResponseDomainsUnion, + SyncAcquireResponseDomainsUnion$inboundSchema, + SyncAcquireResponseExternalBindingsUnion6, + SyncAcquireResponseExternalBindingsUnion6$inboundSchema, + SyncAcquireResponseHeartbeats, + SyncAcquireResponseHeartbeats$inboundSchema, + SyncAcquireResponseManagementConfigUnion, + SyncAcquireResponseManagementConfigUnion$inboundSchema, + SyncAcquireResponseModeCustom, + SyncAcquireResponseModeCustom$inboundSchema, + SyncAcquireResponseMonitoringUnion, + SyncAcquireResponseMonitoringUnion$inboundSchema, + SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3, + SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, + SyncAcquireResponseRouteGateway2, + SyncAcquireResponseRouteGateway2$inboundSchema, + SyncAcquireResponseStackSettingsExternalBindings, + SyncAcquireResponseStackSettingsExternalBindings$inboundSchema, +} from "./syncacquireresponseproviderazureapplicationgatewayforcontainersenum3.js"; -export const SyncAcquireResponseCurrentReleaseTypeStringList = { - StringList: "stringList", -} as const; -export type SyncAcquireResponseCurrentReleaseTypeStringList = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseTypeStringList ->; - -export type SyncAcquireResponseCurrentReleaseDefaultStringList = { - type: SyncAcquireResponseCurrentReleaseTypeStringList; - /** - * String list default. - */ - value: Array; -}; - -export const SyncAcquireResponseCurrentReleaseTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncAcquireResponseCurrentReleaseTypeBoolean = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseTypeBoolean ->; - -export type SyncAcquireResponseCurrentReleaseDefaultBoolean = { - type: SyncAcquireResponseCurrentReleaseTypeBoolean; +export type SyncAcquireResponseProviderAzureApplicationGatewayForContainers3 = { /** - * Boolean default. + * Optional ALB name when using BYO Application Gateway resources. */ - value: boolean; -}; - -export const SyncAcquireResponseCurrentReleaseTypeNumber = { - Number: "number", -} as const; -export type SyncAcquireResponseCurrentReleaseTypeNumber = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseTypeNumber ->; - -export type SyncAcquireResponseCurrentReleaseDefaultNumber = { - type: SyncAcquireResponseCurrentReleaseTypeNumber; + albName?: string | null | undefined; /** - * Number default. + * Optional ALB namespace when using BYO Application Gateway resources. */ - value: string; -}; - -export const SyncAcquireResponseCurrentReleaseTypeString = { - String: "string", -} as const; -export type SyncAcquireResponseCurrentReleaseTypeString = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseTypeString ->; - -export type SyncAcquireResponseCurrentReleaseDefaultString = { - type: SyncAcquireResponseCurrentReleaseTypeString; + albNamespace?: string | null | undefined; /** - * String default. + * Public or internal frontend exposure. */ - value: string; + frontend: string; + provider: + SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3; }; -export type SyncAcquireResponseCurrentReleaseDefaultUnion = - | SyncAcquireResponseCurrentReleaseDefaultString - | SyncAcquireResponseCurrentReleaseDefaultNumber - | SyncAcquireResponseCurrentReleaseDefaultBoolean - | SyncAcquireResponseCurrentReleaseDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncAcquireResponseCurrentReleaseTypeEnvEnum = { - Plain: "plain", - Secret: "secret", +export const SyncAcquireResponseProviderGkeGatewayEnum3 = { + GkeGateway: "gkeGateway", } as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type SyncAcquireResponseCurrentReleaseTypeEnvEnum = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseTypeEnvEnum +export type SyncAcquireResponseProviderGkeGatewayEnum3 = ClosedEnum< + typeof SyncAcquireResponseProviderGkeGatewayEnum3 >; -export type SyncAcquireResponseCurrentReleaseTypeUnion = - | SyncAcquireResponseCurrentReleaseTypeEnvEnum - | any; - -/** - * How a resolved stack input is injected into runtime environment variables. - */ -export type SyncAcquireResponseCurrentReleaseEnv = { - /** - * Environment variable name. - */ - name: string; +export type SyncAcquireResponseProviderGkeGateway3 = { + provider: SyncAcquireResponseProviderGkeGatewayEnum3; /** - * Target resource IDs or patterns. None means every env-capable resource. + * Optional static address name for the Gateway frontend. */ - targetResources?: Array | null | undefined; - type?: SyncAcquireResponseCurrentReleaseTypeEnvEnum | any | null | undefined; + staticAddressName?: string | null | undefined; }; -/** - * Primitive stack input kind. - */ -export const SyncAcquireResponseCurrentReleaseKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type SyncAcquireResponseCurrentReleaseKind = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseKind ->; - -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponseCurrentReleasePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponseCurrentReleasePlatform = ClosedEnum< - typeof SyncAcquireResponseCurrentReleasePlatform ->; - -/** - * Who can provide a stack input value. - */ -export const SyncAcquireResponseCurrentReleaseProvidedBy = { - Developer: "developer", - Deployer: "deployer", +export const SyncAcquireResponseProviderAwsAlbEnum3 = { + AwsAlb: "awsAlb", } as const; -/** - * Who can provide a stack input value. - */ -export type SyncAcquireResponseCurrentReleaseProvidedBy = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseProvidedBy +export type SyncAcquireResponseProviderAwsAlbEnum3 = ClosedEnum< + typeof SyncAcquireResponseProviderAwsAlbEnum3 >; -/** - * Portable stack input validation constraints. - */ -export type SyncAcquireResponseCurrentReleaseValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; +export type SyncAcquireResponseProviderAwsAlb3 = { /** - * Minimum string-list items. + * Optional ALB IP address type, such as `dualstack`. */ - minItems?: number | null | undefined; + ipAddressType?: string | null | undefined; + provider: SyncAcquireResponseProviderAwsAlbEnum3; /** - * Minimum string length. + * Internet-facing or internal ALB scheme. */ - minLength?: number | null | undefined; + scheme: string; /** - * Portable whole-value regex pattern. + * Explicit subnet IDs when the profile cannot rely on controller discovery. */ - pattern?: string | null | undefined; + subnetIds?: Array | undefined; /** - * Allowed string enum values. + * ALB target type, usually `ip`. */ - values?: Array | null | undefined; + targetType: string; }; -export type SyncAcquireResponseCurrentReleaseValidationUnion = - | SyncAcquireResponseCurrentReleaseValidation +export type SyncAcquireResponseProviderUnion3 = + | SyncAcquireResponseProviderAwsAlb3 + | SyncAcquireResponseProviderAzureApplicationGatewayForContainers3 + | SyncAcquireResponseProviderGkeGateway3 | any; /** - * Stack input definition serialized into a release stack. + * Shared Ingress route profile values. */ -export type SyncAcquireResponseCurrentReleaseInput = { - default?: - | SyncAcquireResponseCurrentReleaseDefaultString - | SyncAcquireResponseCurrentReleaseDefaultNumber - | SyncAcquireResponseCurrentReleaseDefaultBoolean - | SyncAcquireResponseCurrentReleaseDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; - /** - * Stable input ID used by CLI/API calls. - */ - id: string; +export type SyncAcquireResponseRouteIngress2 = { /** - * Primitive stack input kind. + * Annotations applied to route objects. */ - kind: SyncAcquireResponseCurrentReleaseKind; + annotations?: { [k: string]: string } | undefined; /** - * Human-facing field label. + * Route controller identifier, for example `eks.amazonaws.com/alb`. */ - label: string; + controller?: string | null | undefined; /** - * Example placeholder shown in UI. + * `spec.ingressClassName` for generated Ingresses. */ - placeholder?: string | null | undefined; + ingressClassName: string; /** - * Platforms where this input applies. + * Labels applied to route objects. */ - platforms?: - | Array + labels?: { [k: string]: string } | undefined; + provider?: + | SyncAcquireResponseProviderAwsAlb3 + | SyncAcquireResponseProviderAzureApplicationGatewayForContainers3 + | SyncAcquireResponseProviderGkeGateway3 + | any | null | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type SyncAcquireResponseRouteUnion2 = + | SyncAcquireResponseRouteIngress2 + | SyncAcquireResponseRouteGateway2; + +export type SyncAcquireResponseExposureCustom = { /** - * Who can provide this value. + * Certificate publication or reference mode for Kubernetes public endpoints. */ - providedBy: Array; + certificate: SyncAcquireResponseCertificateUnion2; /** - * Whether a resolved value is required before deployment can proceed. + * Hostname routed by the Kubernetes public endpoint. */ - required: boolean; - validation?: - | SyncAcquireResponseCurrentReleaseValidation - | any - | null - | undefined; + domain: string; + mode: SyncAcquireResponseModeCustom; + /** + * Kubernetes route API selected for public endpoints. + */ + route: SyncAcquireResponseRouteIngress2 | SyncAcquireResponseRouteGateway2; }; -export const SyncAcquireResponseCurrentReleaseManagementEnum = { - Auto: "auto", -} as const; -export type SyncAcquireResponseCurrentReleaseManagementEnum = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseManagementEnum ->; +export type SyncAcquireResponseCertificateNone1 = { + mode: "none"; +}; -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseOverrideAwResource = { +export type SyncAcquireResponseCertificateManagedTLSSecret1 = { + mode: "managedTlsSecret"; /** - * Optional condition for additional filtering (rare) + * Secret name template. Runtime may substitute resource/deployment tokens. */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + secretNameTemplate: string; +}; + +export type SyncAcquireResponseCertificateAwsAcmArn1 = { /** - * Resource ARNs to bind to + * Existing ACM certificate ARN. */ - resources: Array; + certificateArn: string; + mode: "awsAcmArn"; }; -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseOverrideAwStack = { +export type SyncAcquireResponseCertificateManagedAcmImport1 = { + mode: "managedAcmImport"; /** - * Optional condition for additional filtering (rare) + * ACM region. Defaults to the deployment region when omitted. */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + region?: string | null | undefined; /** - * Resource ARNs to bind to + * Tags applied to runtime-imported ACM certificates. */ - resources: Array; + tags?: { [k: string]: string } | undefined; }; /** - * Generic binding configuration for permissions + * Namespace-scoped Kubernetes TLS Secret reference. */ -export type SyncAcquireResponseCurrentReleaseOverrideAwBinding = { +export type SyncAcquireResponseCertificateTLSSecretRef1 = { /** - * AWS-specific binding specification + * Secret namespace. Defaults to the release namespace when omitted. */ - resource?: SyncAcquireResponseCurrentReleaseOverrideAwResource | undefined; + namespace?: string | null | undefined; /** - * AWS-specific binding specification + * Secret name. */ - stack?: SyncAcquireResponseCurrentReleaseOverrideAwStack | undefined; + secretName: string; + mode: "tlsSecretRef"; }; /** - * IAM effect. Defaults to Allow. + * Certificate publication or reference mode for Kubernetes public endpoints. */ -export const SyncAcquireResponseCurrentReleaseOverrideEffect = { - Allow: "Allow", - Deny: "Deny", +export type SyncAcquireResponseCertificateUnion1 = + | SyncAcquireResponseCertificateTLSSecretRef1 + | SyncAcquireResponseCertificateManagedAcmImport1 + | SyncAcquireResponseCertificateAwsAcmArn1 + | SyncAcquireResponseCertificateManagedTLSSecret1 + | SyncAcquireResponseCertificateNone1; + +export const SyncAcquireResponseModeGenerated = { + Generated: "generated", } as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncAcquireResponseCurrentReleaseOverrideEffect = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseOverrideEffect +export type SyncAcquireResponseModeGenerated = ClosedEnum< + typeof SyncAcquireResponseModeGenerated >; -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseCurrentReleaseOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; +export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum2 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum2 = + ClosedEnum< + typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum2 + >; + +export type SyncAcquireResponseProviderAzureApplicationGatewayForContainers2 = { /** - * Azure actions (only for Azure) + * Optional ALB name when using BYO Application Gateway resources. */ - dataActions?: Array | null | undefined; + albName?: string | null | undefined; /** - * GCP permissions that require an exact residual custom role. + * Optional ALB namespace when using BYO Application Gateway resources. */ - permissions?: Array | null | undefined; + albNamespace?: string | null | undefined; /** - * Provider predefined roles to bind directly. + * Public or internal frontend exposure. */ - predefinedRoles?: Array | null | undefined; + frontend: string; + provider: + SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum2; +}; + +export const SyncAcquireResponseProviderGkeGatewayEnum2 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncAcquireResponseProviderGkeGatewayEnum2 = ClosedEnum< + typeof SyncAcquireResponseProviderGkeGatewayEnum2 +>; + +export type SyncAcquireResponseProviderGkeGateway2 = { + provider: SyncAcquireResponseProviderGkeGatewayEnum2; /** - * GCP residual custom permissions to pair with predefined roles. + * Optional static address name for the Gateway frontend. */ - residualPermissions?: Array | null | undefined; + staticAddressName?: string | null | undefined; }; -/** - * AWS-specific platform permission configuration - */ -export type SyncAcquireResponseCurrentReleaseOverrideAw = { +export const SyncAcquireResponseProviderAwsAlbEnum2 = { + AwsAlb: "awsAlb", +} as const; +export type SyncAcquireResponseProviderAwsAlbEnum2 = ClosedEnum< + typeof SyncAcquireResponseProviderAwsAlbEnum2 +>; + +export type SyncAcquireResponseProviderAwsAlb2 = { /** - * Generic binding configuration for permissions + * Optional ALB IP address type, such as `dualstack`. */ - binding: SyncAcquireResponseCurrentReleaseOverrideAwBinding; + ipAddressType?: string | null | undefined; + provider: SyncAcquireResponseProviderAwsAlbEnum2; /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. + * Internet-facing or internal ALB scheme. */ - effect?: SyncAcquireResponseCurrentReleaseOverrideEffect | undefined; + scheme: string; /** - * Grant permissions for a specific cloud platform + * Explicit subnet IDs when the profile cannot rely on controller discovery. */ - grant: SyncAcquireResponseCurrentReleaseOverrideAwGrant; + subnetIds?: Array | undefined; /** - * Stable admin-facing label for this permission entry. + * ALB target type, usually `ip`. */ - label?: string | null | undefined; + targetType: string; }; +export type SyncAcquireResponseProviderUnion2 = + | SyncAcquireResponseProviderAwsAlb2 + | SyncAcquireResponseProviderAzureApplicationGatewayForContainers2 + | SyncAcquireResponseProviderGkeGateway2 + | any; + /** - * Azure-specific binding specification + * Shared Gateway API route profile values. */ -export type SyncAcquireResponseCurrentReleaseOverrideAzureResource = { +export type SyncAcquireResponseRouteGateway1 = { /** - * Scope (subscription/resource group/resource level) + * Annotations applied to route objects. */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseOverrideAzureStack = { + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; /** - * Scope (subscription/resource group/resource level) + * Listener port, usually 443. */ - scope: string; + listenerPort: number; + provider?: + | SyncAcquireResponseProviderAwsAlb2 + | SyncAcquireResponseProviderAzureApplicationGatewayForContainers2 + | SyncAcquireResponseProviderGkeGateway2 + | any + | null + | undefined; + routeApi: "gateway"; }; -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseCurrentReleaseOverrideAzureBinding = { +export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum1 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum1 = + ClosedEnum< + typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum1 + >; + +export type SyncAcquireResponseProviderAzureApplicationGatewayForContainers1 = { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; /** - * Azure-specific binding specification + * Optional ALB namespace when using BYO Application Gateway resources. */ - resource?: SyncAcquireResponseCurrentReleaseOverrideAzureResource | undefined; + albNamespace?: string | null | undefined; /** - * Azure-specific binding specification + * Public or internal frontend exposure. */ - stack?: SyncAcquireResponseCurrentReleaseOverrideAzureStack | undefined; + frontend: string; + provider: + SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum1; }; -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseCurrentReleaseOverrideAzureGrant = { +export const SyncAcquireResponseProviderGkeGatewayEnum1 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncAcquireResponseProviderGkeGatewayEnum1 = ClosedEnum< + typeof SyncAcquireResponseProviderGkeGatewayEnum1 +>; + +export type SyncAcquireResponseProviderGkeGateway1 = { + provider: SyncAcquireResponseProviderGkeGatewayEnum1; /** - * AWS IAM actions (only for AWS) + * Optional static address name for the Gateway frontend. */ - actions?: Array | null | undefined; + staticAddressName?: string | null | undefined; +}; + +export const SyncAcquireResponseProviderAwsAlbEnum1 = { + AwsAlb: "awsAlb", +} as const; +export type SyncAcquireResponseProviderAwsAlbEnum1 = ClosedEnum< + typeof SyncAcquireResponseProviderAwsAlbEnum1 +>; + +export type SyncAcquireResponseProviderAwsAlb1 = { /** - * Azure actions (only for Azure) + * Optional ALB IP address type, such as `dualstack`. */ - dataActions?: Array | null | undefined; + ipAddressType?: string | null | undefined; + provider: SyncAcquireResponseProviderAwsAlbEnum1; /** - * GCP permissions that require an exact residual custom role. + * Internet-facing or internal ALB scheme. */ - permissions?: Array | null | undefined; + scheme: string; /** - * Provider predefined roles to bind directly. + * Explicit subnet IDs when the profile cannot rely on controller discovery. */ - predefinedRoles?: Array | null | undefined; + subnetIds?: Array | undefined; /** - * GCP residual custom permissions to pair with predefined roles. + * ALB target type, usually `ip`. */ - residualPermissions?: Array | null | undefined; + targetType: string; }; +export type SyncAcquireResponseProviderUnion1 = + | SyncAcquireResponseProviderAwsAlb1 + | SyncAcquireResponseProviderAzureApplicationGatewayForContainers1 + | SyncAcquireResponseProviderGkeGateway1 + | any; + /** - * Azure-specific platform permission configuration + * Shared Ingress route profile values. */ -export type SyncAcquireResponseCurrentReleaseOverrideAzure = { +export type SyncAcquireResponseRouteIngress1 = { /** - * Generic binding configuration for permissions + * Annotations applied to route objects. */ - binding: SyncAcquireResponseCurrentReleaseOverrideAzureBinding; + annotations?: { [k: string]: string } | undefined; /** - * Short admin-facing description of why this entry exists. + * Route controller identifier, for example `eks.amazonaws.com/alb`. */ - description?: string | null | undefined; + controller?: string | null | undefined; /** - * Grant permissions for a specific cloud platform + * `spec.ingressClassName` for generated Ingresses. */ - grant: SyncAcquireResponseCurrentReleaseOverrideAzureGrant; + ingressClassName: string; /** - * Stable admin-facing label for this permission entry. + * Labels applied to route objects. */ - label?: string | null | undefined; + labels?: { [k: string]: string } | undefined; + provider?: + | SyncAcquireResponseProviderAwsAlb1 + | SyncAcquireResponseProviderAzureApplicationGatewayForContainers1 + | SyncAcquireResponseProviderGkeGateway1 + | any + | null + | undefined; + routeApi: "ingress"; }; /** - * GCP IAM condition + * Kubernetes route API selected for public endpoints. */ -export type SyncAcquireResponseCurrentReleaseOverrideConditionResource = { - expression: string; - title: string; -}; - -export type SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion = - | SyncAcquireResponseCurrentReleaseOverrideConditionResource - | any; +export type SyncAcquireResponseRouteUnion1 = + | SyncAcquireResponseRouteIngress1 + | SyncAcquireResponseRouteGateway1; -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseOverrideGcpResource = { - condition?: - | SyncAcquireResponseCurrentReleaseOverrideConditionResource - | any - | null - | undefined; +export type SyncAcquireResponseExposureGenerated = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | SyncAcquireResponseCertificateTLSSecretRef1 + | SyncAcquireResponseCertificateManagedAcmImport1 + | SyncAcquireResponseCertificateAwsAcmArn1 + | SyncAcquireResponseCertificateManagedTLSSecret1 + | SyncAcquireResponseCertificateNone1; + mode: SyncAcquireResponseModeGenerated; /** - * Scope (project/resource level) + * Kubernetes route API selected for public endpoints. */ - scope: string; + route: SyncAcquireResponseRouteIngress1 | SyncAcquireResponseRouteGateway1; }; -/** - * GCP IAM condition - */ -export type SyncAcquireResponseCurrentReleaseOverrideCondition = { - expression: string; - title: string; +export const SyncAcquireResponseModeDisabled = { + Disabled: "disabled", +} as const; +export type SyncAcquireResponseModeDisabled = ClosedEnum< + typeof SyncAcquireResponseModeDisabled +>; + +export type SyncAcquireResponseExposureDisabled = { + mode: SyncAcquireResponseModeDisabled; }; -export type SyncAcquireResponseCurrentReleaseOverrideConditionUnion = - | SyncAcquireResponseCurrentReleaseOverrideCondition +export type SyncAcquireResponseExposureUnion = + | SyncAcquireResponseExposureCustom + | SyncAcquireResponseExposureGenerated + | SyncAcquireResponseExposureDisabled | any; /** - * GCP-specific binding specification + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. */ -export type SyncAcquireResponseCurrentReleaseOverrideGcpStack = { - condition?: - | SyncAcquireResponseCurrentReleaseOverrideCondition +export type SyncAcquireResponseKubernetes = { + cluster?: SyncAcquireResponseClusterUnion | null | undefined; + exposure?: + | SyncAcquireResponseExposureCustom + | SyncAcquireResponseExposureGenerated + | SyncAcquireResponseExposureDisabled | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; }; -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseCurrentReleaseOverrideGcpBinding = { +export type SyncAcquireResponseKubernetesUnion = + | SyncAcquireResponseKubernetes + | any; + +export const SyncAcquireResponseTypeByoVnetAzure = { + ByoVnetAzure: "byo-vnet-azure", +} as const; +export type SyncAcquireResponseTypeByoVnetAzure = ClosedEnum< + typeof SyncAcquireResponseTypeByoVnetAzure +>; + +export type SyncAcquireResponseNetworkByoVnetAzure = { /** - * GCP-specific binding specification + * Name of the dedicated classic Application Gateway subnet within the VNet. */ - resource?: SyncAcquireResponseCurrentReleaseOverrideGcpResource | undefined; + applicationGatewaySubnetName?: string | null | undefined; /** - * GCP-specific binding specification + * Name of the private subnet within the VNet */ - stack?: SyncAcquireResponseCurrentReleaseOverrideGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseCurrentReleaseOverrideGcpGrant = { + privateSubnetName: string; /** - * AWS IAM actions (only for AWS) + * Name of the public subnet within the VNet */ - actions?: Array | null | undefined; + publicSubnetName: string; + type: SyncAcquireResponseTypeByoVnetAzure; /** - * Azure actions (only for Azure) + * The full resource ID of the existing VNet */ - dataActions?: Array | null | undefined; + vnetResourceId: string; +}; + +export const SyncAcquireResponseTypeByoVpcGcp = { + ByoVpcGcp: "byo-vpc-gcp", +} as const; +export type SyncAcquireResponseTypeByoVpcGcp = ClosedEnum< + typeof SyncAcquireResponseTypeByoVpcGcp +>; + +export type SyncAcquireResponseNetworkByoVpcGcp = { /** - * GCP permissions that require an exact residual custom role. + * The name of the existing VPC network */ - permissions?: Array | null | undefined; + networkName: string; /** - * Provider predefined roles to bind directly. + * The region of the subnet */ - predefinedRoles?: Array | null | undefined; + region: string; /** - * GCP residual custom permissions to pair with predefined roles. + * The name of the subnet to use */ - residualPermissions?: Array | null | undefined; + subnetName: string; + type: SyncAcquireResponseTypeByoVpcGcp; }; -/** - * GCP-specific platform permission configuration - */ -export type SyncAcquireResponseCurrentReleaseOverrideGcp = { +export const SyncAcquireResponseTypeByoVpcAws = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type SyncAcquireResponseTypeByoVpcAws = ClosedEnum< + typeof SyncAcquireResponseTypeByoVpcAws +>; + +export type SyncAcquireResponseNetworkByoVpcAws = { /** - * Generic binding configuration for permissions + * IDs of private subnets */ - binding: SyncAcquireResponseCurrentReleaseOverrideGcpBinding; + privateSubnetIds: Array; /** - * Short admin-facing description of why this entry exists. + * IDs of public subnets (required for public ingress) */ - description?: string | null | undefined; + publicSubnetIds: Array; /** - * Grant permissions for a specific cloud platform + * Optional security group IDs to use */ - grant: SyncAcquireResponseCurrentReleaseOverrideGcpGrant; + securityGroupIds?: Array | undefined; + type: SyncAcquireResponseTypeByoVpcAws; /** - * Stable admin-facing label for this permission entry. + * The ID of the existing VPC */ - label?: string | null | undefined; + vpcId: string; }; -/** - * Platform-specific permission configurations - */ -export type SyncAcquireResponseCurrentReleaseOverridePlatforms = { +export const SyncAcquireResponseTypeCreate = { + Create: "create", +} as const; +export type SyncAcquireResponseTypeCreate = ClosedEnum< + typeof SyncAcquireResponseTypeCreate +>; + +export type SyncAcquireResponseNetworkCreate = { /** - * AWS permission configurations + * Number of availability zones (default: 2). */ - aws?: Array | null | undefined; + availabilityZones?: number | undefined; /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncAcquireResponseCurrentReleaseOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncAcquireResponseCurrentReleaseOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncAcquireResponseCurrentReleaseOverrideUnion = - | SyncAcquireResponseCurrentReleaseOverride - | string; - -export type SyncAcquireResponseCurrentReleaseManagement2 = { - /** - * Permission profile that maps resources to permission sets + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID * * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { - [k: string]: Array; - }; -}; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseCurrentReleaseExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncAcquireResponseCurrentReleaseExtendAwResource | undefined; - /** - * AWS-specific binding specification + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). */ - stack?: SyncAcquireResponseCurrentReleaseExtendAwStack | undefined; + cidr?: string | null | undefined; + type: SyncAcquireResponseTypeCreate; }; -/** - * IAM effect. Defaults to Allow. - */ -export const SyncAcquireResponseCurrentReleaseExtendEffect = { - Allow: "Allow", - Deny: "Deny", +export const SyncAcquireResponseTypeUseDefault = { + UseDefault: "use-default", } as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncAcquireResponseCurrentReleaseExtendEffect = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseExtendEffect +export type SyncAcquireResponseTypeUseDefault = ClosedEnum< + typeof SyncAcquireResponseTypeUseDefault >; -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseCurrentReleaseExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncAcquireResponseCurrentReleaseExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseCurrentReleaseExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncAcquireResponseCurrentReleaseExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseCurrentReleaseExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseCurrentReleaseExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncAcquireResponseCurrentReleaseExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncAcquireResponseCurrentReleaseExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseCurrentReleaseExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncAcquireResponseCurrentReleaseExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseCurrentReleaseExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseCurrentReleaseExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponseCurrentReleaseExtendConditionResource = { - expression: string; - title: string; -}; - -export type SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion = - | SyncAcquireResponseCurrentReleaseExtendConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseExtendGcpResource = { - condition?: - | SyncAcquireResponseCurrentReleaseExtendConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponseCurrentReleaseExtendCondition = { - expression: string; - title: string; +export type SyncAcquireResponseNetworkUseDefault = { + type: SyncAcquireResponseTypeUseDefault; }; -export type SyncAcquireResponseCurrentReleaseExtendConditionUnion = - | SyncAcquireResponseCurrentReleaseExtendCondition +export type SyncAcquireResponseNetworkUnion = + | SyncAcquireResponseNetworkByoVpcAws + | SyncAcquireResponseNetworkByoVpcGcp + | SyncAcquireResponseNetworkByoVnetAzure + | SyncAcquireResponseNetworkUseDefault + | SyncAcquireResponseNetworkCreate | any; /** - * GCP-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseExtendGcpStack = { - condition?: - | SyncAcquireResponseCurrentReleaseExtendCondition - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseCurrentReleaseExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncAcquireResponseCurrentReleaseExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncAcquireResponseCurrentReleaseExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseCurrentReleaseExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncAcquireResponseCurrentReleaseExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseCurrentReleaseExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseCurrentReleaseExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncAcquireResponseCurrentReleaseExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncAcquireResponseCurrentReleaseExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncAcquireResponseCurrentReleaseExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition + * How telemetry (logs, metrics, traces) is handled. */ -export type SyncAcquireResponseCurrentReleaseExtendUnion = - | SyncAcquireResponseCurrentReleaseExtend - | string; - -export type SyncAcquireResponseCurrentReleaseManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { - [k: string]: Array; - }; -}; - +export const SyncAcquireResponseTelemetry = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; /** - * Management permissions configuration for stack management access + * How telemetry (logs, metrics, traces) is handled. */ -export type SyncAcquireResponseCurrentReleaseManagementUnion = - | SyncAcquireResponseCurrentReleaseManagement1 - | SyncAcquireResponseCurrentReleaseManagement2 - | SyncAcquireResponseCurrentReleaseManagementEnum; +export type SyncAcquireResponseTelemetry = ClosedEnum< + typeof SyncAcquireResponseTelemetry +>; /** - * AWS-specific binding specification + * How updates are delivered to the deployment. */ -export type SyncAcquireResponseCurrentReleaseProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - +export const SyncAcquireResponseUpdates = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; /** - * AWS-specific binding specification + * How updates are delivered to the deployment. */ -export type SyncAcquireResponseCurrentReleaseProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; +export type SyncAcquireResponseUpdates = ClosedEnum< + typeof SyncAcquireResponseUpdates +>; /** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseCurrentReleaseProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncAcquireResponseCurrentReleaseProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncAcquireResponseCurrentReleaseProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncAcquireResponseCurrentReleaseProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncAcquireResponseCurrentReleaseProfileEffect = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseCurrentReleaseProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncAcquireResponseCurrentReleaseProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseCurrentReleaseProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncAcquireResponseCurrentReleaseProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseCurrentReleaseProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseCurrentReleaseProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncAcquireResponseCurrentReleaseProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncAcquireResponseCurrentReleaseProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseCurrentReleaseProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncAcquireResponseCurrentReleaseProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseCurrentReleaseProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseCurrentReleaseProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponseCurrentReleaseProfileConditionResource = { - expression: string; - title: string; -}; - -export type SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion = - | SyncAcquireResponseCurrentReleaseProfileConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseProfileGcpResource = { - condition?: - | SyncAcquireResponseCurrentReleaseProfileConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponseCurrentReleaseProfileCondition = { - expression: string; - title: string; -}; - -export type SyncAcquireResponseCurrentReleaseProfileConditionUnion = - | SyncAcquireResponseCurrentReleaseProfileCondition - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponseCurrentReleaseProfileGcpStack = { - condition?: - | SyncAcquireResponseCurrentReleaseProfileCondition - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseCurrentReleaseProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncAcquireResponseCurrentReleaseProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncAcquireResponseCurrentReleaseProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseCurrentReleaseProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncAcquireResponseCurrentReleaseProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseCurrentReleaseProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseCurrentReleaseProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncAcquireResponseCurrentReleaseProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncAcquireResponseCurrentReleaseProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncAcquireResponseCurrentReleaseProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncAcquireResponseCurrentReleaseProfileUnion = - | SyncAcquireResponseCurrentReleaseProfile - | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type SyncAcquireResponseCurrentReleasePermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncAcquireResponseCurrentReleaseManagement1 - | SyncAcquireResponseCurrentReleaseManagement2 - | SyncAcquireResponseCurrentReleaseManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncAcquireResponseCurrentReleaseConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncAcquireResponseCurrentReleaseDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const SyncAcquireResponseCurrentReleaseLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type SyncAcquireResponseCurrentReleaseLifecycle = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseLifecycle ->; - -export type SyncAcquireResponseCurrentReleaseResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncAcquireResponseCurrentReleaseConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: SyncAcquireResponseCurrentReleaseLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponseCurrentReleaseSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponseCurrentReleaseSupportedPlatform = ClosedEnum< - typeof SyncAcquireResponseCurrentReleaseSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncAcquireResponseCurrentReleaseStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: SyncAcquireResponseCurrentReleasePermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: SyncAcquireResponseCurrentReleaseResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -/** - * Release metadata + * User-customizable deployment settings specified at deploy time. * * @remarks * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. - */ -export type SyncAcquireResponseCurrentRelease = { - /** - * Short description of the release - */ - description?: string | null | undefined; - /** - * Release ID (e.g., rel_xyz) - */ - releaseId: string; - /** - * A bag of resources, unaware of any cloud. - */ - stack: SyncAcquireResponseCurrentReleaseStack; - /** - * Version string (e.g., 2.1.0) - */ - version?: string | null | undefined; -}; - -export type SyncAcquireResponseCurrentReleaseUnion = - | SyncAcquireResponseCurrentRelease - | any; - -export const SyncAcquireResponsePlatformTest = { - Test: "test", -} as const; -export type SyncAcquireResponsePlatformTest = ClosedEnum< - typeof SyncAcquireResponsePlatformTest ->; - -/** - * Test platform environment information (mock) - */ -export type SyncAcquireResponseEnvironmentInfoTest = { - /** - * Test identifier for this environment - */ - testId: string; - platform: SyncAcquireResponsePlatformTest; -}; - -export const SyncAcquireResponsePlatformLocal = { - Local: "local", -} as const; -export type SyncAcquireResponsePlatformLocal = ClosedEnum< - typeof SyncAcquireResponsePlatformLocal ->; - -/** - * Local platform environment information - */ -export type SyncAcquireResponseEnvironmentInfoLocal = { - /** - * Architecture (e.g., "x86_64", "aarch64") - */ - arch: string; - /** - * Hostname of the machine running the deployment - */ - hostname: string; - /** - * Operating system (e.g., "linux", "macos", "windows") - */ - os: string; - platform: SyncAcquireResponsePlatformLocal; -}; - -export const SyncAcquireResponseCurrentPlatformAzure = { - Azure: "azure", -} as const; -export type SyncAcquireResponseCurrentPlatformAzure = ClosedEnum< - typeof SyncAcquireResponseCurrentPlatformAzure ->; - -/** - * Azure-specific environment information - */ -export type SyncAcquireResponseEnvironmentInfoAzure = { - /** - * Azure location/region - */ - location: string; - /** - * Azure subscription ID - */ - subscriptionId: string; - /** - * Azure tenant ID - */ - tenantId: string; - platform: SyncAcquireResponseCurrentPlatformAzure; -}; - -export const SyncAcquireResponseCurrentPlatformGcp = { - Gcp: "gcp", -} as const; -export type SyncAcquireResponseCurrentPlatformGcp = ClosedEnum< - typeof SyncAcquireResponseCurrentPlatformGcp ->; - -/** - * GCP-specific environment information - */ -export type SyncAcquireResponseEnvironmentInfoGcp = { - /** - * GCP project ID (e.g., "my-project") - */ - projectId: string; - /** - * GCP project number (e.g., "123456789012") - */ - projectNumber: string; - /** - * GCP region - */ - region: string; - platform: SyncAcquireResponseCurrentPlatformGcp; -}; - -export const SyncAcquireResponseCurrentPlatformAws = { - Aws: "aws", -} as const; -export type SyncAcquireResponseCurrentPlatformAws = ClosedEnum< - typeof SyncAcquireResponseCurrentPlatformAws ->; - -/** - * AWS-specific environment information - */ -export type SyncAcquireResponseEnvironmentInfoAws = { - /** - * AWS account ID - */ - accountId: string; - /** - * AWS region - */ - region: string; - platform: SyncAcquireResponseCurrentPlatformAws; -}; - -export type SyncAcquireResponseEnvironmentInfoUnion = - | SyncAcquireResponseEnvironmentInfoGcp - | SyncAcquireResponseEnvironmentInfoAzure - | SyncAcquireResponseEnvironmentInfoLocal - | SyncAcquireResponseEnvironmentInfoAws - | SyncAcquireResponseEnvironmentInfoTest - | any; - -/** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. - */ -export type SyncAcquireResponseError = { - /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" - */ - code: string; - /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. - */ - context?: any | null | undefined; - /** - * Optional human-facing remediation hint. - */ - hint?: string | null | undefined; - /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. - */ - httpStatusCode?: number | null | undefined; - /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. - */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable: boolean; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; -}; - -export type SyncAcquireResponseErrorUnion = SyncAcquireResponseError | any; - -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponseCurrentPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponseCurrentPlatform = ClosedEnum< - typeof SyncAcquireResponseCurrentPlatform ->; - -export const SyncAcquireResponsePreparedStackTypeStringList = { - StringList: "stringList", -} as const; -export type SyncAcquireResponsePreparedStackTypeStringList = ClosedEnum< - typeof SyncAcquireResponsePreparedStackTypeStringList ->; - -export type SyncAcquireResponsePreparedStackDefaultStringList = { - type: SyncAcquireResponsePreparedStackTypeStringList; - /** - * String list default. - */ - value: Array; -}; - -export const SyncAcquireResponsePreparedStackTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncAcquireResponsePreparedStackTypeBoolean = ClosedEnum< - typeof SyncAcquireResponsePreparedStackTypeBoolean ->; - -export type SyncAcquireResponsePreparedStackDefaultBoolean = { - type: SyncAcquireResponsePreparedStackTypeBoolean; - /** - * Boolean default. - */ - value: boolean; -}; - -export const SyncAcquireResponsePreparedStackTypeNumber = { - Number: "number", -} as const; -export type SyncAcquireResponsePreparedStackTypeNumber = ClosedEnum< - typeof SyncAcquireResponsePreparedStackTypeNumber ->; - -export type SyncAcquireResponsePreparedStackDefaultNumber = { - type: SyncAcquireResponsePreparedStackTypeNumber; - /** - * Number default. - */ - value: string; -}; - -export const SyncAcquireResponsePreparedStackTypeString = { - String: "string", -} as const; -export type SyncAcquireResponsePreparedStackTypeString = ClosedEnum< - typeof SyncAcquireResponsePreparedStackTypeString ->; - -export type SyncAcquireResponsePreparedStackDefaultString = { - type: SyncAcquireResponsePreparedStackTypeString; - /** - * String default. - */ - value: string; -}; - -export type SyncAcquireResponsePreparedStackDefaultUnion = - | SyncAcquireResponsePreparedStackDefaultString - | SyncAcquireResponsePreparedStackDefaultNumber - | SyncAcquireResponsePreparedStackDefaultBoolean - | SyncAcquireResponsePreparedStackDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncAcquireResponsePreparedStackTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type SyncAcquireResponsePreparedStackTypeEnvEnum = ClosedEnum< - typeof SyncAcquireResponsePreparedStackTypeEnvEnum ->; - -export type SyncAcquireResponsePreparedStackTypeUnion = - | SyncAcquireResponsePreparedStackTypeEnvEnum - | any; - -/** - * How a resolved stack input is injected into runtime environment variables. - */ -export type SyncAcquireResponsePreparedStackEnv = { - /** - * Environment variable name. - */ - name: string; - /** - * Target resource IDs or patterns. None means every env-capable resource. - */ - targetResources?: Array | null | undefined; - type?: SyncAcquireResponsePreparedStackTypeEnvEnum | any | null | undefined; -}; - -/** - * Primitive stack input kind. - */ -export const SyncAcquireResponsePreparedStackKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type SyncAcquireResponsePreparedStackKind = ClosedEnum< - typeof SyncAcquireResponsePreparedStackKind ->; - -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponsePreparedStackPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponsePreparedStackPlatform = ClosedEnum< - typeof SyncAcquireResponsePreparedStackPlatform ->; - -/** - * Who can provide a stack input value. - */ -export const SyncAcquireResponsePreparedStackProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type SyncAcquireResponsePreparedStackProvidedBy = ClosedEnum< - typeof SyncAcquireResponsePreparedStackProvidedBy ->; - -/** - * Portable stack input validation constraints. - */ -export type SyncAcquireResponsePreparedStackValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; - /** - * Minimum string-list items. - */ - minItems?: number | null | undefined; - /** - * Minimum string length. - */ - minLength?: number | null | undefined; - /** - * Portable whole-value regex pattern. - */ - pattern?: string | null | undefined; - /** - * Allowed string enum values. - */ - values?: Array | null | undefined; -}; - -export type SyncAcquireResponsePreparedStackValidationUnion = - | SyncAcquireResponsePreparedStackValidation - | any; - -/** - * Stack input definition serialized into a release stack. - */ -export type SyncAcquireResponsePreparedStackInput = { - default?: - | SyncAcquireResponsePreparedStackDefaultString - | SyncAcquireResponsePreparedStackDefaultNumber - | SyncAcquireResponsePreparedStackDefaultBoolean - | SyncAcquireResponsePreparedStackDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; - /** - * Stable input ID used by CLI/API calls. - */ - id: string; - /** - * Primitive stack input kind. - */ - kind: SyncAcquireResponsePreparedStackKind; - /** - * Human-facing field label. - */ - label: string; - /** - * Example placeholder shown in UI. - */ - placeholder?: string | null | undefined; - /** - * Platforms where this input applies. - */ - platforms?: - | Array - | null - | undefined; - /** - * Who can provide this value. - */ - providedBy: Array; - /** - * Whether a resolved value is required before deployment can proceed. - */ - required: boolean; - validation?: - | SyncAcquireResponsePreparedStackValidation - | any - | null - | undefined; -}; - -export const SyncAcquireResponsePreparedStackManagementEnum = { - Auto: "auto", -} as const; -export type SyncAcquireResponsePreparedStackManagementEnum = ClosedEnum< - typeof SyncAcquireResponsePreparedStackManagementEnum ->; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponsePreparedStackOverrideAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponsePreparedStackOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponsePreparedStackOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncAcquireResponsePreparedStackOverrideAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncAcquireResponsePreparedStackOverrideAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncAcquireResponsePreparedStackOverrideEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncAcquireResponsePreparedStackOverrideEffect = ClosedEnum< - typeof SyncAcquireResponsePreparedStackOverrideEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponsePreparedStackOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncAcquireResponsePreparedStackOverrideAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponsePreparedStackOverrideAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncAcquireResponsePreparedStackOverrideEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponsePreparedStackOverrideAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponsePreparedStackOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponsePreparedStackOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponsePreparedStackOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncAcquireResponsePreparedStackOverrideAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncAcquireResponsePreparedStackOverrideAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponsePreparedStackOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncAcquireResponsePreparedStackOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponsePreparedStackOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponsePreparedStackOverrideAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponsePreparedStackOverrideConditionResource = { - expression: string; - title: string; -}; - -export type SyncAcquireResponsePreparedStackOverrideResourceConditionUnion = - | SyncAcquireResponsePreparedStackOverrideConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponsePreparedStackOverrideGcpResource = { - condition?: - | SyncAcquireResponsePreparedStackOverrideConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponsePreparedStackOverrideConditionStack = { - expression: string; - title: string; -}; - -export type SyncAcquireResponsePreparedStackOverrideStackConditionUnion = - | SyncAcquireResponsePreparedStackOverrideConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponsePreparedStackOverrideGcpStack = { - condition?: - | SyncAcquireResponsePreparedStackOverrideConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponsePreparedStackOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncAcquireResponsePreparedStackOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncAcquireResponsePreparedStackOverrideGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponsePreparedStackOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncAcquireResponsePreparedStackOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponsePreparedStackOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponsePreparedStackOverrideGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncAcquireResponsePreparedStackOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncAcquireResponsePreparedStackOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncAcquireResponsePreparedStackOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncAcquireResponsePreparedStackOverrideUnion = - | SyncAcquireResponsePreparedStackOverride - | string; - -export type SyncAcquireResponsePreparedStackManagement2 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { - [k: string]: Array; - }; -}; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponsePreparedStackExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponsePreparedStackExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponsePreparedStackExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncAcquireResponsePreparedStackExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncAcquireResponsePreparedStackExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncAcquireResponsePreparedStackExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncAcquireResponsePreparedStackExtendEffect = ClosedEnum< - typeof SyncAcquireResponsePreparedStackExtendEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponsePreparedStackExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncAcquireResponsePreparedStackExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponsePreparedStackExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncAcquireResponsePreparedStackExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponsePreparedStackExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponsePreparedStackExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponsePreparedStackExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponsePreparedStackExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncAcquireResponsePreparedStackExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncAcquireResponsePreparedStackExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponsePreparedStackExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncAcquireResponsePreparedStackExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponsePreparedStackExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponsePreparedStackExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponsePreparedStackExtendConditionResource = { - expression: string; - title: string; -}; - -export type SyncAcquireResponsePreparedStackExtendResourceConditionUnion = - | SyncAcquireResponsePreparedStackExtendConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponsePreparedStackExtendGcpResource = { - condition?: - | SyncAcquireResponsePreparedStackExtendConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponsePreparedStackExtendConditionStack = { - expression: string; - title: string; -}; - -export type SyncAcquireResponsePreparedStackExtendStackConditionUnion = - | SyncAcquireResponsePreparedStackExtendConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponsePreparedStackExtendGcpStack = { - condition?: - | SyncAcquireResponsePreparedStackExtendConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponsePreparedStackExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncAcquireResponsePreparedStackExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncAcquireResponsePreparedStackExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponsePreparedStackExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncAcquireResponsePreparedStackExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponsePreparedStackExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponsePreparedStackExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncAcquireResponsePreparedStackExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncAcquireResponsePreparedStackExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncAcquireResponsePreparedStackExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncAcquireResponsePreparedStackExtendUnion = - | SyncAcquireResponsePreparedStackExtend - | string; - -export type SyncAcquireResponsePreparedStackManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { - [k: string]: Array; - }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type SyncAcquireResponsePreparedStackManagementUnion = - | SyncAcquireResponsePreparedStackManagement1 - | SyncAcquireResponsePreparedStackManagement2 - | SyncAcquireResponsePreparedStackManagementEnum; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponsePreparedStackProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponsePreparedStackProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponsePreparedStackProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncAcquireResponsePreparedStackProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncAcquireResponsePreparedStackProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncAcquireResponsePreparedStackProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncAcquireResponsePreparedStackProfileEffect = ClosedEnum< - typeof SyncAcquireResponsePreparedStackProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponsePreparedStackProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncAcquireResponsePreparedStackProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponsePreparedStackProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncAcquireResponsePreparedStackProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponsePreparedStackProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponsePreparedStackProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponsePreparedStackProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponsePreparedStackProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncAcquireResponsePreparedStackProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncAcquireResponsePreparedStackProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponsePreparedStackProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncAcquireResponsePreparedStackProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponsePreparedStackProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponsePreparedStackProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponsePreparedStackProfileConditionResource = { - expression: string; - title: string; -}; - -export type SyncAcquireResponsePreparedStackProfileResourceConditionUnion = - | SyncAcquireResponsePreparedStackProfileConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponsePreparedStackProfileGcpResource = { - condition?: - | SyncAcquireResponsePreparedStackProfileConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponsePreparedStackProfileConditionStack = { - expression: string; - title: string; -}; - -export type SyncAcquireResponsePreparedStackProfileStackConditionUnion = - | SyncAcquireResponsePreparedStackProfileConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponsePreparedStackProfileGcpStack = { - condition?: - | SyncAcquireResponsePreparedStackProfileConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponsePreparedStackProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncAcquireResponsePreparedStackProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncAcquireResponsePreparedStackProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponsePreparedStackProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncAcquireResponsePreparedStackProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponsePreparedStackProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponsePreparedStackProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncAcquireResponsePreparedStackProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncAcquireResponsePreparedStackProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncAcquireResponsePreparedStackProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncAcquireResponsePreparedStackProfileUnion = - | SyncAcquireResponsePreparedStackProfile - | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type SyncAcquireResponsePreparedStackPermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncAcquireResponsePreparedStackManagement1 - | SyncAcquireResponsePreparedStackManagement2 - | SyncAcquireResponsePreparedStackManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncAcquireResponsePreparedStackConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncAcquireResponsePreparedStackDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const SyncAcquireResponsePreparedStackLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type SyncAcquireResponsePreparedStackLifecycle = ClosedEnum< - typeof SyncAcquireResponsePreparedStackLifecycle ->; - -export type SyncAcquireResponsePreparedStackResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncAcquireResponsePreparedStackConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: SyncAcquireResponsePreparedStackLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponsePreparedStackSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponsePreparedStackSupportedPlatform = ClosedEnum< - typeof SyncAcquireResponsePreparedStackSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncAcquireResponsePreparedStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: SyncAcquireResponsePreparedStackPermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: SyncAcquireResponsePreparedStackResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -export type SyncAcquireResponsePreparedStackUnion = - | SyncAcquireResponsePreparedStack - | any; - -/** - * Runtime metadata for deployment - * - * @remarks - * - * Stores deployment state that needs to persist across step calls. - */ -export type SyncAcquireResponseRuntimeMetadata = { - /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment - */ - lastSyncedEnvVarsHash?: string | null | undefined; - preparedStack?: SyncAcquireResponsePreparedStack | any | null | undefined; - /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. - */ - registryAccessGranted?: boolean | undefined; -}; - -export type SyncAcquireResponseRuntimeMetadataUnion = - | SyncAcquireResponseRuntimeMetadata - | any; - -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponseStackStatePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponseStackStatePlatform = ClosedEnum< - typeof SyncAcquireResponseStackStatePlatform ->; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncAcquireResponseStackStateConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponseControllerPlatformEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponseControllerPlatformEnum = ClosedEnum< - typeof SyncAcquireResponseControllerPlatformEnum ->; - -export type SyncAcquireResponseControllerPlatformUnion = - | SyncAcquireResponseControllerPlatformEnum - | any; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncAcquireResponseStackStateDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. - */ -export type SyncAcquireResponseStackStateError = { - /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" - */ - code: string; - /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. - */ - context?: any | null | undefined; - /** - * Optional human-facing remediation hint. - */ - hint?: string | null | undefined; - /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. - */ - httpStatusCode?: number | null | undefined; - /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. - */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable: boolean; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; -}; - -export type SyncAcquireResponseStackStateErrorUnion = - | SyncAcquireResponseStackStateError - | any; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const SyncAcquireResponseStackStateLifecycleEnum = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type SyncAcquireResponseStackStateLifecycleEnum = ClosedEnum< - typeof SyncAcquireResponseStackStateLifecycleEnum ->; - -export type SyncAcquireResponseLifecycleUnion = - | SyncAcquireResponseStackStateLifecycleEnum - | any; - -/** - * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. - */ -export type SyncAcquireResponseOutputs = { - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -export type SyncAcquireResponseOutputsUnion = SyncAcquireResponseOutputs | any; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncAcquireResponsePreviousConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -export type SyncAcquireResponsePreviousConfigUnion = - | SyncAcquireResponsePreviousConfig - | any; - -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export const SyncAcquireResponseStackStateStatus = { - Pending: "pending", - Provisioning: "provisioning", - ProvisionFailed: "provision-failed", - Running: "running", - Updating: "updating", - UpdateFailed: "update-failed", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - Deleted: "deleted", - RefreshFailed: "refresh-failed", -} as const; -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export type SyncAcquireResponseStackStateStatus = ClosedEnum< - typeof SyncAcquireResponseStackStateStatus ->; - -/** - * Represents the state of a single resource within the stack for a specific platform. - */ -export type SyncAcquireResponseStackStateResources = { - /** - * The platform-specific resource controller that manages this resource's lifecycle. - * - * @remarks - * This is None when the resource status is Pending. - * Stored as JSON to make the struct serializable and movable to alien-core. - */ - internal?: any | null | undefined; - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncAcquireResponseStackStateConfig; - controllerPlatform?: - | SyncAcquireResponseControllerPlatformEnum - | any - | null - | undefined; - /** - * Complete list of dependencies for this resource, including infrastructure dependencies. - * - * @remarks - * This preserves the full dependency information from the stack definition. - */ - dependencies?: Array | undefined; - error?: SyncAcquireResponseStackStateError | any | null | undefined; - /** - * Stores the controller state that failed, used for manual retry operations. - * - * @remarks - * This allows resuming from the exact point where the failure occurred. - * Stored as JSON to make the struct serializable and movable to alien-core. - */ - lastFailedState?: any | null | undefined; - lifecycle?: - | SyncAcquireResponseStackStateLifecycleEnum - | any - | null - | undefined; - outputs?: SyncAcquireResponseOutputs | any | null | undefined; - previousConfig?: SyncAcquireResponsePreviousConfig | any | null | undefined; - /** - * Binding parameters for remote access. - * - * @remarks - * Only populated when the resource has `remote_access: true` in its ResourceEntry. - * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). - * Populated by controllers during provisioning using get_binding_params(). - */ - remoteBindingParams?: any | null | undefined; - /** - * Tracks consecutive retry attempts for the current state transition. - */ - retryAttempt?: number | undefined; - /** - * Represents the high-level status of a resource during its lifecycle. - */ - status: SyncAcquireResponseStackStateStatus; - /** - * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). - */ - type: string; -}; - -/** - * Represents the collective state of all resources in a stack, including platform and pending actions. - */ -export type SyncAcquireResponseStackState = { - /** - * Represents the target cloud platform. - */ - platform: SyncAcquireResponseStackStatePlatform; - /** - * A prefix used for resource naming to ensure uniqueness across deployments. - */ - resourcePrefix: string; - /** - * The state of individual resources, keyed by resource ID. - */ - resources: { [k: string]: SyncAcquireResponseStackStateResources }; -}; - -export type SyncAcquireResponseStackStateUnion = - | SyncAcquireResponseStackState - | any; - -/** - * Deployment status in the deployment lifecycle - */ -export const SyncAcquireResponseStatus = { - Pending: "pending", - PreflightsFailed: "preflights-failed", - InitialSetup: "initial-setup", - InitialSetupFailed: "initial-setup-failed", - Provisioning: "provisioning", - ProvisioningFailed: "provisioning-failed", - Running: "running", - RefreshFailed: "refresh-failed", - UpdatePending: "update-pending", - Updating: "updating", - UpdateFailed: "update-failed", - DeletePending: "delete-pending", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - TeardownFailed: "teardown-failed", - Deleted: "deleted", - Error: "error", -} as const; -/** - * Deployment status in the deployment lifecycle - */ -export type SyncAcquireResponseStatus = ClosedEnum< - typeof SyncAcquireResponseStatus ->; - -export const SyncAcquireResponseTargetReleaseTypeStringList = { - StringList: "stringList", -} as const; -export type SyncAcquireResponseTargetReleaseTypeStringList = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseTypeStringList ->; - -export type SyncAcquireResponseTargetReleaseDefaultStringList = { - type: SyncAcquireResponseTargetReleaseTypeStringList; - /** - * String list default. - */ - value: Array; -}; - -export const SyncAcquireResponseTargetReleaseTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncAcquireResponseTargetReleaseTypeBoolean = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseTypeBoolean ->; - -export type SyncAcquireResponseTargetReleaseDefaultBoolean = { - type: SyncAcquireResponseTargetReleaseTypeBoolean; - /** - * Boolean default. - */ - value: boolean; -}; - -export const SyncAcquireResponseTargetReleaseTypeNumber = { - Number: "number", -} as const; -export type SyncAcquireResponseTargetReleaseTypeNumber = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseTypeNumber ->; - -export type SyncAcquireResponseTargetReleaseDefaultNumber = { - type: SyncAcquireResponseTargetReleaseTypeNumber; - /** - * Number default. - */ - value: string; -}; - -export const SyncAcquireResponseTargetReleaseTypeString = { - String: "string", -} as const; -export type SyncAcquireResponseTargetReleaseTypeString = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseTypeString ->; - -export type SyncAcquireResponseTargetReleaseDefaultString = { - type: SyncAcquireResponseTargetReleaseTypeString; - /** - * String default. - */ - value: string; -}; - -export type SyncAcquireResponseTargetReleaseDefaultUnion = - | SyncAcquireResponseTargetReleaseDefaultString - | SyncAcquireResponseTargetReleaseDefaultNumber - | SyncAcquireResponseTargetReleaseDefaultBoolean - | SyncAcquireResponseTargetReleaseDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncAcquireResponseTargetReleaseTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type SyncAcquireResponseTargetReleaseTypeEnvEnum = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseTypeEnvEnum ->; - -export type SyncAcquireResponseTargetReleaseTypeUnion = - | SyncAcquireResponseTargetReleaseTypeEnvEnum - | any; - -/** - * How a resolved stack input is injected into runtime environment variables. - */ -export type SyncAcquireResponseTargetReleaseEnv = { - /** - * Environment variable name. - */ - name: string; - /** - * Target resource IDs or patterns. None means every env-capable resource. - */ - targetResources?: Array | null | undefined; - type?: SyncAcquireResponseTargetReleaseTypeEnvEnum | any | null | undefined; -}; - -/** - * Primitive stack input kind. - */ -export const SyncAcquireResponseTargetReleaseKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type SyncAcquireResponseTargetReleaseKind = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseKind ->; - -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponseTargetReleasePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponseTargetReleasePlatform = ClosedEnum< - typeof SyncAcquireResponseTargetReleasePlatform ->; - -/** - * Who can provide a stack input value. - */ -export const SyncAcquireResponseTargetReleaseProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type SyncAcquireResponseTargetReleaseProvidedBy = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseProvidedBy ->; - -/** - * Portable stack input validation constraints. - */ -export type SyncAcquireResponseTargetReleaseValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; - /** - * Minimum string-list items. - */ - minItems?: number | null | undefined; - /** - * Minimum string length. - */ - minLength?: number | null | undefined; - /** - * Portable whole-value regex pattern. - */ - pattern?: string | null | undefined; - /** - * Allowed string enum values. - */ - values?: Array | null | undefined; -}; - -export type SyncAcquireResponseTargetReleaseValidationUnion = - | SyncAcquireResponseTargetReleaseValidation - | any; - -/** - * Stack input definition serialized into a release stack. - */ -export type SyncAcquireResponseTargetReleaseInput = { - default?: - | SyncAcquireResponseTargetReleaseDefaultString - | SyncAcquireResponseTargetReleaseDefaultNumber - | SyncAcquireResponseTargetReleaseDefaultBoolean - | SyncAcquireResponseTargetReleaseDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; - /** - * Stable input ID used by CLI/API calls. - */ - id: string; - /** - * Primitive stack input kind. - */ - kind: SyncAcquireResponseTargetReleaseKind; - /** - * Human-facing field label. - */ - label: string; - /** - * Example placeholder shown in UI. - */ - placeholder?: string | null | undefined; - /** - * Platforms where this input applies. - */ - platforms?: - | Array - | null - | undefined; - /** - * Who can provide this value. - */ - providedBy: Array; - /** - * Whether a resolved value is required before deployment can proceed. - */ - required: boolean; - validation?: - | SyncAcquireResponseTargetReleaseValidation - | any - | null - | undefined; -}; - -export const SyncAcquireResponseTargetReleaseManagementEnum = { - Auto: "auto", -} as const; -export type SyncAcquireResponseTargetReleaseManagementEnum = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseManagementEnum ->; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseOverrideAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseTargetReleaseOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncAcquireResponseTargetReleaseOverrideAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncAcquireResponseTargetReleaseOverrideAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncAcquireResponseTargetReleaseOverrideEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncAcquireResponseTargetReleaseOverrideEffect = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseOverrideEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseTargetReleaseOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncAcquireResponseTargetReleaseOverrideAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseTargetReleaseOverrideAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncAcquireResponseTargetReleaseOverrideEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseTargetReleaseOverrideAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseTargetReleaseOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncAcquireResponseTargetReleaseOverrideAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncAcquireResponseTargetReleaseOverrideAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseTargetReleaseOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncAcquireResponseTargetReleaseOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseTargetReleaseOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseTargetReleaseOverrideAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponseTargetReleaseOverrideConditionResource = { - expression: string; - title: string; -}; - -export type SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion = - | SyncAcquireResponseTargetReleaseOverrideConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseOverrideGcpResource = { - condition?: - | SyncAcquireResponseTargetReleaseOverrideConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponseTargetReleaseOverrideCondition = { - expression: string; - title: string; -}; - -export type SyncAcquireResponseTargetReleaseOverrideConditionUnion = - | SyncAcquireResponseTargetReleaseOverrideCondition - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseOverrideGcpStack = { - condition?: - | SyncAcquireResponseTargetReleaseOverrideCondition - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseTargetReleaseOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncAcquireResponseTargetReleaseOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncAcquireResponseTargetReleaseOverrideGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseTargetReleaseOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncAcquireResponseTargetReleaseOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseTargetReleaseOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseTargetReleaseOverrideGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncAcquireResponseTargetReleaseOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncAcquireResponseTargetReleaseOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncAcquireResponseTargetReleaseOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncAcquireResponseTargetReleaseOverrideUnion = - | SyncAcquireResponseTargetReleaseOverride - | string; - -export type SyncAcquireResponseTargetReleaseManagement2 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { - [k: string]: Array; - }; -}; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseTargetReleaseExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncAcquireResponseTargetReleaseExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncAcquireResponseTargetReleaseExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncAcquireResponseTargetReleaseExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncAcquireResponseTargetReleaseExtendEffect = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseExtendEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseTargetReleaseExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncAcquireResponseTargetReleaseExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseTargetReleaseExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncAcquireResponseTargetReleaseExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseTargetReleaseExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseTargetReleaseExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncAcquireResponseTargetReleaseExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncAcquireResponseTargetReleaseExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseTargetReleaseExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncAcquireResponseTargetReleaseExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseTargetReleaseExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseTargetReleaseExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponseTargetReleaseExtendConditionResource = { - expression: string; - title: string; -}; - -export type SyncAcquireResponseTargetReleaseExtendResourceConditionUnion = - | SyncAcquireResponseTargetReleaseExtendConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseExtendGcpResource = { - condition?: - | SyncAcquireResponseTargetReleaseExtendConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponseTargetReleaseExtendCondition = { - expression: string; - title: string; -}; - -export type SyncAcquireResponseTargetReleaseExtendConditionUnion = - | SyncAcquireResponseTargetReleaseExtendCondition - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseExtendGcpStack = { - condition?: - | SyncAcquireResponseTargetReleaseExtendCondition - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseTargetReleaseExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncAcquireResponseTargetReleaseExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncAcquireResponseTargetReleaseExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseTargetReleaseExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncAcquireResponseTargetReleaseExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseTargetReleaseExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseTargetReleaseExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncAcquireResponseTargetReleaseExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncAcquireResponseTargetReleaseExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncAcquireResponseTargetReleaseExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncAcquireResponseTargetReleaseExtendUnion = - | SyncAcquireResponseTargetReleaseExtend - | string; - -export type SyncAcquireResponseTargetReleaseManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { - [k: string]: Array; - }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type SyncAcquireResponseTargetReleaseManagementUnion = - | SyncAcquireResponseTargetReleaseManagement1 - | SyncAcquireResponseTargetReleaseManagement2 - | SyncAcquireResponseTargetReleaseManagementEnum; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseTargetReleaseProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncAcquireResponseTargetReleaseProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncAcquireResponseTargetReleaseProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncAcquireResponseTargetReleaseProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncAcquireResponseTargetReleaseProfileEffect = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseTargetReleaseProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncAcquireResponseTargetReleaseProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseTargetReleaseProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncAcquireResponseTargetReleaseProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseTargetReleaseProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseTargetReleaseProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncAcquireResponseTargetReleaseProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncAcquireResponseTargetReleaseProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseTargetReleaseProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncAcquireResponseTargetReleaseProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseTargetReleaseProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseTargetReleaseProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponseTargetReleaseProfileConditionResource = { - expression: string; - title: string; -}; - -export type SyncAcquireResponseTargetReleaseProfileResourceConditionUnion = - | SyncAcquireResponseTargetReleaseProfileConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseProfileGcpResource = { - condition?: - | SyncAcquireResponseTargetReleaseProfileConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncAcquireResponseTargetReleaseProfileCondition = { - expression: string; - title: string; -}; - -export type SyncAcquireResponseTargetReleaseProfileConditionUnion = - | SyncAcquireResponseTargetReleaseProfileCondition - | any; - -/** - * GCP-specific binding specification - */ -export type SyncAcquireResponseTargetReleaseProfileGcpStack = { - condition?: - | SyncAcquireResponseTargetReleaseProfileCondition - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncAcquireResponseTargetReleaseProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncAcquireResponseTargetReleaseProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncAcquireResponseTargetReleaseProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncAcquireResponseTargetReleaseProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncAcquireResponseTargetReleaseProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncAcquireResponseTargetReleaseProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncAcquireResponseTargetReleaseProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncAcquireResponseTargetReleaseProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncAcquireResponseTargetReleaseProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncAcquireResponseTargetReleaseProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncAcquireResponseTargetReleaseProfileUnion = - | SyncAcquireResponseTargetReleaseProfile - | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type SyncAcquireResponseTargetReleasePermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncAcquireResponseTargetReleaseManagement1 - | SyncAcquireResponseTargetReleaseManagement2 - | SyncAcquireResponseTargetReleaseManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncAcquireResponseTargetReleaseConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncAcquireResponseTargetReleaseDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const SyncAcquireResponseTargetReleaseLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type SyncAcquireResponseTargetReleaseLifecycle = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseLifecycle ->; - -export type SyncAcquireResponseTargetReleaseResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncAcquireResponseTargetReleaseConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: SyncAcquireResponseTargetReleaseLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponseTargetReleaseSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponseTargetReleaseSupportedPlatform = ClosedEnum< - typeof SyncAcquireResponseTargetReleaseSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncAcquireResponseTargetReleaseStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: SyncAcquireResponseTargetReleasePermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: SyncAcquireResponseTargetReleaseResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -/** - * Release metadata - * - * @remarks - * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. - */ -export type SyncAcquireResponseTargetRelease = { - /** - * Short description of the release - */ - description?: string | null | undefined; - /** - * Release ID (e.g., rel_xyz) - */ - releaseId: string; - /** - * A bag of resources, unaware of any cloud. - */ - stack: SyncAcquireResponseTargetReleaseStack; - /** - * Version string (e.g., 2.1.0) - */ - version?: string | null | undefined; -}; - -export type SyncAcquireResponseTargetReleaseUnion = - | SyncAcquireResponseTargetRelease - | any; - -/** - * Current deployment state (includes releases) - */ -export type SyncAcquireResponseCurrent = { - currentRelease?: SyncAcquireResponseCurrentRelease | any | null | undefined; - environmentInfo?: - | SyncAcquireResponseEnvironmentInfoGcp - | SyncAcquireResponseEnvironmentInfoAzure - | SyncAcquireResponseEnvironmentInfoLocal - | SyncAcquireResponseEnvironmentInfoAws - | SyncAcquireResponseEnvironmentInfoTest - | any - | null - | undefined; - error?: SyncAcquireResponseError | any | null | undefined; - /** - * Represents the target cloud platform. - */ - platform: SyncAcquireResponseCurrentPlatform; - /** - * Protocol version for cross-actor compatibility. - * - * @remarks - * All actors (manager, push client, agent) check this before stepping. - * Mismatched versions produce a clear error instead of silent corruption. - * See docs/02-manager/10-deployment-protocol.md. - */ - protocolVersion: number; - /** - * Whether a retry has been requested for a failed deployment - * - * @remarks - * When true and status is a failed state, the deployment system will retry failed resources - */ - retryRequested?: boolean | undefined; - runtimeMetadata?: SyncAcquireResponseRuntimeMetadata | any | null | undefined; - stackState?: SyncAcquireResponseStackState | any | null | undefined; - /** - * Deployment status in the deployment lifecycle - */ - status: SyncAcquireResponseStatus; - targetRelease?: SyncAcquireResponseTargetRelease | any | null | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncAcquireResponseBasePlatformEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncAcquireResponseBasePlatformEnum = ClosedEnum< - typeof SyncAcquireResponseBasePlatformEnum ->; - -export type SyncAcquireResponseBasePlatformUnion = - | SyncAcquireResponseBasePlatformEnum - | any; - -/** - * Configuration for a single container worker cluster. - * - * @remarks - * - * Contains the cluster ID and management token needed to interact with - * the managed container control plane API for container operations. - */ -export type SyncAcquireResponseClusters = { - /** - * Cluster ID (deterministic: workspace/project/deployment/resourceid) - */ - clusterId: string; - /** - * Management token for API access (hm_...) - * - * @remarks - * Used by alien-deployment controllers to create/update containers - */ - managementToken: string; -}; - -/** - * AWS Horizon machine image catalog. - */ -export type SyncAcquireResponseHorizonMachineImageAws = { - /** - * AMI IDs by architecture, then AWS region. - */ - amis: { [k: string]: { [k: string]: string } }; -}; - -export type SyncAcquireResponseHorizonMachineImageAwsUnion = - | SyncAcquireResponseHorizonMachineImageAws - | any; - -/** - * Azure Horizon machine image entry. - */ -export type SyncAcquireResponseAzureImages = { - /** - * Azure Compute Gallery image version ID. - */ - imageVersionId: string; -}; - -/** - * Azure Horizon machine image catalog. - */ -export type SyncAcquireResponseHorizonMachineImageAzure = { - /** - * Images by architecture. - */ - images: { [k: string]: SyncAcquireResponseAzureImages }; -}; - -export type SyncAcquireResponseHorizonMachineImageAzureUnion = - | SyncAcquireResponseHorizonMachineImageAzure - | any; - -/** - * Base image metadata for the Horizon machine image. - */ -export type SyncAcquireResponseBaseImage = { - /** - * Base OS image name. - */ - name: string; - /** - * Base OS image version or channel. - */ - version: string; -}; - -/** - * GCP Horizon machine image entry. - */ -export type SyncAcquireResponseGcpImages = { - /** - * Source image self link or image-family URL. - */ - sourceImage: string; -}; - -/** - * GCP Horizon machine image catalog. - */ -export type SyncAcquireResponseHorizonMachineImageGcp = { - /** - * Images by architecture. - */ - images: { [k: string]: SyncAcquireResponseGcpImages }; -}; - -export type SyncAcquireResponseHorizonMachineImageGcpUnion = - | SyncAcquireResponseHorizonMachineImageGcp - | any; - -/** - * Horizon machine image catalog. - * - * @remarks - * - * Platform resolves concrete provider images from this catalog during rollout. - */ -export type SyncAcquireResponseHorizonMachineImage = { - aws?: SyncAcquireResponseHorizonMachineImageAws | any | null | undefined; - azure?: SyncAcquireResponseHorizonMachineImageAzure | any | null | undefined; - /** - * Base image metadata for the Horizon machine image. - */ - baseImage: SyncAcquireResponseBaseImage; - /** - * Logical image channel, such as prod, staging, or canary. - */ - channel: string; - /** - * Image manifest creation timestamp. - */ - createdAt: string; - gcp?: SyncAcquireResponseHorizonMachineImageGcp | any | null | undefined; - /** - * Git commit SHA used to build the image. - */ - gitSha: string; - /** - * horizond daemon version baked into the image. - */ - horizondVersion: string; - /** - * Published immutable machine image version. - */ - machineImageVersion: string; -}; - -export type SyncAcquireResponseHorizonMachineImageUnion = - | SyncAcquireResponseHorizonMachineImage - | any; - -export const SyncAcquireResponseComputeBackendType = { - Horizon: "horizon", -} as const; -export type SyncAcquireResponseComputeBackendType = ClosedEnum< - typeof SyncAcquireResponseComputeBackendType ->; - -/** - * Compute backend for Container and Worker resources. - * - * @remarks - * - * Determines how compute workloads are orchestrated on cloud platforms. - * When None, the platform default is used for cloud platforms. - */ -export type SyncAcquireResponseComputeBackendHorizon = { - /** - * Cluster configurations (one per ComputeCluster resource) - * - * @remarks - * Key: ComputeCluster resource ID from stack - * Value: Cluster ID and management token for that cluster - */ - clusters: { [k: string]: SyncAcquireResponseClusters }; - horizonMachineImage?: - | SyncAcquireResponseHorizonMachineImage - | any - | null - | undefined; - /** - * Horizon control-plane API base URL. - */ - url: string; - type: SyncAcquireResponseComputeBackendType; -}; - -export type SyncAcquireResponseComputeBackendUnion = - | SyncAcquireResponseComputeBackendHorizon - | any; - -/** - * Certificate status in the certificate lifecycle - */ -export const SyncAcquireResponseAliasCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; -/** - * Certificate status in the certificate lifecycle - */ -export type SyncAcquireResponseAliasCertificateStatus = ClosedEnum< - typeof SyncAcquireResponseAliasCertificateStatus ->; - -/** - * DNS record status in the DNS lifecycle - */ -export const SyncAcquireResponseAliasDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", -} as const; -/** - * DNS record status in the DNS lifecycle - */ -export type SyncAcquireResponseAliasDnsStatus = ClosedEnum< - typeof SyncAcquireResponseAliasDnsStatus ->; - -/** - * Certificate and DNS metadata for a managed hostname. - * - * @remarks - * - * Includes decrypted certificate data for issued certificates. - * Private keys are deployment-scoped secrets (like environment variables). - */ -export type SyncAcquireResponseAlias = { - /** - * Full PEM certificate chain (only present if status is "issued"). - */ - certificateChain?: string | null | undefined; - /** - * Certificate ID (for tracking/logging). - */ - certificateId: string; - /** - * Certificate status in the certificate lifecycle - */ - certificateStatus: SyncAcquireResponseAliasCertificateStatus; - /** - * Last DNS error message. Present when DNS previously failed, even if status - * - * @remarks - * was reset to pending for retry. Used to surface actionable error context - * in WaitingForDns failure messages. - */ - dnsError?: string | null | undefined; - /** - * DNS record status in the DNS lifecycle - */ - dnsStatus: SyncAcquireResponseAliasDnsStatus; - /** - * Fully qualified domain name. - */ - fqdn: string; - /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). - */ - issuedAt?: string | null | undefined; - /** - * Decrypted private key (only present if status is "issued"). - */ - privateKey?: string | null | undefined; -}; - -/** - * Certificate status in the certificate lifecycle - */ -export const SyncAcquireResponseCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; -/** - * Certificate status in the certificate lifecycle - */ -export type SyncAcquireResponseCertificateStatus = ClosedEnum< - typeof SyncAcquireResponseCertificateStatus ->; - -/** - * DNS record status in the DNS lifecycle - */ -export const SyncAcquireResponseDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", -} as const; -/** - * DNS record status in the DNS lifecycle - */ -export type SyncAcquireResponseDnsStatus = ClosedEnum< - typeof SyncAcquireResponseDnsStatus ->; - -/** - * Certificate status in the certificate lifecycle - */ -export const SyncAcquireResponseEndpointsCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; -/** - * Certificate status in the certificate lifecycle - */ -export type SyncAcquireResponseEndpointsCertificateStatus = ClosedEnum< - typeof SyncAcquireResponseEndpointsCertificateStatus ->; - -/** - * DNS record status in the DNS lifecycle - */ -export const SyncAcquireResponseEndpointsDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", -} as const; -/** - * DNS record status in the DNS lifecycle - */ -export type SyncAcquireResponseEndpointsDnsStatus = ClosedEnum< - typeof SyncAcquireResponseEndpointsDnsStatus ->; - -/** - * Certificate and DNS metadata for a managed hostname. - * - * @remarks - * - * Includes decrypted certificate data for issued certificates. - * Private keys are deployment-scoped secrets (like environment variables). - */ -export type SyncAcquireResponseEndpoints = { - /** - * Full PEM certificate chain (only present if status is "issued"). - */ - certificateChain?: string | null | undefined; - /** - * Certificate ID (for tracking/logging). - */ - certificateId: string; - /** - * Certificate status in the certificate lifecycle - */ - certificateStatus: SyncAcquireResponseEndpointsCertificateStatus; - /** - * Last DNS error message. Present when DNS previously failed, even if status - * - * @remarks - * was reset to pending for retry. Used to surface actionable error context - * in WaitingForDns failure messages. - */ - dnsError?: string | null | undefined; - /** - * DNS record status in the DNS lifecycle - */ - dnsStatus: SyncAcquireResponseEndpointsDnsStatus; - /** - * Fully qualified domain name. - */ - fqdn: string; - /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). - */ - issuedAt?: string | null | undefined; - /** - * Decrypted private key (only present if status is "issued"). - */ - privateKey?: string | null | undefined; -}; - -/** - * Certificate and DNS metadata for a public resource. - * - * @remarks - * - * The direct fields describe the primary endpoint hostname. `endpoints` - * contains endpoint-scoped metadata keyed by endpoint name. `aliases` contains - * additional managed hostnames that route directly to the primary endpoint. - */ -export type SyncAcquireResponseDomainMetadataResources = { - /** - * Additional managed hostnames for the resource. - */ - aliases?: Array | undefined; - /** - * Full PEM certificate chain (only present if status is "issued"). - */ - certificateChain?: string | null | undefined; - /** - * Certificate ID (for tracking/logging). - */ - certificateId: string; - /** - * Certificate status in the certificate lifecycle - */ - certificateStatus: SyncAcquireResponseCertificateStatus; - /** - * Last DNS error message. - */ - dnsError?: string | null | undefined; - /** - * DNS record status in the DNS lifecycle - */ - dnsStatus: SyncAcquireResponseDnsStatus; - /** - * Endpoint-scoped metadata keyed by endpoint name. - */ - endpoints?: { [k: string]: SyncAcquireResponseEndpoints } | undefined; - /** - * Fully qualified domain name. - */ - fqdn: string; - /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). - */ - issuedAt?: string | null | undefined; - /** - * Decrypted private key (only present if status is "issued"). - */ - privateKey?: string | null | undefined; -}; - -/** - * Domain metadata for auto-managed public resources (no private keys). - */ -export type SyncAcquireResponseDomainMetadata = { - /** - * Base domain for auto-generated domains (e.g., "vpc.direct"). - */ - baseDomain: string; - /** - * Hosted zone ID for DNS records. - */ - hostedZoneId: string; - /** - * Deployment public subdomain (e.g., "k8f2j3"). - */ - publicSubdomain: string; - /** - * Metadata per resource ID. - */ - resources: { [k: string]: SyncAcquireResponseDomainMetadataResources }; -}; - -export type SyncAcquireResponseDomainMetadataUnion = - | SyncAcquireResponseDomainMetadata - | any; - -/** - * Type of environment variable - */ -export const SyncAcquireResponseEnvironmentVariablesType = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Type of environment variable - */ -export type SyncAcquireResponseEnvironmentVariablesType = ClosedEnum< - typeof SyncAcquireResponseEnvironmentVariablesType ->; - -/** - * Environment variable for deployment - */ -export type SyncAcquireResponseVariable = { - /** - * Variable name - */ - name: string; - /** - * Target resource patterns (null = all resources, Some = wildcard patterns) - */ - targetResources?: Array | null | undefined; - /** - * Type of environment variable - */ - type: SyncAcquireResponseEnvironmentVariablesType; - /** - * Variable value (decrypted - deployment has access to decryption keys) - */ - value: string; -}; - -/** - * Snapshot of environment variables at a point in time - */ -export type SyncAcquireResponseEnvironmentVariables = { - /** - * ISO 8601 timestamp when snapshot was created - */ - createdAt: string; - /** - * Deterministic hash of all variables (for change detection) - */ - hash: string; - /** - * Environment variables in the snapshot - */ - variables: Array; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDefaultDomainSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDefaultDomain = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDefaultDomainSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDefaultDomainUnion = - | SyncAcquireResponseDefaultDomain - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseEnvironmentNameSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseEnvironmentName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseEnvironmentNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseEnvironmentNameUnion = - | SyncAcquireResponseEnvironmentName - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseResourceGroupNameSecretRef3 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseResourceGroupName3 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseResourceGroupNameSecretRef3; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseResourceGroupNameUnion3 = - | SyncAcquireResponseResourceGroupName3 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseResourceIdSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseResourceId = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseResourceIdSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseResourceIdUnion = - | SyncAcquireResponseResourceId - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseStaticIpSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseStaticIp = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseStaticIpSecretRef; -}; - -export const SyncAcquireResponseTypeContainerAppsEnvironment = { - ContainerAppsEnvironment: "container_apps_environment", -} as const; -export type SyncAcquireResponseTypeContainerAppsEnvironment = ClosedEnum< - typeof SyncAcquireResponseTypeContainerAppsEnvironment ->; - -/** - * Binding configuration for a pre-existing Azure Container Apps Environment. - * - * @remarks - * - * Used when deploying to an existing environment instead of having Alien provision one. - * This is useful for shared environments (e.g., test infrastructure) or enterprise - * setups where environments are managed by a separate team. - */ -export type SyncAcquireResponseExternalBindingsContainerAppsEnvironment = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - defaultDomain?: - | SyncAcquireResponseDefaultDomain - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - environmentName?: - | SyncAcquireResponseEnvironmentName - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - resourceGroupName?: - | SyncAcquireResponseResourceGroupName3 - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - resourceId?: SyncAcquireResponseResourceId | any | string | null | undefined; - staticIp?: any | null | undefined; - type: SyncAcquireResponseTypeContainerAppsEnvironment; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDataDirSecretRef3 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDataDir3 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDataDirSecretRef3; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDataDirUnion2 = - | SyncAcquireResponseDataDir3 - | any - | string; - -export const SyncAcquireResponseTypeVault5 = { - Vault: "vault", -} as const; -export type SyncAcquireResponseTypeVault5 = ClosedEnum< - typeof SyncAcquireResponseTypeVault5 ->; - -/** - * Local development vault binding (for testing/development) - */ -export type SyncAcquireResponseExternalBindingsLocalVault = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - dataDir?: SyncAcquireResponseDataDir3 | any | string | null | undefined; - /** - * The vault name for local storage - */ - vaultName: string; - service: "local-vault"; - type: SyncAcquireResponseTypeVault5; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseNamespaceSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseNamespace2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseNamespaceSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseNamespaceUnion2 = - | SyncAcquireResponseNamespace2 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseVaultPrefixSecretRef3 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseVaultPrefix3 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseVaultPrefixSecretRef3; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseVaultPrefixUnion3 = - | SyncAcquireResponseVaultPrefix3 - | any - | string; - -export const SyncAcquireResponseTypeVault4 = { - Vault: "vault", -} as const; -export type SyncAcquireResponseTypeVault4 = ClosedEnum< - typeof SyncAcquireResponseTypeVault4 ->; - -/** - * Kubernetes Secrets vault binding configuration - */ -export type SyncAcquireResponseExternalBindingsKubernetesSecret = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - namespace?: SyncAcquireResponseNamespace2 | any | string | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - vaultPrefix?: - | SyncAcquireResponseVaultPrefix3 - | any - | string - | null - | undefined; - service: "kubernetes-secret"; - type: SyncAcquireResponseTypeVault4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseVaultNameSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseVaultName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseVaultNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseVaultNameUnion = - | SyncAcquireResponseVaultName - | any - | string; - -export const SyncAcquireResponseTypeVault3 = { - Vault: "vault", -} as const; -export type SyncAcquireResponseTypeVault3 = ClosedEnum< - typeof SyncAcquireResponseTypeVault3 ->; - -/** - * Azure Key Vault binding configuration - */ -export type SyncAcquireResponseExternalBindingsKeyVault = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - vaultName?: SyncAcquireResponseVaultName | any | string | null | undefined; - service: "key-vault"; - type: SyncAcquireResponseTypeVault3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseVaultPrefixSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseVaultPrefix2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseVaultPrefixSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseVaultPrefixUnion2 = - | SyncAcquireResponseVaultPrefix2 - | any - | string; - -export const SyncAcquireResponseTypeVault2 = { - Vault: "vault", -} as const; -export type SyncAcquireResponseTypeVault2 = ClosedEnum< - typeof SyncAcquireResponseTypeVault2 ->; - -/** - * GCP Secret Manager vault binding configuration - */ -export type SyncAcquireResponseExternalBindingsSecretManager = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - vaultPrefix?: - | SyncAcquireResponseVaultPrefix2 - | any - | string - | null - | undefined; - service: "secret-manager"; - type: SyncAcquireResponseTypeVault2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseVaultPrefixSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseVaultPrefix1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseVaultPrefixSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseVaultPrefixUnion1 = - | SyncAcquireResponseVaultPrefix1 - | any - | string; - -export const SyncAcquireResponseTypeVault1 = { - Vault: "vault", -} as const; -export type SyncAcquireResponseTypeVault1 = ClosedEnum< - typeof SyncAcquireResponseTypeVault1 ->; - -/** - * AWS SSM Parameter Store vault binding configuration - */ -export type SyncAcquireResponseExternalBindingsParameterStore = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - vaultPrefix?: - | SyncAcquireResponseVaultPrefix1 - | any - | string - | null - | undefined; - service: "parameter-store"; - type: SyncAcquireResponseTypeVault1; -}; - -/** - * Represents a vault binding for secure secret management - */ -export type SyncAcquireResponseExternalBindingsUnion5 = - | SyncAcquireResponseExternalBindingsParameterStore - | SyncAcquireResponseExternalBindingsSecretManager - | SyncAcquireResponseExternalBindingsKeyVault - | SyncAcquireResponseExternalBindingsKubernetesSecret - | SyncAcquireResponseExternalBindingsLocalVault; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDataDirSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDataDir2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDataDirSecretRef2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseRegistryUrlSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseRegistryUrl = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseRegistryUrlSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseRegistryUrlUnion = - | SyncAcquireResponseRegistryUrl - | any - | string; - -export const SyncAcquireResponseTypeArtifactRegistry4 = { - ArtifactRegistry: "artifact_registry", -} as const; -export type SyncAcquireResponseTypeArtifactRegistry4 = ClosedEnum< - typeof SyncAcquireResponseTypeArtifactRegistry4 ->; - -/** - * Local container registry binding configuration. - * - * @remarks - * - * The local registry runs on localhost only and does not require authentication. - * Security boundary is the OS process isolation on the customer's machine. - * External image access is secured by the manager's registry proxy (deployment tokens). - */ -export type SyncAcquireResponseExternalBindingsLocal = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - dataDir?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - registryUrl?: - | SyncAcquireResponseRegistryUrl - | any - | string - | null - | undefined; - service: "local"; - type: SyncAcquireResponseTypeArtifactRegistry4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponsePullServiceAccountEmailSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponsePullServiceAccountEmail = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponsePullServiceAccountEmailSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponsePushServiceAccountEmailSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponsePushServiceAccountEmail = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponsePushServiceAccountEmailSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseRepositoryNameSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseRepositoryName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseRepositoryNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseRepositoryNameUnion = - | SyncAcquireResponseRepositoryName - | any - | string; - -export const SyncAcquireResponseTypeArtifactRegistry3 = { - ArtifactRegistry: "artifact_registry", -} as const; -export type SyncAcquireResponseTypeArtifactRegistry3 = ClosedEnum< - typeof SyncAcquireResponseTypeArtifactRegistry3 ->; - -/** - * Google Artifact Registry binding configuration - */ -export type SyncAcquireResponseExternalBindingsGar = { - pullServiceAccountEmail?: any | null | undefined; - pushServiceAccountEmail?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - repositoryName?: - | SyncAcquireResponseRepositoryName - | any - | string - | null - | undefined; - service: "gar"; - type: SyncAcquireResponseTypeArtifactRegistry3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseRegistryNameSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseRegistryName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseRegistryNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseRegistryNameUnion = - | SyncAcquireResponseRegistryName - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseRepositoryPrefixSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseRepositoryPrefix2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseRepositoryPrefixSecretRef2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseResourceGroupNameSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseResourceGroupName2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseResourceGroupNameSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseResourceGroupNameUnion2 = - | SyncAcquireResponseResourceGroupName2 - | any - | string; - -export const SyncAcquireResponseTypeArtifactRegistry2 = { - ArtifactRegistry: "artifact_registry", -} as const; -export type SyncAcquireResponseTypeArtifactRegistry2 = ClosedEnum< - typeof SyncAcquireResponseTypeArtifactRegistry2 ->; - -/** - * Azure Container Registry binding configuration - */ -export type SyncAcquireResponseExternalBindingsAcr = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - registryName?: - | SyncAcquireResponseRegistryName - | any - | string - | null - | undefined; - repositoryPrefix?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - resourceGroupName?: - | SyncAcquireResponseResourceGroupName2 - | any - | string - | null - | undefined; - service: "acr"; - type: SyncAcquireResponseTypeArtifactRegistry2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponsePullRoleArnSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponsePullRoleArn = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponsePullRoleArnSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponsePushRoleArnSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponsePushRoleArn = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponsePushRoleArnSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseRepositoryPrefixSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseRepositoryPrefix1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseRepositoryPrefixSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseRepositoryPrefixUnion = - | SyncAcquireResponseRepositoryPrefix1 - | any - | string; - -export const SyncAcquireResponseTypeArtifactRegistry1 = { - ArtifactRegistry: "artifact_registry", -} as const; -export type SyncAcquireResponseTypeArtifactRegistry1 = ClosedEnum< - typeof SyncAcquireResponseTypeArtifactRegistry1 ->; - -/** - * AWS ECR (Elastic Container Registry) binding configuration - */ -export type SyncAcquireResponseExternalBindingsEcr = { - pullRoleArn?: any | null | undefined; - pushRoleArn?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - repositoryPrefix?: - | SyncAcquireResponseRepositoryPrefix1 - | any - | string - | null - | undefined; - service: "ecr"; - type: SyncAcquireResponseTypeArtifactRegistry1; -}; - -/** - * Service-type based artifact registry binding that supports multiple registry providers - */ -export type SyncAcquireResponseExternalBindingsUnion4 = - | SyncAcquireResponseExternalBindingsEcr - | SyncAcquireResponseExternalBindingsAcr - | SyncAcquireResponseExternalBindingsGar - | SyncAcquireResponseExternalBindingsLocal; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDataDirSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDataDir1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDataDirSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDataDirUnion1 = - | SyncAcquireResponseDataDir1 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseKeyPrefixSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseKeyPrefix2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseKeyPrefixSecretRef2; -}; - -export const SyncAcquireResponseTypeKv5 = { - Kv: "kv", -} as const; -export type SyncAcquireResponseTypeKv5 = ClosedEnum< - typeof SyncAcquireResponseTypeKv5 ->; - -/** - * Local development KV binding configuration - */ -export type SyncAcquireResponseExternalBindingsLocalKv = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - dataDir?: SyncAcquireResponseDataDir1 | any | string | null | undefined; - keyPrefix?: any | null | undefined; - service: "local-kv"; - type: SyncAcquireResponseTypeKv5; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseConnectionUrlSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseConnectionUrl = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseConnectionUrlSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseConnectionUrlUnion = - | SyncAcquireResponseConnectionUrl - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDatabaseSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDatabase = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDatabaseSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseKeyPrefixSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseKeyPrefix1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseKeyPrefixSecretRef1; -}; - -export const SyncAcquireResponseTypeKv4 = { - Kv: "kv", -} as const; -export type SyncAcquireResponseTypeKv4 = ClosedEnum< - typeof SyncAcquireResponseTypeKv4 ->; - -/** - * Redis KV binding configuration - */ -export type SyncAcquireResponseExternalBindingsRedis = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - connectionUrl?: - | SyncAcquireResponseConnectionUrl - | any - | string - | null - | undefined; - database?: any | null | undefined; - keyPrefix?: any | null | undefined; - service: "redis"; - type: SyncAcquireResponseTypeKv4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseAccountNameSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseAccountName2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseAccountNameSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseAccountNameUnion2 = - | SyncAcquireResponseAccountName2 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseResourceGroupNameSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseResourceGroupName1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseResourceGroupNameSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseResourceGroupNameUnion1 = - | SyncAcquireResponseResourceGroupName1 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseTableNameSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseTableName2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseTableNameSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseTableNameUnion2 = - | SyncAcquireResponseTableName2 - | any - | string; - -export const SyncAcquireResponseTypeKv3 = { - Kv: "kv", -} as const; -export type SyncAcquireResponseTypeKv3 = ClosedEnum< - typeof SyncAcquireResponseTypeKv3 ->; - -/** - * Azure Table Storage KV binding configuration - */ -export type SyncAcquireResponseExternalBindingsTablestorage = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - accountName?: - | SyncAcquireResponseAccountName2 - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - resourceGroupName?: - | SyncAcquireResponseResourceGroupName1 - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - tableName?: SyncAcquireResponseTableName2 | any | string | null | undefined; - service: "tablestorage"; - type: SyncAcquireResponseTypeKv3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseCollectionNameSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseCollectionName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseCollectionNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseCollectionNameUnion = - | SyncAcquireResponseCollectionName - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDatabaseIdSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseDatabaseId = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseDatabaseIdSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseDatabaseIdUnion = - | SyncAcquireResponseDatabaseId - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseProjectIdSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseProjectId = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseProjectIdSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseProjectIdUnion = - | SyncAcquireResponseProjectId - | any - | string; - -export const SyncAcquireResponseTypeKv2 = { - Kv: "kv", -} as const; -export type SyncAcquireResponseTypeKv2 = ClosedEnum< - typeof SyncAcquireResponseTypeKv2 ->; - -/** - * GCP Firestore KV binding configuration - */ -export type SyncAcquireResponseExternalBindingsFirestore = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - collectionName?: - | SyncAcquireResponseCollectionName - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - databaseId?: SyncAcquireResponseDatabaseId | any | string | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - projectId?: SyncAcquireResponseProjectId | any | string | null | undefined; - service: "firestore"; - type: SyncAcquireResponseTypeKv2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseEndpointUrlSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseEndpointUrl = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseEndpointUrlSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseRegionSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseRegion = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseRegionSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseRegionUnion = - | SyncAcquireResponseRegion - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseTableNameSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseTableName1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseTableNameSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseTableNameUnion1 = - | SyncAcquireResponseTableName1 - | any - | string; - -export const SyncAcquireResponseTypeKv1 = { - Kv: "kv", -} as const; -export type SyncAcquireResponseTypeKv1 = ClosedEnum< - typeof SyncAcquireResponseTypeKv1 ->; - -/** - * AWS DynamoDB KV binding configuration - */ -export type SyncAcquireResponseExternalBindingsDynamodb = { - endpointUrl?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - region?: SyncAcquireResponseRegion | any | string | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - tableName?: SyncAcquireResponseTableName1 | any | string | null | undefined; - service: "dynamodb"; - type: SyncAcquireResponseTypeKv1; -}; - -/** - * Represents a KV binding for key-value storage across platforms - */ -export type SyncAcquireResponseExternalBindingsUnion3 = - | SyncAcquireResponseExternalBindingsDynamodb - | SyncAcquireResponseExternalBindingsFirestore - | SyncAcquireResponseExternalBindingsTablestorage - | SyncAcquireResponseExternalBindingsRedis - | SyncAcquireResponseExternalBindingsLocalKv; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseQueuePathSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseQueuePath = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseQueuePathSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseQueuePathUnion = - | SyncAcquireResponseQueuePath - | any - | string; - -export const SyncAcquireResponseTypeQueue4 = { - Queue: "queue", -} as const; -export type SyncAcquireResponseTypeQueue4 = ClosedEnum< - typeof SyncAcquireResponseTypeQueue4 ->; - -/** - * Local queue parameters - */ -export type SyncAcquireResponseExternalBindingsLocalQueue = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - queuePath?: SyncAcquireResponseQueuePath | any | string | null | undefined; - service: "local-queue"; - type: SyncAcquireResponseTypeQueue4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseNamespaceSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseNamespace1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseNamespaceSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseNamespaceUnion1 = - | SyncAcquireResponseNamespace1 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseQueueNameSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseQueueName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseQueueNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseQueueNameUnion = - | SyncAcquireResponseQueueName - | any - | string; - -export const SyncAcquireResponseTypeQueue3 = { - Queue: "queue", -} as const; -export type SyncAcquireResponseTypeQueue3 = ClosedEnum< - typeof SyncAcquireResponseTypeQueue3 ->; - -/** - * Azure Service Bus parameters - */ -export type SyncAcquireResponseExternalBindingsServicebus = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - namespace?: SyncAcquireResponseNamespace1 | any | string | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - queueName?: SyncAcquireResponseQueueName | any | string | null | undefined; - service: "servicebus"; - type: SyncAcquireResponseTypeQueue3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseSubscriptionSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseSubscription = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseSubscriptionSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseSubscriptionUnion = - | SyncAcquireResponseSubscription - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseTopicSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseTopic = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseTopicSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseTopicUnion = - | SyncAcquireResponseTopic - | any - | string; - -export const SyncAcquireResponseTypeQueue2 = { - Queue: "queue", -} as const; -export type SyncAcquireResponseTypeQueue2 = ClosedEnum< - typeof SyncAcquireResponseTypeQueue2 ->; - -/** - * GCP Pub/Sub parameters - */ -export type SyncAcquireResponseExternalBindingsPubsub = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - subscription?: - | SyncAcquireResponseSubscription - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - topic?: SyncAcquireResponseTopic | any | string | null | undefined; - service: "pubsub"; - type: SyncAcquireResponseTypeQueue2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseQueueUrlSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseQueueUrl = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseQueueUrlSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseQueueUrlUnion = - | SyncAcquireResponseQueueUrl - | any - | string; - -export const SyncAcquireResponseTypeQueue1 = { - Queue: "queue", -} as const; -export type SyncAcquireResponseTypeQueue1 = ClosedEnum< - typeof SyncAcquireResponseTypeQueue1 ->; - -/** - * AWS SQS queue parameters - */ -export type SyncAcquireResponseExternalBindingsSqs = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - queueUrl?: SyncAcquireResponseQueueUrl | any | string | null | undefined; - service: "sqs"; - type: SyncAcquireResponseTypeQueue1; -}; - -/** - * Binding parameters for Queue at runtime or in templates. - */ -export type SyncAcquireResponseExternalBindingsUnion2 = - | SyncAcquireResponseExternalBindingsSqs - | SyncAcquireResponseExternalBindingsPubsub - | SyncAcquireResponseExternalBindingsServicebus - | SyncAcquireResponseExternalBindingsLocalQueue; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseStoragePathSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseStoragePath = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseStoragePathSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseStoragePathUnion = - | SyncAcquireResponseStoragePath - | any - | string; - -export const SyncAcquireResponseTypeStorage4 = { - Storage: "storage", -} as const; -export type SyncAcquireResponseTypeStorage4 = ClosedEnum< - typeof SyncAcquireResponseTypeStorage4 ->; - -/** - * Local filesystem storage binding configuration - */ -export type SyncAcquireResponseExternalBindingsLocalStorage = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - storagePath?: - | SyncAcquireResponseStoragePath - | any - | string - | null - | undefined; - service: "local-storage"; - type: SyncAcquireResponseTypeStorage4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseBucketNameSecretRef2 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseBucketName2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseBucketNameSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseBucketNameUnion2 = - | SyncAcquireResponseBucketName2 - | any - | string; - -export const SyncAcquireResponseTypeStorage3 = { - Storage: "storage", -} as const; -export type SyncAcquireResponseTypeStorage3 = ClosedEnum< - typeof SyncAcquireResponseTypeStorage3 ->; - -/** - * Google Cloud Storage binding configuration - */ -export type SyncAcquireResponseExternalBindingsGcs = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - bucketName?: SyncAcquireResponseBucketName2 | any | string | null | undefined; - service: "gcs"; - type: SyncAcquireResponseTypeStorage3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseAccountNameSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseAccountName1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseAccountNameSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseAccountNameUnion1 = - | SyncAcquireResponseAccountName1 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseContainerNameSecretRef = { - key: string; - name: string; -}; - -export type SyncAcquireResponseContainerName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseContainerNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseContainerNameUnion = - | SyncAcquireResponseContainerName - | any - | string; - -export const SyncAcquireResponseTypeStorage2 = { - Storage: "storage", -} as const; -export type SyncAcquireResponseTypeStorage2 = ClosedEnum< - typeof SyncAcquireResponseTypeStorage2 ->; - -/** - * Azure Blob Storage binding configuration - */ -export type SyncAcquireResponseExternalBindingsBlob = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - accountName?: - | SyncAcquireResponseAccountName1 - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - containerName?: - | SyncAcquireResponseContainerName - | any - | string - | null - | undefined; - service: "blob"; - type: SyncAcquireResponseTypeStorage2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncAcquireResponseBucketNameSecretRef1 = { - key: string; - name: string; -}; - -export type SyncAcquireResponseBucketName1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncAcquireResponseBucketNameSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncAcquireResponseBucketNameUnion1 = - | SyncAcquireResponseBucketName1 - | any - | string; - -export const SyncAcquireResponseTypeStorage1 = { - Storage: "storage", -} as const; -export type SyncAcquireResponseTypeStorage1 = ClosedEnum< - typeof SyncAcquireResponseTypeStorage1 ->; - -/** - * AWS S3 storage binding configuration - */ -export type SyncAcquireResponseExternalBindingsS3 = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - bucketName?: SyncAcquireResponseBucketName1 | any | string | null | undefined; - service: "s3"; - type: SyncAcquireResponseTypeStorage1; -}; - -/** - * Service-type based storage binding that supports multiple storage providers - */ -export type SyncAcquireResponseExternalBindingsUnion1 = - | SyncAcquireResponseExternalBindingsS3 - | SyncAcquireResponseExternalBindingsBlob - | SyncAcquireResponseExternalBindingsGcs - | SyncAcquireResponseExternalBindingsLocalStorage; - -/** - * Represents a binding to pre-existing infrastructure. - * - * @remarks - * - * The binding type must match the resource type it's applied to. - * Validated at runtime by the executor. - */ -export type SyncAcquireResponseExternalBindingsUnion6 = - | SyncAcquireResponseExternalBindingsContainerAppsEnvironment - | SyncAcquireResponseExternalBindingsS3 - | SyncAcquireResponseExternalBindingsBlob - | SyncAcquireResponseExternalBindingsGcs - | SyncAcquireResponseExternalBindingsLocalStorage - | SyncAcquireResponseExternalBindingsSqs - | SyncAcquireResponseExternalBindingsPubsub - | SyncAcquireResponseExternalBindingsServicebus - | SyncAcquireResponseExternalBindingsLocalQueue - | SyncAcquireResponseExternalBindingsDynamodb - | SyncAcquireResponseExternalBindingsFirestore - | SyncAcquireResponseExternalBindingsTablestorage - | SyncAcquireResponseExternalBindingsRedis - | SyncAcquireResponseExternalBindingsLocalKv - | SyncAcquireResponseExternalBindingsEcr - | SyncAcquireResponseExternalBindingsAcr - | SyncAcquireResponseExternalBindingsGar - | SyncAcquireResponseExternalBindingsLocal - | SyncAcquireResponseExternalBindingsParameterStore - | SyncAcquireResponseExternalBindingsSecretManager - | SyncAcquireResponseExternalBindingsKeyVault - | SyncAcquireResponseExternalBindingsKubernetesSecret - | SyncAcquireResponseExternalBindingsLocalVault; - -export const SyncAcquireResponsePlatformKubernetes = { - Kubernetes: "kubernetes", -} as const; -export type SyncAcquireResponsePlatformKubernetes = ClosedEnum< - typeof SyncAcquireResponsePlatformKubernetes ->; - -export type SyncAcquireResponseManagementConfigKubernetes = { - platform: SyncAcquireResponsePlatformKubernetes; -}; - -export const SyncAcquireResponseConfigPlatformAzure = { - Azure: "azure", -} as const; -export type SyncAcquireResponseConfigPlatformAzure = ClosedEnum< - typeof SyncAcquireResponseConfigPlatformAzure ->; - -/** - * Azure management configuration extracted from stack settings - */ -export type SyncAcquireResponseManagementConfigAzure = { - /** - * The managing Azure Tenant ID for cross-tenant access - */ - managingTenantId: string; - /** - * OIDC issuer URL trusted by the target-side managed identity. - */ - oidcIssuer: string; - /** - * OIDC subject claim trusted by the target-side managed identity. - */ - oidcSubject: string; - platform: SyncAcquireResponseConfigPlatformAzure; -}; - -export const SyncAcquireResponseConfigPlatformGcp = { - Gcp: "gcp", -} as const; -export type SyncAcquireResponseConfigPlatformGcp = ClosedEnum< - typeof SyncAcquireResponseConfigPlatformGcp ->; - -/** - * GCP management configuration extracted from stack settings - */ -export type SyncAcquireResponseManagementConfigGcp = { - /** - * Service account email for management roles - */ - serviceAccountEmail: string; - platform: SyncAcquireResponseConfigPlatformGcp; -}; - -export const SyncAcquireResponseConfigPlatformAws = { - Aws: "aws", -} as const; -export type SyncAcquireResponseConfigPlatformAws = ClosedEnum< - typeof SyncAcquireResponseConfigPlatformAws ->; - -/** - * AWS management configuration extracted from stack settings - */ -export type SyncAcquireResponseManagementConfigAws = { - /** - * The managing AWS IAM role ARN that can assume cross-account roles - */ - managingRoleArn: string; - platform: SyncAcquireResponseConfigPlatformAws; -}; - -export type SyncAcquireResponseManagementConfigUnion = - | SyncAcquireResponseManagementConfigAzure - | SyncAcquireResponseManagementConfigAws - | SyncAcquireResponseManagementConfigGcp - | SyncAcquireResponseManagementConfigKubernetes - | any; - -/** - * OTLP log export configuration for a deployment. - * - * @remarks - * - * When set, injected compute runtimes export captured application logs - * through the given endpoint via OTLP/HTTP; which resources are injected - * is platform-dependent. Workers and daemons read auth headers from a - * runtime-only secret — never from application environment variables. - * Containers have no runtime wrapper, so they get the endpoint and auth - * header as plain OTEL env vars for the application's own exporter. - */ -export type SyncAcquireResponseMonitoring = { - /** - * Auth header value in "key=value,..." format. - * - * @remarks - * Example: "authorization=Bearer " - */ - logsAuthHeader: string; - /** - * Full OTLP logs endpoint URL. - * - * @remarks - * Example: "https:///v1/logs" - */ - logsEndpoint: string; - /** - * Auth header value for the metrics endpoint in "key=value,..." format (optional). - * - * @remarks - * - * When absent, `logs_auth_header` is reused for metrics -- suitable when the same - * credential covers both signals. When present (e.g. Axiom with separate datasets), - * this value is used exclusively for metrics. - * - * Example: "authorization=Bearer ,x-axiom-dataset=" - */ - metricsAuthHeader?: string | null | undefined; - /** - * Full OTLP metrics endpoint URL (optional). - * - * @remarks - * When set, the worker runtime exports its own VM/container orchestration metrics here. - * Example: "https://api.axiom.co/v1/metrics" - */ - metricsEndpoint?: string | null | undefined; - /** - * Resource attributes attached to every OTLP signal emitted for this deployment. - * - * @remarks - * - * Platform managers use this for stable identity such as `alien.workspace_id`, - * `alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`. - * Runtime-specific resource attributes such as `service.name` remain owned by - * the runtime/exporter. - */ - resourceAttributes?: { [k: string]: string } | undefined; -}; - -export type SyncAcquireResponseMonitoringUnion = - | SyncAcquireResponseMonitoring - | any; - -export type SyncAcquireResponsePoolsAutoscale = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Maximum machine count. - */ - max: number; - /** - * Minimum machine count. - */ - min: number; - mode: "autoscale"; -}; - -export type SyncAcquireResponsePoolsFixed = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Number of machines to run. - */ - machines: number; - mode: "fixed"; -}; - -/** - * User-selected deployment settings for one compute pool. - */ -export type SyncAcquireResponsePoolsUnion = - | SyncAcquireResponsePoolsFixed - | SyncAcquireResponsePoolsAutoscale; - -/** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. - */ -export type SyncAcquireResponseCompute = { - /** - * Selected compute choices keyed by pool ID. - */ - pools?: { - [k: string]: - | SyncAcquireResponsePoolsFixed - | SyncAcquireResponsePoolsAutoscale; - } | undefined; -}; - -export type SyncAcquireResponseComputeUnion = SyncAcquireResponseCompute | any; - -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export const SyncAcquireResponseDeploymentModel = { - Push: "push", - Pull: "pull", -} as const; -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export type SyncAcquireResponseDeploymentModel = ClosedEnum< - typeof SyncAcquireResponseDeploymentModel ->; - -export type SyncAcquireResponseAwsStackSettings = { - certificateArn: string; -}; - -export type SyncAcquireResponseStackSettingsAwsUnion = - | SyncAcquireResponseAwsStackSettings - | any; - -export type SyncAcquireResponseAzureStackSettings = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; -}; - -export type SyncAcquireResponseStackSettingsAzureUnion = - | SyncAcquireResponseAzureStackSettings - | any; - -export type SyncAcquireResponseGcpStackSettings = { - certificateName: string; -}; - -export type SyncAcquireResponseStackSettingsGcpUnion = - | SyncAcquireResponseGcpStackSettings - | any; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type SyncAcquireResponseTlsSecretRef = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; -}; - -export type SyncAcquireResponseDomainsKubernetes = { - /** - * Namespace-scoped Kubernetes TLS Secret reference. - */ - tlsSecretRef: SyncAcquireResponseTlsSecretRef; -}; - -export type SyncAcquireResponseDomainsKubernetesUnion = - | SyncAcquireResponseDomainsKubernetes - | any; - -/** - * Platform-specific certificate references for custom domains. - */ -export type SyncAcquireResponseDomainsCertificate = { - aws?: SyncAcquireResponseAwsStackSettings | any | null | undefined; - azure?: SyncAcquireResponseAzureStackSettings | any | null | undefined; - gcp?: SyncAcquireResponseGcpStackSettings | any | null | undefined; - kubernetes?: SyncAcquireResponseDomainsKubernetes | any | null | undefined; -}; - -/** - * Custom domain configuration for a single resource. - */ -export type SyncAcquireResponseCustomDomains = { - /** - * Platform-specific certificate references for custom domains. - */ - certificate: SyncAcquireResponseDomainsCertificate; - /** - * Fully qualified domain name to use. - */ - domain: string; -}; - -/** - * Domain configuration for the stack. - * - * @remarks - * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. - */ -export type SyncAcquireResponseDomains = { - /** - * Custom domain configuration per resource ID. - */ - customDomains?: - | { [k: string]: SyncAcquireResponseCustomDomains } - | null - | undefined; -}; - -export type SyncAcquireResponseDomainsUnion = SyncAcquireResponseDomains | any; - -/** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ -export type SyncAcquireResponseStackSettingsExternalBindings = {}; - -/** - * How heartbeat health checks are handled. - */ -export const SyncAcquireResponseHeartbeats = { - Off: "off", - On: "on", -} as const; -/** - * How heartbeat health checks are handled. - */ -export type SyncAcquireResponseHeartbeats = ClosedEnum< - typeof SyncAcquireResponseHeartbeats ->; - -/** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. - */ -export type SyncAcquireResponseCloud = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; -}; - -export type SyncAcquireResponseCloudUnion = SyncAcquireResponseCloud | any; - -/** - * Ownership model for the Kubernetes cluster. - */ -export const SyncAcquireResponseOwnership = { - Managed: "managed", - Existing: "existing", - External: "external", -} as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type SyncAcquireResponseOwnership = ClosedEnum< - typeof SyncAcquireResponseOwnership ->; - -/** - * Kubernetes cluster setup settings. - */ -export type SyncAcquireResponseCluster = { - cloud?: SyncAcquireResponseCloud | any | null | undefined; - /** - * Namespace where the Alien chart and application resources run. - */ - namespace?: string | null | undefined; - /** - * Ownership model for the Kubernetes cluster. - */ - ownership: SyncAcquireResponseOwnership; -}; - -export type SyncAcquireResponseClusterUnion = SyncAcquireResponseCluster | any; - -export type SyncAcquireResponseCertificateNone2 = { - mode: "none"; -}; - -export type SyncAcquireResponseCertificateManagedTLSSecret2 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; -}; - -export type SyncAcquireResponseCertificateAwsAcmArn2 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; -}; - -export type SyncAcquireResponseCertificateManagedAcmImport2 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; - /** - * Tags applied to runtime-imported ACM certificates. - */ - tags?: { [k: string]: string } | undefined; -}; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type SyncAcquireResponseCertificateTLSSecretRef2 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; - mode: "tlsSecretRef"; -}; - -/** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ -export type SyncAcquireResponseCertificateUnion2 = - | SyncAcquireResponseCertificateTLSSecretRef2 - | SyncAcquireResponseCertificateManagedAcmImport2 - | SyncAcquireResponseCertificateAwsAcmArn2 - | SyncAcquireResponseCertificateManagedTLSSecret2 - | SyncAcquireResponseCertificateNone2; - -export const SyncAcquireResponseModeCustom = { - Custom: "custom", -} as const; -export type SyncAcquireResponseModeCustom = ClosedEnum< - typeof SyncAcquireResponseModeCustom ->; - -export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4 = - ClosedEnum< - typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4 - >; - -export type SyncAcquireResponseProviderAzureApplicationGatewayForContainers4 = { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4; -}; - -export const SyncAcquireResponseProviderGkeGatewayEnum4 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncAcquireResponseProviderGkeGatewayEnum4 = ClosedEnum< - typeof SyncAcquireResponseProviderGkeGatewayEnum4 ->; - -export type SyncAcquireResponseProviderGkeGateway4 = { - provider: SyncAcquireResponseProviderGkeGatewayEnum4; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const SyncAcquireResponseProviderAwsAlbEnum4 = { - AwsAlb: "awsAlb", -} as const; -export type SyncAcquireResponseProviderAwsAlbEnum4 = ClosedEnum< - typeof SyncAcquireResponseProviderAwsAlbEnum4 ->; - -export type SyncAcquireResponseProviderAwsAlb4 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncAcquireResponseProviderAwsAlbEnum4; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type SyncAcquireResponseProviderUnion4 = - | SyncAcquireResponseProviderAwsAlb4 - | SyncAcquireResponseProviderAzureApplicationGatewayForContainers4 - | SyncAcquireResponseProviderGkeGateway4 - | any; - -/** - * Shared Gateway API route profile values. - */ -export type SyncAcquireResponseRouteGateway2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - /** - * Listener port, usually 443. - */ - listenerPort: number; - provider?: - | SyncAcquireResponseProviderAwsAlb4 - | SyncAcquireResponseProviderAzureApplicationGatewayForContainers4 - | SyncAcquireResponseProviderGkeGateway4 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3 = - ClosedEnum< - typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3 - >; - -export type SyncAcquireResponseProviderAzureApplicationGatewayForContainers3 = { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3; -}; - -export const SyncAcquireResponseProviderGkeGatewayEnum3 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncAcquireResponseProviderGkeGatewayEnum3 = ClosedEnum< - typeof SyncAcquireResponseProviderGkeGatewayEnum3 ->; - -export type SyncAcquireResponseProviderGkeGateway3 = { - provider: SyncAcquireResponseProviderGkeGatewayEnum3; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const SyncAcquireResponseProviderAwsAlbEnum3 = { - AwsAlb: "awsAlb", -} as const; -export type SyncAcquireResponseProviderAwsAlbEnum3 = ClosedEnum< - typeof SyncAcquireResponseProviderAwsAlbEnum3 ->; - -export type SyncAcquireResponseProviderAwsAlb3 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncAcquireResponseProviderAwsAlbEnum3; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type SyncAcquireResponseProviderUnion3 = - | SyncAcquireResponseProviderAwsAlb3 - | SyncAcquireResponseProviderAzureApplicationGatewayForContainers3 - | SyncAcquireResponseProviderGkeGateway3 - | any; - -/** - * Shared Ingress route profile values. - */ -export type SyncAcquireResponseRouteIngress2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - provider?: - | SyncAcquireResponseProviderAwsAlb3 - | SyncAcquireResponseProviderAzureApplicationGatewayForContainers3 - | SyncAcquireResponseProviderGkeGateway3 - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** - * Kubernetes route API selected for public endpoints. - */ -export type SyncAcquireResponseRouteUnion2 = - | SyncAcquireResponseRouteIngress2 - | SyncAcquireResponseRouteGateway2; - -export type SyncAcquireResponseExposureCustom = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | SyncAcquireResponseCertificateTLSSecretRef2 - | SyncAcquireResponseCertificateManagedAcmImport2 - | SyncAcquireResponseCertificateAwsAcmArn2 - | SyncAcquireResponseCertificateManagedTLSSecret2 - | SyncAcquireResponseCertificateNone2; - /** - * Hostname routed by the Kubernetes public endpoint. - */ - domain: string; - mode: SyncAcquireResponseModeCustom; - /** - * Kubernetes route API selected for public endpoints. - */ - route: SyncAcquireResponseRouteIngress2 | SyncAcquireResponseRouteGateway2; -}; - -export type SyncAcquireResponseCertificateNone1 = { - mode: "none"; -}; - -export type SyncAcquireResponseCertificateManagedTLSSecret1 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; -}; - -export type SyncAcquireResponseCertificateAwsAcmArn1 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; -}; - -export type SyncAcquireResponseCertificateManagedAcmImport1 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; - /** - * Tags applied to runtime-imported ACM certificates. - */ - tags?: { [k: string]: string } | undefined; -}; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type SyncAcquireResponseCertificateTLSSecretRef1 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; - mode: "tlsSecretRef"; -}; - -/** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ -export type SyncAcquireResponseCertificateUnion1 = - | SyncAcquireResponseCertificateTLSSecretRef1 - | SyncAcquireResponseCertificateManagedAcmImport1 - | SyncAcquireResponseCertificateAwsAcmArn1 - | SyncAcquireResponseCertificateManagedTLSSecret1 - | SyncAcquireResponseCertificateNone1; - -export const SyncAcquireResponseModeGenerated = { - Generated: "generated", -} as const; -export type SyncAcquireResponseModeGenerated = ClosedEnum< - typeof SyncAcquireResponseModeGenerated ->; - -export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum2 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum2 = - ClosedEnum< - typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum2 - >; - -export type SyncAcquireResponseProviderAzureApplicationGatewayForContainers2 = { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum2; -}; - -export const SyncAcquireResponseProviderGkeGatewayEnum2 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncAcquireResponseProviderGkeGatewayEnum2 = ClosedEnum< - typeof SyncAcquireResponseProviderGkeGatewayEnum2 ->; - -export type SyncAcquireResponseProviderGkeGateway2 = { - provider: SyncAcquireResponseProviderGkeGatewayEnum2; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const SyncAcquireResponseProviderAwsAlbEnum2 = { - AwsAlb: "awsAlb", -} as const; -export type SyncAcquireResponseProviderAwsAlbEnum2 = ClosedEnum< - typeof SyncAcquireResponseProviderAwsAlbEnum2 ->; - -export type SyncAcquireResponseProviderAwsAlb2 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncAcquireResponseProviderAwsAlbEnum2; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type SyncAcquireResponseProviderUnion2 = - | SyncAcquireResponseProviderAwsAlb2 - | SyncAcquireResponseProviderAzureApplicationGatewayForContainers2 - | SyncAcquireResponseProviderGkeGateway2 - | any; - -/** - * Shared Gateway API route profile values. - */ -export type SyncAcquireResponseRouteGateway1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - /** - * Listener port, usually 443. - */ - listenerPort: number; - provider?: - | SyncAcquireResponseProviderAwsAlb2 - | SyncAcquireResponseProviderAzureApplicationGatewayForContainers2 - | SyncAcquireResponseProviderGkeGateway2 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum1 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum1 = - ClosedEnum< - typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum1 - >; - -export type SyncAcquireResponseProviderAzureApplicationGatewayForContainers1 = { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum1; -}; - -export const SyncAcquireResponseProviderGkeGatewayEnum1 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncAcquireResponseProviderGkeGatewayEnum1 = ClosedEnum< - typeof SyncAcquireResponseProviderGkeGatewayEnum1 ->; - -export type SyncAcquireResponseProviderGkeGateway1 = { - provider: SyncAcquireResponseProviderGkeGatewayEnum1; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const SyncAcquireResponseProviderAwsAlbEnum1 = { - AwsAlb: "awsAlb", -} as const; -export type SyncAcquireResponseProviderAwsAlbEnum1 = ClosedEnum< - typeof SyncAcquireResponseProviderAwsAlbEnum1 ->; - -export type SyncAcquireResponseProviderAwsAlb1 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncAcquireResponseProviderAwsAlbEnum1; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type SyncAcquireResponseProviderUnion1 = - | SyncAcquireResponseProviderAwsAlb1 - | SyncAcquireResponseProviderAzureApplicationGatewayForContainers1 - | SyncAcquireResponseProviderGkeGateway1 - | any; - -/** - * Shared Ingress route profile values. - */ -export type SyncAcquireResponseRouteIngress1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - provider?: - | SyncAcquireResponseProviderAwsAlb1 - | SyncAcquireResponseProviderAzureApplicationGatewayForContainers1 - | SyncAcquireResponseProviderGkeGateway1 - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** - * Kubernetes route API selected for public endpoints. - */ -export type SyncAcquireResponseRouteUnion1 = - | SyncAcquireResponseRouteIngress1 - | SyncAcquireResponseRouteGateway1; - -export type SyncAcquireResponseExposureGenerated = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | SyncAcquireResponseCertificateTLSSecretRef1 - | SyncAcquireResponseCertificateManagedAcmImport1 - | SyncAcquireResponseCertificateAwsAcmArn1 - | SyncAcquireResponseCertificateManagedTLSSecret1 - | SyncAcquireResponseCertificateNone1; - mode: SyncAcquireResponseModeGenerated; - /** - * Kubernetes route API selected for public endpoints. - */ - route: SyncAcquireResponseRouteIngress1 | SyncAcquireResponseRouteGateway1; -}; - -export const SyncAcquireResponseModeDisabled = { - Disabled: "disabled", -} as const; -export type SyncAcquireResponseModeDisabled = ClosedEnum< - typeof SyncAcquireResponseModeDisabled ->; - -export type SyncAcquireResponseExposureDisabled = { - mode: SyncAcquireResponseModeDisabled; -}; - -export type SyncAcquireResponseExposureUnion = - | SyncAcquireResponseExposureCustom - | SyncAcquireResponseExposureGenerated - | SyncAcquireResponseExposureDisabled - | any; - -/** - * Kubernetes runtime substrate configuration. - * - * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. - */ -export type SyncAcquireResponseKubernetes = { - cluster?: SyncAcquireResponseCluster | any | null | undefined; - exposure?: - | SyncAcquireResponseExposureCustom - | SyncAcquireResponseExposureGenerated - | SyncAcquireResponseExposureDisabled - | any - | null - | undefined; -}; - -export type SyncAcquireResponseKubernetesUnion = - | SyncAcquireResponseKubernetes - | any; - -export const SyncAcquireResponseTypeByoVnetAzure = { - ByoVnetAzure: "byo-vnet-azure", -} as const; -export type SyncAcquireResponseTypeByoVnetAzure = ClosedEnum< - typeof SyncAcquireResponseTypeByoVnetAzure ->; - -export type SyncAcquireResponseNetworkByoVnetAzure = { - /** - * Name of the dedicated classic Application Gateway subnet within the VNet. - */ - applicationGatewaySubnetName?: string | null | undefined; - /** - * Name of the private subnet within the VNet - */ - privateSubnetName: string; - /** - * Name of the public subnet within the VNet - */ - publicSubnetName: string; - type: SyncAcquireResponseTypeByoVnetAzure; - /** - * The full resource ID of the existing VNet - */ - vnetResourceId: string; -}; - -export const SyncAcquireResponseTypeByoVpcGcp = { - ByoVpcGcp: "byo-vpc-gcp", -} as const; -export type SyncAcquireResponseTypeByoVpcGcp = ClosedEnum< - typeof SyncAcquireResponseTypeByoVpcGcp ->; - -export type SyncAcquireResponseNetworkByoVpcGcp = { - /** - * The name of the existing VPC network - */ - networkName: string; - /** - * The region of the subnet - */ - region: string; - /** - * The name of the subnet to use - */ - subnetName: string; - type: SyncAcquireResponseTypeByoVpcGcp; -}; - -export const SyncAcquireResponseTypeByoVpcAws = { - ByoVpcAws: "byo-vpc-aws", -} as const; -export type SyncAcquireResponseTypeByoVpcAws = ClosedEnum< - typeof SyncAcquireResponseTypeByoVpcAws ->; - -export type SyncAcquireResponseNetworkByoVpcAws = { - /** - * IDs of private subnets - */ - privateSubnetIds: Array; - /** - * IDs of public subnets (required for public ingress) - */ - publicSubnetIds: Array; - /** - * Optional security group IDs to use - */ - securityGroupIds?: Array | undefined; - type: SyncAcquireResponseTypeByoVpcAws; - /** - * The ID of the existing VPC - */ - vpcId: string; -}; - -export const SyncAcquireResponseTypeCreate = { - Create: "create", -} as const; -export type SyncAcquireResponseTypeCreate = ClosedEnum< - typeof SyncAcquireResponseTypeCreate ->; - -export type SyncAcquireResponseNetworkCreate = { - /** - * Number of availability zones (default: 2). - */ - availabilityZones?: number | undefined; - /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). - */ - cidr?: string | null | undefined; - type: SyncAcquireResponseTypeCreate; -}; - -export const SyncAcquireResponseTypeUseDefault = { - UseDefault: "use-default", -} as const; -export type SyncAcquireResponseTypeUseDefault = ClosedEnum< - typeof SyncAcquireResponseTypeUseDefault ->; - -export type SyncAcquireResponseNetworkUseDefault = { - type: SyncAcquireResponseTypeUseDefault; -}; - -export type SyncAcquireResponseNetworkUnion = - | SyncAcquireResponseNetworkByoVpcAws - | SyncAcquireResponseNetworkByoVpcGcp - | SyncAcquireResponseNetworkByoVnetAzure - | SyncAcquireResponseNetworkUseDefault - | SyncAcquireResponseNetworkCreate - | any; - -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export const SyncAcquireResponseTelemetry = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export type SyncAcquireResponseTelemetry = ClosedEnum< - typeof SyncAcquireResponseTelemetry ->; - -/** - * How updates are delivered to the deployment. - */ -export const SyncAcquireResponseUpdates = { - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How updates are delivered to the deployment. - */ -export type SyncAcquireResponseUpdates = ClosedEnum< - typeof SyncAcquireResponseUpdates ->; - -/** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ -export type SyncAcquireResponseStackSettings = { - compute?: SyncAcquireResponseCompute | any | null | undefined; - /** - * Deployment model: how updates are delivered to the remote environment. - */ - deploymentModel?: SyncAcquireResponseDeploymentModel | undefined; - domains?: SyncAcquireResponseDomains | any | null | undefined; - /** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ - externalBindings?: - | SyncAcquireResponseStackSettingsExternalBindings - | null - | undefined; - /** - * How heartbeat health checks are handled. - */ - heartbeats?: SyncAcquireResponseHeartbeats | undefined; - kubernetes?: SyncAcquireResponseKubernetes | any | null | undefined; - network?: - | SyncAcquireResponseNetworkByoVpcAws - | SyncAcquireResponseNetworkByoVpcGcp - | SyncAcquireResponseNetworkByoVnetAzure - | SyncAcquireResponseNetworkUseDefault - | SyncAcquireResponseNetworkCreate - | any - | null - | undefined; - /** - * How telemetry (logs, metrics, traces) is handled. - */ - telemetry?: SyncAcquireResponseTelemetry | undefined; - /** - * How updates are delivered to the deployment. - */ - updates?: SyncAcquireResponseUpdates | undefined; -}; - -/** - * Deployment configuration - */ -export type SyncAcquireResponseConfig = { - /** - * Allow frozen resource changes during updates - * - * @remarks - * When true, skips the frozen resources compatibility check. - * This requires running with elevated cloud credentials. - */ - allowFrozenChanges?: boolean | undefined; - basePlatform?: SyncAcquireResponseBasePlatformEnum | any | null | undefined; - computeBackend?: - | SyncAcquireResponseComputeBackendHorizon - | any - | null - | undefined; - /** - * Human-readable deployment name for cloud console metadata. - * - * @remarks - * - * This is separate from the physical resource prefix in StackState. It is - * used only for display text such as IAM role descriptions, service - * account descriptions, and custom role titles. - */ - deploymentName?: string | null | undefined; - /** - * Deployment token for pull authentication with the manager's registry. - * - * @remarks - * - * Used by controllers to configure registry credentials so cloud platforms - * and K8s can pull images from the manager's `/v2/` endpoint. - */ - deploymentToken?: string | null | undefined; - domainMetadata?: SyncAcquireResponseDomainMetadata | any | null | undefined; - /** - * Snapshot of environment variables at a point in time - */ - environmentVariables: SyncAcquireResponseEnvironmentVariables; - /** - * Map from resource ID to external binding. - * - * @remarks - * - * Validated at runtime: binding type must match resource type. - */ - externalBindings?: { - [k: string]: - | SyncAcquireResponseExternalBindingsContainerAppsEnvironment - | SyncAcquireResponseExternalBindingsS3 - | SyncAcquireResponseExternalBindingsBlob - | SyncAcquireResponseExternalBindingsGcs - | SyncAcquireResponseExternalBindingsLocalStorage - | SyncAcquireResponseExternalBindingsSqs - | SyncAcquireResponseExternalBindingsPubsub - | SyncAcquireResponseExternalBindingsServicebus - | SyncAcquireResponseExternalBindingsLocalQueue - | SyncAcquireResponseExternalBindingsDynamodb - | SyncAcquireResponseExternalBindingsFirestore - | SyncAcquireResponseExternalBindingsTablestorage - | SyncAcquireResponseExternalBindingsRedis - | SyncAcquireResponseExternalBindingsLocalKv - | SyncAcquireResponseExternalBindingsEcr - | SyncAcquireResponseExternalBindingsAcr - | SyncAcquireResponseExternalBindingsGar - | SyncAcquireResponseExternalBindingsLocal - | SyncAcquireResponseExternalBindingsParameterStore - | SyncAcquireResponseExternalBindingsSecretManager - | SyncAcquireResponseExternalBindingsKeyVault - | SyncAcquireResponseExternalBindingsKubernetesSecret - | SyncAcquireResponseExternalBindingsLocalVault; - } | undefined; - managementConfig?: - | SyncAcquireResponseManagementConfigAzure - | SyncAcquireResponseManagementConfigAws - | SyncAcquireResponseManagementConfigGcp - | SyncAcquireResponseManagementConfigKubernetes - | any - | null - | undefined; - /** - * Manager base URL (e.g., "https://manager.alien.dev"). - * - * @remarks - * - * The manager IS the container registry — its `/v2/` endpoint serves as - * the OCI Distribution API. Controllers derive the proxy host from this - * to configure pull auth (RegistryCredentials, imagePullSecrets). - * - * When None (e.g., `alien dev`), controllers use image URIs as-is. - */ - managerUrl?: string | null | undefined; - monitoring?: SyncAcquireResponseMonitoring | any | null | undefined; - /** - * Native image registry host+prefix for platforms that require it. - * - * @remarks - * - * Lambda (ECR) and Cloud Run (GAR) require native registry URIs. Other - * runtimes, including Azure Container Apps, pull through the manager's - * registry proxy. - * - * Derived by the manager from the artifact registry binding: - * - ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}` - * - GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}` - */ - nativeImageHost?: string | null | undefined; - /** - * Public endpoint URLs for exposed resources (optional override). - * - * @remarks - * - * Use this only when a caller already knows the public URL. Managed public - * endpoint flows should prefer `domain_metadata` plus controller-reported - * load balancer outputs so DNS, certificate renewal, and route readiness - * stay tied to the resource state. - * - * If not set, platforms determine public endpoint URLs from other sources: - * - Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS - * - Local: `http://localhost:{allocated_port}` - * - Custom or disabled exposure: no public endpoint URL unless a controller reports one - * - * Outer key: resource ID. Inner key: endpoint name. Value: public URL. - */ - publicEndpoints?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ - stackSettings?: SyncAcquireResponseStackSettings | undefined; -}; - -export type SyncAcquireResponseDeployment = { - /** - * ID of the acquired deployment - */ - deploymentId: string; - /** - * Project ID the deployment belongs to - */ - projectId: string; - setupMethod?: DeploymentSetupMethod | undefined; - /** - * Current deployment state (includes releases) - */ - current: SyncAcquireResponseCurrent; - /** - * Deployment configuration - */ - config: SyncAcquireResponseConfig; -}; - -export type Failure = { - /** - * ID of the deployment that failed - */ - deploymentId: string; - /** - * Project ID the deployment belongs to - */ - projectId: string; - error: APIError; -}; - -/** - * Acquired deployments and failures - */ -export type SyncAcquireResponse = { - /** - * List of acquired deployments with deployment context - */ - deployments: Array; - /** - * List of deployments that failed during context building (locks already released) - */ - failures: Array; -}; - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseTypeStringList$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseTypeStringList, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseDefaultStringList$inboundSchema: - z.ZodType = z - .object({ - type: SyncAcquireResponseCurrentReleaseTypeStringList$inboundSchema, - value: z.array(z.string()), - }); - -export function syncAcquireResponseCurrentReleaseDefaultStringListFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseDefaultStringList, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseDefaultStringList$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseDefaultStringList' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseTypeBoolean$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseTypeBoolean, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseDefaultBoolean$inboundSchema: - z.ZodType = z - .object({ - type: SyncAcquireResponseCurrentReleaseTypeBoolean$inboundSchema, - value: z.boolean(), - }); - -export function syncAcquireResponseCurrentReleaseDefaultBooleanFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseDefaultBoolean, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseDefaultBoolean$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseDefaultBoolean' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseTypeNumber$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseTypeNumber, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseDefaultNumber$inboundSchema: - z.ZodType = z.object( - { - type: SyncAcquireResponseCurrentReleaseTypeNumber$inboundSchema, - value: z.string(), - }, - ); - -export function syncAcquireResponseCurrentReleaseDefaultNumberFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseDefaultNumber, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseDefaultNumber$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseDefaultNumber' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseTypeString$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseTypeString, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseDefaultString$inboundSchema: - z.ZodType = z.object( - { - type: SyncAcquireResponseCurrentReleaseTypeString$inboundSchema, - value: z.string(), - }, - ); - -export function syncAcquireResponseCurrentReleaseDefaultStringFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseDefaultString, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseDefaultString$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseDefaultString' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseDefaultUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseCurrentReleaseDefaultString$inboundSchema), - z.lazy(() => SyncAcquireResponseCurrentReleaseDefaultNumber$inboundSchema), - z.lazy(() => SyncAcquireResponseCurrentReleaseDefaultBoolean$inboundSchema), - z.lazy(() => - SyncAcquireResponseCurrentReleaseDefaultStringList$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseCurrentReleaseDefaultUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseDefaultUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseDefaultUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseDefaultUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseTypeEnvEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseTypeEnvEnum, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseTypeUnion$inboundSchema: - z.ZodType = z.union([ - SyncAcquireResponseCurrentReleaseTypeEnvEnum$inboundSchema, - z.any(), - ]); - -export function syncAcquireResponseCurrentReleaseTypeUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseTypeUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseTypeUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseTypeUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseEnv$inboundSchema: z.ZodType< - SyncAcquireResponseCurrentReleaseEnv, - unknown -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncAcquireResponseCurrentReleaseTypeEnvEnum$inboundSchema, - z.any(), - ]), - ).optional(), -}); - -export function syncAcquireResponseCurrentReleaseEnvFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseEnv' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseKind$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseCurrentReleaseKind -> = z.enum(SyncAcquireResponseCurrentReleaseKind); - -/** @internal */ -export const SyncAcquireResponseCurrentReleasePlatform$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseCurrentReleasePlatform -> = z.enum(SyncAcquireResponseCurrentReleasePlatform); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProvidedBy$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseProvidedBy, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseValidation$inboundSchema: - z.ZodType = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseCurrentReleaseValidationFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseValidation, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseValidation$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseValidation' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseValidationUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncAcquireResponseCurrentReleaseValidation$inboundSchema), - z.any(), - ]); - -export function syncAcquireResponseCurrentReleaseValidationUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseValidationUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseValidationUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseValidationUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseInput$inboundSchema: z.ZodType< - SyncAcquireResponseCurrentReleaseInput, - unknown -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseDefaultString$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseCurrentReleaseDefaultNumber$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseCurrentReleaseDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseCurrentReleaseDefaultStringList$inboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array(z.lazy(() => SyncAcquireResponseCurrentReleaseEnv$inboundSchema)) - .optional(), - id: z.string(), - kind: SyncAcquireResponseCurrentReleaseKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncAcquireResponseCurrentReleasePlatform$inboundSchema), - ).optional(), - providedBy: z.array( - SyncAcquireResponseCurrentReleaseProvidedBy$inboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseCurrentReleaseValidation$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncAcquireResponseCurrentReleaseInputFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseInput$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseInput' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseManagementEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseManagementEnum, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponseCurrentReleaseOverrideAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponseCurrentReleaseOverrideAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideAwStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseOverrideEffect, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncAcquireResponseCurrentReleaseOverrideEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAw' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideAzureResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideAzureStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideAzure$inboundSchema: - z.ZodType = z.object( - { - binding: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }, - ); - -export function syncAcquireResponseCurrentReleaseOverrideAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideConditionResource$inboundSchema: - z.ZodType< - SyncAcquireResponseCurrentReleaseOverrideConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseCurrentReleaseOverrideResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideConditionUnion$inboundSchema: - z.ZodType = - z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseCurrentReleaseOverrideConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideGcpStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseCurrentReleaseOverrideGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverridePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseCurrentReleaseOverrideGcp$inboundSchema - )), - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseOverridePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverridePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverridePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverridePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverride$inboundSchema: z.ZodType< - SyncAcquireResponseCurrentReleaseOverride, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponseCurrentReleaseOverridePlatforms$inboundSchema - ), -}); - -export function syncAcquireResponseCurrentReleaseOverrideFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverride, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverride$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverride' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseOverrideUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseCurrentReleaseOverride$inboundSchema), - z.string(), - ]); - -export function syncAcquireResponseCurrentReleaseOverrideUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseOverrideUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseOverrideUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseManagement2$inboundSchema: - z.ZodType = z.object({ - override: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncAcquireResponseCurrentReleaseOverride$inboundSchema), - z.string(), - ])), - ), - }); - -export function syncAcquireResponseCurrentReleaseManagement2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseManagement2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseManagement2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseManagement2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponseCurrentReleaseExtendAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendAwStack$inboundSchema: - z.ZodType = z.object( - { - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }, - ); - -export function syncAcquireResponseCurrentReleaseExtendAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendAwStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseExtendAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseExtendEffect, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendAwGrant$inboundSchema: - z.ZodType = z.object( - { - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }, - ); - -export function syncAcquireResponseCurrentReleaseExtendAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendAw$inboundSchema: z.ZodType< - SyncAcquireResponseCurrentReleaseExtendAw, - unknown -> = z.object({ - binding: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncAcquireResponseCurrentReleaseExtendEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponseCurrentReleaseExtendAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAw' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseExtendAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseExtendAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendAzureStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseExtendAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseCurrentReleaseExtendAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendAzure$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseCurrentReleaseExtendAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendConditionResource$inboundSchema: - z.ZodType = - z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseExtendConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseCurrentReleaseExtendResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseExtendGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseExtendConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendCondition$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseCurrentReleaseExtendConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseExtendGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendGcpStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseExtendGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseCurrentReleaseExtendGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseCurrentReleaseExtendGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendPlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendGcp$inboundSchema - )), - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseExtendPlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendPlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendPlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendPlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtend$inboundSchema: z.ZodType< - SyncAcquireResponseCurrentReleaseExtend, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponseCurrentReleaseExtendPlatforms$inboundSchema - ), -}); - -export function syncAcquireResponseCurrentReleaseExtendFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtend, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtend$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtend' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseExtendUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseCurrentReleaseExtend$inboundSchema), - z.string(), - ]); - -export function syncAcquireResponseCurrentReleaseExtendUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseExtendUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseExtendUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseManagement1$inboundSchema: - z.ZodType = z.object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncAcquireResponseCurrentReleaseExtend$inboundSchema), - z.string(), - ])), - ), - }); - -export function syncAcquireResponseCurrentReleaseManagement1FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseManagement1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseManagement1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseManagement1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseManagementUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncAcquireResponseCurrentReleaseManagement1$inboundSchema), - z.lazy(() => SyncAcquireResponseCurrentReleaseManagement2$inboundSchema), - SyncAcquireResponseCurrentReleaseManagementEnum$inboundSchema, - ]); - -export function syncAcquireResponseCurrentReleaseManagementUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseManagementUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseManagementUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseManagementUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponseCurrentReleaseProfileAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponseCurrentReleaseProfileAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileAwStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseProfileAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseProfileEffect, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseCurrentReleaseProfileAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncAcquireResponseCurrentReleaseProfileEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseCurrentReleaseProfileAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAw' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseProfileAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseProfileAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileAzureStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseProfileAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseCurrentReleaseProfileAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileAzure$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseCurrentReleaseProfileAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileConditionResource$inboundSchema: - z.ZodType< - SyncAcquireResponseCurrentReleaseProfileConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseProfileConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseCurrentReleaseProfileResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseProfileGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseProfileConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileCondition$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseCurrentReleaseProfileConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseProfileGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileGcpStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseProfileGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseCurrentReleaseProfileGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseCurrentReleaseProfileGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfilePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseCurrentReleaseProfileGcp$inboundSchema - )), - ).optional(), - }); - -export function syncAcquireResponseCurrentReleaseProfilePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfilePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfilePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfilePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfile$inboundSchema: z.ZodType< - SyncAcquireResponseCurrentReleaseProfile, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponseCurrentReleaseProfilePlatforms$inboundSchema - ), -}); - -export function syncAcquireResponseCurrentReleaseProfileFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfile, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfile$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfile' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseProfileUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseCurrentReleaseProfile$inboundSchema), - z.string(), - ]); - -export function syncAcquireResponseCurrentReleaseProfileUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseProfileUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseProfileUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleasePermissions$inboundSchema: - z.ZodType = z.object({ - management: z.union([ - z.lazy(() => SyncAcquireResponseCurrentReleaseManagement1$inboundSchema), - z.lazy(() => SyncAcquireResponseCurrentReleaseManagement2$inboundSchema), - SyncAcquireResponseCurrentReleaseManagementEnum$inboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncAcquireResponseCurrentReleaseProfile$inboundSchema - ), - z.string(), - ]), - ), - ), - ), - }); - -export function syncAcquireResponseCurrentReleasePermissionsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleasePermissions, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleasePermissions$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleasePermissions' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseConfig$inboundSchema: z.ZodType< - SyncAcquireResponseCurrentReleaseConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncAcquireResponseCurrentReleaseConfigFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseConfig, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseConfig$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseDependency$inboundSchema: - z.ZodType = z.object({ - id: z.string(), - type: z.string(), - }); - -export function syncAcquireResponseCurrentReleaseDependencyFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseDependency, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseDependency' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseLifecycle$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseLifecycle, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseResources$inboundSchema: - z.ZodType = z.object({ - config: z.lazy(() => SyncAcquireResponseCurrentReleaseConfig$inboundSchema), - dependencies: z.array( - z.lazy(() => SyncAcquireResponseCurrentReleaseDependency$inboundSchema), - ), - lifecycle: SyncAcquireResponseCurrentReleaseLifecycle$inboundSchema, - remoteAccess: z.boolean().optional(), - }); - -export function syncAcquireResponseCurrentReleaseResourcesFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCurrentReleaseResources, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseResources$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCurrentReleaseResources' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseSupportedPlatform$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseCurrentReleaseSupportedPlatform, - ); - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseStack$inboundSchema: z.ZodType< - SyncAcquireResponseCurrentReleaseStack, - unknown -> = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncAcquireResponseCurrentReleaseInput$inboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncAcquireResponseCurrentReleasePermissions$inboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncAcquireResponseCurrentReleaseResources$inboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncAcquireResponseCurrentReleaseSupportedPlatform$inboundSchema), - ).optional(), -}); - -export function syncAcquireResponseCurrentReleaseStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentRelease$inboundSchema: z.ZodType< - SyncAcquireResponseCurrentRelease, - unknown -> = z.object({ - description: z.nullable(z.string()).optional(), - releaseId: z.string(), - stack: z.lazy(() => SyncAcquireResponseCurrentReleaseStack$inboundSchema), - version: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponseCurrentReleaseFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseCurrentRelease$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentRelease' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentReleaseUnion$inboundSchema: z.ZodType< - SyncAcquireResponseCurrentReleaseUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseCurrentRelease$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseCurrentReleaseUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCurrentReleaseUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrentReleaseUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePlatformTest$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponsePlatformTest -> = z.enum(SyncAcquireResponsePlatformTest); - -/** @internal */ -export const SyncAcquireResponseEnvironmentInfoTest$inboundSchema: z.ZodType< - SyncAcquireResponseEnvironmentInfoTest, - unknown -> = z.object({ - testId: z.string(), - platform: SyncAcquireResponsePlatformTest$inboundSchema, -}); - -export function syncAcquireResponseEnvironmentInfoTestFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseEnvironmentInfoTest$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseEnvironmentInfoTest' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePlatformLocal$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponsePlatformLocal -> = z.enum(SyncAcquireResponsePlatformLocal); - -/** @internal */ -export const SyncAcquireResponseEnvironmentInfoLocal$inboundSchema: z.ZodType< - SyncAcquireResponseEnvironmentInfoLocal, - unknown -> = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: SyncAcquireResponsePlatformLocal$inboundSchema, -}); - -export function syncAcquireResponseEnvironmentInfoLocalFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseEnvironmentInfoLocal, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseEnvironmentInfoLocal$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseEnvironmentInfoLocal' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentPlatformAzure$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseCurrentPlatformAzure -> = z.enum(SyncAcquireResponseCurrentPlatformAzure); - -/** @internal */ -export const SyncAcquireResponseEnvironmentInfoAzure$inboundSchema: z.ZodType< - SyncAcquireResponseEnvironmentInfoAzure, - unknown -> = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: SyncAcquireResponseCurrentPlatformAzure$inboundSchema, -}); - -export function syncAcquireResponseEnvironmentInfoAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseEnvironmentInfoAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseEnvironmentInfoAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseEnvironmentInfoAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentPlatformGcp$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseCurrentPlatformGcp -> = z.enum(SyncAcquireResponseCurrentPlatformGcp); - -/** @internal */ -export const SyncAcquireResponseEnvironmentInfoGcp$inboundSchema: z.ZodType< - SyncAcquireResponseEnvironmentInfoGcp, - unknown -> = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: SyncAcquireResponseCurrentPlatformGcp$inboundSchema, -}); - -export function syncAcquireResponseEnvironmentInfoGcpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseEnvironmentInfoGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseEnvironmentInfoGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentPlatformAws$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseCurrentPlatformAws -> = z.enum(SyncAcquireResponseCurrentPlatformAws); - -/** @internal */ -export const SyncAcquireResponseEnvironmentInfoAws$inboundSchema: z.ZodType< - SyncAcquireResponseEnvironmentInfoAws, - unknown -> = z.object({ - accountId: z.string(), - region: z.string(), - platform: SyncAcquireResponseCurrentPlatformAws$inboundSchema, -}); - -export function syncAcquireResponseEnvironmentInfoAwsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseEnvironmentInfoAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseEnvironmentInfoAws' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseEnvironmentInfoUnion$inboundSchema: z.ZodType< - SyncAcquireResponseEnvironmentInfoUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseEnvironmentInfoGcp$inboundSchema), - z.lazy(() => SyncAcquireResponseEnvironmentInfoAzure$inboundSchema), - z.lazy(() => SyncAcquireResponseEnvironmentInfoLocal$inboundSchema), - z.lazy(() => SyncAcquireResponseEnvironmentInfoAws$inboundSchema), - z.lazy(() => SyncAcquireResponseEnvironmentInfoTest$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseEnvironmentInfoUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseEnvironmentInfoUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseEnvironmentInfoUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseEnvironmentInfoUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseError$inboundSchema: z.ZodType< - SyncAcquireResponseError, - unknown -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); - -export function syncAcquireResponseErrorFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseError$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseError' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseErrorUnion$inboundSchema: z.ZodType< - SyncAcquireResponseErrorUnion, - unknown -> = z.union([z.lazy(() => SyncAcquireResponseError$inboundSchema), z.any()]); - -export function syncAcquireResponseErrorUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseErrorUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrentPlatform$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseCurrentPlatform -> = z.enum(SyncAcquireResponseCurrentPlatform); - -/** @internal */ -export const SyncAcquireResponsePreparedStackTypeStringList$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponsePreparedStackTypeStringList, - ); - -/** @internal */ -export const SyncAcquireResponsePreparedStackDefaultStringList$inboundSchema: - z.ZodType = z - .object({ - type: SyncAcquireResponsePreparedStackTypeStringList$inboundSchema, - value: z.array(z.string()), - }); - -export function syncAcquireResponsePreparedStackDefaultStringListFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackDefaultStringList, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackDefaultStringList$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackDefaultStringList' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackTypeBoolean$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponsePreparedStackTypeBoolean, - ); - -/** @internal */ -export const SyncAcquireResponsePreparedStackDefaultBoolean$inboundSchema: - z.ZodType = z.object( - { - type: SyncAcquireResponsePreparedStackTypeBoolean$inboundSchema, - value: z.boolean(), - }, - ); - -export function syncAcquireResponsePreparedStackDefaultBooleanFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackDefaultBoolean, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackDefaultBoolean$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackDefaultBoolean' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackTypeNumber$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponsePreparedStackTypeNumber, - ); - -/** @internal */ -export const SyncAcquireResponsePreparedStackDefaultNumber$inboundSchema: - z.ZodType = z.object({ - type: SyncAcquireResponsePreparedStackTypeNumber$inboundSchema, - value: z.string(), - }); - -export function syncAcquireResponsePreparedStackDefaultNumberFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackDefaultNumber, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackDefaultNumber$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackDefaultNumber' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackTypeString$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponsePreparedStackTypeString, - ); - -/** @internal */ -export const SyncAcquireResponsePreparedStackDefaultString$inboundSchema: - z.ZodType = z.object({ - type: SyncAcquireResponsePreparedStackTypeString$inboundSchema, - value: z.string(), - }); - -export function syncAcquireResponsePreparedStackDefaultStringFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackDefaultString, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackDefaultString$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackDefaultString' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackDefaultUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponsePreparedStackDefaultString$inboundSchema), - z.lazy(() => SyncAcquireResponsePreparedStackDefaultNumber$inboundSchema), - z.lazy(() => SyncAcquireResponsePreparedStackDefaultBoolean$inboundSchema), - z.lazy(() => - SyncAcquireResponsePreparedStackDefaultStringList$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponsePreparedStackDefaultUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackDefaultUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackDefaultUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackDefaultUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackTypeEnvEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponsePreparedStackTypeEnvEnum, - ); - -/** @internal */ -export const SyncAcquireResponsePreparedStackTypeUnion$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackTypeUnion, - unknown -> = z.union([ - SyncAcquireResponsePreparedStackTypeEnvEnum$inboundSchema, - z.any(), -]); - -export function syncAcquireResponsePreparedStackTypeUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackTypeUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackTypeUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackTypeUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackEnv$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackEnv, - unknown -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncAcquireResponsePreparedStackTypeEnvEnum$inboundSchema, - z.any(), - ]), - ).optional(), -}); - -export function syncAcquireResponsePreparedStackEnvFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackEnv' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackKind$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponsePreparedStackKind -> = z.enum(SyncAcquireResponsePreparedStackKind); - -/** @internal */ -export const SyncAcquireResponsePreparedStackPlatform$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponsePreparedStackPlatform -> = z.enum(SyncAcquireResponsePreparedStackPlatform); - -/** @internal */ -export const SyncAcquireResponsePreparedStackProvidedBy$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponsePreparedStackProvidedBy, - ); - -/** @internal */ -export const SyncAcquireResponsePreparedStackValidation$inboundSchema: - z.ZodType = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponsePreparedStackValidationFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackValidation, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackValidation$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackValidation' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackValidationUnion$inboundSchema: - z.ZodType = z.union( - [ - z.lazy(() => SyncAcquireResponsePreparedStackValidation$inboundSchema), - z.any(), - ], - ); - -export function syncAcquireResponsePreparedStackValidationUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackValidationUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackValidationUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackValidationUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackInput$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackInput, - unknown -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponsePreparedStackDefaultString$inboundSchema), - z.lazy(() => - SyncAcquireResponsePreparedStackDefaultNumber$inboundSchema - ), - z.lazy(() => - SyncAcquireResponsePreparedStackDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncAcquireResponsePreparedStackDefaultStringList$inboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array(z.lazy(() => SyncAcquireResponsePreparedStackEnv$inboundSchema)) - .optional(), - id: z.string(), - kind: SyncAcquireResponsePreparedStackKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncAcquireResponsePreparedStackPlatform$inboundSchema), - ).optional(), - providedBy: z.array(SyncAcquireResponsePreparedStackProvidedBy$inboundSchema), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponsePreparedStackValidation$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncAcquireResponsePreparedStackInputFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackInput$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackInput' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackManagementEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponsePreparedStackManagementEnum, - ); - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponsePreparedStackOverrideAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponsePreparedStackOverrideAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideAwStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponsePreparedStackOverrideAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponsePreparedStackOverrideEffect, - ); - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponsePreparedStackOverrideAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncAcquireResponsePreparedStackOverrideEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponsePreparedStackOverrideAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAw' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponsePreparedStackOverrideAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponsePreparedStackOverrideAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideAzureStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponsePreparedStackOverrideAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponsePreparedStackOverrideAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideAzure$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponsePreparedStackOverrideAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideConditionResource$inboundSchema: - z.ZodType< - SyncAcquireResponsePreparedStackOverrideConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponsePreparedStackOverrideConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideResourceConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponsePreparedStackOverrideResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackOverrideConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponsePreparedStackOverrideResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackOverrideConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponsePreparedStackOverrideGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideConditionStack$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponsePreparedStackOverrideConditionStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideConditionStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideConditionStack$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideConditionStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideStackConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponsePreparedStackOverrideStackConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackOverrideConditionStack$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponsePreparedStackOverrideStackConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideStackConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideStackConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideStackConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackOverrideConditionStack$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponsePreparedStackOverrideGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideGcpStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponsePreparedStackOverrideGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponsePreparedStackOverrideGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponsePreparedStackOverrideGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponsePreparedStackOverrideGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverridePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponsePreparedStackOverrideAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponsePreparedStackOverrideAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponsePreparedStackOverrideGcp$inboundSchema - )), - ).optional(), - }); - -export function syncAcquireResponsePreparedStackOverridePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverridePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverridePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverridePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverride$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackOverride, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponsePreparedStackOverridePlatforms$inboundSchema - ), -}); - -export function syncAcquireResponsePreparedStackOverrideFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverride, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverride$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverride' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackOverrideUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponsePreparedStackOverride$inboundSchema), - z.string(), - ]); - -export function syncAcquireResponsePreparedStackOverrideUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackOverrideUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackOverrideUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackOverrideUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackManagement2$inboundSchema: - z.ZodType = z.object({ - override: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncAcquireResponsePreparedStackOverride$inboundSchema), - z.string(), - ])), - ), - }); - -export function syncAcquireResponsePreparedStackManagement2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackManagement2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackManagement2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackManagement2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponsePreparedStackExtendAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendAwStack$inboundSchema: - z.ZodType = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponsePreparedStackExtendAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponsePreparedStackExtendAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponsePreparedStackExtendAwStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponsePreparedStackExtendAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponsePreparedStackExtendEffect, - ); - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendAwGrant$inboundSchema: - z.ZodType = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponsePreparedStackExtendAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendAw$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackExtendAw, - unknown -> = z.object({ - binding: z.lazy(() => - SyncAcquireResponsePreparedStackExtendAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncAcquireResponsePreparedStackExtendEffect$inboundSchema.optional(), - grant: z.lazy(() => - SyncAcquireResponsePreparedStackExtendAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponsePreparedStackExtendAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendAw' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponsePreparedStackExtendAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponsePreparedStackExtendAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponsePreparedStackExtendAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponsePreparedStackExtendAzureStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponsePreparedStackExtendAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponsePreparedStackExtendAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendAzure$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponsePreparedStackExtendAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponsePreparedStackExtendAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponsePreparedStackExtendAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendConditionResource$inboundSchema: - z.ZodType = - z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponsePreparedStackExtendConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendResourceConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponsePreparedStackExtendResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackExtendConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponsePreparedStackExtendResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackExtendConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponsePreparedStackExtendGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendConditionStack$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponsePreparedStackExtendConditionStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendConditionStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendConditionStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendConditionStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendStackConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponsePreparedStackExtendStackConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackExtendConditionStack$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponsePreparedStackExtendStackConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendStackConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendStackConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendStackConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendGcpStack$inboundSchema: - z.ZodType = z.object( - { - condition: z.nullable(z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackExtendConditionStack$inboundSchema - ), - z.any(), - ])).optional(), - scope: z.string(), - }, - ); - -export function syncAcquireResponsePreparedStackExtendGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponsePreparedStackExtendGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponsePreparedStackExtendGcpStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponsePreparedStackExtendGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendGcpGrant$inboundSchema: - z.ZodType = z.object( - { - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }, - ); - -export function syncAcquireResponsePreparedStackExtendGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendGcp$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackExtendGcp, - unknown -> = z.object({ - binding: z.lazy(() => - SyncAcquireResponsePreparedStackExtendGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponsePreparedStackExtendGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponsePreparedStackExtendGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendPlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponsePreparedStackExtendAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponsePreparedStackExtendAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponsePreparedStackExtendGcp$inboundSchema - )), - ).optional(), - }); - -export function syncAcquireResponsePreparedStackExtendPlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendPlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendPlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendPlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtend$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackExtend, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponsePreparedStackExtendPlatforms$inboundSchema - ), -}); - -export function syncAcquireResponsePreparedStackExtendFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtend$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackExtend' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackExtendUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponsePreparedStackExtend$inboundSchema), - z.string(), - ]); - -export function syncAcquireResponsePreparedStackExtendUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackExtendUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackExtendUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackExtendUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackManagement1$inboundSchema: - z.ZodType = z.object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncAcquireResponsePreparedStackExtend$inboundSchema), - z.string(), - ])), - ), - }); - -export function syncAcquireResponsePreparedStackManagement1FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackManagement1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackManagement1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackManagement1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackManagementUnion$inboundSchema: - z.ZodType = z.union( - [ - z.lazy(() => SyncAcquireResponsePreparedStackManagement1$inboundSchema), - z.lazy(() => SyncAcquireResponsePreparedStackManagement2$inboundSchema), - SyncAcquireResponsePreparedStackManagementEnum$inboundSchema, - ], - ); - -export function syncAcquireResponsePreparedStackManagementUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackManagementUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackManagementUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackManagementUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponsePreparedStackProfileAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileAwStack$inboundSchema: - z.ZodType = z.object( - { - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }, - ); - -export function syncAcquireResponsePreparedStackProfileAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponsePreparedStackProfileAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponsePreparedStackProfileAwStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponsePreparedStackProfileAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponsePreparedStackProfileEffect, - ); - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileAwGrant$inboundSchema: - z.ZodType = z.object( - { - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }, - ); - -export function syncAcquireResponsePreparedStackProfileAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileAw$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackProfileAw, - unknown -> = z.object({ - binding: z.lazy(() => - SyncAcquireResponsePreparedStackProfileAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncAcquireResponsePreparedStackProfileEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncAcquireResponsePreparedStackProfileAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponsePreparedStackProfileAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileAw' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponsePreparedStackProfileAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponsePreparedStackProfileAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponsePreparedStackProfileAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponsePreparedStackProfileAzureStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponsePreparedStackProfileAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponsePreparedStackProfileAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileAzure$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponsePreparedStackProfileAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponsePreparedStackProfileAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponsePreparedStackProfileAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileConditionResource$inboundSchema: - z.ZodType = - z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponsePreparedStackProfileConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileResourceConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponsePreparedStackProfileResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackProfileConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponsePreparedStackProfileResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackProfileConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponsePreparedStackProfileGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileConditionStack$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponsePreparedStackProfileConditionStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileConditionStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileConditionStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileConditionStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileStackConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponsePreparedStackProfileStackConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackProfileConditionStack$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponsePreparedStackProfileStackConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileStackConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileStackConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileStackConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponsePreparedStackProfileConditionStack$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponsePreparedStackProfileGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponsePreparedStackProfileGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponsePreparedStackProfileGcpStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponsePreparedStackProfileGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponsePreparedStackProfileGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponsePreparedStackProfileGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponsePreparedStackProfileGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponsePreparedStackProfileGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfilePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponsePreparedStackProfileAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponsePreparedStackProfileAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponsePreparedStackProfileGcp$inboundSchema - )), - ).optional(), - }); - -export function syncAcquireResponsePreparedStackProfilePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfilePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfilePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfilePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfile$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackProfile, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponsePreparedStackProfilePlatforms$inboundSchema - ), -}); - -export function syncAcquireResponsePreparedStackProfileFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfile, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfile$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfile' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackProfileUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponsePreparedStackProfile$inboundSchema), - z.string(), - ]); - -export function syncAcquireResponsePreparedStackProfileUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackProfileUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackProfileUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackProfileUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackPermissions$inboundSchema: - z.ZodType = z.object({ - management: z.union([ - z.lazy(() => SyncAcquireResponsePreparedStackManagement1$inboundSchema), - z.lazy(() => SyncAcquireResponsePreparedStackManagement2$inboundSchema), - SyncAcquireResponsePreparedStackManagementEnum$inboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => SyncAcquireResponsePreparedStackProfile$inboundSchema), - z.string(), - ]), - ), - ), - ), - }); - -export function syncAcquireResponsePreparedStackPermissionsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackPermissions, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackPermissions$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackPermissions' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackConfig$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncAcquireResponsePreparedStackConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackDependency$inboundSchema: - z.ZodType = z.object({ - id: z.string(), - type: z.string(), - }); - -export function syncAcquireResponsePreparedStackDependencyFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackDependency, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackDependency' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackLifecycle$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponsePreparedStackLifecycle -> = z.enum(SyncAcquireResponsePreparedStackLifecycle); - -/** @internal */ -export const SyncAcquireResponsePreparedStackResources$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackResources, - unknown -> = z.object({ - config: z.lazy(() => SyncAcquireResponsePreparedStackConfig$inboundSchema), - dependencies: z.array( - z.lazy(() => SyncAcquireResponsePreparedStackDependency$inboundSchema), - ), - lifecycle: SyncAcquireResponsePreparedStackLifecycle$inboundSchema, - remoteAccess: z.boolean().optional(), -}); - -export function syncAcquireResponsePreparedStackResourcesFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePreparedStackResources, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackResources$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePreparedStackResources' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackSupportedPlatform$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponsePreparedStackSupportedPlatform, - ); - -/** @internal */ -export const SyncAcquireResponsePreparedStack$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStack, - unknown -> = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncAcquireResponsePreparedStackInput$inboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncAcquireResponsePreparedStackPermissions$inboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncAcquireResponsePreparedStackResources$inboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncAcquireResponsePreparedStackSupportedPlatform$inboundSchema), - ).optional(), -}); - -export function syncAcquireResponsePreparedStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponsePreparedStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreparedStackUnion$inboundSchema: z.ZodType< - SyncAcquireResponsePreparedStackUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponsePreparedStack$inboundSchema), - z.any(), -]); - -export function syncAcquireResponsePreparedStackUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreparedStackUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreparedStackUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRuntimeMetadata$inboundSchema: z.ZodType< - SyncAcquireResponseRuntimeMetadata, - unknown -> = z.object({ - lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), - preparedStack: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponsePreparedStack$inboundSchema), - z.any(), - ]), - ).optional(), - registryAccessGranted: z.boolean().optional(), -}); - -export function syncAcquireResponseRuntimeMetadataFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRuntimeMetadata$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRuntimeMetadata' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRuntimeMetadataUnion$inboundSchema: z.ZodType< - SyncAcquireResponseRuntimeMetadataUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseRuntimeMetadata$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseRuntimeMetadataUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseRuntimeMetadataUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRuntimeMetadataUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseRuntimeMetadataUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackStatePlatform$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseStackStatePlatform -> = z.enum(SyncAcquireResponseStackStatePlatform); - -/** @internal */ -export const SyncAcquireResponseStackStateConfig$inboundSchema: z.ZodType< - SyncAcquireResponseStackStateConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncAcquireResponseStackStateConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStackStateConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseStackStateConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseControllerPlatformEnum$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseControllerPlatformEnum -> = z.enum(SyncAcquireResponseControllerPlatformEnum); - -/** @internal */ -export const SyncAcquireResponseControllerPlatformUnion$inboundSchema: - z.ZodType = z.union([ - SyncAcquireResponseControllerPlatformEnum$inboundSchema, - z.any(), - ]); - -export function syncAcquireResponseControllerPlatformUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseControllerPlatformUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseControllerPlatformUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseControllerPlatformUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackStateDependency$inboundSchema: z.ZodType< - SyncAcquireResponseStackStateDependency, - unknown -> = z.object({ - id: z.string(), - type: z.string(), -}); - -export function syncAcquireResponseStackStateDependencyFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseStackStateDependency, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStackStateDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseStackStateDependency' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackStateError$inboundSchema: z.ZodType< - SyncAcquireResponseStackStateError, - unknown -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); - -export function syncAcquireResponseStackStateErrorFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStackStateError$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseStackStateError' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackStateErrorUnion$inboundSchema: z.ZodType< - SyncAcquireResponseStackStateErrorUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseStackStateError$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseStackStateErrorUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseStackStateErrorUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStackStateErrorUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseStackStateErrorUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackStateLifecycleEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseStackStateLifecycleEnum, - ); - -/** @internal */ -export const SyncAcquireResponseLifecycleUnion$inboundSchema: z.ZodType< - SyncAcquireResponseLifecycleUnion, - unknown -> = z.union([ - SyncAcquireResponseStackStateLifecycleEnum$inboundSchema, - z.any(), -]); - -export function syncAcquireResponseLifecycleUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseLifecycleUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseOutputs$inboundSchema: z.ZodType< - SyncAcquireResponseOutputs, - unknown -> = collectExtraKeys$( - z.object({ - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncAcquireResponseOutputsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseOutputs$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseOutputs' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseOutputsUnion$inboundSchema: z.ZodType< - SyncAcquireResponseOutputsUnion, - unknown -> = z.union([z.lazy(() => SyncAcquireResponseOutputs$inboundSchema), z.any()]); - -export function syncAcquireResponseOutputsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseOutputsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreviousConfig$inboundSchema: z.ZodType< - SyncAcquireResponsePreviousConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncAcquireResponsePreviousConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreviousConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePreviousConfigUnion$inboundSchema: z.ZodType< - SyncAcquireResponsePreviousConfigUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponsePreviousConfig$inboundSchema), - z.any(), -]); - -export function syncAcquireResponsePreviousConfigUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePreviousConfigUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePreviousConfigUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackStateStatus$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseStackStateStatus -> = z.enum(SyncAcquireResponseStackStateStatus); - -/** @internal */ -export const SyncAcquireResponseStackStateResources$inboundSchema: z.ZodType< - SyncAcquireResponseStackStateResources, - unknown -> = z.object({ - _internal: z.nullable(z.any()).optional(), - config: z.lazy(() => SyncAcquireResponseStackStateConfig$inboundSchema), - controllerPlatform: z.nullable( - z.union([SyncAcquireResponseControllerPlatformEnum$inboundSchema, z.any()]), - ).optional(), - dependencies: z.array( - z.lazy(() => SyncAcquireResponseStackStateDependency$inboundSchema), - ).optional(), - error: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseStackStateError$inboundSchema), - z.any(), - ]), - ).optional(), - lastFailedState: z.nullable(z.any()).optional(), - lifecycle: z.nullable( - z.union([ - SyncAcquireResponseStackStateLifecycleEnum$inboundSchema, - z.any(), - ]), - ).optional(), - outputs: z.nullable( - z.union([z.lazy(() => SyncAcquireResponseOutputs$inboundSchema), z.any()]), - ).optional(), - previousConfig: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponsePreviousConfig$inboundSchema), - z.any(), - ]), - ).optional(), - remoteBindingParams: z.nullable(z.any()).optional(), - retryAttempt: z.int().optional(), - status: SyncAcquireResponseStackStateStatus$inboundSchema, - type: z.string(), -}).transform((v) => { - return remap$(v, { - "_internal": "internal", - }); -}); - -export function syncAcquireResponseStackStateResourcesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStackStateResources$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseStackStateResources' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackState$inboundSchema: z.ZodType< - SyncAcquireResponseStackState, - unknown -> = z.object({ - platform: SyncAcquireResponseStackStatePlatform$inboundSchema, - resourcePrefix: z.string(), - resources: z.record( - z.string(), - z.lazy(() => SyncAcquireResponseStackStateResources$inboundSchema), - ), -}); - -export function syncAcquireResponseStackStateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseStackState' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackStateUnion$inboundSchema: z.ZodType< - SyncAcquireResponseStackStateUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseStackState$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseStackStateUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStackStateUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseStackStateUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStatus$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseStatus -> = z.enum(SyncAcquireResponseStatus); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseTypeStringList$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTargetReleaseTypeStringList, - ); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseDefaultStringList$inboundSchema: - z.ZodType = z - .object({ - type: SyncAcquireResponseTargetReleaseTypeStringList$inboundSchema, - value: z.array(z.string()), - }); - -export function syncAcquireResponseTargetReleaseDefaultStringListFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseDefaultStringList, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseDefaultStringList$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseDefaultStringList' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseTypeBoolean$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTargetReleaseTypeBoolean, - ); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseDefaultBoolean$inboundSchema: - z.ZodType = z.object( - { - type: SyncAcquireResponseTargetReleaseTypeBoolean$inboundSchema, - value: z.boolean(), - }, - ); - -export function syncAcquireResponseTargetReleaseDefaultBooleanFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseDefaultBoolean, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseDefaultBoolean$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseDefaultBoolean' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseTypeNumber$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTargetReleaseTypeNumber, - ); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseDefaultNumber$inboundSchema: - z.ZodType = z.object({ - type: SyncAcquireResponseTargetReleaseTypeNumber$inboundSchema, - value: z.string(), - }); - -export function syncAcquireResponseTargetReleaseDefaultNumberFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseDefaultNumber, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseDefaultNumber$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseDefaultNumber' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseTypeString$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTargetReleaseTypeString, - ); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseDefaultString$inboundSchema: - z.ZodType = z.object({ - type: SyncAcquireResponseTargetReleaseTypeString$inboundSchema, - value: z.string(), - }); - -export function syncAcquireResponseTargetReleaseDefaultStringFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseDefaultString, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseDefaultString$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseDefaultString' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseDefaultUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseTargetReleaseDefaultString$inboundSchema), - z.lazy(() => SyncAcquireResponseTargetReleaseDefaultNumber$inboundSchema), - z.lazy(() => SyncAcquireResponseTargetReleaseDefaultBoolean$inboundSchema), - z.lazy(() => - SyncAcquireResponseTargetReleaseDefaultStringList$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseTargetReleaseDefaultUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseDefaultUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseDefaultUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseDefaultUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseTypeEnvEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTargetReleaseTypeEnvEnum, - ); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseTypeUnion$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseTypeUnion, - unknown -> = z.union([ - SyncAcquireResponseTargetReleaseTypeEnvEnum$inboundSchema, - z.any(), -]); - -export function syncAcquireResponseTargetReleaseTypeUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseTypeUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseTypeUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseTypeUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseEnv$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseEnv, - unknown -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncAcquireResponseTargetReleaseTypeEnvEnum$inboundSchema, - z.any(), - ]), - ).optional(), -}); - -export function syncAcquireResponseTargetReleaseEnvFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseEnv' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseKind$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTargetReleaseKind -> = z.enum(SyncAcquireResponseTargetReleaseKind); - -/** @internal */ -export const SyncAcquireResponseTargetReleasePlatform$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTargetReleasePlatform -> = z.enum(SyncAcquireResponseTargetReleasePlatform); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProvidedBy$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTargetReleaseProvidedBy, - ); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseValidation$inboundSchema: - z.ZodType = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseTargetReleaseValidationFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseValidation, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseValidation$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseValidation' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseValidationUnion$inboundSchema: - z.ZodType = z.union( - [ - z.lazy(() => SyncAcquireResponseTargetReleaseValidation$inboundSchema), - z.any(), - ], - ); - -export function syncAcquireResponseTargetReleaseValidationUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseValidationUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseValidationUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseValidationUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseInput$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseInput, - unknown -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseTargetReleaseDefaultString$inboundSchema), - z.lazy(() => - SyncAcquireResponseTargetReleaseDefaultNumber$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseTargetReleaseDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseTargetReleaseDefaultStringList$inboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array(z.lazy(() => SyncAcquireResponseTargetReleaseEnv$inboundSchema)) - .optional(), - id: z.string(), - kind: SyncAcquireResponseTargetReleaseKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncAcquireResponseTargetReleasePlatform$inboundSchema), - ).optional(), - providedBy: z.array(SyncAcquireResponseTargetReleaseProvidedBy$inboundSchema), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseTargetReleaseValidation$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncAcquireResponseTargetReleaseInputFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseInput$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseInput' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseManagementEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTargetReleaseManagementEnum, - ); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponseTargetReleaseOverrideAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponseTargetReleaseOverrideAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideAwStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseOverrideAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTargetReleaseOverrideEffect, - ); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseTargetReleaseOverrideAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncAcquireResponseTargetReleaseOverrideEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseTargetReleaseOverrideAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAw' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseTargetReleaseOverrideAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseTargetReleaseOverrideAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideAzureStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseOverrideAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseTargetReleaseOverrideAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideAzure$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseTargetReleaseOverrideAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideConditionResource$inboundSchema: - z.ZodType< - SyncAcquireResponseTargetReleaseOverrideConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseTargetReleaseOverrideConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseTargetReleaseOverrideResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponseTargetReleaseOverrideGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseTargetReleaseOverrideConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseTargetReleaseOverrideConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponseTargetReleaseOverrideGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideGcpStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseOverrideGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseTargetReleaseOverrideGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseTargetReleaseOverrideGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverridePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseTargetReleaseOverrideGcp$inboundSchema - )), - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseOverridePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverridePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverridePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverridePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverride$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseOverride, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponseTargetReleaseOverridePlatforms$inboundSchema - ), -}); - -export function syncAcquireResponseTargetReleaseOverrideFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverride, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverride$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverride' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseOverrideUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseTargetReleaseOverride$inboundSchema), - z.string(), - ]); - -export function syncAcquireResponseTargetReleaseOverrideUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseOverrideUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseOverrideUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseManagement2$inboundSchema: - z.ZodType = z.object({ - override: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncAcquireResponseTargetReleaseOverride$inboundSchema), - z.string(), - ])), - ), - }); - -export function syncAcquireResponseTargetReleaseManagement2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseManagement2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseManagement2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseManagement2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponseTargetReleaseExtendAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendAwStack$inboundSchema: - z.ZodType = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponseTargetReleaseExtendAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendAwStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseExtendAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTargetReleaseExtendEffect, - ); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendAwGrant$inboundSchema: - z.ZodType = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseTargetReleaseExtendAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendAw$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseExtendAw, - unknown -> = z.object({ - binding: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncAcquireResponseTargetReleaseExtendEffect$inboundSchema.optional(), - grant: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponseTargetReleaseExtendAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAw' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseTargetReleaseExtendAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseTargetReleaseExtendAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendAzureStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseExtendAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseTargetReleaseExtendAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendAzure$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseTargetReleaseExtendAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendConditionResource$inboundSchema: - z.ZodType = - z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseTargetReleaseExtendConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendResourceConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponseTargetReleaseExtendResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseTargetReleaseExtendResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponseTargetReleaseExtendGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseTargetReleaseExtendConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseExtendCondition$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseTargetReleaseExtendConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendGcpStack$inboundSchema: - z.ZodType = z.object( - { - condition: z.nullable(z.union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseExtendCondition$inboundSchema - ), - z.any(), - ])).optional(), - scope: z.string(), - }, - ); - -export function syncAcquireResponseTargetReleaseExtendGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendGcpStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseExtendGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendGcpGrant$inboundSchema: - z.ZodType = z.object( - { - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }, - ); - -export function syncAcquireResponseTargetReleaseExtendGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendGcp$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseExtendGcp, - unknown -> = z.object({ - binding: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponseTargetReleaseExtendGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendPlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseTargetReleaseExtendAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseTargetReleaseExtendAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseTargetReleaseExtendGcp$inboundSchema - )), - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseExtendPlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendPlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendPlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendPlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtend$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseExtend, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponseTargetReleaseExtendPlatforms$inboundSchema - ), -}); - -export function syncAcquireResponseTargetReleaseExtendFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtend$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtend' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseExtendUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseTargetReleaseExtend$inboundSchema), - z.string(), - ]); - -export function syncAcquireResponseTargetReleaseExtendUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseExtendUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseExtendUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseExtendUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseManagement1$inboundSchema: - z.ZodType = z.object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncAcquireResponseTargetReleaseExtend$inboundSchema), - z.string(), - ])), - ), - }); - -export function syncAcquireResponseTargetReleaseManagement1FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseManagement1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseManagement1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseManagement1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseManagementUnion$inboundSchema: - z.ZodType = z.union( - [ - z.lazy(() => SyncAcquireResponseTargetReleaseManagement1$inboundSchema), - z.lazy(() => SyncAcquireResponseTargetReleaseManagement2$inboundSchema), - SyncAcquireResponseTargetReleaseManagementEnum$inboundSchema, - ], - ); - -export function syncAcquireResponseTargetReleaseManagementUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseManagementUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseManagementUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseManagementUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncAcquireResponseTargetReleaseProfileAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileAwStack$inboundSchema: - z.ZodType = z.object( - { - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }, - ); - -export function syncAcquireResponseTargetReleaseProfileAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileAwStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseProfileAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTargetReleaseProfileEffect, - ); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileAwGrant$inboundSchema: - z.ZodType = z.object( - { - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }, - ); - -export function syncAcquireResponseTargetReleaseProfileAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileAw$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseProfileAw, - unknown -> = z.object({ - binding: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncAcquireResponseTargetReleaseProfileEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponseTargetReleaseProfileAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAw' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseTargetReleaseProfileAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncAcquireResponseTargetReleaseProfileAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileAzureStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseProfileAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseTargetReleaseProfileAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileAzure$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseTargetReleaseProfileAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileConditionResource$inboundSchema: - z.ZodType = - z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseTargetReleaseProfileConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileResourceConditionUnion$inboundSchema: - z.ZodType< - SyncAcquireResponseTargetReleaseProfileResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseProfileConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseTargetReleaseProfileResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseProfileConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponseTargetReleaseProfileGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncAcquireResponseTargetReleaseProfileConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseProfileCondition$inboundSchema - ), - z.any(), - ]); - -export function syncAcquireResponseTargetReleaseProfileConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncAcquireResponseTargetReleaseProfileCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncAcquireResponseTargetReleaseProfileGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileGcpStack$inboundSchema - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseProfileGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncAcquireResponseTargetReleaseProfileGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncAcquireResponseTargetReleaseProfileGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseTargetReleaseProfileGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfilePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseTargetReleaseProfileAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseTargetReleaseProfileAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncAcquireResponseTargetReleaseProfileGcp$inboundSchema - )), - ).optional(), - }); - -export function syncAcquireResponseTargetReleaseProfilePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfilePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfilePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfilePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfile$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseProfile, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncAcquireResponseTargetReleaseProfilePlatforms$inboundSchema - ), -}); - -export function syncAcquireResponseTargetReleaseProfileFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfile, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfile$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfile' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseProfileUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseTargetReleaseProfile$inboundSchema), - z.string(), - ]); - -export function syncAcquireResponseTargetReleaseProfileUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseProfileUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseProfileUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseProfileUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleasePermissions$inboundSchema: - z.ZodType = z.object({ - management: z.union([ - z.lazy(() => SyncAcquireResponseTargetReleaseManagement1$inboundSchema), - z.lazy(() => SyncAcquireResponseTargetReleaseManagement2$inboundSchema), - SyncAcquireResponseTargetReleaseManagementEnum$inboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => SyncAcquireResponseTargetReleaseProfile$inboundSchema), - z.string(), - ]), - ), - ), - ), - }); - -export function syncAcquireResponseTargetReleasePermissionsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleasePermissions, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleasePermissions$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleasePermissions' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseConfig$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncAcquireResponseTargetReleaseConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseDependency$inboundSchema: - z.ZodType = z.object({ - id: z.string(), - type: z.string(), - }); - -export function syncAcquireResponseTargetReleaseDependencyFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseDependency, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseDependency' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseLifecycle$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTargetReleaseLifecycle -> = z.enum(SyncAcquireResponseTargetReleaseLifecycle); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseResources$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseResources, - unknown -> = z.object({ - config: z.lazy(() => SyncAcquireResponseTargetReleaseConfig$inboundSchema), - dependencies: z.array( - z.lazy(() => SyncAcquireResponseTargetReleaseDependency$inboundSchema), - ), - lifecycle: SyncAcquireResponseTargetReleaseLifecycle$inboundSchema, - remoteAccess: z.boolean().optional(), -}); - -export function syncAcquireResponseTargetReleaseResourcesFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseTargetReleaseResources, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseResources$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseTargetReleaseResources' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseSupportedPlatform$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTargetReleaseSupportedPlatform, - ); - -/** @internal */ -export const SyncAcquireResponseTargetReleaseStack$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseStack, - unknown -> = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncAcquireResponseTargetReleaseInput$inboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncAcquireResponseTargetReleasePermissions$inboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncAcquireResponseTargetReleaseResources$inboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncAcquireResponseTargetReleaseSupportedPlatform$inboundSchema), - ).optional(), -}); - -export function syncAcquireResponseTargetReleaseStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseStack' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetRelease$inboundSchema: z.ZodType< - SyncAcquireResponseTargetRelease, - unknown -> = z.object({ - description: z.nullable(z.string()).optional(), - releaseId: z.string(), - stack: z.lazy(() => SyncAcquireResponseTargetReleaseStack$inboundSchema), - version: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponseTargetReleaseFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseTargetRelease$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetRelease' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTargetReleaseUnion$inboundSchema: z.ZodType< - SyncAcquireResponseTargetReleaseUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseTargetRelease$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseTargetReleaseUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTargetReleaseUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTargetReleaseUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCurrent$inboundSchema: z.ZodType< - SyncAcquireResponseCurrent, - unknown -> = z.object({ - currentRelease: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseCurrentRelease$inboundSchema), - z.any(), - ]), - ).optional(), - environmentInfo: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseEnvironmentInfoGcp$inboundSchema), - z.lazy(() => SyncAcquireResponseEnvironmentInfoAzure$inboundSchema), - z.lazy(() => SyncAcquireResponseEnvironmentInfoLocal$inboundSchema), - z.lazy(() => SyncAcquireResponseEnvironmentInfoAws$inboundSchema), - z.lazy(() => SyncAcquireResponseEnvironmentInfoTest$inboundSchema), - z.any(), - ]), - ).optional(), - error: z.nullable( - z.union([z.lazy(() => SyncAcquireResponseError$inboundSchema), z.any()]), - ).optional(), - platform: SyncAcquireResponseCurrentPlatform$inboundSchema, - protocolVersion: z.int(), - retryRequested: z.boolean().optional(), - runtimeMetadata: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseRuntimeMetadata$inboundSchema), - z.any(), - ]), - ).optional(), - stackState: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseStackState$inboundSchema), - z.any(), - ]), - ).optional(), - status: SyncAcquireResponseStatus$inboundSchema, - targetRelease: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseTargetRelease$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncAcquireResponseCurrentFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseCurrent$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCurrent' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseBasePlatformEnum$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseBasePlatformEnum -> = z.enum(SyncAcquireResponseBasePlatformEnum); - -/** @internal */ -export const SyncAcquireResponseBasePlatformUnion$inboundSchema: z.ZodType< - SyncAcquireResponseBasePlatformUnion, - unknown -> = z.union([SyncAcquireResponseBasePlatformEnum$inboundSchema, z.any()]); - -export function syncAcquireResponseBasePlatformUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseBasePlatformUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseBasePlatformUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseClusters$inboundSchema: z.ZodType< - SyncAcquireResponseClusters, - unknown -> = z.object({ - clusterId: z.string(), - managementToken: z.string(), -}); - -export function syncAcquireResponseClustersFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseClusters$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseClusters' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseHorizonMachineImageAws$inboundSchema: z.ZodType< - SyncAcquireResponseHorizonMachineImageAws, - unknown -> = z.object({ - amis: z.record(z.string(), z.record(z.string(), z.string())), -}); - -export function syncAcquireResponseHorizonMachineImageAwsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseHorizonMachineImageAws, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseHorizonMachineImageAws$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseHorizonMachineImageAws' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseHorizonMachineImageAwsUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseHorizonMachineImageAws$inboundSchema), - z.any(), - ]); - -export function syncAcquireResponseHorizonMachineImageAwsUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseHorizonMachineImageAwsUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseHorizonMachineImageAwsUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseHorizonMachineImageAwsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseAzureImages$inboundSchema: z.ZodType< - SyncAcquireResponseAzureImages, - unknown -> = z.object({ - imageVersionId: z.string(), -}); - -export function syncAcquireResponseAzureImagesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseAzureImages$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseAzureImages' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseHorizonMachineImageAzure$inboundSchema: - z.ZodType = z.object({ - images: z.record( - z.string(), - z.lazy(() => SyncAcquireResponseAzureImages$inboundSchema), - ), - }); - -export function syncAcquireResponseHorizonMachineImageAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseHorizonMachineImageAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseHorizonMachineImageAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseHorizonMachineImageAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseHorizonMachineImageAzureUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncAcquireResponseHorizonMachineImageAzure$inboundSchema), - z.any(), - ]); - -export function syncAcquireResponseHorizonMachineImageAzureUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseHorizonMachineImageAzureUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseHorizonMachineImageAzureUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseHorizonMachineImageAzureUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseBaseImage$inboundSchema: z.ZodType< - SyncAcquireResponseBaseImage, - unknown -> = z.object({ - name: z.string(), - version: z.string(), -}); - -export function syncAcquireResponseBaseImageFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseBaseImage$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseBaseImage' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseGcpImages$inboundSchema: z.ZodType< - SyncAcquireResponseGcpImages, - unknown -> = z.object({ - sourceImage: z.string(), -}); - -export function syncAcquireResponseGcpImagesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseGcpImages$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseGcpImages' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseHorizonMachineImageGcp$inboundSchema: z.ZodType< - SyncAcquireResponseHorizonMachineImageGcp, - unknown -> = z.object({ - images: z.record( - z.string(), - z.lazy(() => SyncAcquireResponseGcpImages$inboundSchema), - ), -}); - -export function syncAcquireResponseHorizonMachineImageGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseHorizonMachineImageGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseHorizonMachineImageGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseHorizonMachineImageGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseHorizonMachineImageGcpUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseHorizonMachineImageGcp$inboundSchema), - z.any(), - ]); - -export function syncAcquireResponseHorizonMachineImageGcpUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseHorizonMachineImageGcpUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseHorizonMachineImageGcpUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseHorizonMachineImageGcpUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseHorizonMachineImage$inboundSchema: z.ZodType< - SyncAcquireResponseHorizonMachineImage, - unknown -> = z.object({ - aws: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseHorizonMachineImageAws$inboundSchema), - z.any(), - ]), - ).optional(), - azure: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseHorizonMachineImageAzure$inboundSchema), - z.any(), - ]), - ).optional(), - baseImage: z.lazy(() => SyncAcquireResponseBaseImage$inboundSchema), - channel: z.string(), - createdAt: z.string(), - gcp: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseHorizonMachineImageGcp$inboundSchema), - z.any(), - ]), - ).optional(), - gitSha: z.string(), - horizondVersion: z.string(), - machineImageVersion: z.string(), -}); - -export function syncAcquireResponseHorizonMachineImageFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseHorizonMachineImage$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseHorizonMachineImage' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseHorizonMachineImageUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseHorizonMachineImage$inboundSchema), - z.any(), - ]); - -export function syncAcquireResponseHorizonMachineImageUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseHorizonMachineImageUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseHorizonMachineImageUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseHorizonMachineImageUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseComputeBackendType$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseComputeBackendType -> = z.enum(SyncAcquireResponseComputeBackendType); - -/** @internal */ -export const SyncAcquireResponseComputeBackendHorizon$inboundSchema: z.ZodType< - SyncAcquireResponseComputeBackendHorizon, - unknown -> = z.object({ - clusters: z.record( - z.string(), - z.lazy(() => SyncAcquireResponseClusters$inboundSchema), - ), - horizonMachineImage: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseHorizonMachineImage$inboundSchema), - z.any(), - ]), - ).optional(), - url: z.string(), - type: SyncAcquireResponseComputeBackendType$inboundSchema, -}); - -export function syncAcquireResponseComputeBackendHorizonFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseComputeBackendHorizon, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseComputeBackendHorizon$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseComputeBackendHorizon' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseComputeBackendUnion$inboundSchema: z.ZodType< - SyncAcquireResponseComputeBackendUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseComputeBackendHorizon$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseComputeBackendUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseComputeBackendUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseComputeBackendUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseAliasCertificateStatus$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseAliasCertificateStatus -> = z.enum(SyncAcquireResponseAliasCertificateStatus); - -/** @internal */ -export const SyncAcquireResponseAliasDnsStatus$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseAliasDnsStatus -> = z.enum(SyncAcquireResponseAliasDnsStatus); - -/** @internal */ -export const SyncAcquireResponseAlias$inboundSchema: z.ZodType< - SyncAcquireResponseAlias, - unknown -> = z.object({ - certificateChain: z.nullable(z.string()).optional(), - certificateId: z.string(), - certificateStatus: SyncAcquireResponseAliasCertificateStatus$inboundSchema, - dnsError: z.nullable(z.string()).optional(), - dnsStatus: SyncAcquireResponseAliasDnsStatus$inboundSchema, - fqdn: z.string(), - issuedAt: z.nullable(z.string()).optional(), - privateKey: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponseAliasFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseAlias$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseAlias' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCertificateStatus$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseCertificateStatus -> = z.enum(SyncAcquireResponseCertificateStatus); - -/** @internal */ -export const SyncAcquireResponseDnsStatus$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseDnsStatus -> = z.enum(SyncAcquireResponseDnsStatus); - -/** @internal */ -export const SyncAcquireResponseEndpointsCertificateStatus$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseEndpointsCertificateStatus, - ); - -/** @internal */ -export const SyncAcquireResponseEndpointsDnsStatus$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseEndpointsDnsStatus -> = z.enum(SyncAcquireResponseEndpointsDnsStatus); - -/** @internal */ -export const SyncAcquireResponseEndpoints$inboundSchema: z.ZodType< - SyncAcquireResponseEndpoints, - unknown -> = z.object({ - certificateChain: z.nullable(z.string()).optional(), - certificateId: z.string(), - certificateStatus: - SyncAcquireResponseEndpointsCertificateStatus$inboundSchema, - dnsError: z.nullable(z.string()).optional(), - dnsStatus: SyncAcquireResponseEndpointsDnsStatus$inboundSchema, - fqdn: z.string(), - issuedAt: z.nullable(z.string()).optional(), - privateKey: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponseEndpointsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseEndpoints$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseEndpoints' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDomainMetadataResources$inboundSchema: - z.ZodType = z.object({ - aliases: z.array(z.lazy(() => SyncAcquireResponseAlias$inboundSchema)) - .optional(), - certificateChain: z.nullable(z.string()).optional(), - certificateId: z.string(), - certificateStatus: SyncAcquireResponseCertificateStatus$inboundSchema, - dnsError: z.nullable(z.string()).optional(), - dnsStatus: SyncAcquireResponseDnsStatus$inboundSchema, - endpoints: z.record( - z.string(), - z.lazy(() => SyncAcquireResponseEndpoints$inboundSchema), - ).optional(), - fqdn: z.string(), - issuedAt: z.nullable(z.string()).optional(), - privateKey: z.nullable(z.string()).optional(), - }); - -export function syncAcquireResponseDomainMetadataResourcesFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseDomainMetadataResources, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDomainMetadataResources$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDomainMetadataResources' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDomainMetadata$inboundSchema: z.ZodType< - SyncAcquireResponseDomainMetadata, - unknown -> = z.object({ - baseDomain: z.string(), - hostedZoneId: z.string(), - publicSubdomain: z.string(), - resources: z.record( - z.string(), - z.lazy(() => SyncAcquireResponseDomainMetadataResources$inboundSchema), - ), -}); - -export function syncAcquireResponseDomainMetadataFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseDomainMetadata$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDomainMetadata' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDomainMetadataUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDomainMetadataUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseDomainMetadata$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseDomainMetadataUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDomainMetadataUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDomainMetadataUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseEnvironmentVariablesType$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseEnvironmentVariablesType, - ); - -/** @internal */ -export const SyncAcquireResponseVariable$inboundSchema: z.ZodType< - SyncAcquireResponseVariable, - unknown -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: SyncAcquireResponseEnvironmentVariablesType$inboundSchema, - value: z.string(), -}); - -export function syncAcquireResponseVariableFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseVariable$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseVariable' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseEnvironmentVariables$inboundSchema: z.ZodType< - SyncAcquireResponseEnvironmentVariables, - unknown -> = z.object({ - createdAt: z.string(), - hash: z.string(), - variables: z.array(z.lazy(() => SyncAcquireResponseVariable$inboundSchema)), -}); - -export function syncAcquireResponseEnvironmentVariablesFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseEnvironmentVariables, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseEnvironmentVariables$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseEnvironmentVariables' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDefaultDomainSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseDefaultDomainSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseDefaultDomainSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseDefaultDomainSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDefaultDomainSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDefaultDomainSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDefaultDomain$inboundSchema: z.ZodType< - SyncAcquireResponseDefaultDomain, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseDefaultDomainSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponseDefaultDomainFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseDefaultDomain$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDefaultDomain' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDefaultDomainUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDefaultDomainUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseDefaultDomain$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseDefaultDomainUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDefaultDomainUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDefaultDomainUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseEnvironmentNameSecretRef$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncAcquireResponseEnvironmentNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseEnvironmentNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseEnvironmentNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseEnvironmentNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseEnvironmentName$inboundSchema: z.ZodType< - SyncAcquireResponseEnvironmentName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseEnvironmentNameSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponseEnvironmentNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseEnvironmentName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseEnvironmentName' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseEnvironmentNameUnion$inboundSchema: z.ZodType< - SyncAcquireResponseEnvironmentNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseEnvironmentName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseEnvironmentNameUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseEnvironmentNameUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseEnvironmentNameUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseEnvironmentNameUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceGroupNameSecretRef3$inboundSchema: - z.ZodType = z.object( - { - key: z.string(), - name: z.string(), - }, - ); - -export function syncAcquireResponseResourceGroupNameSecretRef3FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseResourceGroupNameSecretRef3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseResourceGroupNameSecretRef3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseResourceGroupNameSecretRef3' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceGroupName3$inboundSchema: z.ZodType< - SyncAcquireResponseResourceGroupName3, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseResourceGroupNameSecretRef3$inboundSchema - ), -}); - -export function syncAcquireResponseResourceGroupName3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseResourceGroupName3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseResourceGroupName3' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceGroupNameUnion3$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseResourceGroupName3$inboundSchema), - z.any(), - z.string(), - ]); - -export function syncAcquireResponseResourceGroupNameUnion3FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseResourceGroupNameUnion3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseResourceGroupNameUnion3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseResourceGroupNameUnion3' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceIdSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseResourceIdSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseResourceIdSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseResourceIdSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseResourceIdSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceId$inboundSchema: z.ZodType< - SyncAcquireResponseResourceId, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseResourceIdSecretRef$inboundSchema), -}); - -export function syncAcquireResponseResourceIdFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseResourceId$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseResourceId' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceIdUnion$inboundSchema: z.ZodType< - SyncAcquireResponseResourceIdUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseResourceId$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseResourceIdUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseResourceIdUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseResourceIdUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStaticIpSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseStaticIpSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseStaticIpSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStaticIpSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseStaticIpSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStaticIp$inboundSchema: z.ZodType< - SyncAcquireResponseStaticIp, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseStaticIpSecretRef$inboundSchema), -}); - -export function syncAcquireResponseStaticIpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseStaticIp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseStaticIp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeContainerAppsEnvironment$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseTypeContainerAppsEnvironment, - ); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsContainerAppsEnvironment$inboundSchema: - z.ZodType< - SyncAcquireResponseExternalBindingsContainerAppsEnvironment, - unknown - > = z.object({ - defaultDomain: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseDefaultDomain$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - environmentName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseEnvironmentName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - resourceGroupName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseResourceGroupName3$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - resourceId: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseResourceId$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - staticIp: z.nullable(z.any()).optional(), - type: SyncAcquireResponseTypeContainerAppsEnvironment$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsContainerAppsEnvironmentFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsContainerAppsEnvironment, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsContainerAppsEnvironment$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseExternalBindingsContainerAppsEnvironment' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDataDirSecretRef3$inboundSchema: z.ZodType< - SyncAcquireResponseDataDirSecretRef3, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseDataDirSecretRef3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDataDirSecretRef3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDataDirSecretRef3' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDataDir3$inboundSchema: z.ZodType< - SyncAcquireResponseDataDir3, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseDataDirSecretRef3$inboundSchema), -}); - -export function syncAcquireResponseDataDir3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseDataDir3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDataDir3' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDataDirUnion2$inboundSchema: z.ZodType< - SyncAcquireResponseDataDirUnion2, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseDataDir3$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseDataDirUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseDataDirUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDataDirUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeVault5$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeVault5 -> = z.enum(SyncAcquireResponseTypeVault5); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsLocalVault$inboundSchema: - z.ZodType = z.object({ - dataDir: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseDataDir3$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - vaultName: z.string(), - service: z.literal("local-vault"), - type: SyncAcquireResponseTypeVault5$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsLocalVaultFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsLocalVault, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsLocalVault$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsLocalVault' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseNamespaceSecretRef2$inboundSchema: z.ZodType< - SyncAcquireResponseNamespaceSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseNamespaceSecretRef2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseNamespaceSecretRef2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseNamespaceSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseNamespace2$inboundSchema: z.ZodType< - SyncAcquireResponseNamespace2, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseNamespaceSecretRef2$inboundSchema), -}); - -export function syncAcquireResponseNamespace2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseNamespace2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseNamespace2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseNamespaceUnion2$inboundSchema: z.ZodType< - SyncAcquireResponseNamespaceUnion2, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseNamespace2$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseNamespaceUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseNamespaceUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseNamespaceUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultPrefixSecretRef3$inboundSchema: z.ZodType< - SyncAcquireResponseVaultPrefixSecretRef3, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseVaultPrefixSecretRef3FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseVaultPrefixSecretRef3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseVaultPrefixSecretRef3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseVaultPrefixSecretRef3' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultPrefix3$inboundSchema: z.ZodType< - SyncAcquireResponseVaultPrefix3, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseVaultPrefixSecretRef3$inboundSchema - ), -}); - -export function syncAcquireResponseVaultPrefix3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseVaultPrefix3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseVaultPrefix3' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultPrefixUnion3$inboundSchema: z.ZodType< - SyncAcquireResponseVaultPrefixUnion3, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseVaultPrefix3$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseVaultPrefixUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseVaultPrefixUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseVaultPrefixUnion3' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeVault4$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeVault4 -> = z.enum(SyncAcquireResponseTypeVault4); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsKubernetesSecret$inboundSchema: - z.ZodType = z - .object({ - namespace: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseNamespace2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - vaultPrefix: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseVaultPrefix3$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("kubernetes-secret"), - type: SyncAcquireResponseTypeVault4$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsKubernetesSecretFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsKubernetesSecret, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsKubernetesSecret$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsKubernetesSecret' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultNameSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseVaultNameSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseVaultNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseVaultNameSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseVaultNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultName$inboundSchema: z.ZodType< - SyncAcquireResponseVaultName, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseVaultNameSecretRef$inboundSchema), -}); - -export function syncAcquireResponseVaultNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseVaultName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseVaultName' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultNameUnion$inboundSchema: z.ZodType< - SyncAcquireResponseVaultNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseVaultName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseVaultNameUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseVaultNameUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseVaultNameUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeVault3$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeVault3 -> = z.enum(SyncAcquireResponseTypeVault3); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsKeyVault$inboundSchema: - z.ZodType = z.object({ - vaultName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseVaultName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("key-vault"), - type: SyncAcquireResponseTypeVault3$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsKeyVaultFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsKeyVault, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsKeyVault$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsKeyVault' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultPrefixSecretRef2$inboundSchema: z.ZodType< - SyncAcquireResponseVaultPrefixSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseVaultPrefixSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseVaultPrefixSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseVaultPrefixSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseVaultPrefixSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultPrefix2$inboundSchema: z.ZodType< - SyncAcquireResponseVaultPrefix2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseVaultPrefixSecretRef2$inboundSchema - ), -}); - -export function syncAcquireResponseVaultPrefix2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseVaultPrefix2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseVaultPrefix2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultPrefixUnion2$inboundSchema: z.ZodType< - SyncAcquireResponseVaultPrefixUnion2, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseVaultPrefix2$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseVaultPrefixUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseVaultPrefixUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseVaultPrefixUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeVault2$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeVault2 -> = z.enum(SyncAcquireResponseTypeVault2); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsSecretManager$inboundSchema: - z.ZodType = z - .object({ - vaultPrefix: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseVaultPrefix2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("secret-manager"), - type: SyncAcquireResponseTypeVault2$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsSecretManagerFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsSecretManager, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsSecretManager$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsSecretManager' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultPrefixSecretRef1$inboundSchema: z.ZodType< - SyncAcquireResponseVaultPrefixSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseVaultPrefixSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseVaultPrefixSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseVaultPrefixSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseVaultPrefixSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultPrefix1$inboundSchema: z.ZodType< - SyncAcquireResponseVaultPrefix1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseVaultPrefixSecretRef1$inboundSchema - ), -}); - -export function syncAcquireResponseVaultPrefix1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseVaultPrefix1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseVaultPrefix1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseVaultPrefixUnion1$inboundSchema: z.ZodType< - SyncAcquireResponseVaultPrefixUnion1, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseVaultPrefix1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseVaultPrefixUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseVaultPrefixUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseVaultPrefixUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeVault1$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeVault1 -> = z.enum(SyncAcquireResponseTypeVault1); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsParameterStore$inboundSchema: - z.ZodType = z - .object({ - vaultPrefix: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseVaultPrefix1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("parameter-store"), - type: SyncAcquireResponseTypeVault1$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsParameterStoreFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsParameterStore, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsParameterStore$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsParameterStore' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseExternalBindingsUnion5$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsUnion5, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsParameterStore$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsSecretManager$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsKeyVault$inboundSchema), - z.lazy(() => - SyncAcquireResponseExternalBindingsKubernetesSecret$inboundSchema - ), - z.lazy(() => SyncAcquireResponseExternalBindingsLocalVault$inboundSchema), -]); - -export function syncAcquireResponseExternalBindingsUnion5FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsUnion5, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsUnion5$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsUnion5' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDataDirSecretRef2$inboundSchema: z.ZodType< - SyncAcquireResponseDataDirSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseDataDirSecretRef2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDataDirSecretRef2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDataDirSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDataDir2$inboundSchema: z.ZodType< - SyncAcquireResponseDataDir2, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseDataDirSecretRef2$inboundSchema), -}); - -export function syncAcquireResponseDataDir2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseDataDir2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDataDir2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRegistryUrlSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseRegistryUrlSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseRegistryUrlSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseRegistryUrlSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRegistryUrlSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseRegistryUrlSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRegistryUrl$inboundSchema: z.ZodType< - SyncAcquireResponseRegistryUrl, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseRegistryUrlSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponseRegistryUrlFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseRegistryUrl$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRegistryUrl' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRegistryUrlUnion$inboundSchema: z.ZodType< - SyncAcquireResponseRegistryUrlUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseRegistryUrl$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseRegistryUrlUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRegistryUrlUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRegistryUrlUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeArtifactRegistry4$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeArtifactRegistry4 -> = z.enum(SyncAcquireResponseTypeArtifactRegistry4); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsLocal$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsLocal, - unknown -> = z.object({ - dataDir: z.nullable(z.any()).optional(), - registryUrl: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseRegistryUrl$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("local"), - type: SyncAcquireResponseTypeArtifactRegistry4$inboundSchema, -}); - -export function syncAcquireResponseExternalBindingsLocalFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsLocal, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsLocal$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsLocal' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePullServiceAccountEmailSecretRef$inboundSchema: - z.ZodType = z - .object({ - key: z.string(), - name: z.string(), - }); - -export function syncAcquireResponsePullServiceAccountEmailSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePullServiceAccountEmailSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePullServiceAccountEmailSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePullServiceAccountEmailSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePullServiceAccountEmail$inboundSchema: - z.ZodType = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponsePullServiceAccountEmailSecretRef$inboundSchema - ), - }); - -export function syncAcquireResponsePullServiceAccountEmailFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePullServiceAccountEmail, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePullServiceAccountEmail$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePullServiceAccountEmail' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePushServiceAccountEmailSecretRef$inboundSchema: - z.ZodType = z - .object({ - key: z.string(), - name: z.string(), - }); - -export function syncAcquireResponsePushServiceAccountEmailSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePushServiceAccountEmailSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePushServiceAccountEmailSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePushServiceAccountEmailSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePushServiceAccountEmail$inboundSchema: - z.ZodType = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponsePushServiceAccountEmailSecretRef$inboundSchema - ), - }); - -export function syncAcquireResponsePushServiceAccountEmailFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePushServiceAccountEmail, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePushServiceAccountEmail$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePushServiceAccountEmail' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRepositoryNameSecretRef$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncAcquireResponseRepositoryNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseRepositoryNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRepositoryNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseRepositoryNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRepositoryName$inboundSchema: z.ZodType< - SyncAcquireResponseRepositoryName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseRepositoryNameSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponseRepositoryNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseRepositoryName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRepositoryName' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRepositoryNameUnion$inboundSchema: z.ZodType< - SyncAcquireResponseRepositoryNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseRepositoryName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseRepositoryNameUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRepositoryNameUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRepositoryNameUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeArtifactRegistry3$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeArtifactRegistry3 -> = z.enum(SyncAcquireResponseTypeArtifactRegistry3); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsGar$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsGar, - unknown -> = z.object({ - pullServiceAccountEmail: z.nullable(z.any()).optional(), - pushServiceAccountEmail: z.nullable(z.any()).optional(), - repositoryName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseRepositoryName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("gar"), - type: SyncAcquireResponseTypeArtifactRegistry3$inboundSchema, -}); - -export function syncAcquireResponseExternalBindingsGarFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsGar$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseExternalBindingsGar' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRegistryNameSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseRegistryNameSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseRegistryNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseRegistryNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRegistryNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseRegistryNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRegistryName$inboundSchema: z.ZodType< - SyncAcquireResponseRegistryName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseRegistryNameSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponseRegistryNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseRegistryName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRegistryName' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRegistryNameUnion$inboundSchema: z.ZodType< - SyncAcquireResponseRegistryNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseRegistryName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseRegistryNameUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRegistryNameUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRegistryNameUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRepositoryPrefixSecretRef2$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncAcquireResponseRepositoryPrefixSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseRepositoryPrefixSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRepositoryPrefixSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseRepositoryPrefixSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRepositoryPrefix2$inboundSchema: z.ZodType< - SyncAcquireResponseRepositoryPrefix2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseRepositoryPrefixSecretRef2$inboundSchema - ), -}); - -export function syncAcquireResponseRepositoryPrefix2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRepositoryPrefix2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRepositoryPrefix2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceGroupNameSecretRef2$inboundSchema: - z.ZodType = z.object( - { - key: z.string(), - name: z.string(), - }, - ); - -export function syncAcquireResponseResourceGroupNameSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseResourceGroupNameSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseResourceGroupNameSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseResourceGroupNameSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceGroupName2$inboundSchema: z.ZodType< - SyncAcquireResponseResourceGroupName2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseResourceGroupNameSecretRef2$inboundSchema - ), -}); - -export function syncAcquireResponseResourceGroupName2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseResourceGroupName2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseResourceGroupName2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceGroupNameUnion2$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseResourceGroupName2$inboundSchema), - z.any(), - z.string(), - ]); - -export function syncAcquireResponseResourceGroupNameUnion2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseResourceGroupNameUnion2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseResourceGroupNameUnion2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseResourceGroupNameUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeArtifactRegistry2$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeArtifactRegistry2 -> = z.enum(SyncAcquireResponseTypeArtifactRegistry2); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsAcr$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsAcr, - unknown -> = z.object({ - registryName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseRegistryName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - repositoryPrefix: z.nullable(z.any()).optional(), - resourceGroupName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseResourceGroupName2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("acr"), - type: SyncAcquireResponseTypeArtifactRegistry2$inboundSchema, -}); - -export function syncAcquireResponseExternalBindingsAcrFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsAcr$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseExternalBindingsAcr' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePullRoleArnSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponsePullRoleArnSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponsePullRoleArnSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePullRoleArnSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePullRoleArnSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePullRoleArnSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePullRoleArn$inboundSchema: z.ZodType< - SyncAcquireResponsePullRoleArn, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponsePullRoleArnSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponsePullRoleArnFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponsePullRoleArn$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePullRoleArn' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePushRoleArnSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponsePushRoleArnSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponsePushRoleArnSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponsePushRoleArnSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponsePushRoleArnSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponsePushRoleArnSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePushRoleArn$inboundSchema: z.ZodType< - SyncAcquireResponsePushRoleArn, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponsePushRoleArnSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponsePushRoleArnFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponsePushRoleArn$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePushRoleArn' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRepositoryPrefixSecretRef1$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncAcquireResponseRepositoryPrefixSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseRepositoryPrefixSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRepositoryPrefixSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseRepositoryPrefixSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRepositoryPrefix1$inboundSchema: z.ZodType< - SyncAcquireResponseRepositoryPrefix1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseRepositoryPrefixSecretRef1$inboundSchema - ), -}); - -export function syncAcquireResponseRepositoryPrefix1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRepositoryPrefix1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRepositoryPrefix1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRepositoryPrefixUnion$inboundSchema: z.ZodType< - SyncAcquireResponseRepositoryPrefixUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseRepositoryPrefix1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseRepositoryPrefixUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseRepositoryPrefixUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRepositoryPrefixUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseRepositoryPrefixUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeArtifactRegistry1$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeArtifactRegistry1 -> = z.enum(SyncAcquireResponseTypeArtifactRegistry1); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsEcr$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsEcr, - unknown -> = z.object({ - pullRoleArn: z.nullable(z.any()).optional(), - pushRoleArn: z.nullable(z.any()).optional(), - repositoryPrefix: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseRepositoryPrefix1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("ecr"), - type: SyncAcquireResponseTypeArtifactRegistry1$inboundSchema, -}); - -export function syncAcquireResponseExternalBindingsEcrFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsEcr$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseExternalBindingsEcr' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseExternalBindingsUnion4$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsUnion4, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsEcr$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsAcr$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsGar$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsLocal$inboundSchema), -]); - -export function syncAcquireResponseExternalBindingsUnion4FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsUnion4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsUnion4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsUnion4' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDataDirSecretRef1$inboundSchema: z.ZodType< - SyncAcquireResponseDataDirSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseDataDirSecretRef1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDataDirSecretRef1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDataDirSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDataDir1$inboundSchema: z.ZodType< - SyncAcquireResponseDataDir1, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseDataDirSecretRef1$inboundSchema), -}); - -export function syncAcquireResponseDataDir1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseDataDir1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDataDir1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDataDirUnion1$inboundSchema: z.ZodType< - SyncAcquireResponseDataDirUnion1, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseDataDir1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseDataDirUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseDataDirUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDataDirUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseKeyPrefixSecretRef2$inboundSchema: z.ZodType< - SyncAcquireResponseKeyPrefixSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseKeyPrefixSecretRef2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseKeyPrefixSecretRef2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseKeyPrefixSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseKeyPrefix2$inboundSchema: z.ZodType< - SyncAcquireResponseKeyPrefix2, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseKeyPrefixSecretRef2$inboundSchema), -}); - -export function syncAcquireResponseKeyPrefix2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseKeyPrefix2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseKeyPrefix2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeKv5$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeKv5 -> = z.enum(SyncAcquireResponseTypeKv5); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsLocalKv$inboundSchema: - z.ZodType = z.object({ - dataDir: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseDataDir1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - keyPrefix: z.nullable(z.any()).optional(), - service: z.literal("local-kv"), - type: SyncAcquireResponseTypeKv5$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsLocalKvFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsLocalKv, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsLocalKv$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsLocalKv' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseConnectionUrlSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseConnectionUrlSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseConnectionUrlSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseConnectionUrlSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseConnectionUrlSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseConnectionUrlSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseConnectionUrl$inboundSchema: z.ZodType< - SyncAcquireResponseConnectionUrl, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseConnectionUrlSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponseConnectionUrlFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseConnectionUrl$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseConnectionUrl' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseConnectionUrlUnion$inboundSchema: z.ZodType< - SyncAcquireResponseConnectionUrlUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseConnectionUrl$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseConnectionUrlUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseConnectionUrlUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseConnectionUrlUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDatabaseSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseDatabaseSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseDatabaseSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDatabaseSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDatabaseSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDatabase$inboundSchema: z.ZodType< - SyncAcquireResponseDatabase, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseDatabaseSecretRef$inboundSchema), -}); - -export function syncAcquireResponseDatabaseFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseDatabase$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDatabase' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseKeyPrefixSecretRef1$inboundSchema: z.ZodType< - SyncAcquireResponseKeyPrefixSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseKeyPrefixSecretRef1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseKeyPrefixSecretRef1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseKeyPrefixSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseKeyPrefix1$inboundSchema: z.ZodType< - SyncAcquireResponseKeyPrefix1, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseKeyPrefixSecretRef1$inboundSchema), -}); - -export function syncAcquireResponseKeyPrefix1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseKeyPrefix1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseKeyPrefix1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeKv4$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeKv4 -> = z.enum(SyncAcquireResponseTypeKv4); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsRedis$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsRedis, - unknown -> = z.object({ - connectionUrl: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseConnectionUrl$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - database: z.nullable(z.any()).optional(), - keyPrefix: z.nullable(z.any()).optional(), - service: z.literal("redis"), - type: SyncAcquireResponseTypeKv4$inboundSchema, -}); - -export function syncAcquireResponseExternalBindingsRedisFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsRedis, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsRedis$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsRedis' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseAccountNameSecretRef2$inboundSchema: z.ZodType< - SyncAcquireResponseAccountNameSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseAccountNameSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseAccountNameSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseAccountNameSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseAccountNameSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseAccountName2$inboundSchema: z.ZodType< - SyncAcquireResponseAccountName2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseAccountNameSecretRef2$inboundSchema - ), -}); - -export function syncAcquireResponseAccountName2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseAccountName2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseAccountName2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseAccountNameUnion2$inboundSchema: z.ZodType< - SyncAcquireResponseAccountNameUnion2, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseAccountName2$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseAccountNameUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseAccountNameUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseAccountNameUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceGroupNameSecretRef1$inboundSchema: - z.ZodType = z.object( - { - key: z.string(), - name: z.string(), - }, - ); - -export function syncAcquireResponseResourceGroupNameSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseResourceGroupNameSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseResourceGroupNameSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseResourceGroupNameSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceGroupName1$inboundSchema: z.ZodType< - SyncAcquireResponseResourceGroupName1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseResourceGroupNameSecretRef1$inboundSchema - ), -}); - -export function syncAcquireResponseResourceGroupName1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseResourceGroupName1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseResourceGroupName1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseResourceGroupNameUnion1$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseResourceGroupName1$inboundSchema), - z.any(), - z.string(), - ]); - -export function syncAcquireResponseResourceGroupNameUnion1FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseResourceGroupNameUnion1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseResourceGroupNameUnion1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseResourceGroupNameUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTableNameSecretRef2$inboundSchema: z.ZodType< - SyncAcquireResponseTableNameSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseTableNameSecretRef2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTableNameSecretRef2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTableNameSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTableName2$inboundSchema: z.ZodType< - SyncAcquireResponseTableName2, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseTableNameSecretRef2$inboundSchema), -}); - -export function syncAcquireResponseTableName2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseTableName2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTableName2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTableNameUnion2$inboundSchema: z.ZodType< - SyncAcquireResponseTableNameUnion2, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseTableName2$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseTableNameUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTableNameUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTableNameUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeKv3$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeKv3 -> = z.enum(SyncAcquireResponseTypeKv3); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsTablestorage$inboundSchema: - z.ZodType = z - .object({ - accountName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseAccountName2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - resourceGroupName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseResourceGroupName1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - tableName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseTableName2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("tablestorage"), - type: SyncAcquireResponseTypeKv3$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsTablestorageFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsTablestorage, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsTablestorage$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsTablestorage' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCollectionNameSecretRef$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncAcquireResponseCollectionNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCollectionNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCollectionNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCollectionNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCollectionName$inboundSchema: z.ZodType< - SyncAcquireResponseCollectionName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseCollectionNameSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponseCollectionNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseCollectionName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCollectionName' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCollectionNameUnion$inboundSchema: z.ZodType< - SyncAcquireResponseCollectionNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseCollectionName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseCollectionNameUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCollectionNameUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCollectionNameUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDatabaseIdSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseDatabaseIdSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseDatabaseIdSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDatabaseIdSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDatabaseIdSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDatabaseId$inboundSchema: z.ZodType< - SyncAcquireResponseDatabaseId, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseDatabaseIdSecretRef$inboundSchema), -}); - -export function syncAcquireResponseDatabaseIdFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseDatabaseId$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDatabaseId' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDatabaseIdUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDatabaseIdUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseDatabaseId$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseDatabaseIdUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDatabaseIdUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDatabaseIdUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseProjectIdSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseProjectIdSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseProjectIdSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseProjectIdSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseProjectIdSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseProjectId$inboundSchema: z.ZodType< - SyncAcquireResponseProjectId, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseProjectIdSecretRef$inboundSchema), -}); - -export function syncAcquireResponseProjectIdFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseProjectId$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseProjectId' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseProjectIdUnion$inboundSchema: z.ZodType< - SyncAcquireResponseProjectIdUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseProjectId$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseProjectIdUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseProjectIdUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseProjectIdUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeKv2$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeKv2 -> = z.enum(SyncAcquireResponseTypeKv2); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsFirestore$inboundSchema: - z.ZodType = z.object({ - collectionName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseCollectionName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - databaseId: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseDatabaseId$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - projectId: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseProjectId$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("firestore"), - type: SyncAcquireResponseTypeKv2$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsFirestoreFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsFirestore, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsFirestore$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsFirestore' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseEndpointUrlSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseEndpointUrlSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseEndpointUrlSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseEndpointUrlSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseEndpointUrlSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseEndpointUrlSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseEndpointUrl$inboundSchema: z.ZodType< - SyncAcquireResponseEndpointUrl, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseEndpointUrlSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponseEndpointUrlFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseEndpointUrl$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseEndpointUrl' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRegionSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseRegionSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseRegionSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseRegionSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRegionSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRegion$inboundSchema: z.ZodType< - SyncAcquireResponseRegion, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseRegionSecretRef$inboundSchema), -}); - -export function syncAcquireResponseRegionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseRegion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRegion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseRegionUnion$inboundSchema: z.ZodType< - SyncAcquireResponseRegionUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseRegion$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseRegionUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseRegionUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRegionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTableNameSecretRef1$inboundSchema: z.ZodType< - SyncAcquireResponseTableNameSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseTableNameSecretRef1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTableNameSecretRef1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTableNameSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTableName1$inboundSchema: z.ZodType< - SyncAcquireResponseTableName1, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseTableNameSecretRef1$inboundSchema), -}); - -export function syncAcquireResponseTableName1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseTableName1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTableName1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTableNameUnion1$inboundSchema: z.ZodType< - SyncAcquireResponseTableNameUnion1, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseTableName1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseTableNameUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseTableNameUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTableNameUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeKv1$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeKv1 -> = z.enum(SyncAcquireResponseTypeKv1); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsDynamodb$inboundSchema: - z.ZodType = z.object({ - endpointUrl: z.nullable(z.any()).optional(), - region: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseRegion$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - tableName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseTableName1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("dynamodb"), - type: SyncAcquireResponseTypeKv1$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsDynamodbFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsDynamodb, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsDynamodb$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsDynamodb' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseExternalBindingsUnion3$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsUnion3, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsDynamodb$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsFirestore$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsTablestorage$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsRedis$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsLocalKv$inboundSchema), -]); - -export function syncAcquireResponseExternalBindingsUnion3FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsUnion3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsUnion3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsUnion3' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseQueuePathSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseQueuePathSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseQueuePathSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseQueuePathSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseQueuePathSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseQueuePath$inboundSchema: z.ZodType< - SyncAcquireResponseQueuePath, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseQueuePathSecretRef$inboundSchema), -}); - -export function syncAcquireResponseQueuePathFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseQueuePath$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseQueuePath' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseQueuePathUnion$inboundSchema: z.ZodType< - SyncAcquireResponseQueuePathUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseQueuePath$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseQueuePathUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseQueuePathUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseQueuePathUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeQueue4$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeQueue4 -> = z.enum(SyncAcquireResponseTypeQueue4); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsLocalQueue$inboundSchema: - z.ZodType = z.object({ - queuePath: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseQueuePath$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("local-queue"), - type: SyncAcquireResponseTypeQueue4$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsLocalQueueFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsLocalQueue, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsLocalQueue$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsLocalQueue' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseNamespaceSecretRef1$inboundSchema: z.ZodType< - SyncAcquireResponseNamespaceSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseNamespaceSecretRef1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseNamespaceSecretRef1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseNamespaceSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseNamespace1$inboundSchema: z.ZodType< - SyncAcquireResponseNamespace1, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseNamespaceSecretRef1$inboundSchema), -}); - -export function syncAcquireResponseNamespace1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseNamespace1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseNamespace1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseNamespaceUnion1$inboundSchema: z.ZodType< - SyncAcquireResponseNamespaceUnion1, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseNamespace1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseNamespaceUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseNamespaceUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseNamespaceUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseQueueNameSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseQueueNameSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseQueueNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseQueueNameSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseQueueNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseQueueName$inboundSchema: z.ZodType< - SyncAcquireResponseQueueName, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseQueueNameSecretRef$inboundSchema), -}); - -export function syncAcquireResponseQueueNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseQueueName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseQueueName' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseQueueNameUnion$inboundSchema: z.ZodType< - SyncAcquireResponseQueueNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseQueueName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseQueueNameUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseQueueNameUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseQueueNameUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeQueue3$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeQueue3 -> = z.enum(SyncAcquireResponseTypeQueue3); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsServicebus$inboundSchema: - z.ZodType = z.object({ - namespace: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseNamespace1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - queueName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseQueueName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("servicebus"), - type: SyncAcquireResponseTypeQueue3$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsServicebusFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsServicebus, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsServicebus$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsServicebus' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseSubscriptionSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseSubscriptionSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseSubscriptionSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseSubscriptionSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseSubscriptionSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseSubscriptionSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseSubscription$inboundSchema: z.ZodType< - SyncAcquireResponseSubscription, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseSubscriptionSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponseSubscriptionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseSubscription$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseSubscription' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseSubscriptionUnion$inboundSchema: z.ZodType< - SyncAcquireResponseSubscriptionUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseSubscription$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseSubscriptionUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseSubscriptionUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseSubscriptionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTopicSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseTopicSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseTopicSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseTopicSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTopicSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTopic$inboundSchema: z.ZodType< - SyncAcquireResponseTopic, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseTopicSecretRef$inboundSchema), -}); - -export function syncAcquireResponseTopicFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseTopic$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTopic' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTopicUnion$inboundSchema: z.ZodType< - SyncAcquireResponseTopicUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseTopic$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseTopicUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseTopicUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTopicUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeQueue2$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeQueue2 -> = z.enum(SyncAcquireResponseTypeQueue2); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsPubsub$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsPubsub, - unknown -> = z.object({ - subscription: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseSubscription$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - topic: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseTopic$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("pubsub"), - type: SyncAcquireResponseTypeQueue2$inboundSchema, -}); - -export function syncAcquireResponseExternalBindingsPubsubFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsPubsub, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsPubsub$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsPubsub' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseQueueUrlSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseQueueUrlSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseQueueUrlSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseQueueUrlSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseQueueUrlSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseQueueUrl$inboundSchema: z.ZodType< - SyncAcquireResponseQueueUrl, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncAcquireResponseQueueUrlSecretRef$inboundSchema), -}); - -export function syncAcquireResponseQueueUrlFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseQueueUrl$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseQueueUrl' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseQueueUrlUnion$inboundSchema: z.ZodType< - SyncAcquireResponseQueueUrlUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseQueueUrl$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseQueueUrlUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseQueueUrlUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseQueueUrlUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeQueue1$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeQueue1 -> = z.enum(SyncAcquireResponseTypeQueue1); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsSqs$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsSqs, - unknown -> = z.object({ - queueUrl: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseQueueUrl$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("sqs"), - type: SyncAcquireResponseTypeQueue1$inboundSchema, -}); - -export function syncAcquireResponseExternalBindingsSqsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsSqs$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseExternalBindingsSqs' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseExternalBindingsUnion2$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsUnion2, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsSqs$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsPubsub$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsServicebus$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsLocalQueue$inboundSchema), -]); - -export function syncAcquireResponseExternalBindingsUnion2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsUnion2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsUnion2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStoragePathSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseStoragePathSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseStoragePathSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseStoragePathSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStoragePathSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseStoragePathSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStoragePath$inboundSchema: z.ZodType< - SyncAcquireResponseStoragePath, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseStoragePathSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponseStoragePathFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseStoragePath$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseStoragePath' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStoragePathUnion$inboundSchema: z.ZodType< - SyncAcquireResponseStoragePathUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseStoragePath$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseStoragePathUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStoragePathUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseStoragePathUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeStorage4$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeStorage4 -> = z.enum(SyncAcquireResponseTypeStorage4); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsLocalStorage$inboundSchema: - z.ZodType = z - .object({ - storagePath: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseStoragePath$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("local-storage"), - type: SyncAcquireResponseTypeStorage4$inboundSchema, - }); - -export function syncAcquireResponseExternalBindingsLocalStorageFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsLocalStorage, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsLocalStorage$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsLocalStorage' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseBucketNameSecretRef2$inboundSchema: z.ZodType< - SyncAcquireResponseBucketNameSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseBucketNameSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseBucketNameSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseBucketNameSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseBucketNameSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseBucketName2$inboundSchema: z.ZodType< - SyncAcquireResponseBucketName2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseBucketNameSecretRef2$inboundSchema - ), -}); - -export function syncAcquireResponseBucketName2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseBucketName2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseBucketName2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseBucketNameUnion2$inboundSchema: z.ZodType< - SyncAcquireResponseBucketNameUnion2, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseBucketName2$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseBucketNameUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseBucketNameUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseBucketNameUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeStorage3$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeStorage3 -> = z.enum(SyncAcquireResponseTypeStorage3); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsGcs$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsGcs, - unknown -> = z.object({ - bucketName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseBucketName2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("gcs"), - type: SyncAcquireResponseTypeStorage3$inboundSchema, -}); - -export function syncAcquireResponseExternalBindingsGcsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsGcs$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseExternalBindingsGcs' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseAccountNameSecretRef1$inboundSchema: z.ZodType< - SyncAcquireResponseAccountNameSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseAccountNameSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseAccountNameSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseAccountNameSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseAccountNameSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseAccountName1$inboundSchema: z.ZodType< - SyncAcquireResponseAccountName1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseAccountNameSecretRef1$inboundSchema - ), -}); - -export function syncAcquireResponseAccountName1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseAccountName1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseAccountName1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseAccountNameUnion1$inboundSchema: z.ZodType< - SyncAcquireResponseAccountNameUnion1, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseAccountName1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseAccountNameUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseAccountNameUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseAccountNameUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseContainerNameSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseContainerNameSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseContainerNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseContainerNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseContainerNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseContainerNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseContainerName$inboundSchema: z.ZodType< - SyncAcquireResponseContainerName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseContainerNameSecretRef$inboundSchema - ), -}); - -export function syncAcquireResponseContainerNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseContainerName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseContainerName' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseContainerNameUnion$inboundSchema: z.ZodType< - SyncAcquireResponseContainerNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseContainerName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseContainerNameUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseContainerNameUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseContainerNameUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeStorage2$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeStorage2 -> = z.enum(SyncAcquireResponseTypeStorage2); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsBlob$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsBlob, - unknown -> = z.object({ - accountName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseAccountName1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - containerName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseContainerName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("blob"), - type: SyncAcquireResponseTypeStorage2$inboundSchema, -}); - -export function syncAcquireResponseExternalBindingsBlobFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsBlob, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsBlob$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsBlob' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseBucketNameSecretRef1$inboundSchema: z.ZodType< - SyncAcquireResponseBucketNameSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncAcquireResponseBucketNameSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseBucketNameSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseBucketNameSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseBucketNameSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseBucketName1$inboundSchema: z.ZodType< - SyncAcquireResponseBucketName1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncAcquireResponseBucketNameSecretRef1$inboundSchema - ), -}); - -export function syncAcquireResponseBucketName1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseBucketName1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseBucketName1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseBucketNameUnion1$inboundSchema: z.ZodType< - SyncAcquireResponseBucketNameUnion1, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseBucketName1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncAcquireResponseBucketNameUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseBucketNameUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseBucketNameUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTypeStorage1$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseTypeStorage1 -> = z.enum(SyncAcquireResponseTypeStorage1); - -/** @internal */ -export const SyncAcquireResponseExternalBindingsS3$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsS3, - unknown -> = z.object({ - bucketName: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseBucketName1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("s3"), - type: SyncAcquireResponseTypeStorage1$inboundSchema, -}); - -export function syncAcquireResponseExternalBindingsS3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsS3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseExternalBindingsS3' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseExternalBindingsUnion1$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsUnion1, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsS3$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsBlob$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsGcs$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsLocalStorage$inboundSchema), -]); - -export function syncAcquireResponseExternalBindingsUnion1FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsUnion1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsUnion1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseExternalBindingsUnion6$inboundSchema: z.ZodType< - SyncAcquireResponseExternalBindingsUnion6, - unknown -> = z.union([ - z.lazy(() => - SyncAcquireResponseExternalBindingsContainerAppsEnvironment$inboundSchema - ), - z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsS3$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsBlob$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsGcs$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsLocalStorage$inboundSchema), - ]), - z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsSqs$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsPubsub$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsServicebus$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsLocalQueue$inboundSchema), - ]), - z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsDynamodb$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsFirestore$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsTablestorage$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsRedis$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsLocalKv$inboundSchema), - ]), - z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsEcr$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsAcr$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsGar$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsLocal$inboundSchema), - ]), - z.union([ - z.lazy(() => - SyncAcquireResponseExternalBindingsParameterStore$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseExternalBindingsSecretManager$inboundSchema - ), - z.lazy(() => SyncAcquireResponseExternalBindingsKeyVault$inboundSchema), - z.lazy(() => - SyncAcquireResponseExternalBindingsKubernetesSecret$inboundSchema - ), - z.lazy(() => SyncAcquireResponseExternalBindingsLocalVault$inboundSchema), - ]), -]); - -export function syncAcquireResponseExternalBindingsUnion6FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseExternalBindingsUnion6, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseExternalBindingsUnion6$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseExternalBindingsUnion6' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePlatformKubernetes$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponsePlatformKubernetes -> = z.enum(SyncAcquireResponsePlatformKubernetes); - -/** @internal */ -export const SyncAcquireResponseManagementConfigKubernetes$inboundSchema: - z.ZodType = z.object({ - platform: SyncAcquireResponsePlatformKubernetes$inboundSchema, - }); - -export function syncAcquireResponseManagementConfigKubernetesFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseManagementConfigKubernetes, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseManagementConfigKubernetes$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseManagementConfigKubernetes' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseConfigPlatformAzure$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseConfigPlatformAzure -> = z.enum(SyncAcquireResponseConfigPlatformAzure); - -/** @internal */ -export const SyncAcquireResponseManagementConfigAzure$inboundSchema: z.ZodType< - SyncAcquireResponseManagementConfigAzure, - unknown -> = z.object({ - managingTenantId: z.string(), - oidcIssuer: z.string(), - oidcSubject: z.string(), - platform: SyncAcquireResponseConfigPlatformAzure$inboundSchema, -}); - -export function syncAcquireResponseManagementConfigAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseManagementConfigAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseManagementConfigAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseManagementConfigAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseConfigPlatformGcp$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseConfigPlatformGcp -> = z.enum(SyncAcquireResponseConfigPlatformGcp); - -/** @internal */ -export const SyncAcquireResponseManagementConfigGcp$inboundSchema: z.ZodType< - SyncAcquireResponseManagementConfigGcp, - unknown -> = z.object({ - serviceAccountEmail: z.string(), - platform: SyncAcquireResponseConfigPlatformGcp$inboundSchema, -}); - -export function syncAcquireResponseManagementConfigGcpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseManagementConfigGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseManagementConfigGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseConfigPlatformAws$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseConfigPlatformAws -> = z.enum(SyncAcquireResponseConfigPlatformAws); - -/** @internal */ -export const SyncAcquireResponseManagementConfigAws$inboundSchema: z.ZodType< - SyncAcquireResponseManagementConfigAws, - unknown -> = z.object({ - managingRoleArn: z.string(), - platform: SyncAcquireResponseConfigPlatformAws$inboundSchema, -}); - -export function syncAcquireResponseManagementConfigAwsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseManagementConfigAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseManagementConfigAws' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseManagementConfigUnion$inboundSchema: z.ZodType< - SyncAcquireResponseManagementConfigUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseManagementConfigAzure$inboundSchema), - z.lazy(() => SyncAcquireResponseManagementConfigAws$inboundSchema), - z.lazy(() => SyncAcquireResponseManagementConfigGcp$inboundSchema), - z.lazy(() => SyncAcquireResponseManagementConfigKubernetes$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseManagementConfigUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseManagementConfigUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseManagementConfigUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseManagementConfigUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseMonitoring$inboundSchema: z.ZodType< - SyncAcquireResponseMonitoring, - unknown -> = z.object({ - logsAuthHeader: z.string(), - logsEndpoint: z.string(), - metricsAuthHeader: z.nullable(z.string()).optional(), - metricsEndpoint: z.nullable(z.string()).optional(), - resourceAttributes: z.record(z.string(), z.string()).optional(), -}); - -export function syncAcquireResponseMonitoringFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseMonitoring$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseMonitoring' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseMonitoringUnion$inboundSchema: z.ZodType< - SyncAcquireResponseMonitoringUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseMonitoring$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseMonitoringUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseMonitoringUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseMonitoringUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePoolsAutoscale$inboundSchema: z.ZodType< - SyncAcquireResponsePoolsAutoscale, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); - -export function syncAcquireResponsePoolsAutoscaleFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePoolsAutoscale' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePoolsFixed$inboundSchema: z.ZodType< - SyncAcquireResponsePoolsFixed, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); - -export function syncAcquireResponsePoolsFixedFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePoolsFixed' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponsePoolsUnion$inboundSchema: z.ZodType< - SyncAcquireResponsePoolsUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponsePoolsFixed$inboundSchema), - z.lazy(() => SyncAcquireResponsePoolsAutoscale$inboundSchema), -]); - -export function syncAcquireResponsePoolsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponsePoolsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCompute$inboundSchema: z.ZodType< - SyncAcquireResponseCompute, - unknown -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => SyncAcquireResponsePoolsFixed$inboundSchema), - z.lazy(() => SyncAcquireResponsePoolsAutoscale$inboundSchema), - ]), - ).optional(), -}); - -export function syncAcquireResponseComputeFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseCompute$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCompute' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseComputeUnion$inboundSchema: z.ZodType< - SyncAcquireResponseComputeUnion, - unknown -> = z.union([z.lazy(() => SyncAcquireResponseCompute$inboundSchema), z.any()]); - -export function syncAcquireResponseComputeUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseComputeUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDeploymentModel$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseDeploymentModel -> = z.enum(SyncAcquireResponseDeploymentModel); - -/** @internal */ -export const SyncAcquireResponseAwsStackSettings$inboundSchema: z.ZodType< - SyncAcquireResponseAwsStackSettings, - unknown -> = z.object({ - certificateArn: z.string(), -}); - -export function syncAcquireResponseAwsStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseAwsStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseAwsStackSettings' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackSettingsAwsUnion$inboundSchema: z.ZodType< - SyncAcquireResponseStackSettingsAwsUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseAwsStackSettings$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseStackSettingsAwsUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseStackSettingsAwsUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStackSettingsAwsUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseStackSettingsAwsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseAzureStackSettings$inboundSchema: z.ZodType< - SyncAcquireResponseAzureStackSettings, - unknown -> = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponseAzureStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseAzureStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseAzureStackSettings' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackSettingsAzureUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncAcquireResponseAzureStackSettings$inboundSchema), - z.any(), - ]); - -export function syncAcquireResponseStackSettingsAzureUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseStackSettingsAzureUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStackSettingsAzureUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseStackSettingsAzureUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseGcpStackSettings$inboundSchema: z.ZodType< - SyncAcquireResponseGcpStackSettings, - unknown -> = z.object({ - certificateName: z.string(), -}); - -export function syncAcquireResponseGcpStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseGcpStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseGcpStackSettings' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackSettingsGcpUnion$inboundSchema: z.ZodType< - SyncAcquireResponseStackSettingsGcpUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseGcpStackSettings$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseStackSettingsGcpUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseStackSettingsGcpUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStackSettingsGcpUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseStackSettingsGcpUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseTlsSecretRef$inboundSchema: z.ZodType< - SyncAcquireResponseTlsSecretRef, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), -}); - -export function syncAcquireResponseTlsSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseTlsSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDomainsKubernetes$inboundSchema: z.ZodType< - SyncAcquireResponseDomainsKubernetes, - unknown -> = z.object({ - tlsSecretRef: z.lazy(() => SyncAcquireResponseTlsSecretRef$inboundSchema), -}); - -export function syncAcquireResponseDomainsKubernetesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDomainsKubernetes' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDomainsKubernetesUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDomainsKubernetesUnion, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseDomainsKubernetes$inboundSchema), - z.any(), -]); - -export function syncAcquireResponseDomainsKubernetesUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseDomainsKubernetesUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDomainsKubernetesUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseDomainsKubernetesUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDomainsCertificate$inboundSchema: z.ZodType< - SyncAcquireResponseDomainsCertificate, - unknown -> = z.object({ - aws: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseAwsStackSettings$inboundSchema), - z.any(), - ]), - ).optional(), - azure: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseAzureStackSettings$inboundSchema), - z.any(), - ]), - ).optional(), - gcp: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseGcpStackSettings$inboundSchema), - z.any(), - ]), - ).optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseDomainsKubernetes$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncAcquireResponseDomainsCertificateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseDomainsCertificate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDomainsCertificate' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCustomDomains$inboundSchema: z.ZodType< - SyncAcquireResponseCustomDomains, - unknown -> = z.object({ - certificate: z.lazy(() => - SyncAcquireResponseDomainsCertificate$inboundSchema - ), - domain: z.string(), -}); - -export function syncAcquireResponseCustomDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCustomDomains' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDomains$inboundSchema: z.ZodType< - SyncAcquireResponseDomains, - unknown -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => SyncAcquireResponseCustomDomains$inboundSchema), - ), - ).optional(), -}); - -export function syncAcquireResponseDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDomains' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseDomainsUnion$inboundSchema: z.ZodType< - SyncAcquireResponseDomainsUnion, - unknown -> = z.union([z.lazy(() => SyncAcquireResponseDomains$inboundSchema), z.any()]); - -export function syncAcquireResponseDomainsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseDomainsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseStackSettingsExternalBindings$inboundSchema: - z.ZodType = z - .object({}); - -export function syncAcquireResponseStackSettingsExternalBindingsFromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseStackSettingsExternalBindings, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseStackSettingsExternalBindings$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseStackSettingsExternalBindings' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseHeartbeats$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseHeartbeats -> = z.enum(SyncAcquireResponseHeartbeats); - -/** @internal */ -export const SyncAcquireResponseCloud$inboundSchema: z.ZodType< - SyncAcquireResponseCloud, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponseCloudFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseCloud$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCloud' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCloudUnion$inboundSchema: z.ZodType< - SyncAcquireResponseCloudUnion, - unknown -> = z.union([z.lazy(() => SyncAcquireResponseCloud$inboundSchema), z.any()]); - -export function syncAcquireResponseCloudUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCloudUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseOwnership$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseOwnership -> = z.enum(SyncAcquireResponseOwnership); - -/** @internal */ -export const SyncAcquireResponseCluster$inboundSchema: z.ZodType< - SyncAcquireResponseCluster, - unknown -> = z.object({ - cloud: z.nullable( - z.union([z.lazy(() => SyncAcquireResponseCloud$inboundSchema), z.any()]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: SyncAcquireResponseOwnership$inboundSchema, -}); - -export function syncAcquireResponseClusterFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseCluster$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCluster' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseClusterUnion$inboundSchema: z.ZodType< - SyncAcquireResponseClusterUnion, - unknown -> = z.union([z.lazy(() => SyncAcquireResponseCluster$inboundSchema), z.any()]); - -export function syncAcquireResponseClusterUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseClusterUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCertificateNone2$inboundSchema: z.ZodType< - SyncAcquireResponseCertificateNone2, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function syncAcquireResponseCertificateNone2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCertificateNone2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCertificateNone2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCertificateManagedTLSSecret2$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function syncAcquireResponseCertificateManagedTLSSecret2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCertificateManagedTLSSecret2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCertificateManagedTLSSecret2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCertificateManagedTLSSecret2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCertificateAwsAcmArn2$inboundSchema: z.ZodType< - SyncAcquireResponseCertificateAwsAcmArn2, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); - -export function syncAcquireResponseCertificateAwsAcmArn2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCertificateAwsAcmArn2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCertificateAwsAcmArn2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCertificateAwsAcmArn2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCertificateManagedAcmImport2$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function syncAcquireResponseCertificateManagedAcmImport2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCertificateManagedAcmImport2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCertificateManagedAcmImport2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCertificateManagedAcmImport2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCertificateTLSSecretRef2$inboundSchema: - z.ZodType = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function syncAcquireResponseCertificateTLSSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseCertificateTLSSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCertificateTLSSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncAcquireResponseCertificateTLSSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseCertificateUnion2$inboundSchema: z.ZodType< - SyncAcquireResponseCertificateUnion2, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => SyncAcquireResponseCertificateManagedAcmImport2$inboundSchema), - z.lazy(() => SyncAcquireResponseCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => SyncAcquireResponseCertificateManagedTLSSecret2$inboundSchema), - z.lazy(() => SyncAcquireResponseCertificateNone2$inboundSchema), -]); - -export function syncAcquireResponseCertificateUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseCertificateUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseCertificateUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseModeCustom$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseModeCustom -> = z.enum(SyncAcquireResponseModeCustom); - -/** @internal */ -export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: - z.ZodEnum< - typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4 - > = z.enum( - SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4, - ); - -/** @internal */ -export const SyncAcquireResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: - z.ZodType< - SyncAcquireResponseProviderAzureApplicationGatewayForContainers4, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, - }); - -export function syncAcquireResponseProviderAzureApplicationGatewayForContainers4FromJSON( - jsonString: string, -): SafeParseResult< - SyncAcquireResponseProviderAzureApplicationGatewayForContainers4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseProviderAzureApplicationGatewayForContainers4' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseProviderGkeGatewayEnum4$inboundSchema: - z.ZodEnum = z.enum( - SyncAcquireResponseProviderGkeGatewayEnum4, - ); - -/** @internal */ -export const SyncAcquireResponseProviderGkeGateway4$inboundSchema: z.ZodType< - SyncAcquireResponseProviderGkeGateway4, - unknown -> = z.object({ - provider: SyncAcquireResponseProviderGkeGatewayEnum4$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function syncAcquireResponseProviderGkeGateway4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseProviderGkeGateway4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseProviderGkeGateway4' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< - typeof SyncAcquireResponseProviderAwsAlbEnum4 -> = z.enum(SyncAcquireResponseProviderAwsAlbEnum4); - -/** @internal */ -export const SyncAcquireResponseProviderAwsAlb4$inboundSchema: z.ZodType< - SyncAcquireResponseProviderAwsAlb4, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncAcquireResponseProviderAwsAlbEnum4$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function syncAcquireResponseProviderAwsAlb4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncAcquireResponseProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseProviderAwsAlb4' from JSON`, - ); -} - -/** @internal */ -export const SyncAcquireResponseProviderUnion4$inboundSchema: z.ZodType< - SyncAcquireResponseProviderUnion4, - unknown -> = z.union([ - z.lazy(() => SyncAcquireResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - SyncAcquireResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => SyncAcquireResponseProviderGkeGateway4$inboundSchema), - z.any(), -]); + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ +export type SyncAcquireResponseStackSettings = { + compute?: SyncAcquireResponseComputeUnion | null | undefined; + /** + * Deployment model: how updates are delivered to the remote environment. + */ + deploymentModel?: SyncAcquireResponseDeploymentModel | undefined; + domains?: SyncAcquireResponseDomainsUnion | null | undefined; + /** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ + externalBindings?: + | SyncAcquireResponseStackSettingsExternalBindings + | null + | undefined; + /** + * How heartbeat health checks are handled. + */ + heartbeats?: SyncAcquireResponseHeartbeats | undefined; + kubernetes?: SyncAcquireResponseKubernetes | any | null | undefined; + network?: + | SyncAcquireResponseNetworkByoVpcAws + | SyncAcquireResponseNetworkByoVpcGcp + | SyncAcquireResponseNetworkByoVnetAzure + | SyncAcquireResponseNetworkUseDefault + | SyncAcquireResponseNetworkCreate + | any + | null + | undefined; + /** + * How telemetry (logs, metrics, traces) is handled. + */ + telemetry?: SyncAcquireResponseTelemetry | undefined; + /** + * How updates are delivered to the deployment. + */ + updates?: SyncAcquireResponseUpdates | undefined; +}; -export function syncAcquireResponseProviderUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseProviderUnion4' from JSON`, - ); -} +/** + * Deployment configuration + */ +export type SyncAcquireResponseConfig = { + /** + * Allow frozen resource changes during updates + * + * @remarks + * When true, skips the frozen resources compatibility check. + * This requires running with elevated cloud credentials. + */ + allowFrozenChanges?: boolean | undefined; + basePlatform?: SyncAcquireResponseBasePlatformUnion | null | undefined; + computeBackend?: SyncAcquireResponseComputeBackendUnion | null | undefined; + /** + * Human-readable deployment name for cloud console metadata. + * + * @remarks + * + * This is separate from the physical resource prefix in StackState. It is + * used only for display text such as IAM role descriptions, service + * account descriptions, and custom role titles. + */ + deploymentName?: string | null | undefined; + /** + * Deployment token for pull authentication with the manager's registry. + * + * @remarks + * + * Used by controllers to configure registry credentials so cloud platforms + * and K8s can pull images from the manager's `/v2/` endpoint. + */ + deploymentToken?: string | null | undefined; + domainMetadata?: SyncAcquireResponseDomainMetadataUnion | null | undefined; + /** + * Snapshot of environment variables at a point in time + */ + environmentVariables: SyncAcquireResponseEnvironmentVariables; + /** + * Map from resource ID to external binding. + * + * @remarks + * + * Validated at runtime: binding type must match resource type. + */ + externalBindings?: + | { [k: string]: SyncAcquireResponseExternalBindingsUnion6 } + | undefined; + managementConfig?: + | SyncAcquireResponseManagementConfigUnion + | null + | undefined; + /** + * Manager base URL (e.g., "https://manager.alien.dev"). + * + * @remarks + * + * The manager IS the container registry — its `/v2/` endpoint serves as + * the OCI Distribution API. Controllers derive the proxy host from this + * to configure pull auth (RegistryCredentials, imagePullSecrets). + * + * When None (e.g., `alien dev`), controllers use image URIs as-is. + */ + managerUrl?: string | null | undefined; + monitoring?: SyncAcquireResponseMonitoringUnion | null | undefined; + /** + * Native image registry host+prefix for platforms that require it. + * + * @remarks + * + * Lambda (ECR) and Cloud Run (GAR) require native registry URIs. Other + * runtimes, including Azure Container Apps, pull through the manager's + * registry proxy. + * + * Derived by the manager from the artifact registry binding: + * - ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}` + * - GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}` + */ + nativeImageHost?: string | null | undefined; + /** + * Public endpoint URLs for exposed resources (optional override). + * + * @remarks + * + * Use this only when a caller already knows the public URL. Managed public + * endpoint flows should prefer `domain_metadata` plus controller-reported + * load balancer outputs so DNS, certificate renewal, and route readiness + * stay tied to the resource state. + * + * If not set, platforms determine public endpoint URLs from other sources: + * - Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS + * - Local: `http://localhost:{allocated_port}` + * - Custom or disabled exposure: no public endpoint URL unless a controller reports one + * + * Outer key: resource ID. Inner key: endpoint name. Value: public URL. + */ + publicEndpoints?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * User-customizable deployment settings specified at deploy time. + * + * @remarks + * + * These settings are provided by the customer via CloudFormation parameters, + * Terraform attributes, CLI flags, or Helm values. They customize how the + * deployment runs and what capabilities are enabled. + * + * **Key distinction**: StackSettings is user-customizable, while ManagementConfig + * is platform-derived (from the Manager's ServiceAccount). + */ + stackSettings?: SyncAcquireResponseStackSettings | undefined; +}; -/** @internal */ -export const SyncAcquireResponseRouteGateway2$inboundSchema: z.ZodType< - SyncAcquireResponseRouteGateway2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - SyncAcquireResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => SyncAcquireResponseProviderGkeGateway4$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); +export type SyncAcquireResponseDeployment = { + /** + * ID of the acquired deployment + */ + deploymentId: string; + /** + * Project ID the deployment belongs to + */ + projectId: string; + /** + * Deployment group ID the deployment belongs to + */ + deploymentGroupId: string; + setupMethod?: DeploymentSetupMethod | undefined; + /** + * Current deployment state (includes releases) + */ + current: SyncAcquireResponseCurrent; + /** + * Deployment configuration + */ + config: SyncAcquireResponseConfig; + /** + * Pinned target agent version (semver) for upgrade-driven sync + */ + targetAgentVersion?: string | null | undefined; +}; -export function syncAcquireResponseRouteGateway2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncAcquireResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncAcquireResponseRouteGateway2' from JSON`, - ); -} +export type Failure = { + /** + * ID of the deployment that failed + */ + deploymentId: string; + /** + * Project ID the deployment belongs to + */ + projectId: string; + error: APIError; +}; -/** @internal */ -export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: - z.ZodEnum< - typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3 - > = z.enum( - SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3, - ); +/** + * Acquired deployments and failures + */ +export type SyncAcquireResponse = { + /** + * List of acquired deployments with deployment context + */ + deployments: Array; + /** + * List of deployments that failed during context building (locks already released) + */ + failures: Array; +}; /** @internal */ export const SyncAcquireResponseProviderAzureApplicationGatewayForContainers3$inboundSchema: @@ -22611,7 +1027,7 @@ export const SyncAcquireResponseRouteUnion2$inboundSchema: z.ZodType< unknown > = z.union([ z.lazy(() => SyncAcquireResponseRouteIngress2$inboundSchema), - z.lazy(() => SyncAcquireResponseRouteGateway2$inboundSchema), + SyncAcquireResponseRouteGateway2$inboundSchema, ]); export function syncAcquireResponseRouteUnion2FromJSON( @@ -22629,18 +1045,12 @@ export const SyncAcquireResponseExposureCustom$inboundSchema: z.ZodType< SyncAcquireResponseExposureCustom, unknown > = z.object({ - certificate: z.union([ - z.lazy(() => SyncAcquireResponseCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => SyncAcquireResponseCertificateManagedAcmImport2$inboundSchema), - z.lazy(() => SyncAcquireResponseCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => SyncAcquireResponseCertificateManagedTLSSecret2$inboundSchema), - z.lazy(() => SyncAcquireResponseCertificateNone2$inboundSchema), - ]), + certificate: SyncAcquireResponseCertificateUnion2$inboundSchema, domain: z.string(), mode: SyncAcquireResponseModeCustom$inboundSchema, route: z.union([ z.lazy(() => SyncAcquireResponseRouteIngress2$inboundSchema), - z.lazy(() => SyncAcquireResponseRouteGateway2$inboundSchema), + SyncAcquireResponseRouteGateway2$inboundSchema, ]), }); @@ -23189,9 +1599,7 @@ export const SyncAcquireResponseKubernetes$inboundSchema: z.ZodType< SyncAcquireResponseKubernetes, unknown > = z.object({ - cluster: z.nullable( - z.union([z.lazy(() => SyncAcquireResponseCluster$inboundSchema), z.any()]), - ).optional(), + cluster: z.nullable(SyncAcquireResponseClusterUnion$inboundSchema).optional(), exposure: z.nullable( z.union([ z.lazy(() => SyncAcquireResponseExposureCustom$inboundSchema), @@ -23425,17 +1833,11 @@ export const SyncAcquireResponseStackSettings$inboundSchema: z.ZodType< SyncAcquireResponseStackSettings, unknown > = z.object({ - compute: z.nullable( - z.union([z.lazy(() => SyncAcquireResponseCompute$inboundSchema), z.any()]), - ).optional(), + compute: z.nullable(SyncAcquireResponseComputeUnion$inboundSchema).optional(), deploymentModel: SyncAcquireResponseDeploymentModel$inboundSchema.optional(), - domains: z.nullable( - z.union([z.lazy(() => SyncAcquireResponseDomains$inboundSchema), z.any()]), - ).optional(), + domains: z.nullable(SyncAcquireResponseDomainsUnion$inboundSchema).optional(), externalBindings: z.nullable( - z.lazy(() => - SyncAcquireResponseStackSettingsExternalBindings$inboundSchema - ), + SyncAcquireResponseStackSettingsExternalBindings$inboundSchema, ).optional(), heartbeats: SyncAcquireResponseHeartbeats$inboundSchema.optional(), kubernetes: z.nullable( @@ -23474,100 +1876,27 @@ export const SyncAcquireResponseConfig$inboundSchema: z.ZodType< unknown > = z.object({ allowFrozenChanges: z.boolean().optional(), - basePlatform: z.nullable( - z.union([SyncAcquireResponseBasePlatformEnum$inboundSchema, z.any()]), - ).optional(), + basePlatform: z.nullable(SyncAcquireResponseBasePlatformUnion$inboundSchema) + .optional(), computeBackend: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseComputeBackendHorizon$inboundSchema), - z.any(), - ]), + SyncAcquireResponseComputeBackendUnion$inboundSchema, ).optional(), deploymentName: z.nullable(z.string()).optional(), deploymentToken: z.nullable(z.string()).optional(), domainMetadata: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseDomainMetadata$inboundSchema), - z.any(), - ]), + SyncAcquireResponseDomainMetadataUnion$inboundSchema, ).optional(), - environmentVariables: z.lazy(() => - SyncAcquireResponseEnvironmentVariables$inboundSchema - ), + environmentVariables: SyncAcquireResponseEnvironmentVariables$inboundSchema, externalBindings: z.record( z.string(), - z.union([ - z.lazy(() => - SyncAcquireResponseExternalBindingsContainerAppsEnvironment$inboundSchema - ), - z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsS3$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsBlob$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsGcs$inboundSchema), - z.lazy(() => - SyncAcquireResponseExternalBindingsLocalStorage$inboundSchema - ), - ]), - z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsSqs$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsPubsub$inboundSchema), - z.lazy(() => - SyncAcquireResponseExternalBindingsServicebus$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseExternalBindingsLocalQueue$inboundSchema - ), - ]), - z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsDynamodb$inboundSchema), - z.lazy(() => - SyncAcquireResponseExternalBindingsFirestore$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseExternalBindingsTablestorage$inboundSchema - ), - z.lazy(() => SyncAcquireResponseExternalBindingsRedis$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsLocalKv$inboundSchema), - ]), - z.union([ - z.lazy(() => SyncAcquireResponseExternalBindingsEcr$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsAcr$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsGar$inboundSchema), - z.lazy(() => SyncAcquireResponseExternalBindingsLocal$inboundSchema), - ]), - z.union([ - z.lazy(() => - SyncAcquireResponseExternalBindingsParameterStore$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseExternalBindingsSecretManager$inboundSchema - ), - z.lazy(() => SyncAcquireResponseExternalBindingsKeyVault$inboundSchema), - z.lazy(() => - SyncAcquireResponseExternalBindingsKubernetesSecret$inboundSchema - ), - z.lazy(() => - SyncAcquireResponseExternalBindingsLocalVault$inboundSchema - ), - ]), - ]), + SyncAcquireResponseExternalBindingsUnion6$inboundSchema, ).optional(), managementConfig: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseManagementConfigAzure$inboundSchema), - z.lazy(() => SyncAcquireResponseManagementConfigAws$inboundSchema), - z.lazy(() => SyncAcquireResponseManagementConfigGcp$inboundSchema), - z.lazy(() => SyncAcquireResponseManagementConfigKubernetes$inboundSchema), - z.any(), - ]), + SyncAcquireResponseManagementConfigUnion$inboundSchema, ).optional(), managerUrl: z.nullable(z.string()).optional(), - monitoring: z.nullable( - z.union([ - z.lazy(() => SyncAcquireResponseMonitoring$inboundSchema), - z.any(), - ]), - ).optional(), + monitoring: z.nullable(SyncAcquireResponseMonitoringUnion$inboundSchema) + .optional(), nativeImageHost: z.nullable(z.string()).optional(), publicEndpoints: z.nullable( z.record(z.string(), z.record(z.string(), z.string())), @@ -23593,9 +1922,11 @@ export const SyncAcquireResponseDeployment$inboundSchema: z.ZodType< > = z.object({ deploymentId: z.string(), projectId: z.string(), + deploymentGroupId: z.string(), setupMethod: DeploymentSetupMethod$inboundSchema.optional(), - current: z.lazy(() => SyncAcquireResponseCurrent$inboundSchema), + current: SyncAcquireResponseCurrent$inboundSchema, config: z.lazy(() => SyncAcquireResponseConfig$inboundSchema), + targetAgentVersion: z.nullable(z.string()).optional(), }); export function syncAcquireResponseDeploymentFromJSON( diff --git a/client-sdks/platform/typescript/src/models/syncacquireresponsekeyprefixsecretref2.ts b/client-sdks/platform/typescript/src/models/syncacquireresponsekeyprefixsecretref2.ts new file mode 100644 index 000000000..4497db5c7 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/syncacquireresponsekeyprefixsecretref2.ts @@ -0,0 +1,5286 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { + collectExtraKeys as collectExtraKeys$, + safeParse, +} from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + SyncAcquireResponseCurrentPlatform, + SyncAcquireResponseCurrentPlatform$inboundSchema, + SyncAcquireResponseCurrentReleaseUnion, + SyncAcquireResponseCurrentReleaseUnion$inboundSchema, + SyncAcquireResponseEnvironmentInfoUnion, + SyncAcquireResponseEnvironmentInfoUnion$inboundSchema, + SyncAcquireResponseErrorUnion, + SyncAcquireResponseErrorUnion$inboundSchema, +} from "./syncacquireresponsepreparedstackoverridegcpstack.js"; +import { + SyncAcquireResponseRuntimeMetadataUnion, + SyncAcquireResponseRuntimeMetadataUnion$inboundSchema, + SyncAcquireResponseStackStateUnion, + SyncAcquireResponseStackStateUnion$inboundSchema, + SyncAcquireResponseStatus, + SyncAcquireResponseStatus$inboundSchema, + SyncAcquireResponseTargetReleaseInput, + SyncAcquireResponseTargetReleaseInput$inboundSchema, + SyncAcquireResponseTargetReleaseManagement1, + SyncAcquireResponseTargetReleaseManagement1$inboundSchema, + SyncAcquireResponseTargetReleaseManagement2, + SyncAcquireResponseTargetReleaseManagement2$inboundSchema, + SyncAcquireResponseTargetReleaseManagementEnum, + SyncAcquireResponseTargetReleaseManagementEnum$inboundSchema, +} from "./syncacquireresponsetargetreleasemanagement1.js"; + +/** + * Management permissions configuration for stack management access + */ +export type SyncAcquireResponseTargetReleaseManagementUnion = + | SyncAcquireResponseTargetReleaseManagement1 + | SyncAcquireResponseTargetReleaseManagement2 + | SyncAcquireResponseTargetReleaseManagementEnum; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseTargetReleaseProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncAcquireResponseTargetReleaseProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponseTargetReleaseProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncAcquireResponseTargetReleaseProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncAcquireResponseTargetReleaseProfileEffect = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseTargetReleaseProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncAcquireResponseTargetReleaseProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseTargetReleaseProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncAcquireResponseTargetReleaseProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseTargetReleaseProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseTargetReleaseProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncAcquireResponseTargetReleaseProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncAcquireResponseTargetReleaseProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseTargetReleaseProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncAcquireResponseTargetReleaseProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseTargetReleaseProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseTargetReleaseProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseTargetReleaseProfileConditionResource = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseTargetReleaseProfileResourceConditionUnion = + | SyncAcquireResponseTargetReleaseProfileConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseProfileGcpResource = { + condition?: + | SyncAcquireResponseTargetReleaseProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseTargetReleaseProfileCondition = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseTargetReleaseProfileConditionUnion = + | SyncAcquireResponseTargetReleaseProfileCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseProfileGcpStack = { + condition?: + | SyncAcquireResponseTargetReleaseProfileCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseTargetReleaseProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncAcquireResponseTargetReleaseProfileGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncAcquireResponseTargetReleaseProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseTargetReleaseProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncAcquireResponseTargetReleaseProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseTargetReleaseProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseTargetReleaseProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncAcquireResponseTargetReleaseProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncAcquireResponseTargetReleaseProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponseTargetReleaseProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncAcquireResponseTargetReleaseProfileUnion = + | SyncAcquireResponseTargetReleaseProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncAcquireResponseTargetReleasePermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncAcquireResponseTargetReleaseManagement1 + | SyncAcquireResponseTargetReleaseManagement2 + | SyncAcquireResponseTargetReleaseManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncAcquireResponseTargetReleaseConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncAcquireResponseTargetReleaseDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const SyncAcquireResponseTargetReleaseLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type SyncAcquireResponseTargetReleaseLifecycle = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseLifecycle +>; + +export type SyncAcquireResponseTargetReleaseResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncAcquireResponseTargetReleaseConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: SyncAcquireResponseTargetReleaseLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncAcquireResponseTargetReleaseSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponseTargetReleaseSupportedPlatform = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncAcquireResponseTargetReleaseStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncAcquireResponseTargetReleasePermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncAcquireResponseTargetReleaseResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +/** + * Release metadata + * + * @remarks + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. + */ +export type SyncAcquireResponseTargetRelease = { + /** + * Short description of the release + */ + description?: string | null | undefined; + /** + * Release ID (e.g., rel_xyz) + */ + releaseId: string; + /** + * A bag of resources, unaware of any cloud. + */ + stack: SyncAcquireResponseTargetReleaseStack; + /** + * Version string (e.g., 2.1.0) + */ + version?: string | null | undefined; +}; + +export type SyncAcquireResponseTargetReleaseUnion = + | SyncAcquireResponseTargetRelease + | any; + +/** + * Current deployment state (includes releases) + */ +export type SyncAcquireResponseCurrent = { + currentRelease?: SyncAcquireResponseCurrentReleaseUnion | null | undefined; + environmentInfo?: SyncAcquireResponseEnvironmentInfoUnion | null | undefined; + error?: SyncAcquireResponseErrorUnion | null | undefined; + /** + * Represents the target cloud platform. + */ + platform: SyncAcquireResponseCurrentPlatform; + /** + * Protocol version for cross-actor compatibility. + * + * @remarks + * All actors (manager, push client, agent) check this before stepping. + * Mismatched versions produce a clear error instead of silent corruption. + * See docs/02-manager/10-deployment-protocol.md. + */ + protocolVersion: number; + /** + * Whether a retry has been requested for a failed deployment + * + * @remarks + * When true and status is a failed state, the deployment system will retry failed resources + */ + retryRequested?: boolean | undefined; + runtimeMetadata?: SyncAcquireResponseRuntimeMetadataUnion | null | undefined; + stackState?: SyncAcquireResponseStackStateUnion | null | undefined; + /** + * Deployment status in the deployment lifecycle + */ + status: SyncAcquireResponseStatus; + targetRelease?: SyncAcquireResponseTargetRelease | any | null | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncAcquireResponseBasePlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponseBasePlatformEnum = ClosedEnum< + typeof SyncAcquireResponseBasePlatformEnum +>; + +export type SyncAcquireResponseBasePlatformUnion = + | SyncAcquireResponseBasePlatformEnum + | any; + +/** + * Configuration for a single container worker cluster. + * + * @remarks + * + * Contains the cluster ID and management token needed to interact with + * the managed container control plane API for container operations. + */ +export type SyncAcquireResponseClusters = { + /** + * Cluster ID (deterministic: workspace/project/deployment/resourceid) + */ + clusterId: string; + /** + * Management token for API access (hm_...) + * + * @remarks + * Used by alien-deployment controllers to create/update containers + */ + managementToken: string; +}; + +/** + * AWS Horizon machine image catalog. + */ +export type SyncAcquireResponseHorizonMachineImageAws = { + /** + * AMI IDs by architecture, then AWS region. + */ + amis: { [k: string]: { [k: string]: string } }; +}; + +export type SyncAcquireResponseHorizonMachineImageAwsUnion = + | SyncAcquireResponseHorizonMachineImageAws + | any; + +/** + * Azure Horizon machine image entry. + */ +export type SyncAcquireResponseAzureImages = { + /** + * Azure Compute Gallery image version ID. + */ + imageVersionId: string; +}; + +/** + * Azure Horizon machine image catalog. + */ +export type SyncAcquireResponseHorizonMachineImageAzure = { + /** + * Images by architecture. + */ + images: { [k: string]: SyncAcquireResponseAzureImages }; +}; + +export type SyncAcquireResponseHorizonMachineImageAzureUnion = + | SyncAcquireResponseHorizonMachineImageAzure + | any; + +/** + * Base image metadata for the Horizon machine image. + */ +export type SyncAcquireResponseBaseImage = { + /** + * Base OS image name. + */ + name: string; + /** + * Base OS image version or channel. + */ + version: string; +}; + +/** + * GCP Horizon machine image entry. + */ +export type SyncAcquireResponseGcpImages = { + /** + * Source image self link or image-family URL. + */ + sourceImage: string; +}; + +/** + * GCP Horizon machine image catalog. + */ +export type SyncAcquireResponseHorizonMachineImageGcp = { + /** + * Images by architecture. + */ + images: { [k: string]: SyncAcquireResponseGcpImages }; +}; + +export type SyncAcquireResponseHorizonMachineImageGcpUnion = + | SyncAcquireResponseHorizonMachineImageGcp + | any; + +/** + * Horizon machine image catalog. + * + * @remarks + * + * Platform resolves concrete provider images from this catalog during rollout. + */ +export type SyncAcquireResponseHorizonMachineImage = { + aws?: SyncAcquireResponseHorizonMachineImageAws | any | null | undefined; + azure?: SyncAcquireResponseHorizonMachineImageAzure | any | null | undefined; + /** + * Base image metadata for the Horizon machine image. + */ + baseImage: SyncAcquireResponseBaseImage; + /** + * Logical image channel, such as prod, staging, or canary. + */ + channel: string; + /** + * Image manifest creation timestamp. + */ + createdAt: string; + gcp?: SyncAcquireResponseHorizonMachineImageGcp | any | null | undefined; + /** + * Git commit SHA used to build the image. + */ + gitSha: string; + /** + * horizond daemon version baked into the image. + */ + horizondVersion: string; + /** + * Published immutable machine image version. + */ + machineImageVersion: string; +}; + +export type SyncAcquireResponseHorizonMachineImageUnion = + | SyncAcquireResponseHorizonMachineImage + | any; + +export const SyncAcquireResponseComputeBackendType = { + Horizon: "horizon", +} as const; +export type SyncAcquireResponseComputeBackendType = ClosedEnum< + typeof SyncAcquireResponseComputeBackendType +>; + +/** + * Compute backend for Container and Worker resources. + * + * @remarks + * + * Determines how compute workloads are orchestrated on cloud platforms. + * When None, the platform default is used for cloud platforms. + */ +export type SyncAcquireResponseComputeBackendHorizon = { + /** + * Cluster configurations (one per ComputeCluster resource) + * + * @remarks + * Key: ComputeCluster resource ID from stack + * Value: Cluster ID and management token for that cluster + */ + clusters: { [k: string]: SyncAcquireResponseClusters }; + horizonMachineImage?: + | SyncAcquireResponseHorizonMachineImage + | any + | null + | undefined; + /** + * Horizon control-plane API base URL. + */ + url: string; + type: SyncAcquireResponseComputeBackendType; +}; + +export type SyncAcquireResponseComputeBackendUnion = + | SyncAcquireResponseComputeBackendHorizon + | any; + +/** + * Certificate status in the certificate lifecycle + */ +export const SyncAcquireResponseAliasCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", +} as const; +/** + * Certificate status in the certificate lifecycle + */ +export type SyncAcquireResponseAliasCertificateStatus = ClosedEnum< + typeof SyncAcquireResponseAliasCertificateStatus +>; + +/** + * DNS record status in the DNS lifecycle + */ +export const SyncAcquireResponseAliasDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", +} as const; +/** + * DNS record status in the DNS lifecycle + */ +export type SyncAcquireResponseAliasDnsStatus = ClosedEnum< + typeof SyncAcquireResponseAliasDnsStatus +>; + +/** + * Certificate and DNS metadata for a managed hostname. + * + * @remarks + * + * Includes decrypted certificate data for issued certificates. + * Private keys are deployment-scoped secrets (like environment variables). + */ +export type SyncAcquireResponseAlias = { + /** + * Full PEM certificate chain (only present if status is "issued"). + */ + certificateChain?: string | null | undefined; + /** + * Certificate ID (for tracking/logging). + */ + certificateId: string; + /** + * Certificate status in the certificate lifecycle + */ + certificateStatus: SyncAcquireResponseAliasCertificateStatus; + /** + * Last DNS error message. Present when DNS previously failed, even if status + * + * @remarks + * was reset to pending for retry. Used to surface actionable error context + * in WaitingForDns failure messages. + */ + dnsError?: string | null | undefined; + /** + * DNS record status in the DNS lifecycle + */ + dnsStatus: SyncAcquireResponseAliasDnsStatus; + /** + * Fully qualified domain name. + */ + fqdn: string; + /** + * ISO 8601 timestamp when certificate was issued (for renewal detection). + */ + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; +}; + +/** + * Certificate status in the certificate lifecycle + */ +export const SyncAcquireResponseCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", +} as const; +/** + * Certificate status in the certificate lifecycle + */ +export type SyncAcquireResponseCertificateStatus = ClosedEnum< + typeof SyncAcquireResponseCertificateStatus +>; + +/** + * DNS record status in the DNS lifecycle + */ +export const SyncAcquireResponseDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", +} as const; +/** + * DNS record status in the DNS lifecycle + */ +export type SyncAcquireResponseDnsStatus = ClosedEnum< + typeof SyncAcquireResponseDnsStatus +>; + +/** + * Certificate status in the certificate lifecycle + */ +export const SyncAcquireResponseEndpointsCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", +} as const; +/** + * Certificate status in the certificate lifecycle + */ +export type SyncAcquireResponseEndpointsCertificateStatus = ClosedEnum< + typeof SyncAcquireResponseEndpointsCertificateStatus +>; + +/** + * DNS record status in the DNS lifecycle + */ +export const SyncAcquireResponseEndpointsDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", +} as const; +/** + * DNS record status in the DNS lifecycle + */ +export type SyncAcquireResponseEndpointsDnsStatus = ClosedEnum< + typeof SyncAcquireResponseEndpointsDnsStatus +>; + +/** + * Certificate and DNS metadata for a managed hostname. + * + * @remarks + * + * Includes decrypted certificate data for issued certificates. + * Private keys are deployment-scoped secrets (like environment variables). + */ +export type SyncAcquireResponseEndpoints = { + /** + * Full PEM certificate chain (only present if status is "issued"). + */ + certificateChain?: string | null | undefined; + /** + * Certificate ID (for tracking/logging). + */ + certificateId: string; + /** + * Certificate status in the certificate lifecycle + */ + certificateStatus: SyncAcquireResponseEndpointsCertificateStatus; + /** + * Last DNS error message. Present when DNS previously failed, even if status + * + * @remarks + * was reset to pending for retry. Used to surface actionable error context + * in WaitingForDns failure messages. + */ + dnsError?: string | null | undefined; + /** + * DNS record status in the DNS lifecycle + */ + dnsStatus: SyncAcquireResponseEndpointsDnsStatus; + /** + * Fully qualified domain name. + */ + fqdn: string; + /** + * ISO 8601 timestamp when certificate was issued (for renewal detection). + */ + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; +}; + +/** + * Certificate and DNS metadata for a public resource. + * + * @remarks + * + * The direct fields describe the primary endpoint hostname. `endpoints` + * contains endpoint-scoped metadata keyed by endpoint name. `aliases` contains + * additional managed hostnames that route directly to the primary endpoint. + */ +export type SyncAcquireResponseDomainMetadataResources = { + /** + * Additional managed hostnames for the resource. + */ + aliases?: Array | undefined; + /** + * Full PEM certificate chain (only present if status is "issued"). + */ + certificateChain?: string | null | undefined; + /** + * Certificate ID (for tracking/logging). + */ + certificateId: string; + /** + * Certificate status in the certificate lifecycle + */ + certificateStatus: SyncAcquireResponseCertificateStatus; + /** + * Last DNS error message. + */ + dnsError?: string | null | undefined; + /** + * DNS record status in the DNS lifecycle + */ + dnsStatus: SyncAcquireResponseDnsStatus; + /** + * Endpoint-scoped metadata keyed by endpoint name. + */ + endpoints?: { [k: string]: SyncAcquireResponseEndpoints } | undefined; + /** + * Fully qualified domain name. + */ + fqdn: string; + /** + * ISO 8601 timestamp when certificate was issued (for renewal detection). + */ + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; +}; + +/** + * Domain metadata for auto-managed public resources (no private keys). + */ +export type SyncAcquireResponseDomainMetadata = { + /** + * Base domain for auto-generated domains (e.g., "vpc.direct"). + */ + baseDomain: string; + /** + * Hosted zone ID for DNS records. + */ + hostedZoneId: string; + /** + * Deployment public subdomain (e.g., "k8f2j3"). + */ + publicSubdomain: string; + /** + * Metadata per resource ID. + */ + resources: { [k: string]: SyncAcquireResponseDomainMetadataResources }; +}; + +export type SyncAcquireResponseDomainMetadataUnion = + | SyncAcquireResponseDomainMetadata + | any; + +/** + * Type of environment variable + */ +export const SyncAcquireResponseEnvironmentVariablesType = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Type of environment variable + */ +export type SyncAcquireResponseEnvironmentVariablesType = ClosedEnum< + typeof SyncAcquireResponseEnvironmentVariablesType +>; + +/** + * Environment variable for deployment + */ +export type SyncAcquireResponseVariable = { + /** + * Variable name + */ + name: string; + /** + * Target resource patterns (null = all resources, Some = wildcard patterns) + */ + targetResources?: Array | null | undefined; + /** + * Type of environment variable + */ + type: SyncAcquireResponseEnvironmentVariablesType; + /** + * Variable value (decrypted - deployment has access to decryption keys) + */ + value: string; +}; + +/** + * Snapshot of environment variables at a point in time + */ +export type SyncAcquireResponseEnvironmentVariables = { + /** + * ISO 8601 timestamp when snapshot was created + */ + createdAt: string; + /** + * Deterministic hash of all variables (for change detection) + */ + hash: string; + /** + * Environment variables in the snapshot + */ + variables: Array; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDefaultDomainSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDefaultDomain = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDefaultDomainSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDefaultDomainUnion = + | SyncAcquireResponseDefaultDomain + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseEnvironmentNameSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseEnvironmentName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseEnvironmentNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseEnvironmentNameUnion = + | SyncAcquireResponseEnvironmentName + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseResourceGroupNameSecretRef3 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseResourceGroupName3 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseResourceGroupNameSecretRef3; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseResourceGroupNameUnion3 = + | SyncAcquireResponseResourceGroupName3 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseResourceIdSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseResourceId = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseResourceIdSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseResourceIdUnion = + | SyncAcquireResponseResourceId + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseStaticIpSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseStaticIp = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseStaticIpSecretRef; +}; + +export const SyncAcquireResponseTypeContainerAppsEnvironment = { + ContainerAppsEnvironment: "container_apps_environment", +} as const; +export type SyncAcquireResponseTypeContainerAppsEnvironment = ClosedEnum< + typeof SyncAcquireResponseTypeContainerAppsEnvironment +>; + +/** + * Binding configuration for a pre-existing Azure Container Apps Environment. + * + * @remarks + * + * Used when deploying to an existing environment instead of having Alien provision one. + * This is useful for shared environments (e.g., test infrastructure) or enterprise + * setups where environments are managed by a separate team. + */ +export type SyncAcquireResponseExternalBindingsContainerAppsEnvironment = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + defaultDomain?: + | SyncAcquireResponseDefaultDomain + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + environmentName?: + | SyncAcquireResponseEnvironmentName + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceGroupName?: + | SyncAcquireResponseResourceGroupName3 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceId?: SyncAcquireResponseResourceId | any | string | null | undefined; + staticIp?: any | null | undefined; + type: SyncAcquireResponseTypeContainerAppsEnvironment; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDataDirSecretRef3 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDataDir3 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDataDirSecretRef3; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDataDirUnion2 = + | SyncAcquireResponseDataDir3 + | any + | string; + +export const SyncAcquireResponseTypeVault5 = { + Vault: "vault", +} as const; +export type SyncAcquireResponseTypeVault5 = ClosedEnum< + typeof SyncAcquireResponseTypeVault5 +>; + +/** + * Local development vault binding (for testing/development) + */ +export type SyncAcquireResponseExternalBindingsLocalVault = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + dataDir?: SyncAcquireResponseDataDir3 | any | string | null | undefined; + /** + * The vault name for local storage + */ + vaultName: string; + service: "local-vault"; + type: SyncAcquireResponseTypeVault5; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseNamespaceSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseNamespace2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseNamespaceSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseNamespaceUnion2 = + | SyncAcquireResponseNamespace2 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseVaultPrefixSecretRef3 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseVaultPrefix3 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseVaultPrefixSecretRef3; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseVaultPrefixUnion3 = + | SyncAcquireResponseVaultPrefix3 + | any + | string; + +export const SyncAcquireResponseTypeVault4 = { + Vault: "vault", +} as const; +export type SyncAcquireResponseTypeVault4 = ClosedEnum< + typeof SyncAcquireResponseTypeVault4 +>; + +/** + * Kubernetes Secrets vault binding configuration + */ +export type SyncAcquireResponseExternalBindingsKubernetesSecret = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + namespace?: SyncAcquireResponseNamespace2 | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + vaultPrefix?: + | SyncAcquireResponseVaultPrefix3 + | any + | string + | null + | undefined; + service: "kubernetes-secret"; + type: SyncAcquireResponseTypeVault4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseVaultNameSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseVaultName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseVaultNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseVaultNameUnion = + | SyncAcquireResponseVaultName + | any + | string; + +export const SyncAcquireResponseTypeVault3 = { + Vault: "vault", +} as const; +export type SyncAcquireResponseTypeVault3 = ClosedEnum< + typeof SyncAcquireResponseTypeVault3 +>; + +/** + * Azure Key Vault binding configuration + */ +export type SyncAcquireResponseExternalBindingsKeyVault = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + vaultName?: SyncAcquireResponseVaultName | any | string | null | undefined; + service: "key-vault"; + type: SyncAcquireResponseTypeVault3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseVaultPrefixSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseVaultPrefix2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseVaultPrefixSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseVaultPrefixUnion2 = + | SyncAcquireResponseVaultPrefix2 + | any + | string; + +export const SyncAcquireResponseTypeVault2 = { + Vault: "vault", +} as const; +export type SyncAcquireResponseTypeVault2 = ClosedEnum< + typeof SyncAcquireResponseTypeVault2 +>; + +/** + * GCP Secret Manager vault binding configuration + */ +export type SyncAcquireResponseExternalBindingsSecretManager = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + vaultPrefix?: + | SyncAcquireResponseVaultPrefix2 + | any + | string + | null + | undefined; + service: "secret-manager"; + type: SyncAcquireResponseTypeVault2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseVaultPrefixSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseVaultPrefix1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseVaultPrefixSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseVaultPrefixUnion1 = + | SyncAcquireResponseVaultPrefix1 + | any + | string; + +export const SyncAcquireResponseTypeVault1 = { + Vault: "vault", +} as const; +export type SyncAcquireResponseTypeVault1 = ClosedEnum< + typeof SyncAcquireResponseTypeVault1 +>; + +/** + * AWS SSM Parameter Store vault binding configuration + */ +export type SyncAcquireResponseExternalBindingsParameterStore = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + vaultPrefix?: + | SyncAcquireResponseVaultPrefix1 + | any + | string + | null + | undefined; + service: "parameter-store"; + type: SyncAcquireResponseTypeVault1; +}; + +/** + * Represents a vault binding for secure secret management + */ +export type SyncAcquireResponseExternalBindingsUnion5 = + | SyncAcquireResponseExternalBindingsParameterStore + | SyncAcquireResponseExternalBindingsSecretManager + | SyncAcquireResponseExternalBindingsKeyVault + | SyncAcquireResponseExternalBindingsKubernetesSecret + | SyncAcquireResponseExternalBindingsLocalVault; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDataDirSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDataDir2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDataDirSecretRef2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseRegistryUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseRegistryUrl = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseRegistryUrlSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseRegistryUrlUnion = + | SyncAcquireResponseRegistryUrl + | any + | string; + +export const SyncAcquireResponseTypeArtifactRegistry4 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type SyncAcquireResponseTypeArtifactRegistry4 = ClosedEnum< + typeof SyncAcquireResponseTypeArtifactRegistry4 +>; + +/** + * Local container registry binding configuration. + * + * @remarks + * + * The local registry runs on localhost only and does not require authentication. + * Security boundary is the OS process isolation on the customer's machine. + * External image access is secured by the manager's registry proxy (deployment tokens). + */ +export type SyncAcquireResponseExternalBindingsLocal = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + dataDir?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + registryUrl?: + | SyncAcquireResponseRegistryUrl + | any + | string + | null + | undefined; + service: "local"; + type: SyncAcquireResponseTypeArtifactRegistry4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponsePullServiceAccountEmailSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponsePullServiceAccountEmail = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponsePullServiceAccountEmailSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponsePushServiceAccountEmailSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponsePushServiceAccountEmail = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponsePushServiceAccountEmailSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseRepositoryNameSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseRepositoryName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseRepositoryNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseRepositoryNameUnion = + | SyncAcquireResponseRepositoryName + | any + | string; + +export const SyncAcquireResponseTypeArtifactRegistry3 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type SyncAcquireResponseTypeArtifactRegistry3 = ClosedEnum< + typeof SyncAcquireResponseTypeArtifactRegistry3 +>; + +/** + * Google Artifact Registry binding configuration + */ +export type SyncAcquireResponseExternalBindingsGar = { + pullServiceAccountEmail?: any | null | undefined; + pushServiceAccountEmail?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + repositoryName?: + | SyncAcquireResponseRepositoryName + | any + | string + | null + | undefined; + service: "gar"; + type: SyncAcquireResponseTypeArtifactRegistry3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseRegistryNameSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseRegistryName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseRegistryNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseRegistryNameUnion = + | SyncAcquireResponseRegistryName + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseRepositoryPrefixSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseRepositoryPrefix2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseRepositoryPrefixSecretRef2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseResourceGroupNameSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseResourceGroupName2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseResourceGroupNameSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseResourceGroupNameUnion2 = + | SyncAcquireResponseResourceGroupName2 + | any + | string; + +export const SyncAcquireResponseTypeArtifactRegistry2 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type SyncAcquireResponseTypeArtifactRegistry2 = ClosedEnum< + typeof SyncAcquireResponseTypeArtifactRegistry2 +>; + +/** + * Azure Container Registry binding configuration + */ +export type SyncAcquireResponseExternalBindingsAcr = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + registryName?: + | SyncAcquireResponseRegistryName + | any + | string + | null + | undefined; + repositoryPrefix?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceGroupName?: + | SyncAcquireResponseResourceGroupName2 + | any + | string + | null + | undefined; + service: "acr"; + type: SyncAcquireResponseTypeArtifactRegistry2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponsePullRoleArnSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponsePullRoleArn = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponsePullRoleArnSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponsePushRoleArnSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponsePushRoleArn = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponsePushRoleArnSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseRepositoryPrefixSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseRepositoryPrefix1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseRepositoryPrefixSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseRepositoryPrefixUnion = + | SyncAcquireResponseRepositoryPrefix1 + | any + | string; + +export const SyncAcquireResponseTypeArtifactRegistry1 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type SyncAcquireResponseTypeArtifactRegistry1 = ClosedEnum< + typeof SyncAcquireResponseTypeArtifactRegistry1 +>; + +/** + * AWS ECR (Elastic Container Registry) binding configuration + */ +export type SyncAcquireResponseExternalBindingsEcr = { + pullRoleArn?: any | null | undefined; + pushRoleArn?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + repositoryPrefix?: + | SyncAcquireResponseRepositoryPrefix1 + | any + | string + | null + | undefined; + service: "ecr"; + type: SyncAcquireResponseTypeArtifactRegistry1; +}; + +/** + * Service-type based artifact registry binding that supports multiple registry providers + */ +export type SyncAcquireResponseExternalBindingsUnion4 = + | SyncAcquireResponseExternalBindingsEcr + | SyncAcquireResponseExternalBindingsAcr + | SyncAcquireResponseExternalBindingsGar + | SyncAcquireResponseExternalBindingsLocal; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDataDirSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDataDir1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDataDirSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDataDirUnion1 = + | SyncAcquireResponseDataDir1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseKeyPrefixSecretRef2 = { + key: string; + name: string; +}; + +/** @internal */ +export const SyncAcquireResponseTargetReleaseManagementUnion$inboundSchema: + z.ZodType = z.union( + [ + SyncAcquireResponseTargetReleaseManagement1$inboundSchema, + SyncAcquireResponseTargetReleaseManagement2$inboundSchema, + SyncAcquireResponseTargetReleaseManagementEnum$inboundSchema, + ], + ); + +export function syncAcquireResponseTargetReleaseManagementUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseManagementUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseManagementUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseManagementUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseTargetReleaseProfileAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileAwStack$inboundSchema: + z.ZodType = z.object( + { + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }, + ); + +export function syncAcquireResponseTargetReleaseProfileAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseProfileAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTargetReleaseProfileEffect, + ); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileAwGrant$inboundSchema: + z.ZodType = z.object( + { + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }, + ); + +export function syncAcquireResponseTargetReleaseProfileAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileAw$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseProfileAw, + unknown +> = z.object({ + binding: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncAcquireResponseTargetReleaseProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponseTargetReleaseProfileAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseTargetReleaseProfileAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseTargetReleaseProfileAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseProfileAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseTargetReleaseProfileAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseTargetReleaseProfileAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileConditionResource$inboundSchema: + z.ZodType = + z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseTargetReleaseProfileConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseTargetReleaseProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseTargetReleaseProfileResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseTargetReleaseProfileGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseTargetReleaseProfileConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseProfileCondition$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseTargetReleaseProfileConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileConditionUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseProfileCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseTargetReleaseProfileGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileGcpStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseProfileGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseTargetReleaseProfileGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseTargetReleaseProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseTargetReleaseProfileGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfilePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseTargetReleaseProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseTargetReleaseProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseTargetReleaseProfileGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseProfilePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfilePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfilePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfile$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseProfile, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseTargetReleaseProfilePlatforms$inboundSchema + ), +}); + +export function syncAcquireResponseTargetReleaseProfileFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfile, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfile$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfile' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProfileUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseTargetReleaseProfile$inboundSchema), + z.string(), + ]); + +export function syncAcquireResponseTargetReleaseProfileUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseProfileUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseProfileUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseProfileUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleasePermissions$inboundSchema: + z.ZodType = z.object({ + management: z.union([ + SyncAcquireResponseTargetReleaseManagement1$inboundSchema, + SyncAcquireResponseTargetReleaseManagement2$inboundSchema, + SyncAcquireResponseTargetReleaseManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => SyncAcquireResponseTargetReleaseProfile$inboundSchema), + z.string(), + ]), + ), + ), + ), + }); + +export function syncAcquireResponseTargetReleasePermissionsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleasePermissions, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleasePermissions$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleasePermissions' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseConfig$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncAcquireResponseTargetReleaseConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseDependency$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + type: z.string(), + }); + +export function syncAcquireResponseTargetReleaseDependencyFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseDependency, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseDependency' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseLifecycle$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTargetReleaseLifecycle +> = z.enum(SyncAcquireResponseTargetReleaseLifecycle); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseResources$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseResources, + unknown +> = z.object({ + config: z.lazy(() => SyncAcquireResponseTargetReleaseConfig$inboundSchema), + dependencies: z.array( + z.lazy(() => SyncAcquireResponseTargetReleaseDependency$inboundSchema), + ), + lifecycle: SyncAcquireResponseTargetReleaseLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), +}); + +export function syncAcquireResponseTargetReleaseResourcesFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseResources, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseResources' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseSupportedPlatform$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTargetReleaseSupportedPlatform, + ); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseStack$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseStack, + unknown +> = z.object({ + id: z.string(), + inputs: z.array(SyncAcquireResponseTargetReleaseInput$inboundSchema) + .optional(), + permissions: z.lazy(() => + SyncAcquireResponseTargetReleasePermissions$inboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncAcquireResponseTargetReleaseResources$inboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncAcquireResponseTargetReleaseSupportedPlatform$inboundSchema), + ).optional(), +}); + +export function syncAcquireResponseTargetReleaseStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetRelease$inboundSchema: z.ZodType< + SyncAcquireResponseTargetRelease, + unknown +> = z.object({ + description: z.nullable(z.string()).optional(), + releaseId: z.string(), + stack: z.lazy(() => SyncAcquireResponseTargetReleaseStack$inboundSchema), + version: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponseTargetReleaseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseTargetRelease$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetRelease' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseUnion$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseTargetRelease$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseTargetReleaseUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrent$inboundSchema: z.ZodType< + SyncAcquireResponseCurrent, + unknown +> = z.object({ + currentRelease: z.nullable( + SyncAcquireResponseCurrentReleaseUnion$inboundSchema, + ).optional(), + environmentInfo: z.nullable( + SyncAcquireResponseEnvironmentInfoUnion$inboundSchema, + ).optional(), + error: z.nullable(SyncAcquireResponseErrorUnion$inboundSchema).optional(), + platform: SyncAcquireResponseCurrentPlatform$inboundSchema, + protocolVersion: z.int(), + retryRequested: z.boolean().optional(), + runtimeMetadata: z.nullable( + SyncAcquireResponseRuntimeMetadataUnion$inboundSchema, + ).optional(), + stackState: z.nullable(SyncAcquireResponseStackStateUnion$inboundSchema) + .optional(), + status: SyncAcquireResponseStatus$inboundSchema, + targetRelease: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseTargetRelease$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncAcquireResponseCurrentFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseCurrent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrent' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseBasePlatformEnum$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseBasePlatformEnum +> = z.enum(SyncAcquireResponseBasePlatformEnum); + +/** @internal */ +export const SyncAcquireResponseBasePlatformUnion$inboundSchema: z.ZodType< + SyncAcquireResponseBasePlatformUnion, + unknown +> = z.union([SyncAcquireResponseBasePlatformEnum$inboundSchema, z.any()]); + +export function syncAcquireResponseBasePlatformUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseBasePlatformUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseBasePlatformUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseClusters$inboundSchema: z.ZodType< + SyncAcquireResponseClusters, + unknown +> = z.object({ + clusterId: z.string(), + managementToken: z.string(), +}); + +export function syncAcquireResponseClustersFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseClusters$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseClusters' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseHorizonMachineImageAws$inboundSchema: z.ZodType< + SyncAcquireResponseHorizonMachineImageAws, + unknown +> = z.object({ + amis: z.record(z.string(), z.record(z.string(), z.string())), +}); + +export function syncAcquireResponseHorizonMachineImageAwsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseHorizonMachineImageAws, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseHorizonMachineImageAws$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseHorizonMachineImageAws' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseHorizonMachineImageAwsUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseHorizonMachineImageAws$inboundSchema), + z.any(), + ]); + +export function syncAcquireResponseHorizonMachineImageAwsUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseHorizonMachineImageAwsUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseHorizonMachineImageAwsUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseHorizonMachineImageAwsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseAzureImages$inboundSchema: z.ZodType< + SyncAcquireResponseAzureImages, + unknown +> = z.object({ + imageVersionId: z.string(), +}); + +export function syncAcquireResponseAzureImagesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseAzureImages$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseAzureImages' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseHorizonMachineImageAzure$inboundSchema: + z.ZodType = z.object({ + images: z.record( + z.string(), + z.lazy(() => SyncAcquireResponseAzureImages$inboundSchema), + ), + }); + +export function syncAcquireResponseHorizonMachineImageAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseHorizonMachineImageAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseHorizonMachineImageAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseHorizonMachineImageAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseHorizonMachineImageAzureUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncAcquireResponseHorizonMachineImageAzure$inboundSchema), + z.any(), + ]); + +export function syncAcquireResponseHorizonMachineImageAzureUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseHorizonMachineImageAzureUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseHorizonMachineImageAzureUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseHorizonMachineImageAzureUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseBaseImage$inboundSchema: z.ZodType< + SyncAcquireResponseBaseImage, + unknown +> = z.object({ + name: z.string(), + version: z.string(), +}); + +export function syncAcquireResponseBaseImageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseBaseImage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseBaseImage' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseGcpImages$inboundSchema: z.ZodType< + SyncAcquireResponseGcpImages, + unknown +> = z.object({ + sourceImage: z.string(), +}); + +export function syncAcquireResponseGcpImagesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseGcpImages$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseGcpImages' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseHorizonMachineImageGcp$inboundSchema: z.ZodType< + SyncAcquireResponseHorizonMachineImageGcp, + unknown +> = z.object({ + images: z.record( + z.string(), + z.lazy(() => SyncAcquireResponseGcpImages$inboundSchema), + ), +}); + +export function syncAcquireResponseHorizonMachineImageGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseHorizonMachineImageGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseHorizonMachineImageGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseHorizonMachineImageGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseHorizonMachineImageGcpUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseHorizonMachineImageGcp$inboundSchema), + z.any(), + ]); + +export function syncAcquireResponseHorizonMachineImageGcpUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseHorizonMachineImageGcpUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseHorizonMachineImageGcpUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseHorizonMachineImageGcpUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseHorizonMachineImage$inboundSchema: z.ZodType< + SyncAcquireResponseHorizonMachineImage, + unknown +> = z.object({ + aws: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseHorizonMachineImageAws$inboundSchema), + z.any(), + ]), + ).optional(), + azure: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseHorizonMachineImageAzure$inboundSchema), + z.any(), + ]), + ).optional(), + baseImage: z.lazy(() => SyncAcquireResponseBaseImage$inboundSchema), + channel: z.string(), + createdAt: z.string(), + gcp: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseHorizonMachineImageGcp$inboundSchema), + z.any(), + ]), + ).optional(), + gitSha: z.string(), + horizondVersion: z.string(), + machineImageVersion: z.string(), +}); + +export function syncAcquireResponseHorizonMachineImageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseHorizonMachineImage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseHorizonMachineImage' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseHorizonMachineImageUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseHorizonMachineImage$inboundSchema), + z.any(), + ]); + +export function syncAcquireResponseHorizonMachineImageUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseHorizonMachineImageUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseHorizonMachineImageUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseHorizonMachineImageUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseComputeBackendType$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseComputeBackendType +> = z.enum(SyncAcquireResponseComputeBackendType); + +/** @internal */ +export const SyncAcquireResponseComputeBackendHorizon$inboundSchema: z.ZodType< + SyncAcquireResponseComputeBackendHorizon, + unknown +> = z.object({ + clusters: z.record( + z.string(), + z.lazy(() => SyncAcquireResponseClusters$inboundSchema), + ), + horizonMachineImage: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseHorizonMachineImage$inboundSchema), + z.any(), + ]), + ).optional(), + url: z.string(), + type: SyncAcquireResponseComputeBackendType$inboundSchema, +}); + +export function syncAcquireResponseComputeBackendHorizonFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseComputeBackendHorizon, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseComputeBackendHorizon$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseComputeBackendHorizon' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseComputeBackendUnion$inboundSchema: z.ZodType< + SyncAcquireResponseComputeBackendUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseComputeBackendHorizon$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseComputeBackendUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseComputeBackendUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseComputeBackendUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseAliasCertificateStatus$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseAliasCertificateStatus +> = z.enum(SyncAcquireResponseAliasCertificateStatus); + +/** @internal */ +export const SyncAcquireResponseAliasDnsStatus$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseAliasDnsStatus +> = z.enum(SyncAcquireResponseAliasDnsStatus); + +/** @internal */ +export const SyncAcquireResponseAlias$inboundSchema: z.ZodType< + SyncAcquireResponseAlias, + unknown +> = z.object({ + certificateChain: z.nullable(z.string()).optional(), + certificateId: z.string(), + certificateStatus: SyncAcquireResponseAliasCertificateStatus$inboundSchema, + dnsError: z.nullable(z.string()).optional(), + dnsStatus: SyncAcquireResponseAliasDnsStatus$inboundSchema, + fqdn: z.string(), + issuedAt: z.nullable(z.string()).optional(), + privateKey: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponseAliasFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseAlias$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseAlias' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCertificateStatus$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseCertificateStatus +> = z.enum(SyncAcquireResponseCertificateStatus); + +/** @internal */ +export const SyncAcquireResponseDnsStatus$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseDnsStatus +> = z.enum(SyncAcquireResponseDnsStatus); + +/** @internal */ +export const SyncAcquireResponseEndpointsCertificateStatus$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseEndpointsCertificateStatus, + ); + +/** @internal */ +export const SyncAcquireResponseEndpointsDnsStatus$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseEndpointsDnsStatus +> = z.enum(SyncAcquireResponseEndpointsDnsStatus); + +/** @internal */ +export const SyncAcquireResponseEndpoints$inboundSchema: z.ZodType< + SyncAcquireResponseEndpoints, + unknown +> = z.object({ + certificateChain: z.nullable(z.string()).optional(), + certificateId: z.string(), + certificateStatus: + SyncAcquireResponseEndpointsCertificateStatus$inboundSchema, + dnsError: z.nullable(z.string()).optional(), + dnsStatus: SyncAcquireResponseEndpointsDnsStatus$inboundSchema, + fqdn: z.string(), + issuedAt: z.nullable(z.string()).optional(), + privateKey: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponseEndpointsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseEndpoints$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseEndpoints' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDomainMetadataResources$inboundSchema: + z.ZodType = z.object({ + aliases: z.array(z.lazy(() => SyncAcquireResponseAlias$inboundSchema)) + .optional(), + certificateChain: z.nullable(z.string()).optional(), + certificateId: z.string(), + certificateStatus: SyncAcquireResponseCertificateStatus$inboundSchema, + dnsError: z.nullable(z.string()).optional(), + dnsStatus: SyncAcquireResponseDnsStatus$inboundSchema, + endpoints: z.record( + z.string(), + z.lazy(() => SyncAcquireResponseEndpoints$inboundSchema), + ).optional(), + fqdn: z.string(), + issuedAt: z.nullable(z.string()).optional(), + privateKey: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseDomainMetadataResourcesFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDomainMetadataResources, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDomainMetadataResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDomainMetadataResources' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDomainMetadata$inboundSchema: z.ZodType< + SyncAcquireResponseDomainMetadata, + unknown +> = z.object({ + baseDomain: z.string(), + hostedZoneId: z.string(), + publicSubdomain: z.string(), + resources: z.record( + z.string(), + z.lazy(() => SyncAcquireResponseDomainMetadataResources$inboundSchema), + ), +}); + +export function syncAcquireResponseDomainMetadataFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseDomainMetadata$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDomainMetadata' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDomainMetadataUnion$inboundSchema: z.ZodType< + SyncAcquireResponseDomainMetadataUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseDomainMetadata$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseDomainMetadataUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDomainMetadataUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDomainMetadataUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseEnvironmentVariablesType$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseEnvironmentVariablesType, + ); + +/** @internal */ +export const SyncAcquireResponseVariable$inboundSchema: z.ZodType< + SyncAcquireResponseVariable, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: SyncAcquireResponseEnvironmentVariablesType$inboundSchema, + value: z.string(), +}); + +export function syncAcquireResponseVariableFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseVariable$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseVariable' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseEnvironmentVariables$inboundSchema: z.ZodType< + SyncAcquireResponseEnvironmentVariables, + unknown +> = z.object({ + createdAt: z.string(), + hash: z.string(), + variables: z.array(z.lazy(() => SyncAcquireResponseVariable$inboundSchema)), +}); + +export function syncAcquireResponseEnvironmentVariablesFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseEnvironmentVariables, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseEnvironmentVariables$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseEnvironmentVariables' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDefaultDomainSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseDefaultDomainSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseDefaultDomainSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDefaultDomainSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDefaultDomainSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDefaultDomainSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDefaultDomain$inboundSchema: z.ZodType< + SyncAcquireResponseDefaultDomain, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseDefaultDomainSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseDefaultDomainFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseDefaultDomain$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDefaultDomain' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDefaultDomainUnion$inboundSchema: z.ZodType< + SyncAcquireResponseDefaultDomainUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseDefaultDomain$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseDefaultDomainUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDefaultDomainUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDefaultDomainUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseEnvironmentNameSecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncAcquireResponseEnvironmentNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseEnvironmentNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseEnvironmentNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseEnvironmentNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseEnvironmentName$inboundSchema: z.ZodType< + SyncAcquireResponseEnvironmentName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseEnvironmentNameSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseEnvironmentNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseEnvironmentName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseEnvironmentName' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseEnvironmentNameUnion$inboundSchema: z.ZodType< + SyncAcquireResponseEnvironmentNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseEnvironmentName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseEnvironmentNameUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseEnvironmentNameUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseEnvironmentNameUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseEnvironmentNameUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceGroupNameSecretRef3$inboundSchema: + z.ZodType = z.object( + { + key: z.string(), + name: z.string(), + }, + ); + +export function syncAcquireResponseResourceGroupNameSecretRef3FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseResourceGroupNameSecretRef3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseResourceGroupNameSecretRef3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseResourceGroupNameSecretRef3' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceGroupName3$inboundSchema: z.ZodType< + SyncAcquireResponseResourceGroupName3, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseResourceGroupNameSecretRef3$inboundSchema + ), +}); + +export function syncAcquireResponseResourceGroupName3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseResourceGroupName3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseResourceGroupName3' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceGroupNameUnion3$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseResourceGroupName3$inboundSchema), + z.any(), + z.string(), + ]); + +export function syncAcquireResponseResourceGroupNameUnion3FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseResourceGroupNameUnion3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseResourceGroupNameUnion3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseResourceGroupNameUnion3' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceIdSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseResourceIdSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseResourceIdSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseResourceIdSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseResourceIdSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceId$inboundSchema: z.ZodType< + SyncAcquireResponseResourceId, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseResourceIdSecretRef$inboundSchema), +}); + +export function syncAcquireResponseResourceIdFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseResourceId$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseResourceId' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceIdUnion$inboundSchema: z.ZodType< + SyncAcquireResponseResourceIdUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseResourceId$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseResourceIdUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseResourceIdUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseResourceIdUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStaticIpSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseStaticIpSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseStaticIpSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStaticIpSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseStaticIpSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStaticIp$inboundSchema: z.ZodType< + SyncAcquireResponseStaticIp, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseStaticIpSecretRef$inboundSchema), +}); + +export function syncAcquireResponseStaticIpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseStaticIp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseStaticIp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeContainerAppsEnvironment$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTypeContainerAppsEnvironment, + ); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsContainerAppsEnvironment$inboundSchema: + z.ZodType< + SyncAcquireResponseExternalBindingsContainerAppsEnvironment, + unknown + > = z.object({ + defaultDomain: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseDefaultDomain$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + environmentName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseEnvironmentName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + resourceGroupName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseResourceGroupName3$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + resourceId: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseResourceId$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + staticIp: z.nullable(z.any()).optional(), + type: SyncAcquireResponseTypeContainerAppsEnvironment$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsContainerAppsEnvironmentFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsContainerAppsEnvironment, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsContainerAppsEnvironment$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseExternalBindingsContainerAppsEnvironment' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDataDirSecretRef3$inboundSchema: z.ZodType< + SyncAcquireResponseDataDirSecretRef3, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseDataDirSecretRef3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDataDirSecretRef3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDataDirSecretRef3' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDataDir3$inboundSchema: z.ZodType< + SyncAcquireResponseDataDir3, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseDataDirSecretRef3$inboundSchema), +}); + +export function syncAcquireResponseDataDir3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseDataDir3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDataDir3' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDataDirUnion2$inboundSchema: z.ZodType< + SyncAcquireResponseDataDirUnion2, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseDataDir3$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseDataDirUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseDataDirUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDataDirUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeVault5$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeVault5 +> = z.enum(SyncAcquireResponseTypeVault5); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsLocalVault$inboundSchema: + z.ZodType = z.object({ + dataDir: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseDataDir3$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + vaultName: z.string(), + service: z.literal("local-vault"), + type: SyncAcquireResponseTypeVault5$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsLocalVaultFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsLocalVault, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsLocalVault$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsLocalVault' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseNamespaceSecretRef2$inboundSchema: z.ZodType< + SyncAcquireResponseNamespaceSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseNamespaceSecretRef2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseNamespaceSecretRef2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseNamespaceSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseNamespace2$inboundSchema: z.ZodType< + SyncAcquireResponseNamespace2, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseNamespaceSecretRef2$inboundSchema), +}); + +export function syncAcquireResponseNamespace2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseNamespace2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseNamespace2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseNamespaceUnion2$inboundSchema: z.ZodType< + SyncAcquireResponseNamespaceUnion2, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseNamespace2$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseNamespaceUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseNamespaceUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseNamespaceUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultPrefixSecretRef3$inboundSchema: z.ZodType< + SyncAcquireResponseVaultPrefixSecretRef3, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseVaultPrefixSecretRef3FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseVaultPrefixSecretRef3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseVaultPrefixSecretRef3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseVaultPrefixSecretRef3' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultPrefix3$inboundSchema: z.ZodType< + SyncAcquireResponseVaultPrefix3, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseVaultPrefixSecretRef3$inboundSchema + ), +}); + +export function syncAcquireResponseVaultPrefix3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseVaultPrefix3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseVaultPrefix3' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultPrefixUnion3$inboundSchema: z.ZodType< + SyncAcquireResponseVaultPrefixUnion3, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseVaultPrefix3$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseVaultPrefixUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseVaultPrefixUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseVaultPrefixUnion3' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeVault4$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeVault4 +> = z.enum(SyncAcquireResponseTypeVault4); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsKubernetesSecret$inboundSchema: + z.ZodType = z + .object({ + namespace: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseNamespace2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + vaultPrefix: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseVaultPrefix3$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("kubernetes-secret"), + type: SyncAcquireResponseTypeVault4$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsKubernetesSecretFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsKubernetesSecret, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsKubernetesSecret$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsKubernetesSecret' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultNameSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseVaultNameSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseVaultNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseVaultNameSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseVaultNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultName$inboundSchema: z.ZodType< + SyncAcquireResponseVaultName, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseVaultNameSecretRef$inboundSchema), +}); + +export function syncAcquireResponseVaultNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseVaultName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseVaultName' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultNameUnion$inboundSchema: z.ZodType< + SyncAcquireResponseVaultNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseVaultName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseVaultNameUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseVaultNameUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseVaultNameUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeVault3$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeVault3 +> = z.enum(SyncAcquireResponseTypeVault3); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsKeyVault$inboundSchema: + z.ZodType = z.object({ + vaultName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseVaultName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("key-vault"), + type: SyncAcquireResponseTypeVault3$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsKeyVaultFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsKeyVault, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsKeyVault$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsKeyVault' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultPrefixSecretRef2$inboundSchema: z.ZodType< + SyncAcquireResponseVaultPrefixSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseVaultPrefixSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseVaultPrefixSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseVaultPrefixSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseVaultPrefixSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultPrefix2$inboundSchema: z.ZodType< + SyncAcquireResponseVaultPrefix2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseVaultPrefixSecretRef2$inboundSchema + ), +}); + +export function syncAcquireResponseVaultPrefix2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseVaultPrefix2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseVaultPrefix2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultPrefixUnion2$inboundSchema: z.ZodType< + SyncAcquireResponseVaultPrefixUnion2, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseVaultPrefix2$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseVaultPrefixUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseVaultPrefixUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseVaultPrefixUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeVault2$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeVault2 +> = z.enum(SyncAcquireResponseTypeVault2); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsSecretManager$inboundSchema: + z.ZodType = z + .object({ + vaultPrefix: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseVaultPrefix2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("secret-manager"), + type: SyncAcquireResponseTypeVault2$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsSecretManagerFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsSecretManager, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsSecretManager$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsSecretManager' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultPrefixSecretRef1$inboundSchema: z.ZodType< + SyncAcquireResponseVaultPrefixSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseVaultPrefixSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseVaultPrefixSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseVaultPrefixSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseVaultPrefixSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultPrefix1$inboundSchema: z.ZodType< + SyncAcquireResponseVaultPrefix1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseVaultPrefixSecretRef1$inboundSchema + ), +}); + +export function syncAcquireResponseVaultPrefix1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseVaultPrefix1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseVaultPrefix1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseVaultPrefixUnion1$inboundSchema: z.ZodType< + SyncAcquireResponseVaultPrefixUnion1, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseVaultPrefix1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseVaultPrefixUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseVaultPrefixUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseVaultPrefixUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeVault1$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeVault1 +> = z.enum(SyncAcquireResponseTypeVault1); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsParameterStore$inboundSchema: + z.ZodType = z + .object({ + vaultPrefix: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseVaultPrefix1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("parameter-store"), + type: SyncAcquireResponseTypeVault1$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsParameterStoreFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsParameterStore, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsParameterStore$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsParameterStore' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseExternalBindingsUnion5$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsUnion5, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseExternalBindingsParameterStore$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsSecretManager$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsKeyVault$inboundSchema), + z.lazy(() => + SyncAcquireResponseExternalBindingsKubernetesSecret$inboundSchema + ), + z.lazy(() => SyncAcquireResponseExternalBindingsLocalVault$inboundSchema), +]); + +export function syncAcquireResponseExternalBindingsUnion5FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsUnion5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsUnion5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsUnion5' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDataDirSecretRef2$inboundSchema: z.ZodType< + SyncAcquireResponseDataDirSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseDataDirSecretRef2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDataDirSecretRef2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDataDirSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDataDir2$inboundSchema: z.ZodType< + SyncAcquireResponseDataDir2, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseDataDirSecretRef2$inboundSchema), +}); + +export function syncAcquireResponseDataDir2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseDataDir2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDataDir2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRegistryUrlSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseRegistryUrlSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseRegistryUrlSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseRegistryUrlSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRegistryUrlSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseRegistryUrlSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRegistryUrl$inboundSchema: z.ZodType< + SyncAcquireResponseRegistryUrl, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseRegistryUrlSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseRegistryUrlFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseRegistryUrl$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRegistryUrl' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRegistryUrlUnion$inboundSchema: z.ZodType< + SyncAcquireResponseRegistryUrlUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseRegistryUrl$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseRegistryUrlUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRegistryUrlUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRegistryUrlUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeArtifactRegistry4$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeArtifactRegistry4 +> = z.enum(SyncAcquireResponseTypeArtifactRegistry4); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsLocal$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsLocal, + unknown +> = z.object({ + dataDir: z.nullable(z.any()).optional(), + registryUrl: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseRegistryUrl$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("local"), + type: SyncAcquireResponseTypeArtifactRegistry4$inboundSchema, +}); + +export function syncAcquireResponseExternalBindingsLocalFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsLocal, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsLocal$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsLocal' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePullServiceAccountEmailSecretRef$inboundSchema: + z.ZodType = z + .object({ + key: z.string(), + name: z.string(), + }); + +export function syncAcquireResponsePullServiceAccountEmailSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePullServiceAccountEmailSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePullServiceAccountEmailSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePullServiceAccountEmailSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePullServiceAccountEmail$inboundSchema: + z.ZodType = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponsePullServiceAccountEmailSecretRef$inboundSchema + ), + }); + +export function syncAcquireResponsePullServiceAccountEmailFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePullServiceAccountEmail, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePullServiceAccountEmail$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePullServiceAccountEmail' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePushServiceAccountEmailSecretRef$inboundSchema: + z.ZodType = z + .object({ + key: z.string(), + name: z.string(), + }); + +export function syncAcquireResponsePushServiceAccountEmailSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePushServiceAccountEmailSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePushServiceAccountEmailSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePushServiceAccountEmailSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePushServiceAccountEmail$inboundSchema: + z.ZodType = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponsePushServiceAccountEmailSecretRef$inboundSchema + ), + }); + +export function syncAcquireResponsePushServiceAccountEmailFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePushServiceAccountEmail, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePushServiceAccountEmail$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePushServiceAccountEmail' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRepositoryNameSecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncAcquireResponseRepositoryNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseRepositoryNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRepositoryNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseRepositoryNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRepositoryName$inboundSchema: z.ZodType< + SyncAcquireResponseRepositoryName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseRepositoryNameSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseRepositoryNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseRepositoryName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRepositoryName' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRepositoryNameUnion$inboundSchema: z.ZodType< + SyncAcquireResponseRepositoryNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseRepositoryName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseRepositoryNameUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRepositoryNameUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRepositoryNameUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeArtifactRegistry3$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeArtifactRegistry3 +> = z.enum(SyncAcquireResponseTypeArtifactRegistry3); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsGar$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsGar, + unknown +> = z.object({ + pullServiceAccountEmail: z.nullable(z.any()).optional(), + pushServiceAccountEmail: z.nullable(z.any()).optional(), + repositoryName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseRepositoryName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("gar"), + type: SyncAcquireResponseTypeArtifactRegistry3$inboundSchema, +}); + +export function syncAcquireResponseExternalBindingsGarFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsGar$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseExternalBindingsGar' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRegistryNameSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseRegistryNameSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseRegistryNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseRegistryNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRegistryNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseRegistryNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRegistryName$inboundSchema: z.ZodType< + SyncAcquireResponseRegistryName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseRegistryNameSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseRegistryNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseRegistryName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRegistryName' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRegistryNameUnion$inboundSchema: z.ZodType< + SyncAcquireResponseRegistryNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseRegistryName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseRegistryNameUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRegistryNameUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRegistryNameUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRepositoryPrefixSecretRef2$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncAcquireResponseRepositoryPrefixSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseRepositoryPrefixSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRepositoryPrefixSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseRepositoryPrefixSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRepositoryPrefix2$inboundSchema: z.ZodType< + SyncAcquireResponseRepositoryPrefix2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseRepositoryPrefixSecretRef2$inboundSchema + ), +}); + +export function syncAcquireResponseRepositoryPrefix2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRepositoryPrefix2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRepositoryPrefix2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceGroupNameSecretRef2$inboundSchema: + z.ZodType = z.object( + { + key: z.string(), + name: z.string(), + }, + ); + +export function syncAcquireResponseResourceGroupNameSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseResourceGroupNameSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseResourceGroupNameSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseResourceGroupNameSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceGroupName2$inboundSchema: z.ZodType< + SyncAcquireResponseResourceGroupName2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseResourceGroupNameSecretRef2$inboundSchema + ), +}); + +export function syncAcquireResponseResourceGroupName2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseResourceGroupName2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseResourceGroupName2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceGroupNameUnion2$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseResourceGroupName2$inboundSchema), + z.any(), + z.string(), + ]); + +export function syncAcquireResponseResourceGroupNameUnion2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseResourceGroupNameUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseResourceGroupNameUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseResourceGroupNameUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeArtifactRegistry2$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeArtifactRegistry2 +> = z.enum(SyncAcquireResponseTypeArtifactRegistry2); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsAcr$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsAcr, + unknown +> = z.object({ + registryName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseRegistryName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + repositoryPrefix: z.nullable(z.any()).optional(), + resourceGroupName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseResourceGroupName2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("acr"), + type: SyncAcquireResponseTypeArtifactRegistry2$inboundSchema, +}); + +export function syncAcquireResponseExternalBindingsAcrFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsAcr$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseExternalBindingsAcr' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePullRoleArnSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponsePullRoleArnSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponsePullRoleArnSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePullRoleArnSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePullRoleArnSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePullRoleArnSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePullRoleArn$inboundSchema: z.ZodType< + SyncAcquireResponsePullRoleArn, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponsePullRoleArnSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponsePullRoleArnFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponsePullRoleArn$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePullRoleArn' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePushRoleArnSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponsePushRoleArnSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponsePushRoleArnSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePushRoleArnSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePushRoleArnSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePushRoleArnSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePushRoleArn$inboundSchema: z.ZodType< + SyncAcquireResponsePushRoleArn, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponsePushRoleArnSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponsePushRoleArnFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponsePushRoleArn$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePushRoleArn' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRepositoryPrefixSecretRef1$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncAcquireResponseRepositoryPrefixSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseRepositoryPrefixSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRepositoryPrefixSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseRepositoryPrefixSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRepositoryPrefix1$inboundSchema: z.ZodType< + SyncAcquireResponseRepositoryPrefix1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseRepositoryPrefixSecretRef1$inboundSchema + ), +}); + +export function syncAcquireResponseRepositoryPrefix1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRepositoryPrefix1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRepositoryPrefix1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRepositoryPrefixUnion$inboundSchema: z.ZodType< + SyncAcquireResponseRepositoryPrefixUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseRepositoryPrefix1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseRepositoryPrefixUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseRepositoryPrefixUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRepositoryPrefixUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseRepositoryPrefixUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeArtifactRegistry1$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeArtifactRegistry1 +> = z.enum(SyncAcquireResponseTypeArtifactRegistry1); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsEcr$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsEcr, + unknown +> = z.object({ + pullRoleArn: z.nullable(z.any()).optional(), + pushRoleArn: z.nullable(z.any()).optional(), + repositoryPrefix: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseRepositoryPrefix1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("ecr"), + type: SyncAcquireResponseTypeArtifactRegistry1$inboundSchema, +}); + +export function syncAcquireResponseExternalBindingsEcrFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsEcr$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseExternalBindingsEcr' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseExternalBindingsUnion4$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsUnion4, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseExternalBindingsEcr$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsAcr$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsGar$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsLocal$inboundSchema), +]); + +export function syncAcquireResponseExternalBindingsUnion4FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsUnion4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsUnion4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsUnion4' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDataDirSecretRef1$inboundSchema: z.ZodType< + SyncAcquireResponseDataDirSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseDataDirSecretRef1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDataDirSecretRef1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDataDirSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDataDir1$inboundSchema: z.ZodType< + SyncAcquireResponseDataDir1, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseDataDirSecretRef1$inboundSchema), +}); + +export function syncAcquireResponseDataDir1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseDataDir1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDataDir1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDataDirUnion1$inboundSchema: z.ZodType< + SyncAcquireResponseDataDirUnion1, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseDataDir1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseDataDirUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseDataDirUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDataDirUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseKeyPrefixSecretRef2$inboundSchema: z.ZodType< + SyncAcquireResponseKeyPrefixSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseKeyPrefixSecretRef2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseKeyPrefixSecretRef2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseKeyPrefixSecretRef2' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/syncacquireresponsepreparedstackoverridegcpstack.ts b/client-sdks/platform/typescript/src/models/syncacquireresponsepreparedstackoverridegcpstack.ts new file mode 100644 index 000000000..b06e008fb --- /dev/null +++ b/client-sdks/platform/typescript/src/models/syncacquireresponsepreparedstackoverridegcpstack.ts @@ -0,0 +1,5712 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { + collectExtraKeys as collectExtraKeys$, + safeParse, +} from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const SyncAcquireResponseCurrentReleaseTypeStringList = { + StringList: "stringList", +} as const; +export type SyncAcquireResponseCurrentReleaseTypeStringList = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseTypeStringList +>; + +export type SyncAcquireResponseCurrentReleaseDefaultStringList = { + type: SyncAcquireResponseCurrentReleaseTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const SyncAcquireResponseCurrentReleaseTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncAcquireResponseCurrentReleaseTypeBoolean = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseTypeBoolean +>; + +export type SyncAcquireResponseCurrentReleaseDefaultBoolean = { + type: SyncAcquireResponseCurrentReleaseTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const SyncAcquireResponseCurrentReleaseTypeNumber = { + Number: "number", +} as const; +export type SyncAcquireResponseCurrentReleaseTypeNumber = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseTypeNumber +>; + +export type SyncAcquireResponseCurrentReleaseDefaultNumber = { + type: SyncAcquireResponseCurrentReleaseTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const SyncAcquireResponseCurrentReleaseTypeString = { + String: "string", +} as const; +export type SyncAcquireResponseCurrentReleaseTypeString = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseTypeString +>; + +export type SyncAcquireResponseCurrentReleaseDefaultString = { + type: SyncAcquireResponseCurrentReleaseTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncAcquireResponseCurrentReleaseDefaultUnion = + | SyncAcquireResponseCurrentReleaseDefaultString + | SyncAcquireResponseCurrentReleaseDefaultNumber + | SyncAcquireResponseCurrentReleaseDefaultBoolean + | SyncAcquireResponseCurrentReleaseDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const SyncAcquireResponseCurrentReleaseTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncAcquireResponseCurrentReleaseTypeEnvEnum = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseTypeEnvEnum +>; + +export type SyncAcquireResponseCurrentReleaseTypeUnion = + | SyncAcquireResponseCurrentReleaseTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncAcquireResponseCurrentReleaseEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: SyncAcquireResponseCurrentReleaseTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const SyncAcquireResponseCurrentReleaseKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type SyncAcquireResponseCurrentReleaseKind = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseKind +>; + +/** + * Represents the target cloud platform. + */ +export const SyncAcquireResponseCurrentReleasePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponseCurrentReleasePlatform = ClosedEnum< + typeof SyncAcquireResponseCurrentReleasePlatform +>; + +/** + * Who can provide a stack input value. + */ +export const SyncAcquireResponseCurrentReleaseProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncAcquireResponseCurrentReleaseProvidedBy = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type SyncAcquireResponseCurrentReleaseValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type SyncAcquireResponseCurrentReleaseValidationUnion = + | SyncAcquireResponseCurrentReleaseValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type SyncAcquireResponseCurrentReleaseInput = { + default?: + | SyncAcquireResponseCurrentReleaseDefaultString + | SyncAcquireResponseCurrentReleaseDefaultNumber + | SyncAcquireResponseCurrentReleaseDefaultBoolean + | SyncAcquireResponseCurrentReleaseDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: SyncAcquireResponseCurrentReleaseKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncAcquireResponseCurrentReleaseValidation + | any + | null + | undefined; +}; + +export const SyncAcquireResponseCurrentReleaseManagementEnum = { + Auto: "auto", +} as const; +export type SyncAcquireResponseCurrentReleaseManagementEnum = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseCurrentReleaseOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncAcquireResponseCurrentReleaseOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponseCurrentReleaseOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncAcquireResponseCurrentReleaseOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncAcquireResponseCurrentReleaseOverrideEffect = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseCurrentReleaseOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncAcquireResponseCurrentReleaseOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseCurrentReleaseOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncAcquireResponseCurrentReleaseOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseCurrentReleaseOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseCurrentReleaseOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncAcquireResponseCurrentReleaseOverrideAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncAcquireResponseCurrentReleaseOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseCurrentReleaseOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncAcquireResponseCurrentReleaseOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseCurrentReleaseOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseCurrentReleaseOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseCurrentReleaseOverrideConditionResource = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion = + | SyncAcquireResponseCurrentReleaseOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseOverrideGcpResource = { + condition?: + | SyncAcquireResponseCurrentReleaseOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseCurrentReleaseOverrideCondition = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseCurrentReleaseOverrideConditionUnion = + | SyncAcquireResponseCurrentReleaseOverrideCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseOverrideGcpStack = { + condition?: + | SyncAcquireResponseCurrentReleaseOverrideCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseCurrentReleaseOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncAcquireResponseCurrentReleaseOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncAcquireResponseCurrentReleaseOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseCurrentReleaseOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncAcquireResponseCurrentReleaseOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseCurrentReleaseOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseCurrentReleaseOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncAcquireResponseCurrentReleaseOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncAcquireResponseCurrentReleaseOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponseCurrentReleaseOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncAcquireResponseCurrentReleaseOverrideUnion = + | SyncAcquireResponseCurrentReleaseOverride + | string; + +export type SyncAcquireResponseCurrentReleaseManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseCurrentReleaseExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncAcquireResponseCurrentReleaseExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponseCurrentReleaseExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncAcquireResponseCurrentReleaseExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncAcquireResponseCurrentReleaseExtendEffect = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseCurrentReleaseExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncAcquireResponseCurrentReleaseExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseCurrentReleaseExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncAcquireResponseCurrentReleaseExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseCurrentReleaseExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseCurrentReleaseExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncAcquireResponseCurrentReleaseExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncAcquireResponseCurrentReleaseExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseCurrentReleaseExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncAcquireResponseCurrentReleaseExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseCurrentReleaseExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseCurrentReleaseExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseCurrentReleaseExtendConditionResource = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion = + | SyncAcquireResponseCurrentReleaseExtendConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseExtendGcpResource = { + condition?: + | SyncAcquireResponseCurrentReleaseExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseCurrentReleaseExtendCondition = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseCurrentReleaseExtendConditionUnion = + | SyncAcquireResponseCurrentReleaseExtendCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseExtendGcpStack = { + condition?: + | SyncAcquireResponseCurrentReleaseExtendCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseCurrentReleaseExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncAcquireResponseCurrentReleaseExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncAcquireResponseCurrentReleaseExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseCurrentReleaseExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncAcquireResponseCurrentReleaseExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseCurrentReleaseExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseCurrentReleaseExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncAcquireResponseCurrentReleaseExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncAcquireResponseCurrentReleaseExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponseCurrentReleaseExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncAcquireResponseCurrentReleaseExtendUnion = + | SyncAcquireResponseCurrentReleaseExtend + | string; + +export type SyncAcquireResponseCurrentReleaseManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array; + }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type SyncAcquireResponseCurrentReleaseManagementUnion = + | SyncAcquireResponseCurrentReleaseManagement1 + | SyncAcquireResponseCurrentReleaseManagement2 + | SyncAcquireResponseCurrentReleaseManagementEnum; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseCurrentReleaseProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncAcquireResponseCurrentReleaseProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponseCurrentReleaseProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncAcquireResponseCurrentReleaseProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncAcquireResponseCurrentReleaseProfileEffect = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseCurrentReleaseProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncAcquireResponseCurrentReleaseProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseCurrentReleaseProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncAcquireResponseCurrentReleaseProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseCurrentReleaseProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseCurrentReleaseProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncAcquireResponseCurrentReleaseProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncAcquireResponseCurrentReleaseProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseCurrentReleaseProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncAcquireResponseCurrentReleaseProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseCurrentReleaseProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseCurrentReleaseProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseCurrentReleaseProfileConditionResource = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion = + | SyncAcquireResponseCurrentReleaseProfileConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseProfileGcpResource = { + condition?: + | SyncAcquireResponseCurrentReleaseProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseCurrentReleaseProfileCondition = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseCurrentReleaseProfileConditionUnion = + | SyncAcquireResponseCurrentReleaseProfileCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseCurrentReleaseProfileGcpStack = { + condition?: + | SyncAcquireResponseCurrentReleaseProfileCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseCurrentReleaseProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncAcquireResponseCurrentReleaseProfileGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncAcquireResponseCurrentReleaseProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseCurrentReleaseProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncAcquireResponseCurrentReleaseProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseCurrentReleaseProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseCurrentReleaseProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncAcquireResponseCurrentReleaseProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncAcquireResponseCurrentReleaseProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponseCurrentReleaseProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncAcquireResponseCurrentReleaseProfileUnion = + | SyncAcquireResponseCurrentReleaseProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncAcquireResponseCurrentReleasePermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncAcquireResponseCurrentReleaseManagement1 + | SyncAcquireResponseCurrentReleaseManagement2 + | SyncAcquireResponseCurrentReleaseManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncAcquireResponseCurrentReleaseConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncAcquireResponseCurrentReleaseDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const SyncAcquireResponseCurrentReleaseLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type SyncAcquireResponseCurrentReleaseLifecycle = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseLifecycle +>; + +export type SyncAcquireResponseCurrentReleaseResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncAcquireResponseCurrentReleaseConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: SyncAcquireResponseCurrentReleaseLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncAcquireResponseCurrentReleaseSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponseCurrentReleaseSupportedPlatform = ClosedEnum< + typeof SyncAcquireResponseCurrentReleaseSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncAcquireResponseCurrentReleaseStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncAcquireResponseCurrentReleasePermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncAcquireResponseCurrentReleaseResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +/** + * Release metadata + * + * @remarks + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. + */ +export type SyncAcquireResponseCurrentRelease = { + /** + * Short description of the release + */ + description?: string | null | undefined; + /** + * Release ID (e.g., rel_xyz) + */ + releaseId: string; + /** + * A bag of resources, unaware of any cloud. + */ + stack: SyncAcquireResponseCurrentReleaseStack; + /** + * Version string (e.g., 2.1.0) + */ + version?: string | null | undefined; +}; + +export type SyncAcquireResponseCurrentReleaseUnion = + | SyncAcquireResponseCurrentRelease + | any; + +export const SyncAcquireResponsePlatformTest = { + Test: "test", +} as const; +export type SyncAcquireResponsePlatformTest = ClosedEnum< + typeof SyncAcquireResponsePlatformTest +>; + +/** + * Test platform environment information (mock) + */ +export type SyncAcquireResponseEnvironmentInfoTest = { + /** + * Test identifier for this environment + */ + testId: string; + platform: SyncAcquireResponsePlatformTest; +}; + +export const SyncAcquireResponsePlatformLocal = { + Local: "local", +} as const; +export type SyncAcquireResponsePlatformLocal = ClosedEnum< + typeof SyncAcquireResponsePlatformLocal +>; + +/** + * Local platform environment information + */ +export type SyncAcquireResponseEnvironmentInfoLocal = { + /** + * Architecture (e.g., "x86_64", "aarch64") + */ + arch: string; + /** + * Hostname of the machine running the deployment + */ + hostname: string; + /** + * Operating system (e.g., "linux", "macos", "windows") + */ + os: string; + platform: SyncAcquireResponsePlatformLocal; +}; + +export const SyncAcquireResponseCurrentPlatformAzure = { + Azure: "azure", +} as const; +export type SyncAcquireResponseCurrentPlatformAzure = ClosedEnum< + typeof SyncAcquireResponseCurrentPlatformAzure +>; + +/** + * Azure-specific environment information + */ +export type SyncAcquireResponseEnvironmentInfoAzure = { + /** + * Azure location/region + */ + location: string; + /** + * Azure subscription ID + */ + subscriptionId: string; + /** + * Azure tenant ID + */ + tenantId: string; + platform: SyncAcquireResponseCurrentPlatformAzure; +}; + +export const SyncAcquireResponseCurrentPlatformGcp = { + Gcp: "gcp", +} as const; +export type SyncAcquireResponseCurrentPlatformGcp = ClosedEnum< + typeof SyncAcquireResponseCurrentPlatformGcp +>; + +/** + * GCP-specific environment information + */ +export type SyncAcquireResponseEnvironmentInfoGcp = { + /** + * GCP project ID (e.g., "my-project") + */ + projectId: string; + /** + * GCP project number (e.g., "123456789012") + */ + projectNumber: string; + /** + * GCP region + */ + region: string; + platform: SyncAcquireResponseCurrentPlatformGcp; +}; + +export const SyncAcquireResponseCurrentPlatformAws = { + Aws: "aws", +} as const; +export type SyncAcquireResponseCurrentPlatformAws = ClosedEnum< + typeof SyncAcquireResponseCurrentPlatformAws +>; + +/** + * AWS-specific environment information + */ +export type SyncAcquireResponseEnvironmentInfoAws = { + /** + * AWS account ID + */ + accountId: string; + /** + * AWS region + */ + region: string; + platform: SyncAcquireResponseCurrentPlatformAws; +}; + +export type SyncAcquireResponseEnvironmentInfoUnion = + | SyncAcquireResponseEnvironmentInfoGcp + | SyncAcquireResponseEnvironmentInfoAzure + | SyncAcquireResponseEnvironmentInfoLocal + | SyncAcquireResponseEnvironmentInfoAws + | SyncAcquireResponseEnvironmentInfoTest + | any; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type SyncAcquireResponseError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type SyncAcquireResponseErrorUnion = SyncAcquireResponseError | any; + +/** + * Represents the target cloud platform. + */ +export const SyncAcquireResponseCurrentPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponseCurrentPlatform = ClosedEnum< + typeof SyncAcquireResponseCurrentPlatform +>; + +export const SyncAcquireResponsePreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type SyncAcquireResponsePreparedStackTypeStringList = ClosedEnum< + typeof SyncAcquireResponsePreparedStackTypeStringList +>; + +export type SyncAcquireResponsePreparedStackDefaultStringList = { + type: SyncAcquireResponsePreparedStackTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const SyncAcquireResponsePreparedStackTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncAcquireResponsePreparedStackTypeBoolean = ClosedEnum< + typeof SyncAcquireResponsePreparedStackTypeBoolean +>; + +export type SyncAcquireResponsePreparedStackDefaultBoolean = { + type: SyncAcquireResponsePreparedStackTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const SyncAcquireResponsePreparedStackTypeNumber = { + Number: "number", +} as const; +export type SyncAcquireResponsePreparedStackTypeNumber = ClosedEnum< + typeof SyncAcquireResponsePreparedStackTypeNumber +>; + +export type SyncAcquireResponsePreparedStackDefaultNumber = { + type: SyncAcquireResponsePreparedStackTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const SyncAcquireResponsePreparedStackTypeString = { + String: "string", +} as const; +export type SyncAcquireResponsePreparedStackTypeString = ClosedEnum< + typeof SyncAcquireResponsePreparedStackTypeString +>; + +export type SyncAcquireResponsePreparedStackDefaultString = { + type: SyncAcquireResponsePreparedStackTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncAcquireResponsePreparedStackDefaultUnion = + | SyncAcquireResponsePreparedStackDefaultString + | SyncAcquireResponsePreparedStackDefaultNumber + | SyncAcquireResponsePreparedStackDefaultBoolean + | SyncAcquireResponsePreparedStackDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const SyncAcquireResponsePreparedStackTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncAcquireResponsePreparedStackTypeEnvEnum = ClosedEnum< + typeof SyncAcquireResponsePreparedStackTypeEnvEnum +>; + +export type SyncAcquireResponsePreparedStackTypeUnion = + | SyncAcquireResponsePreparedStackTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncAcquireResponsePreparedStackEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: SyncAcquireResponsePreparedStackTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const SyncAcquireResponsePreparedStackKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type SyncAcquireResponsePreparedStackKind = ClosedEnum< + typeof SyncAcquireResponsePreparedStackKind +>; + +/** + * Represents the target cloud platform. + */ +export const SyncAcquireResponsePreparedStackPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponsePreparedStackPlatform = ClosedEnum< + typeof SyncAcquireResponsePreparedStackPlatform +>; + +/** + * Who can provide a stack input value. + */ +export const SyncAcquireResponsePreparedStackProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncAcquireResponsePreparedStackProvidedBy = ClosedEnum< + typeof SyncAcquireResponsePreparedStackProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type SyncAcquireResponsePreparedStackValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type SyncAcquireResponsePreparedStackValidationUnion = + | SyncAcquireResponsePreparedStackValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type SyncAcquireResponsePreparedStackInput = { + default?: + | SyncAcquireResponsePreparedStackDefaultString + | SyncAcquireResponsePreparedStackDefaultNumber + | SyncAcquireResponsePreparedStackDefaultBoolean + | SyncAcquireResponsePreparedStackDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: SyncAcquireResponsePreparedStackKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncAcquireResponsePreparedStackValidation + | any + | null + | undefined; +}; + +export const SyncAcquireResponsePreparedStackManagementEnum = { + Auto: "auto", +} as const; +export type SyncAcquireResponsePreparedStackManagementEnum = ClosedEnum< + typeof SyncAcquireResponsePreparedStackManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponsePreparedStackOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponsePreparedStackOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponsePreparedStackOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncAcquireResponsePreparedStackOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponsePreparedStackOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncAcquireResponsePreparedStackOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncAcquireResponsePreparedStackOverrideEffect = ClosedEnum< + typeof SyncAcquireResponsePreparedStackOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponsePreparedStackOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncAcquireResponsePreparedStackOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponsePreparedStackOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncAcquireResponsePreparedStackOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponsePreparedStackOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponsePreparedStackOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponsePreparedStackOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponsePreparedStackOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncAcquireResponsePreparedStackOverrideAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncAcquireResponsePreparedStackOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponsePreparedStackOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncAcquireResponsePreparedStackOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponsePreparedStackOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponsePreparedStackOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponsePreparedStackOverrideConditionResource = { + expression: string; + title: string; +}; + +export type SyncAcquireResponsePreparedStackOverrideResourceConditionUnion = + | SyncAcquireResponsePreparedStackOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponsePreparedStackOverrideGcpResource = { + condition?: + | SyncAcquireResponsePreparedStackOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponsePreparedStackOverrideConditionStack = { + expression: string; + title: string; +}; + +export type SyncAcquireResponsePreparedStackOverrideStackConditionUnion = + | SyncAcquireResponsePreparedStackOverrideConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponsePreparedStackOverrideGcpStack = { + condition?: + | SyncAcquireResponsePreparedStackOverrideConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseTypeStringList$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseTypeStringList, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseDefaultStringList$inboundSchema: + z.ZodType = z + .object({ + type: SyncAcquireResponseCurrentReleaseTypeStringList$inboundSchema, + value: z.array(z.string()), + }); + +export function syncAcquireResponseCurrentReleaseDefaultStringListFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseDefaultStringList, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseDefaultStringList' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseTypeBoolean$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseTypeBoolean, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseDefaultBoolean$inboundSchema: + z.ZodType = z + .object({ + type: SyncAcquireResponseCurrentReleaseTypeBoolean$inboundSchema, + value: z.boolean(), + }); + +export function syncAcquireResponseCurrentReleaseDefaultBooleanFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseDefaultBoolean, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseDefaultBoolean$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseDefaultBoolean' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseTypeNumber$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseTypeNumber, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseDefaultNumber$inboundSchema: + z.ZodType = z.object( + { + type: SyncAcquireResponseCurrentReleaseTypeNumber$inboundSchema, + value: z.string(), + }, + ); + +export function syncAcquireResponseCurrentReleaseDefaultNumberFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseDefaultNumber, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseDefaultNumber$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseDefaultNumber' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseTypeString$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseTypeString, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseDefaultString$inboundSchema: + z.ZodType = z.object( + { + type: SyncAcquireResponseCurrentReleaseTypeString$inboundSchema, + value: z.string(), + }, + ); + +export function syncAcquireResponseCurrentReleaseDefaultStringFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseDefaultString, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseDefaultString$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseDefaultString' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseDefaultUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseCurrentReleaseDefaultString$inboundSchema), + z.lazy(() => SyncAcquireResponseCurrentReleaseDefaultNumber$inboundSchema), + z.lazy(() => SyncAcquireResponseCurrentReleaseDefaultBoolean$inboundSchema), + z.lazy(() => + SyncAcquireResponseCurrentReleaseDefaultStringList$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseCurrentReleaseDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseDefaultUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseDefaultUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseTypeEnvEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseTypeEnvEnum, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseTypeUnion$inboundSchema: + z.ZodType = z.union([ + SyncAcquireResponseCurrentReleaseTypeEnvEnum$inboundSchema, + z.any(), + ]); + +export function syncAcquireResponseCurrentReleaseTypeUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseTypeUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseEnv$inboundSchema: z.ZodType< + SyncAcquireResponseCurrentReleaseEnv, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncAcquireResponseCurrentReleaseTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function syncAcquireResponseCurrentReleaseEnvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseEnv' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseKind$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseCurrentReleaseKind +> = z.enum(SyncAcquireResponseCurrentReleaseKind); + +/** @internal */ +export const SyncAcquireResponseCurrentReleasePlatform$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseCurrentReleasePlatform +> = z.enum(SyncAcquireResponseCurrentReleasePlatform); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProvidedBy$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseProvidedBy, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseValidation$inboundSchema: + z.ZodType = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseCurrentReleaseValidationFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseValidation, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseValidation' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseValidationUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncAcquireResponseCurrentReleaseValidation$inboundSchema), + z.any(), + ]); + +export function syncAcquireResponseCurrentReleaseValidationUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseValidationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseValidationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseInput$inboundSchema: z.ZodType< + SyncAcquireResponseCurrentReleaseInput, + unknown +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseDefaultString$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseCurrentReleaseDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseCurrentReleaseDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseCurrentReleaseDefaultStringList$inboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array(z.lazy(() => SyncAcquireResponseCurrentReleaseEnv$inboundSchema)) + .optional(), + id: z.string(), + kind: SyncAcquireResponseCurrentReleaseKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncAcquireResponseCurrentReleasePlatform$inboundSchema), + ).optional(), + providedBy: z.array( + SyncAcquireResponseCurrentReleaseProvidedBy$inboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseCurrentReleaseValidation$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncAcquireResponseCurrentReleaseInputFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseInput$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseInput' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseManagementEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseManagementEnum, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseCurrentReleaseOverrideAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseCurrentReleaseOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseOverrideEffect, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncAcquireResponseCurrentReleaseOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideAzure$inboundSchema: + z.ZodType = z.object( + { + binding: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }, + ); + +export function syncAcquireResponseCurrentReleaseOverrideAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideConditionResource$inboundSchema: + z.ZodType< + SyncAcquireResponseCurrentReleaseOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseCurrentReleaseOverrideResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideConditionUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseCurrentReleaseOverrideConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideGcpStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseCurrentReleaseOverrideGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverridePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseCurrentReleaseOverrideGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseOverridePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverridePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverridePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverridePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverride$inboundSchema: z.ZodType< + SyncAcquireResponseCurrentReleaseOverride, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseCurrentReleaseOverridePlatforms$inboundSchema + ), +}); + +export function syncAcquireResponseCurrentReleaseOverrideFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverride, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverride$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverride' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseOverrideUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseCurrentReleaseOverride$inboundSchema), + z.string(), + ]); + +export function syncAcquireResponseCurrentReleaseOverrideUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseOverrideUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseOverrideUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseOverrideUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseManagement2$inboundSchema: + z.ZodType = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncAcquireResponseCurrentReleaseOverride$inboundSchema), + z.string(), + ])), + ), + }); + +export function syncAcquireResponseCurrentReleaseManagement2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseManagement2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseManagement2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseCurrentReleaseExtendAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendAwStack$inboundSchema: + z.ZodType = z.object( + { + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }, + ); + +export function syncAcquireResponseCurrentReleaseExtendAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseExtendAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseExtendEffect, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendAwGrant$inboundSchema: + z.ZodType = z.object( + { + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }, + ); + +export function syncAcquireResponseCurrentReleaseExtendAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendAw$inboundSchema: z.ZodType< + SyncAcquireResponseCurrentReleaseExtendAw, + unknown +> = z.object({ + binding: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncAcquireResponseCurrentReleaseExtendEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponseCurrentReleaseExtendAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseExtendAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseExtendAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseExtendAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseCurrentReleaseExtendAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseCurrentReleaseExtendAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendConditionResource$inboundSchema: + z.ZodType = + z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseExtendConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseCurrentReleaseExtendResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseExtendGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseExtendConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendCondition$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseCurrentReleaseExtendConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendConditionUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseExtendGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendGcpStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseExtendGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseCurrentReleaseExtendGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseCurrentReleaseExtendGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendPlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseExtendPlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendPlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendPlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendPlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtend$inboundSchema: z.ZodType< + SyncAcquireResponseCurrentReleaseExtend, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseCurrentReleaseExtendPlatforms$inboundSchema + ), +}); + +export function syncAcquireResponseCurrentReleaseExtendFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtend, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtend$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtend' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseExtendUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseCurrentReleaseExtend$inboundSchema), + z.string(), + ]); + +export function syncAcquireResponseCurrentReleaseExtendUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseExtendUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseExtendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseExtendUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseManagement1$inboundSchema: + z.ZodType = z.object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncAcquireResponseCurrentReleaseExtend$inboundSchema), + z.string(), + ])), + ), + }); + +export function syncAcquireResponseCurrentReleaseManagement1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseManagement1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseManagement1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseManagement1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseManagementUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncAcquireResponseCurrentReleaseManagement1$inboundSchema), + z.lazy(() => SyncAcquireResponseCurrentReleaseManagement2$inboundSchema), + SyncAcquireResponseCurrentReleaseManagementEnum$inboundSchema, + ]); + +export function syncAcquireResponseCurrentReleaseManagementUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseManagementUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseManagementUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseManagementUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseCurrentReleaseProfileAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseCurrentReleaseProfileAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseProfileAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseProfileEffect, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseCurrentReleaseProfileAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncAcquireResponseCurrentReleaseProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseCurrentReleaseProfileAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseProfileAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseProfileAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseProfileAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseCurrentReleaseProfileAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseCurrentReleaseProfileAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileConditionResource$inboundSchema: + z.ZodType< + SyncAcquireResponseCurrentReleaseProfileConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseProfileConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseCurrentReleaseProfileResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseProfileGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseProfileConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileCondition$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseCurrentReleaseProfileConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseProfileGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileGcpStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseProfileGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseCurrentReleaseProfileGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseCurrentReleaseProfileGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfilePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseCurrentReleaseProfileGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponseCurrentReleaseProfilePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfilePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfilePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfile$inboundSchema: z.ZodType< + SyncAcquireResponseCurrentReleaseProfile, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseCurrentReleaseProfilePlatforms$inboundSchema + ), +}); + +export function syncAcquireResponseCurrentReleaseProfileFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfile, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfile$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfile' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseProfileUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseCurrentReleaseProfile$inboundSchema), + z.string(), + ]); + +export function syncAcquireResponseCurrentReleaseProfileUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseProfileUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseProfileUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseProfileUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleasePermissions$inboundSchema: + z.ZodType = z.object({ + management: z.union([ + z.lazy(() => SyncAcquireResponseCurrentReleaseManagement1$inboundSchema), + z.lazy(() => SyncAcquireResponseCurrentReleaseManagement2$inboundSchema), + SyncAcquireResponseCurrentReleaseManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncAcquireResponseCurrentReleaseProfile$inboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); + +export function syncAcquireResponseCurrentReleasePermissionsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleasePermissions, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleasePermissions$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleasePermissions' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseConfig$inboundSchema: z.ZodType< + SyncAcquireResponseCurrentReleaseConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncAcquireResponseCurrentReleaseConfigFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseConfig, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseConfig$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseDependency$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + type: z.string(), + }); + +export function syncAcquireResponseCurrentReleaseDependencyFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseDependency, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseDependency' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseLifecycle$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseLifecycle, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseResources$inboundSchema: + z.ZodType = z.object({ + config: z.lazy(() => SyncAcquireResponseCurrentReleaseConfig$inboundSchema), + dependencies: z.array( + z.lazy(() => SyncAcquireResponseCurrentReleaseDependency$inboundSchema), + ), + lifecycle: SyncAcquireResponseCurrentReleaseLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncAcquireResponseCurrentReleaseResourcesFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCurrentReleaseResources, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCurrentReleaseResources' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseSupportedPlatform$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseCurrentReleaseSupportedPlatform, + ); + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseStack$inboundSchema: z.ZodType< + SyncAcquireResponseCurrentReleaseStack, + unknown +> = z.object({ + id: z.string(), + inputs: z.array( + z.lazy(() => SyncAcquireResponseCurrentReleaseInput$inboundSchema), + ).optional(), + permissions: z.lazy(() => + SyncAcquireResponseCurrentReleasePermissions$inboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncAcquireResponseCurrentReleaseResources$inboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncAcquireResponseCurrentReleaseSupportedPlatform$inboundSchema), + ).optional(), +}); + +export function syncAcquireResponseCurrentReleaseStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentRelease$inboundSchema: z.ZodType< + SyncAcquireResponseCurrentRelease, + unknown +> = z.object({ + description: z.nullable(z.string()).optional(), + releaseId: z.string(), + stack: z.lazy(() => SyncAcquireResponseCurrentReleaseStack$inboundSchema), + version: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponseCurrentReleaseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseCurrentRelease$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentRelease' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentReleaseUnion$inboundSchema: z.ZodType< + SyncAcquireResponseCurrentReleaseUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseCurrentRelease$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseCurrentReleaseUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCurrentReleaseUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCurrentReleaseUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePlatformTest$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponsePlatformTest +> = z.enum(SyncAcquireResponsePlatformTest); + +/** @internal */ +export const SyncAcquireResponseEnvironmentInfoTest$inboundSchema: z.ZodType< + SyncAcquireResponseEnvironmentInfoTest, + unknown +> = z.object({ + testId: z.string(), + platform: SyncAcquireResponsePlatformTest$inboundSchema, +}); + +export function syncAcquireResponseEnvironmentInfoTestFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseEnvironmentInfoTest$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseEnvironmentInfoTest' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePlatformLocal$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponsePlatformLocal +> = z.enum(SyncAcquireResponsePlatformLocal); + +/** @internal */ +export const SyncAcquireResponseEnvironmentInfoLocal$inboundSchema: z.ZodType< + SyncAcquireResponseEnvironmentInfoLocal, + unknown +> = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: SyncAcquireResponsePlatformLocal$inboundSchema, +}); + +export function syncAcquireResponseEnvironmentInfoLocalFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseEnvironmentInfoLocal, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseEnvironmentInfoLocal$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseEnvironmentInfoLocal' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentPlatformAzure$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseCurrentPlatformAzure +> = z.enum(SyncAcquireResponseCurrentPlatformAzure); + +/** @internal */ +export const SyncAcquireResponseEnvironmentInfoAzure$inboundSchema: z.ZodType< + SyncAcquireResponseEnvironmentInfoAzure, + unknown +> = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: SyncAcquireResponseCurrentPlatformAzure$inboundSchema, +}); + +export function syncAcquireResponseEnvironmentInfoAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseEnvironmentInfoAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseEnvironmentInfoAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseEnvironmentInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentPlatformGcp$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseCurrentPlatformGcp +> = z.enum(SyncAcquireResponseCurrentPlatformGcp); + +/** @internal */ +export const SyncAcquireResponseEnvironmentInfoGcp$inboundSchema: z.ZodType< + SyncAcquireResponseEnvironmentInfoGcp, + unknown +> = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: SyncAcquireResponseCurrentPlatformGcp$inboundSchema, +}); + +export function syncAcquireResponseEnvironmentInfoGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseEnvironmentInfoGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseEnvironmentInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentPlatformAws$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseCurrentPlatformAws +> = z.enum(SyncAcquireResponseCurrentPlatformAws); + +/** @internal */ +export const SyncAcquireResponseEnvironmentInfoAws$inboundSchema: z.ZodType< + SyncAcquireResponseEnvironmentInfoAws, + unknown +> = z.object({ + accountId: z.string(), + region: z.string(), + platform: SyncAcquireResponseCurrentPlatformAws$inboundSchema, +}); + +export function syncAcquireResponseEnvironmentInfoAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseEnvironmentInfoAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseEnvironmentInfoAws' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseEnvironmentInfoUnion$inboundSchema: z.ZodType< + SyncAcquireResponseEnvironmentInfoUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseEnvironmentInfoGcp$inboundSchema), + z.lazy(() => SyncAcquireResponseEnvironmentInfoAzure$inboundSchema), + z.lazy(() => SyncAcquireResponseEnvironmentInfoLocal$inboundSchema), + z.lazy(() => SyncAcquireResponseEnvironmentInfoAws$inboundSchema), + z.lazy(() => SyncAcquireResponseEnvironmentInfoTest$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseEnvironmentInfoUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseEnvironmentInfoUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseEnvironmentInfoUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseEnvironmentInfoUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseError$inboundSchema: z.ZodType< + SyncAcquireResponseError, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function syncAcquireResponseErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseError' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseErrorUnion$inboundSchema: z.ZodType< + SyncAcquireResponseErrorUnion, + unknown +> = z.union([z.lazy(() => SyncAcquireResponseError$inboundSchema), z.any()]); + +export function syncAcquireResponseErrorUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseErrorUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCurrentPlatform$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseCurrentPlatform +> = z.enum(SyncAcquireResponseCurrentPlatform); + +/** @internal */ +export const SyncAcquireResponsePreparedStackTypeStringList$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponsePreparedStackTypeStringList, + ); + +/** @internal */ +export const SyncAcquireResponsePreparedStackDefaultStringList$inboundSchema: + z.ZodType = z + .object({ + type: SyncAcquireResponsePreparedStackTypeStringList$inboundSchema, + value: z.array(z.string()), + }); + +export function syncAcquireResponsePreparedStackDefaultStringListFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackDefaultStringList, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackDefaultStringList' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackTypeBoolean$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponsePreparedStackTypeBoolean, + ); + +/** @internal */ +export const SyncAcquireResponsePreparedStackDefaultBoolean$inboundSchema: + z.ZodType = z.object( + { + type: SyncAcquireResponsePreparedStackTypeBoolean$inboundSchema, + value: z.boolean(), + }, + ); + +export function syncAcquireResponsePreparedStackDefaultBooleanFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackDefaultBoolean, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackDefaultBoolean$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackDefaultBoolean' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackTypeNumber$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponsePreparedStackTypeNumber, + ); + +/** @internal */ +export const SyncAcquireResponsePreparedStackDefaultNumber$inboundSchema: + z.ZodType = z.object({ + type: SyncAcquireResponsePreparedStackTypeNumber$inboundSchema, + value: z.string(), + }); + +export function syncAcquireResponsePreparedStackDefaultNumberFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackDefaultNumber, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackDefaultNumber$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackDefaultNumber' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackTypeString$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponsePreparedStackTypeString, + ); + +/** @internal */ +export const SyncAcquireResponsePreparedStackDefaultString$inboundSchema: + z.ZodType = z.object({ + type: SyncAcquireResponsePreparedStackTypeString$inboundSchema, + value: z.string(), + }); + +export function syncAcquireResponsePreparedStackDefaultStringFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackDefaultString, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackDefaultString$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackDefaultString' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackDefaultUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponsePreparedStackDefaultString$inboundSchema), + z.lazy(() => SyncAcquireResponsePreparedStackDefaultNumber$inboundSchema), + z.lazy(() => SyncAcquireResponsePreparedStackDefaultBoolean$inboundSchema), + z.lazy(() => + SyncAcquireResponsePreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponsePreparedStackDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackDefaultUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackDefaultUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackTypeEnvEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponsePreparedStackTypeEnvEnum, + ); + +/** @internal */ +export const SyncAcquireResponsePreparedStackTypeUnion$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackTypeUnion, + unknown +> = z.union([ + SyncAcquireResponsePreparedStackTypeEnvEnum$inboundSchema, + z.any(), +]); + +export function syncAcquireResponsePreparedStackTypeUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackTypeUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackEnv$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackEnv, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncAcquireResponsePreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function syncAcquireResponsePreparedStackEnvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackEnv' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackKind$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponsePreparedStackKind +> = z.enum(SyncAcquireResponsePreparedStackKind); + +/** @internal */ +export const SyncAcquireResponsePreparedStackPlatform$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponsePreparedStackPlatform +> = z.enum(SyncAcquireResponsePreparedStackPlatform); + +/** @internal */ +export const SyncAcquireResponsePreparedStackProvidedBy$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponsePreparedStackProvidedBy, + ); + +/** @internal */ +export const SyncAcquireResponsePreparedStackValidation$inboundSchema: + z.ZodType = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponsePreparedStackValidationFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackValidation, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackValidation' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackValidationUnion$inboundSchema: + z.ZodType = z.union( + [ + z.lazy(() => SyncAcquireResponsePreparedStackValidation$inboundSchema), + z.any(), + ], + ); + +export function syncAcquireResponsePreparedStackValidationUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackValidationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackValidationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackInput$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackInput, + unknown +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponsePreparedStackDefaultString$inboundSchema), + z.lazy(() => + SyncAcquireResponsePreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncAcquireResponsePreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncAcquireResponsePreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array(z.lazy(() => SyncAcquireResponsePreparedStackEnv$inboundSchema)) + .optional(), + id: z.string(), + kind: SyncAcquireResponsePreparedStackKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncAcquireResponsePreparedStackPlatform$inboundSchema), + ).optional(), + providedBy: z.array(SyncAcquireResponsePreparedStackProvidedBy$inboundSchema), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponsePreparedStackValidation$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncAcquireResponsePreparedStackInputFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackInput$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackInput' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackManagementEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponsePreparedStackManagementEnum, + ); + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponsePreparedStackOverrideAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponsePreparedStackOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponsePreparedStackOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponsePreparedStackOverrideAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponsePreparedStackOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponsePreparedStackOverrideEffect, + ); + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponsePreparedStackOverrideAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponsePreparedStackOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncAcquireResponsePreparedStackOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponsePreparedStackOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponsePreparedStackOverrideAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponsePreparedStackOverrideAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponsePreparedStackOverrideAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponsePreparedStackOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponsePreparedStackOverrideAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponsePreparedStackOverrideAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponsePreparedStackOverrideAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponsePreparedStackOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponsePreparedStackOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponsePreparedStackOverrideAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideConditionResource$inboundSchema: + z.ZodType< + SyncAcquireResponsePreparedStackOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponsePreparedStackOverrideConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponsePreparedStackOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponsePreparedStackOverrideResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponsePreparedStackOverrideGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideConditionStack$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponsePreparedStackOverrideConditionStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideConditionStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideConditionStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideStackConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponsePreparedStackOverrideStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponsePreparedStackOverrideStackConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideStackConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideStackConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponsePreparedStackOverrideGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideGcpStack' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/syncacquireresponseproviderazureapplicationgatewayforcontainersenum3.ts b/client-sdks/platform/typescript/src/models/syncacquireresponseproviderazureapplicationgatewayforcontainersenum3.ts new file mode 100644 index 000000000..b6bdcfbf9 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/syncacquireresponseproviderazureapplicationgatewayforcontainersenum3.ts @@ -0,0 +1,4604 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + SyncAcquireResponseDataDirUnion1, + SyncAcquireResponseDataDirUnion1$inboundSchema, + SyncAcquireResponseExternalBindingsContainerAppsEnvironment, + SyncAcquireResponseExternalBindingsContainerAppsEnvironment$inboundSchema, + SyncAcquireResponseExternalBindingsUnion4, + SyncAcquireResponseExternalBindingsUnion4$inboundSchema, + SyncAcquireResponseExternalBindingsUnion5, + SyncAcquireResponseExternalBindingsUnion5$inboundSchema, + SyncAcquireResponseKeyPrefixSecretRef2, + SyncAcquireResponseKeyPrefixSecretRef2$inboundSchema, +} from "./syncacquireresponsekeyprefixsecretref2.js"; + +export type SyncAcquireResponseKeyPrefix2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseKeyPrefixSecretRef2; +}; + +export const SyncAcquireResponseTypeKv5 = { + Kv: "kv", +} as const; +export type SyncAcquireResponseTypeKv5 = ClosedEnum< + typeof SyncAcquireResponseTypeKv5 +>; + +/** + * Local development KV binding configuration + */ +export type SyncAcquireResponseExternalBindingsLocalKv = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + dataDir?: SyncAcquireResponseDataDirUnion1 | null | undefined; + keyPrefix?: any | null | undefined; + service: "local-kv"; + type: SyncAcquireResponseTypeKv5; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseConnectionUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseConnectionUrl = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseConnectionUrlSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseConnectionUrlUnion = + | SyncAcquireResponseConnectionUrl + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDatabaseSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDatabase = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDatabaseSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseKeyPrefixSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseKeyPrefix1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseKeyPrefixSecretRef1; +}; + +export const SyncAcquireResponseTypeKv4 = { + Kv: "kv", +} as const; +export type SyncAcquireResponseTypeKv4 = ClosedEnum< + typeof SyncAcquireResponseTypeKv4 +>; + +/** + * Redis KV binding configuration + */ +export type SyncAcquireResponseExternalBindingsRedis = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + connectionUrl?: + | SyncAcquireResponseConnectionUrl + | any + | string + | null + | undefined; + database?: any | null | undefined; + keyPrefix?: any | null | undefined; + service: "redis"; + type: SyncAcquireResponseTypeKv4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseAccountNameSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseAccountName2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseAccountNameSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseAccountNameUnion2 = + | SyncAcquireResponseAccountName2 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseResourceGroupNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseResourceGroupName1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseResourceGroupNameSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseResourceGroupNameUnion1 = + | SyncAcquireResponseResourceGroupName1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseTableNameSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseTableName2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseTableNameSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseTableNameUnion2 = + | SyncAcquireResponseTableName2 + | any + | string; + +export const SyncAcquireResponseTypeKv3 = { + Kv: "kv", +} as const; +export type SyncAcquireResponseTypeKv3 = ClosedEnum< + typeof SyncAcquireResponseTypeKv3 +>; + +/** + * Azure Table Storage KV binding configuration + */ +export type SyncAcquireResponseExternalBindingsTablestorage = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + accountName?: + | SyncAcquireResponseAccountName2 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceGroupName?: + | SyncAcquireResponseResourceGroupName1 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + tableName?: SyncAcquireResponseTableName2 | any | string | null | undefined; + service: "tablestorage"; + type: SyncAcquireResponseTypeKv3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseCollectionNameSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseCollectionName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseCollectionNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseCollectionNameUnion = + | SyncAcquireResponseCollectionName + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDatabaseIdSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseDatabaseId = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseDatabaseIdSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseDatabaseIdUnion = + | SyncAcquireResponseDatabaseId + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseProjectIdSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseProjectId = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseProjectIdSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseProjectIdUnion = + | SyncAcquireResponseProjectId + | any + | string; + +export const SyncAcquireResponseTypeKv2 = { + Kv: "kv", +} as const; +export type SyncAcquireResponseTypeKv2 = ClosedEnum< + typeof SyncAcquireResponseTypeKv2 +>; + +/** + * GCP Firestore KV binding configuration + */ +export type SyncAcquireResponseExternalBindingsFirestore = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + collectionName?: + | SyncAcquireResponseCollectionName + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + databaseId?: SyncAcquireResponseDatabaseId | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + projectId?: SyncAcquireResponseProjectId | any | string | null | undefined; + service: "firestore"; + type: SyncAcquireResponseTypeKv2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseEndpointUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseEndpointUrl = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseEndpointUrlSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseRegionSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseRegion = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseRegionSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseRegionUnion = + | SyncAcquireResponseRegion + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseTableNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseTableName1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseTableNameSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseTableNameUnion1 = + | SyncAcquireResponseTableName1 + | any + | string; + +export const SyncAcquireResponseTypeKv1 = { + Kv: "kv", +} as const; +export type SyncAcquireResponseTypeKv1 = ClosedEnum< + typeof SyncAcquireResponseTypeKv1 +>; + +/** + * AWS DynamoDB KV binding configuration + */ +export type SyncAcquireResponseExternalBindingsDynamodb = { + endpointUrl?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + region?: SyncAcquireResponseRegion | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + tableName?: SyncAcquireResponseTableName1 | any | string | null | undefined; + service: "dynamodb"; + type: SyncAcquireResponseTypeKv1; +}; + +/** + * Represents a KV binding for key-value storage across platforms + */ +export type SyncAcquireResponseExternalBindingsUnion3 = + | SyncAcquireResponseExternalBindingsDynamodb + | SyncAcquireResponseExternalBindingsFirestore + | SyncAcquireResponseExternalBindingsTablestorage + | SyncAcquireResponseExternalBindingsRedis + | SyncAcquireResponseExternalBindingsLocalKv; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseQueuePathSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseQueuePath = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseQueuePathSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseQueuePathUnion = + | SyncAcquireResponseQueuePath + | any + | string; + +export const SyncAcquireResponseTypeQueue4 = { + Queue: "queue", +} as const; +export type SyncAcquireResponseTypeQueue4 = ClosedEnum< + typeof SyncAcquireResponseTypeQueue4 +>; + +/** + * Local queue parameters + */ +export type SyncAcquireResponseExternalBindingsLocalQueue = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + queuePath?: SyncAcquireResponseQueuePath | any | string | null | undefined; + service: "local-queue"; + type: SyncAcquireResponseTypeQueue4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseNamespaceSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseNamespace1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseNamespaceSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseNamespaceUnion1 = + | SyncAcquireResponseNamespace1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseQueueNameSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseQueueName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseQueueNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseQueueNameUnion = + | SyncAcquireResponseQueueName + | any + | string; + +export const SyncAcquireResponseTypeQueue3 = { + Queue: "queue", +} as const; +export type SyncAcquireResponseTypeQueue3 = ClosedEnum< + typeof SyncAcquireResponseTypeQueue3 +>; + +/** + * Azure Service Bus parameters + */ +export type SyncAcquireResponseExternalBindingsServicebus = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + namespace?: SyncAcquireResponseNamespace1 | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + queueName?: SyncAcquireResponseQueueName | any | string | null | undefined; + service: "servicebus"; + type: SyncAcquireResponseTypeQueue3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseSubscriptionSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseSubscription = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseSubscriptionSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseSubscriptionUnion = + | SyncAcquireResponseSubscription + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseTopicSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseTopic = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseTopicSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseTopicUnion = + | SyncAcquireResponseTopic + | any + | string; + +export const SyncAcquireResponseTypeQueue2 = { + Queue: "queue", +} as const; +export type SyncAcquireResponseTypeQueue2 = ClosedEnum< + typeof SyncAcquireResponseTypeQueue2 +>; + +/** + * GCP Pub/Sub parameters + */ +export type SyncAcquireResponseExternalBindingsPubsub = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + subscription?: + | SyncAcquireResponseSubscription + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + topic?: SyncAcquireResponseTopic | any | string | null | undefined; + service: "pubsub"; + type: SyncAcquireResponseTypeQueue2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseQueueUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseQueueUrl = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseQueueUrlSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseQueueUrlUnion = + | SyncAcquireResponseQueueUrl + | any + | string; + +export const SyncAcquireResponseTypeQueue1 = { + Queue: "queue", +} as const; +export type SyncAcquireResponseTypeQueue1 = ClosedEnum< + typeof SyncAcquireResponseTypeQueue1 +>; + +/** + * AWS SQS queue parameters + */ +export type SyncAcquireResponseExternalBindingsSqs = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + queueUrl?: SyncAcquireResponseQueueUrl | any | string | null | undefined; + service: "sqs"; + type: SyncAcquireResponseTypeQueue1; +}; + +/** + * Binding parameters for Queue at runtime or in templates. + */ +export type SyncAcquireResponseExternalBindingsUnion2 = + | SyncAcquireResponseExternalBindingsSqs + | SyncAcquireResponseExternalBindingsPubsub + | SyncAcquireResponseExternalBindingsServicebus + | SyncAcquireResponseExternalBindingsLocalQueue; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseStoragePathSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseStoragePath = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseStoragePathSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseStoragePathUnion = + | SyncAcquireResponseStoragePath + | any + | string; + +export const SyncAcquireResponseTypeStorage4 = { + Storage: "storage", +} as const; +export type SyncAcquireResponseTypeStorage4 = ClosedEnum< + typeof SyncAcquireResponseTypeStorage4 +>; + +/** + * Local filesystem storage binding configuration + */ +export type SyncAcquireResponseExternalBindingsLocalStorage = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + storagePath?: + | SyncAcquireResponseStoragePath + | any + | string + | null + | undefined; + service: "local-storage"; + type: SyncAcquireResponseTypeStorage4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseBucketNameSecretRef2 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseBucketName2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseBucketNameSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseBucketNameUnion2 = + | SyncAcquireResponseBucketName2 + | any + | string; + +export const SyncAcquireResponseTypeStorage3 = { + Storage: "storage", +} as const; +export type SyncAcquireResponseTypeStorage3 = ClosedEnum< + typeof SyncAcquireResponseTypeStorage3 +>; + +/** + * Google Cloud Storage binding configuration + */ +export type SyncAcquireResponseExternalBindingsGcs = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + bucketName?: SyncAcquireResponseBucketName2 | any | string | null | undefined; + service: "gcs"; + type: SyncAcquireResponseTypeStorage3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseAccountNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseAccountName1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseAccountNameSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseAccountNameUnion1 = + | SyncAcquireResponseAccountName1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseContainerNameSecretRef = { + key: string; + name: string; +}; + +export type SyncAcquireResponseContainerName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseContainerNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseContainerNameUnion = + | SyncAcquireResponseContainerName + | any + | string; + +export const SyncAcquireResponseTypeStorage2 = { + Storage: "storage", +} as const; +export type SyncAcquireResponseTypeStorage2 = ClosedEnum< + typeof SyncAcquireResponseTypeStorage2 +>; + +/** + * Azure Blob Storage binding configuration + */ +export type SyncAcquireResponseExternalBindingsBlob = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + accountName?: + | SyncAcquireResponseAccountName1 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + containerName?: + | SyncAcquireResponseContainerName + | any + | string + | null + | undefined; + service: "blob"; + type: SyncAcquireResponseTypeStorage2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncAcquireResponseBucketNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncAcquireResponseBucketName1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncAcquireResponseBucketNameSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncAcquireResponseBucketNameUnion1 = + | SyncAcquireResponseBucketName1 + | any + | string; + +export const SyncAcquireResponseTypeStorage1 = { + Storage: "storage", +} as const; +export type SyncAcquireResponseTypeStorage1 = ClosedEnum< + typeof SyncAcquireResponseTypeStorage1 +>; + +/** + * AWS S3 storage binding configuration + */ +export type SyncAcquireResponseExternalBindingsS3 = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + bucketName?: SyncAcquireResponseBucketName1 | any | string | null | undefined; + service: "s3"; + type: SyncAcquireResponseTypeStorage1; +}; + +/** + * Service-type based storage binding that supports multiple storage providers + */ +export type SyncAcquireResponseExternalBindingsUnion1 = + | SyncAcquireResponseExternalBindingsS3 + | SyncAcquireResponseExternalBindingsBlob + | SyncAcquireResponseExternalBindingsGcs + | SyncAcquireResponseExternalBindingsLocalStorage; + +/** + * Represents a binding to pre-existing infrastructure. + * + * @remarks + * + * The binding type must match the resource type it's applied to. + * Validated at runtime by the executor. + */ +export type SyncAcquireResponseExternalBindingsUnion6 = + | SyncAcquireResponseExternalBindingsContainerAppsEnvironment + | SyncAcquireResponseExternalBindingsS3 + | SyncAcquireResponseExternalBindingsBlob + | SyncAcquireResponseExternalBindingsGcs + | SyncAcquireResponseExternalBindingsLocalStorage + | SyncAcquireResponseExternalBindingsSqs + | SyncAcquireResponseExternalBindingsPubsub + | SyncAcquireResponseExternalBindingsServicebus + | SyncAcquireResponseExternalBindingsLocalQueue + | SyncAcquireResponseExternalBindingsDynamodb + | SyncAcquireResponseExternalBindingsFirestore + | SyncAcquireResponseExternalBindingsTablestorage + | SyncAcquireResponseExternalBindingsRedis + | SyncAcquireResponseExternalBindingsLocalKv + | SyncAcquireResponseExternalBindingsUnion4 + | SyncAcquireResponseExternalBindingsUnion5; + +export const SyncAcquireResponsePlatformKubernetes = { + Kubernetes: "kubernetes", +} as const; +export type SyncAcquireResponsePlatformKubernetes = ClosedEnum< + typeof SyncAcquireResponsePlatformKubernetes +>; + +export type SyncAcquireResponseManagementConfigKubernetes = { + platform: SyncAcquireResponsePlatformKubernetes; +}; + +export const SyncAcquireResponseConfigPlatformAzure = { + Azure: "azure", +} as const; +export type SyncAcquireResponseConfigPlatformAzure = ClosedEnum< + typeof SyncAcquireResponseConfigPlatformAzure +>; + +/** + * Azure management configuration extracted from stack settings + */ +export type SyncAcquireResponseManagementConfigAzure = { + /** + * The managing Azure Tenant ID for cross-tenant access + */ + managingTenantId: string; + /** + * OIDC issuer URL trusted by the target-side managed identity. + */ + oidcIssuer: string; + /** + * OIDC subject claim trusted by the target-side managed identity. + */ + oidcSubject: string; + platform: SyncAcquireResponseConfigPlatformAzure; +}; + +export const SyncAcquireResponseConfigPlatformGcp = { + Gcp: "gcp", +} as const; +export type SyncAcquireResponseConfigPlatformGcp = ClosedEnum< + typeof SyncAcquireResponseConfigPlatformGcp +>; + +/** + * GCP management configuration extracted from stack settings + */ +export type SyncAcquireResponseManagementConfigGcp = { + /** + * Service account email for management roles + */ + serviceAccountEmail: string; + platform: SyncAcquireResponseConfigPlatformGcp; +}; + +export const SyncAcquireResponseConfigPlatformAws = { + Aws: "aws", +} as const; +export type SyncAcquireResponseConfigPlatformAws = ClosedEnum< + typeof SyncAcquireResponseConfigPlatformAws +>; + +/** + * AWS management configuration extracted from stack settings + */ +export type SyncAcquireResponseManagementConfigAws = { + /** + * The managing AWS IAM role ARN that can assume cross-account roles + */ + managingRoleArn: string; + platform: SyncAcquireResponseConfigPlatformAws; +}; + +export type SyncAcquireResponseManagementConfigUnion = + | SyncAcquireResponseManagementConfigAzure + | SyncAcquireResponseManagementConfigAws + | SyncAcquireResponseManagementConfigGcp + | SyncAcquireResponseManagementConfigKubernetes + | any; + +/** + * OTLP log export configuration for a deployment. + * + * @remarks + * + * When set, injected compute runtimes export captured application logs + * through the given endpoint via OTLP/HTTP; which resources are injected + * is platform-dependent. Workers and daemons read auth headers from a + * runtime-only secret — never from application environment variables. + * Containers have no runtime wrapper, so they get the endpoint and auth + * header as plain OTEL env vars for the application's own exporter. + */ +export type SyncAcquireResponseMonitoring = { + /** + * Auth header value in "key=value,..." format. + * + * @remarks + * Example: "authorization=Bearer " + */ + logsAuthHeader: string; + /** + * Full OTLP logs endpoint URL. + * + * @remarks + * Example: "https:///v1/logs" + */ + logsEndpoint: string; + /** + * Auth header value for the metrics endpoint in "key=value,..." format (optional). + * + * @remarks + * + * When absent, `logs_auth_header` is reused for metrics -- suitable when the same + * credential covers both signals. When present (e.g. Axiom with separate datasets), + * this value is used exclusively for metrics. + * + * Example: "authorization=Bearer ,x-axiom-dataset=" + */ + metricsAuthHeader?: string | null | undefined; + /** + * Full OTLP metrics endpoint URL (optional). + * + * @remarks + * When set, the worker runtime exports its own VM/container orchestration metrics here. + * Example: "https://api.axiom.co/v1/metrics" + */ + metricsEndpoint?: string | null | undefined; + /** + * Resource attributes attached to every OTLP signal emitted for this deployment. + * + * @remarks + * + * Platform managers use this for stable identity such as `alien.workspace_id`, + * `alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`. + * Runtime-specific resource attributes such as `service.name` remain owned by + * the runtime/exporter. + */ + resourceAttributes?: { [k: string]: string } | undefined; +}; + +export type SyncAcquireResponseMonitoringUnion = + | SyncAcquireResponseMonitoring + | any; + +export type SyncAcquireResponsePoolsAutoscale = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Maximum machine count. + */ + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; +}; + +export type SyncAcquireResponsePoolsFixed = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Number of machines to run. + */ + machines: number; + mode: "fixed"; +}; + +/** + * User-selected deployment settings for one compute pool. + */ +export type SyncAcquireResponsePoolsUnion = + | SyncAcquireResponsePoolsFixed + | SyncAcquireResponsePoolsAutoscale; + +/** + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. + */ +export type SyncAcquireResponseCompute = { + /** + * Selected compute choices keyed by pool ID. + */ + pools?: { + [k: string]: + | SyncAcquireResponsePoolsFixed + | SyncAcquireResponsePoolsAutoscale; + } | undefined; +}; + +export type SyncAcquireResponseComputeUnion = SyncAcquireResponseCompute | any; + +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export const SyncAcquireResponseDeploymentModel = { + Push: "push", + Pull: "pull", +} as const; +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export type SyncAcquireResponseDeploymentModel = ClosedEnum< + typeof SyncAcquireResponseDeploymentModel +>; + +export type SyncAcquireResponseAwsStackSettings = { + certificateArn: string; +}; + +export type SyncAcquireResponseStackSettingsAwsUnion = + | SyncAcquireResponseAwsStackSettings + | any; + +export type SyncAcquireResponseAzureStackSettings = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +export type SyncAcquireResponseStackSettingsAzureUnion = + | SyncAcquireResponseAzureStackSettings + | any; + +export type SyncAcquireResponseGcpStackSettings = { + certificateName: string; +}; + +export type SyncAcquireResponseStackSettingsGcpUnion = + | SyncAcquireResponseGcpStackSettings + | any; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncAcquireResponseTlsSecretRef = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; +}; + +export type SyncAcquireResponseDomainsKubernetes = { + /** + * Namespace-scoped Kubernetes TLS Secret reference. + */ + tlsSecretRef: SyncAcquireResponseTlsSecretRef; +}; + +export type SyncAcquireResponseDomainsKubernetesUnion = + | SyncAcquireResponseDomainsKubernetes + | any; + +/** + * Platform-specific certificate references for custom domains. + */ +export type SyncAcquireResponseDomainsCertificate = { + aws?: SyncAcquireResponseAwsStackSettings | any | null | undefined; + azure?: SyncAcquireResponseAzureStackSettings | any | null | undefined; + gcp?: SyncAcquireResponseGcpStackSettings | any | null | undefined; + kubernetes?: SyncAcquireResponseDomainsKubernetes | any | null | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type SyncAcquireResponseCustomDomains = { + /** + * Platform-specific certificate references for custom domains. + */ + certificate: SyncAcquireResponseDomainsCertificate; + /** + * Fully qualified domain name to use. + */ + domain: string; +}; + +/** + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. + */ +export type SyncAcquireResponseDomains = { + /** + * Custom domain configuration per resource ID. + */ + customDomains?: + | { [k: string]: SyncAcquireResponseCustomDomains } + | null + | undefined; +}; + +export type SyncAcquireResponseDomainsUnion = SyncAcquireResponseDomains | any; + +/** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ +export type SyncAcquireResponseStackSettingsExternalBindings = {}; + +/** + * How heartbeat health checks are handled. + */ +export const SyncAcquireResponseHeartbeats = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type SyncAcquireResponseHeartbeats = ClosedEnum< + typeof SyncAcquireResponseHeartbeats +>; + +/** + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + */ +export type SyncAcquireResponseCloud = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +export type SyncAcquireResponseCloudUnion = SyncAcquireResponseCloud | any; + +/** + * Ownership model for the Kubernetes cluster. + */ +export const SyncAcquireResponseOwnership = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type SyncAcquireResponseOwnership = ClosedEnum< + typeof SyncAcquireResponseOwnership +>; + +/** + * Kubernetes cluster setup settings. + */ +export type SyncAcquireResponseCluster = { + cloud?: SyncAcquireResponseCloud | any | null | undefined; + /** + * Namespace where the Alien chart and application resources run. + */ + namespace?: string | null | undefined; + /** + * Ownership model for the Kubernetes cluster. + */ + ownership: SyncAcquireResponseOwnership; +}; + +export type SyncAcquireResponseClusterUnion = SyncAcquireResponseCluster | any; + +export type SyncAcquireResponseCertificateNone2 = { + mode: "none"; +}; + +export type SyncAcquireResponseCertificateManagedTLSSecret2 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type SyncAcquireResponseCertificateAwsAcmArn2 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type SyncAcquireResponseCertificateManagedAcmImport2 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncAcquireResponseCertificateTLSSecretRef2 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type SyncAcquireResponseCertificateUnion2 = + | SyncAcquireResponseCertificateTLSSecretRef2 + | SyncAcquireResponseCertificateManagedAcmImport2 + | SyncAcquireResponseCertificateAwsAcmArn2 + | SyncAcquireResponseCertificateManagedTLSSecret2 + | SyncAcquireResponseCertificateNone2; + +export const SyncAcquireResponseModeCustom = { + Custom: "custom", +} as const; +export type SyncAcquireResponseModeCustom = ClosedEnum< + typeof SyncAcquireResponseModeCustom +>; + +export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4 = + ClosedEnum< + typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4 + >; + +export type SyncAcquireResponseProviderAzureApplicationGatewayForContainers4 = { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4; +}; + +export const SyncAcquireResponseProviderGkeGatewayEnum4 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncAcquireResponseProviderGkeGatewayEnum4 = ClosedEnum< + typeof SyncAcquireResponseProviderGkeGatewayEnum4 +>; + +export type SyncAcquireResponseProviderGkeGateway4 = { + provider: SyncAcquireResponseProviderGkeGatewayEnum4; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncAcquireResponseProviderAwsAlbEnum4 = { + AwsAlb: "awsAlb", +} as const; +export type SyncAcquireResponseProviderAwsAlbEnum4 = ClosedEnum< + typeof SyncAcquireResponseProviderAwsAlbEnum4 +>; + +export type SyncAcquireResponseProviderAwsAlb4 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncAcquireResponseProviderAwsAlbEnum4; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncAcquireResponseProviderUnion4 = + | SyncAcquireResponseProviderAwsAlb4 + | SyncAcquireResponseProviderAzureApplicationGatewayForContainers4 + | SyncAcquireResponseProviderGkeGateway4 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type SyncAcquireResponseRouteGateway2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | SyncAcquireResponseProviderAwsAlb4 + | SyncAcquireResponseProviderAzureApplicationGatewayForContainers4 + | SyncAcquireResponseProviderGkeGateway4 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3 = + ClosedEnum< + typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3 + >; + +/** @internal */ +export const SyncAcquireResponseKeyPrefix2$inboundSchema: z.ZodType< + SyncAcquireResponseKeyPrefix2, + unknown +> = z.object({ + secretRef: SyncAcquireResponseKeyPrefixSecretRef2$inboundSchema, +}); + +export function syncAcquireResponseKeyPrefix2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseKeyPrefix2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseKeyPrefix2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeKv5$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeKv5 +> = z.enum(SyncAcquireResponseTypeKv5); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsLocalKv$inboundSchema: + z.ZodType = z.object({ + dataDir: z.nullable(SyncAcquireResponseDataDirUnion1$inboundSchema) + .optional(), + keyPrefix: z.nullable(z.any()).optional(), + service: z.literal("local-kv"), + type: SyncAcquireResponseTypeKv5$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsLocalKvFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsLocalKv, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsLocalKv$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsLocalKv' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseConnectionUrlSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseConnectionUrlSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseConnectionUrlSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseConnectionUrlSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseConnectionUrlSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseConnectionUrlSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseConnectionUrl$inboundSchema: z.ZodType< + SyncAcquireResponseConnectionUrl, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseConnectionUrlSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseConnectionUrlFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseConnectionUrl$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseConnectionUrl' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseConnectionUrlUnion$inboundSchema: z.ZodType< + SyncAcquireResponseConnectionUrlUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseConnectionUrl$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseConnectionUrlUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseConnectionUrlUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseConnectionUrlUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDatabaseSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseDatabaseSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseDatabaseSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDatabaseSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDatabaseSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDatabase$inboundSchema: z.ZodType< + SyncAcquireResponseDatabase, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseDatabaseSecretRef$inboundSchema), +}); + +export function syncAcquireResponseDatabaseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseDatabase$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDatabase' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseKeyPrefixSecretRef1$inboundSchema: z.ZodType< + SyncAcquireResponseKeyPrefixSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseKeyPrefixSecretRef1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseKeyPrefixSecretRef1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseKeyPrefixSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseKeyPrefix1$inboundSchema: z.ZodType< + SyncAcquireResponseKeyPrefix1, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseKeyPrefixSecretRef1$inboundSchema), +}); + +export function syncAcquireResponseKeyPrefix1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseKeyPrefix1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseKeyPrefix1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeKv4$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeKv4 +> = z.enum(SyncAcquireResponseTypeKv4); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsRedis$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsRedis, + unknown +> = z.object({ + connectionUrl: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseConnectionUrl$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + database: z.nullable(z.any()).optional(), + keyPrefix: z.nullable(z.any()).optional(), + service: z.literal("redis"), + type: SyncAcquireResponseTypeKv4$inboundSchema, +}); + +export function syncAcquireResponseExternalBindingsRedisFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsRedis, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsRedis$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsRedis' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseAccountNameSecretRef2$inboundSchema: z.ZodType< + SyncAcquireResponseAccountNameSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseAccountNameSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseAccountNameSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseAccountNameSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseAccountNameSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseAccountName2$inboundSchema: z.ZodType< + SyncAcquireResponseAccountName2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseAccountNameSecretRef2$inboundSchema + ), +}); + +export function syncAcquireResponseAccountName2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseAccountName2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseAccountName2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseAccountNameUnion2$inboundSchema: z.ZodType< + SyncAcquireResponseAccountNameUnion2, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseAccountName2$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseAccountNameUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseAccountNameUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseAccountNameUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceGroupNameSecretRef1$inboundSchema: + z.ZodType = z.object( + { + key: z.string(), + name: z.string(), + }, + ); + +export function syncAcquireResponseResourceGroupNameSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseResourceGroupNameSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseResourceGroupNameSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseResourceGroupNameSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceGroupName1$inboundSchema: z.ZodType< + SyncAcquireResponseResourceGroupName1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseResourceGroupNameSecretRef1$inboundSchema + ), +}); + +export function syncAcquireResponseResourceGroupName1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseResourceGroupName1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseResourceGroupName1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseResourceGroupNameUnion1$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseResourceGroupName1$inboundSchema), + z.any(), + z.string(), + ]); + +export function syncAcquireResponseResourceGroupNameUnion1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseResourceGroupNameUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseResourceGroupNameUnion1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseResourceGroupNameUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTableNameSecretRef2$inboundSchema: z.ZodType< + SyncAcquireResponseTableNameSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseTableNameSecretRef2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTableNameSecretRef2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTableNameSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTableName2$inboundSchema: z.ZodType< + SyncAcquireResponseTableName2, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseTableNameSecretRef2$inboundSchema), +}); + +export function syncAcquireResponseTableName2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseTableName2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTableName2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTableNameUnion2$inboundSchema: z.ZodType< + SyncAcquireResponseTableNameUnion2, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseTableName2$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseTableNameUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTableNameUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTableNameUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeKv3$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeKv3 +> = z.enum(SyncAcquireResponseTypeKv3); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsTablestorage$inboundSchema: + z.ZodType = z + .object({ + accountName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseAccountName2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + resourceGroupName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseResourceGroupName1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + tableName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseTableName2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("tablestorage"), + type: SyncAcquireResponseTypeKv3$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsTablestorageFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsTablestorage, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsTablestorage$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsTablestorage' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCollectionNameSecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncAcquireResponseCollectionNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCollectionNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCollectionNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCollectionNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCollectionName$inboundSchema: z.ZodType< + SyncAcquireResponseCollectionName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseCollectionNameSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseCollectionNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseCollectionName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCollectionName' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCollectionNameUnion$inboundSchema: z.ZodType< + SyncAcquireResponseCollectionNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseCollectionName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseCollectionNameUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCollectionNameUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCollectionNameUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDatabaseIdSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseDatabaseIdSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseDatabaseIdSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDatabaseIdSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDatabaseIdSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDatabaseId$inboundSchema: z.ZodType< + SyncAcquireResponseDatabaseId, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseDatabaseIdSecretRef$inboundSchema), +}); + +export function syncAcquireResponseDatabaseIdFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseDatabaseId$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDatabaseId' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDatabaseIdUnion$inboundSchema: z.ZodType< + SyncAcquireResponseDatabaseIdUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseDatabaseId$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseDatabaseIdUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDatabaseIdUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDatabaseIdUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseProjectIdSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseProjectIdSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseProjectIdSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseProjectIdSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseProjectIdSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseProjectId$inboundSchema: z.ZodType< + SyncAcquireResponseProjectId, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseProjectIdSecretRef$inboundSchema), +}); + +export function syncAcquireResponseProjectIdFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseProjectId$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseProjectId' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseProjectIdUnion$inboundSchema: z.ZodType< + SyncAcquireResponseProjectIdUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseProjectId$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseProjectIdUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseProjectIdUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseProjectIdUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeKv2$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeKv2 +> = z.enum(SyncAcquireResponseTypeKv2); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsFirestore$inboundSchema: + z.ZodType = z.object({ + collectionName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseCollectionName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + databaseId: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseDatabaseId$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + projectId: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseProjectId$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("firestore"), + type: SyncAcquireResponseTypeKv2$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsFirestoreFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsFirestore, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsFirestore$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsFirestore' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseEndpointUrlSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseEndpointUrlSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseEndpointUrlSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseEndpointUrlSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseEndpointUrlSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseEndpointUrlSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseEndpointUrl$inboundSchema: z.ZodType< + SyncAcquireResponseEndpointUrl, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseEndpointUrlSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseEndpointUrlFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseEndpointUrl$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseEndpointUrl' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRegionSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseRegionSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseRegionSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRegionSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRegionSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRegion$inboundSchema: z.ZodType< + SyncAcquireResponseRegion, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseRegionSecretRef$inboundSchema), +}); + +export function syncAcquireResponseRegionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseRegion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRegion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRegionUnion$inboundSchema: z.ZodType< + SyncAcquireResponseRegionUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseRegion$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseRegionUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseRegionUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRegionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTableNameSecretRef1$inboundSchema: z.ZodType< + SyncAcquireResponseTableNameSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseTableNameSecretRef1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTableNameSecretRef1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTableNameSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTableName1$inboundSchema: z.ZodType< + SyncAcquireResponseTableName1, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseTableNameSecretRef1$inboundSchema), +}); + +export function syncAcquireResponseTableName1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseTableName1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTableName1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTableNameUnion1$inboundSchema: z.ZodType< + SyncAcquireResponseTableNameUnion1, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseTableName1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseTableNameUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTableNameUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTableNameUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeKv1$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeKv1 +> = z.enum(SyncAcquireResponseTypeKv1); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsDynamodb$inboundSchema: + z.ZodType = z.object({ + endpointUrl: z.nullable(z.any()).optional(), + region: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseRegion$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + tableName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseTableName1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("dynamodb"), + type: SyncAcquireResponseTypeKv1$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsDynamodbFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsDynamodb, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsDynamodb$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsDynamodb' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseExternalBindingsUnion3$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsUnion3, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseExternalBindingsDynamodb$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsFirestore$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsTablestorage$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsRedis$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsLocalKv$inboundSchema), +]); + +export function syncAcquireResponseExternalBindingsUnion3FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsUnion3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsUnion3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsUnion3' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseQueuePathSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseQueuePathSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseQueuePathSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseQueuePathSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseQueuePathSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseQueuePath$inboundSchema: z.ZodType< + SyncAcquireResponseQueuePath, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseQueuePathSecretRef$inboundSchema), +}); + +export function syncAcquireResponseQueuePathFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseQueuePath$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseQueuePath' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseQueuePathUnion$inboundSchema: z.ZodType< + SyncAcquireResponseQueuePathUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseQueuePath$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseQueuePathUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseQueuePathUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseQueuePathUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeQueue4$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeQueue4 +> = z.enum(SyncAcquireResponseTypeQueue4); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsLocalQueue$inboundSchema: + z.ZodType = z.object({ + queuePath: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseQueuePath$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("local-queue"), + type: SyncAcquireResponseTypeQueue4$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsLocalQueueFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsLocalQueue, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsLocalQueue$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsLocalQueue' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseNamespaceSecretRef1$inboundSchema: z.ZodType< + SyncAcquireResponseNamespaceSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseNamespaceSecretRef1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseNamespaceSecretRef1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseNamespaceSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseNamespace1$inboundSchema: z.ZodType< + SyncAcquireResponseNamespace1, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseNamespaceSecretRef1$inboundSchema), +}); + +export function syncAcquireResponseNamespace1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseNamespace1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseNamespace1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseNamespaceUnion1$inboundSchema: z.ZodType< + SyncAcquireResponseNamespaceUnion1, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseNamespace1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseNamespaceUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseNamespaceUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseNamespaceUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseQueueNameSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseQueueNameSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseQueueNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseQueueNameSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseQueueNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseQueueName$inboundSchema: z.ZodType< + SyncAcquireResponseQueueName, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseQueueNameSecretRef$inboundSchema), +}); + +export function syncAcquireResponseQueueNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseQueueName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseQueueName' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseQueueNameUnion$inboundSchema: z.ZodType< + SyncAcquireResponseQueueNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseQueueName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseQueueNameUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseQueueNameUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseQueueNameUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeQueue3$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeQueue3 +> = z.enum(SyncAcquireResponseTypeQueue3); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsServicebus$inboundSchema: + z.ZodType = z.object({ + namespace: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseNamespace1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + queueName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseQueueName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("servicebus"), + type: SyncAcquireResponseTypeQueue3$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsServicebusFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsServicebus, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsServicebus$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsServicebus' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseSubscriptionSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseSubscriptionSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseSubscriptionSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseSubscriptionSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseSubscriptionSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseSubscriptionSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseSubscription$inboundSchema: z.ZodType< + SyncAcquireResponseSubscription, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseSubscriptionSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseSubscriptionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseSubscription$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseSubscription' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseSubscriptionUnion$inboundSchema: z.ZodType< + SyncAcquireResponseSubscriptionUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseSubscription$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseSubscriptionUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseSubscriptionUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseSubscriptionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTopicSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseTopicSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseTopicSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseTopicSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTopicSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTopic$inboundSchema: z.ZodType< + SyncAcquireResponseTopic, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseTopicSecretRef$inboundSchema), +}); + +export function syncAcquireResponseTopicFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseTopic$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTopic' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTopicUnion$inboundSchema: z.ZodType< + SyncAcquireResponseTopicUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseTopic$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseTopicUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseTopicUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTopicUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeQueue2$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeQueue2 +> = z.enum(SyncAcquireResponseTypeQueue2); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsPubsub$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsPubsub, + unknown +> = z.object({ + subscription: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseSubscription$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + topic: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseTopic$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("pubsub"), + type: SyncAcquireResponseTypeQueue2$inboundSchema, +}); + +export function syncAcquireResponseExternalBindingsPubsubFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsPubsub, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsPubsub$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsPubsub' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseQueueUrlSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseQueueUrlSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseQueueUrlSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseQueueUrlSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseQueueUrlSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseQueueUrl$inboundSchema: z.ZodType< + SyncAcquireResponseQueueUrl, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncAcquireResponseQueueUrlSecretRef$inboundSchema), +}); + +export function syncAcquireResponseQueueUrlFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseQueueUrl$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseQueueUrl' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseQueueUrlUnion$inboundSchema: z.ZodType< + SyncAcquireResponseQueueUrlUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseQueueUrl$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseQueueUrlUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseQueueUrlUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseQueueUrlUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeQueue1$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeQueue1 +> = z.enum(SyncAcquireResponseTypeQueue1); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsSqs$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsSqs, + unknown +> = z.object({ + queueUrl: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseQueueUrl$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("sqs"), + type: SyncAcquireResponseTypeQueue1$inboundSchema, +}); + +export function syncAcquireResponseExternalBindingsSqsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsSqs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseExternalBindingsSqs' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseExternalBindingsUnion2$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsUnion2, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseExternalBindingsSqs$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsPubsub$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsServicebus$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsLocalQueue$inboundSchema), +]); + +export function syncAcquireResponseExternalBindingsUnion2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStoragePathSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseStoragePathSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseStoragePathSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseStoragePathSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStoragePathSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseStoragePathSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStoragePath$inboundSchema: z.ZodType< + SyncAcquireResponseStoragePath, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseStoragePathSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseStoragePathFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseStoragePath$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseStoragePath' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStoragePathUnion$inboundSchema: z.ZodType< + SyncAcquireResponseStoragePathUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseStoragePath$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseStoragePathUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStoragePathUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseStoragePathUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeStorage4$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeStorage4 +> = z.enum(SyncAcquireResponseTypeStorage4); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsLocalStorage$inboundSchema: + z.ZodType = z + .object({ + storagePath: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseStoragePath$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("local-storage"), + type: SyncAcquireResponseTypeStorage4$inboundSchema, + }); + +export function syncAcquireResponseExternalBindingsLocalStorageFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsLocalStorage, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsLocalStorage$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsLocalStorage' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseBucketNameSecretRef2$inboundSchema: z.ZodType< + SyncAcquireResponseBucketNameSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseBucketNameSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseBucketNameSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseBucketNameSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseBucketNameSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseBucketName2$inboundSchema: z.ZodType< + SyncAcquireResponseBucketName2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseBucketNameSecretRef2$inboundSchema + ), +}); + +export function syncAcquireResponseBucketName2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseBucketName2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseBucketName2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseBucketNameUnion2$inboundSchema: z.ZodType< + SyncAcquireResponseBucketNameUnion2, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseBucketName2$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseBucketNameUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseBucketNameUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseBucketNameUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeStorage3$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeStorage3 +> = z.enum(SyncAcquireResponseTypeStorage3); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsGcs$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsGcs, + unknown +> = z.object({ + bucketName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseBucketName2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("gcs"), + type: SyncAcquireResponseTypeStorage3$inboundSchema, +}); + +export function syncAcquireResponseExternalBindingsGcsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsGcs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseExternalBindingsGcs' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseAccountNameSecretRef1$inboundSchema: z.ZodType< + SyncAcquireResponseAccountNameSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseAccountNameSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseAccountNameSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseAccountNameSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseAccountNameSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseAccountName1$inboundSchema: z.ZodType< + SyncAcquireResponseAccountName1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseAccountNameSecretRef1$inboundSchema + ), +}); + +export function syncAcquireResponseAccountName1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseAccountName1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseAccountName1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseAccountNameUnion1$inboundSchema: z.ZodType< + SyncAcquireResponseAccountNameUnion1, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseAccountName1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseAccountNameUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseAccountNameUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseAccountNameUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseContainerNameSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseContainerNameSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseContainerNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseContainerNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseContainerNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseContainerNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseContainerName$inboundSchema: z.ZodType< + SyncAcquireResponseContainerName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseContainerNameSecretRef$inboundSchema + ), +}); + +export function syncAcquireResponseContainerNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseContainerName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseContainerName' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseContainerNameUnion$inboundSchema: z.ZodType< + SyncAcquireResponseContainerNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseContainerName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseContainerNameUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseContainerNameUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseContainerNameUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeStorage2$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeStorage2 +> = z.enum(SyncAcquireResponseTypeStorage2); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsBlob$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsBlob, + unknown +> = z.object({ + accountName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseAccountName1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + containerName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseContainerName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("blob"), + type: SyncAcquireResponseTypeStorage2$inboundSchema, +}); + +export function syncAcquireResponseExternalBindingsBlobFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsBlob, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsBlob$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsBlob' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseBucketNameSecretRef1$inboundSchema: z.ZodType< + SyncAcquireResponseBucketNameSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncAcquireResponseBucketNameSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseBucketNameSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseBucketNameSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseBucketNameSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseBucketName1$inboundSchema: z.ZodType< + SyncAcquireResponseBucketName1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncAcquireResponseBucketNameSecretRef1$inboundSchema + ), +}); + +export function syncAcquireResponseBucketName1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseBucketName1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseBucketName1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseBucketNameUnion1$inboundSchema: z.ZodType< + SyncAcquireResponseBucketNameUnion1, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseBucketName1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncAcquireResponseBucketNameUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseBucketNameUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseBucketNameUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTypeStorage1$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTypeStorage1 +> = z.enum(SyncAcquireResponseTypeStorage1); + +/** @internal */ +export const SyncAcquireResponseExternalBindingsS3$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsS3, + unknown +> = z.object({ + bucketName: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseBucketName1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("s3"), + type: SyncAcquireResponseTypeStorage1$inboundSchema, +}); + +export function syncAcquireResponseExternalBindingsS3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsS3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseExternalBindingsS3' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseExternalBindingsUnion1$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsUnion1, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseExternalBindingsS3$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsBlob$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsGcs$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsLocalStorage$inboundSchema), +]); + +export function syncAcquireResponseExternalBindingsUnion1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsUnion1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseExternalBindingsUnion6$inboundSchema: z.ZodType< + SyncAcquireResponseExternalBindingsUnion6, + unknown +> = z.union([ + SyncAcquireResponseExternalBindingsContainerAppsEnvironment$inboundSchema, + z.union([ + z.lazy(() => SyncAcquireResponseExternalBindingsS3$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsBlob$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsGcs$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsLocalStorage$inboundSchema), + ]), + z.union([ + z.lazy(() => SyncAcquireResponseExternalBindingsSqs$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsPubsub$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsServicebus$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsLocalQueue$inboundSchema), + ]), + z.union([ + z.lazy(() => SyncAcquireResponseExternalBindingsDynamodb$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsFirestore$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsTablestorage$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsRedis$inboundSchema), + z.lazy(() => SyncAcquireResponseExternalBindingsLocalKv$inboundSchema), + ]), + SyncAcquireResponseExternalBindingsUnion4$inboundSchema, + SyncAcquireResponseExternalBindingsUnion5$inboundSchema, +]); + +export function syncAcquireResponseExternalBindingsUnion6FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseExternalBindingsUnion6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseExternalBindingsUnion6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseExternalBindingsUnion6' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePlatformKubernetes$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponsePlatformKubernetes +> = z.enum(SyncAcquireResponsePlatformKubernetes); + +/** @internal */ +export const SyncAcquireResponseManagementConfigKubernetes$inboundSchema: + z.ZodType = z.object({ + platform: SyncAcquireResponsePlatformKubernetes$inboundSchema, + }); + +export function syncAcquireResponseManagementConfigKubernetesFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseManagementConfigKubernetes, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseManagementConfigKubernetes$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseManagementConfigKubernetes' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseConfigPlatformAzure$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseConfigPlatformAzure +> = z.enum(SyncAcquireResponseConfigPlatformAzure); + +/** @internal */ +export const SyncAcquireResponseManagementConfigAzure$inboundSchema: z.ZodType< + SyncAcquireResponseManagementConfigAzure, + unknown +> = z.object({ + managingTenantId: z.string(), + oidcIssuer: z.string(), + oidcSubject: z.string(), + platform: SyncAcquireResponseConfigPlatformAzure$inboundSchema, +}); + +export function syncAcquireResponseManagementConfigAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseManagementConfigAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseManagementConfigAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseManagementConfigAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseConfigPlatformGcp$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseConfigPlatformGcp +> = z.enum(SyncAcquireResponseConfigPlatformGcp); + +/** @internal */ +export const SyncAcquireResponseManagementConfigGcp$inboundSchema: z.ZodType< + SyncAcquireResponseManagementConfigGcp, + unknown +> = z.object({ + serviceAccountEmail: z.string(), + platform: SyncAcquireResponseConfigPlatformGcp$inboundSchema, +}); + +export function syncAcquireResponseManagementConfigGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseManagementConfigGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseManagementConfigGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseConfigPlatformAws$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseConfigPlatformAws +> = z.enum(SyncAcquireResponseConfigPlatformAws); + +/** @internal */ +export const SyncAcquireResponseManagementConfigAws$inboundSchema: z.ZodType< + SyncAcquireResponseManagementConfigAws, + unknown +> = z.object({ + managingRoleArn: z.string(), + platform: SyncAcquireResponseConfigPlatformAws$inboundSchema, +}); + +export function syncAcquireResponseManagementConfigAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseManagementConfigAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseManagementConfigAws' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseManagementConfigUnion$inboundSchema: z.ZodType< + SyncAcquireResponseManagementConfigUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseManagementConfigAzure$inboundSchema), + z.lazy(() => SyncAcquireResponseManagementConfigAws$inboundSchema), + z.lazy(() => SyncAcquireResponseManagementConfigGcp$inboundSchema), + z.lazy(() => SyncAcquireResponseManagementConfigKubernetes$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseManagementConfigUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseManagementConfigUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseManagementConfigUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseManagementConfigUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseMonitoring$inboundSchema: z.ZodType< + SyncAcquireResponseMonitoring, + unknown +> = z.object({ + logsAuthHeader: z.string(), + logsEndpoint: z.string(), + metricsAuthHeader: z.nullable(z.string()).optional(), + metricsEndpoint: z.nullable(z.string()).optional(), + resourceAttributes: z.record(z.string(), z.string()).optional(), +}); + +export function syncAcquireResponseMonitoringFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseMonitoring$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseMonitoring' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseMonitoringUnion$inboundSchema: z.ZodType< + SyncAcquireResponseMonitoringUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseMonitoring$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseMonitoringUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseMonitoringUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseMonitoringUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePoolsAutoscale$inboundSchema: z.ZodType< + SyncAcquireResponsePoolsAutoscale, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}); + +export function syncAcquireResponsePoolsAutoscaleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePoolsAutoscale' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePoolsFixed$inboundSchema: z.ZodType< + SyncAcquireResponsePoolsFixed, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}); + +export function syncAcquireResponsePoolsFixedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePoolsFixed' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePoolsUnion$inboundSchema: z.ZodType< + SyncAcquireResponsePoolsUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponsePoolsFixed$inboundSchema), + z.lazy(() => SyncAcquireResponsePoolsAutoscale$inboundSchema), +]); + +export function syncAcquireResponsePoolsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePoolsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCompute$inboundSchema: z.ZodType< + SyncAcquireResponseCompute, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => SyncAcquireResponsePoolsFixed$inboundSchema), + z.lazy(() => SyncAcquireResponsePoolsAutoscale$inboundSchema), + ]), + ).optional(), +}); + +export function syncAcquireResponseComputeFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseCompute$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCompute' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseComputeUnion$inboundSchema: z.ZodType< + SyncAcquireResponseComputeUnion, + unknown +> = z.union([z.lazy(() => SyncAcquireResponseCompute$inboundSchema), z.any()]); + +export function syncAcquireResponseComputeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseComputeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDeploymentModel$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseDeploymentModel +> = z.enum(SyncAcquireResponseDeploymentModel); + +/** @internal */ +export const SyncAcquireResponseAwsStackSettings$inboundSchema: z.ZodType< + SyncAcquireResponseAwsStackSettings, + unknown +> = z.object({ + certificateArn: z.string(), +}); + +export function syncAcquireResponseAwsStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseAwsStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseAwsStackSettings' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackSettingsAwsUnion$inboundSchema: z.ZodType< + SyncAcquireResponseStackSettingsAwsUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseAwsStackSettings$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseStackSettingsAwsUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseStackSettingsAwsUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStackSettingsAwsUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseStackSettingsAwsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseAzureStackSettings$inboundSchema: z.ZodType< + SyncAcquireResponseAzureStackSettings, + unknown +> = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponseAzureStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseAzureStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseAzureStackSettings' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackSettingsAzureUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseAzureStackSettings$inboundSchema), + z.any(), + ]); + +export function syncAcquireResponseStackSettingsAzureUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseStackSettingsAzureUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStackSettingsAzureUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseStackSettingsAzureUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseGcpStackSettings$inboundSchema: z.ZodType< + SyncAcquireResponseGcpStackSettings, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function syncAcquireResponseGcpStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseGcpStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseGcpStackSettings' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackSettingsGcpUnion$inboundSchema: z.ZodType< + SyncAcquireResponseStackSettingsGcpUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseGcpStackSettings$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseStackSettingsGcpUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseStackSettingsGcpUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStackSettingsGcpUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseStackSettingsGcpUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTlsSecretRef$inboundSchema: z.ZodType< + SyncAcquireResponseTlsSecretRef, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function syncAcquireResponseTlsSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTlsSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDomainsKubernetes$inboundSchema: z.ZodType< + SyncAcquireResponseDomainsKubernetes, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => SyncAcquireResponseTlsSecretRef$inboundSchema), +}); + +export function syncAcquireResponseDomainsKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDomainsKubernetes' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDomainsKubernetesUnion$inboundSchema: z.ZodType< + SyncAcquireResponseDomainsKubernetesUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseDomainsKubernetes$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseDomainsKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseDomainsKubernetesUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDomainsKubernetesUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseDomainsKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDomainsCertificate$inboundSchema: z.ZodType< + SyncAcquireResponseDomainsCertificate, + unknown +> = z.object({ + aws: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseAwsStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + azure: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseAzureStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + gcp: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseGcpStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseDomainsKubernetes$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncAcquireResponseDomainsCertificateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseDomainsCertificate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDomainsCertificate' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCustomDomains$inboundSchema: z.ZodType< + SyncAcquireResponseCustomDomains, + unknown +> = z.object({ + certificate: z.lazy(() => + SyncAcquireResponseDomainsCertificate$inboundSchema + ), + domain: z.string(), +}); + +export function syncAcquireResponseCustomDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCustomDomains' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDomains$inboundSchema: z.ZodType< + SyncAcquireResponseDomains, + unknown +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => SyncAcquireResponseCustomDomains$inboundSchema), + ), + ).optional(), +}); + +export function syncAcquireResponseDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDomains' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseDomainsUnion$inboundSchema: z.ZodType< + SyncAcquireResponseDomainsUnion, + unknown +> = z.union([z.lazy(() => SyncAcquireResponseDomains$inboundSchema), z.any()]); + +export function syncAcquireResponseDomainsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseDomainsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackSettingsExternalBindings$inboundSchema: + z.ZodType = z + .object({}); + +export function syncAcquireResponseStackSettingsExternalBindingsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseStackSettingsExternalBindings, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStackSettingsExternalBindings$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseStackSettingsExternalBindings' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseHeartbeats$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseHeartbeats +> = z.enum(SyncAcquireResponseHeartbeats); + +/** @internal */ +export const SyncAcquireResponseCloud$inboundSchema: z.ZodType< + SyncAcquireResponseCloud, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponseCloudFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseCloud$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCloud' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCloudUnion$inboundSchema: z.ZodType< + SyncAcquireResponseCloudUnion, + unknown +> = z.union([z.lazy(() => SyncAcquireResponseCloud$inboundSchema), z.any()]); + +export function syncAcquireResponseCloudUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCloudUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseOwnership$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseOwnership +> = z.enum(SyncAcquireResponseOwnership); + +/** @internal */ +export const SyncAcquireResponseCluster$inboundSchema: z.ZodType< + SyncAcquireResponseCluster, + unknown +> = z.object({ + cloud: z.nullable( + z.union([z.lazy(() => SyncAcquireResponseCloud$inboundSchema), z.any()]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: SyncAcquireResponseOwnership$inboundSchema, +}); + +export function syncAcquireResponseClusterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseCluster$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCluster' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseClusterUnion$inboundSchema: z.ZodType< + SyncAcquireResponseClusterUnion, + unknown +> = z.union([z.lazy(() => SyncAcquireResponseCluster$inboundSchema), z.any()]); + +export function syncAcquireResponseClusterUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseClusterUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCertificateNone2$inboundSchema: z.ZodType< + SyncAcquireResponseCertificateNone2, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function syncAcquireResponseCertificateNone2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCertificateNone2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCertificateNone2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCertificateManagedTLSSecret2$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function syncAcquireResponseCertificateManagedTLSSecret2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCertificateManagedTLSSecret2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCertificateManagedTLSSecret2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCertificateManagedTLSSecret2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCertificateAwsAcmArn2$inboundSchema: z.ZodType< + SyncAcquireResponseCertificateAwsAcmArn2, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function syncAcquireResponseCertificateAwsAcmArn2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCertificateAwsAcmArn2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCertificateAwsAcmArn2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCertificateAwsAcmArn2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCertificateManagedAcmImport2$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function syncAcquireResponseCertificateManagedAcmImport2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCertificateManagedAcmImport2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCertificateManagedAcmImport2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCertificateManagedAcmImport2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCertificateTLSSecretRef2$inboundSchema: + z.ZodType = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function syncAcquireResponseCertificateTLSSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseCertificateTLSSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCertificateTLSSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseCertificateTLSSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseCertificateUnion2$inboundSchema: z.ZodType< + SyncAcquireResponseCertificateUnion2, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => SyncAcquireResponseCertificateManagedAcmImport2$inboundSchema), + z.lazy(() => SyncAcquireResponseCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => SyncAcquireResponseCertificateManagedTLSSecret2$inboundSchema), + z.lazy(() => SyncAcquireResponseCertificateNone2$inboundSchema), +]); + +export function syncAcquireResponseCertificateUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseCertificateUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseCertificateUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseModeCustom$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseModeCustom +> = z.enum(SyncAcquireResponseModeCustom); + +/** @internal */ +export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4 + > = z.enum( + SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4, + ); + +/** @internal */ +export const SyncAcquireResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: + z.ZodType< + SyncAcquireResponseProviderAzureApplicationGatewayForContainers4, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, + }); + +export function syncAcquireResponseProviderAzureApplicationGatewayForContainers4FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseProviderAzureApplicationGatewayForContainers4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseProviderAzureApplicationGatewayForContainers4' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseProviderGkeGatewayEnum4$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseProviderGkeGatewayEnum4, + ); + +/** @internal */ +export const SyncAcquireResponseProviderGkeGateway4$inboundSchema: z.ZodType< + SyncAcquireResponseProviderGkeGateway4, + unknown +> = z.object({ + provider: SyncAcquireResponseProviderGkeGatewayEnum4$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponseProviderGkeGateway4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseProviderGkeGateway4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseProviderGkeGateway4' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseProviderAwsAlbEnum4 +> = z.enum(SyncAcquireResponseProviderAwsAlbEnum4); + +/** @internal */ +export const SyncAcquireResponseProviderAwsAlb4$inboundSchema: z.ZodType< + SyncAcquireResponseProviderAwsAlb4, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncAcquireResponseProviderAwsAlbEnum4$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncAcquireResponseProviderAwsAlb4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseProviderAwsAlb4' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseProviderUnion4$inboundSchema: z.ZodType< + SyncAcquireResponseProviderUnion4, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + SyncAcquireResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => SyncAcquireResponseProviderGkeGateway4$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseProviderUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseProviderUnion4' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRouteGateway2$inboundSchema: z.ZodType< + SyncAcquireResponseRouteGateway2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + SyncAcquireResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => SyncAcquireResponseProviderGkeGateway4$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function syncAcquireResponseRouteGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRouteGateway2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: + z.ZodEnum< + typeof SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3 + > = z.enum( + SyncAcquireResponseProviderAzureApplicationGatewayForContainersEnum3, + ); diff --git a/client-sdks/platform/typescript/src/models/syncacquireresponsetargetreleasemanagement1.ts b/client-sdks/platform/typescript/src/models/syncacquireresponsetargetreleasemanagement1.ts new file mode 100644 index 000000000..23532b3f7 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/syncacquireresponsetargetreleasemanagement1.ts @@ -0,0 +1,6024 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { + collectExtraKeys as collectExtraKeys$, + safeParse, +} from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + SyncAcquireResponsePreparedStackInput, + SyncAcquireResponsePreparedStackInput$inboundSchema, + SyncAcquireResponsePreparedStackManagementEnum, + SyncAcquireResponsePreparedStackManagementEnum$inboundSchema, + SyncAcquireResponsePreparedStackOverrideAw, + SyncAcquireResponsePreparedStackOverrideAw$inboundSchema, + SyncAcquireResponsePreparedStackOverrideAzure, + SyncAcquireResponsePreparedStackOverrideAzure$inboundSchema, + SyncAcquireResponsePreparedStackOverrideGcpResource, + SyncAcquireResponsePreparedStackOverrideGcpResource$inboundSchema, + SyncAcquireResponsePreparedStackOverrideGcpStack, + SyncAcquireResponsePreparedStackOverrideGcpStack$inboundSchema, +} from "./syncacquireresponsepreparedstackoverridegcpstack.js"; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponsePreparedStackOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncAcquireResponsePreparedStackOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncAcquireResponsePreparedStackOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponsePreparedStackOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncAcquireResponsePreparedStackOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponsePreparedStackOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponsePreparedStackOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncAcquireResponsePreparedStackOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncAcquireResponsePreparedStackOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponsePreparedStackOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncAcquireResponsePreparedStackOverrideUnion = + | SyncAcquireResponsePreparedStackOverride + | string; + +export type SyncAcquireResponsePreparedStackManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponsePreparedStackExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponsePreparedStackExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponsePreparedStackExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncAcquireResponsePreparedStackExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponsePreparedStackExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncAcquireResponsePreparedStackExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncAcquireResponsePreparedStackExtendEffect = ClosedEnum< + typeof SyncAcquireResponsePreparedStackExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponsePreparedStackExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncAcquireResponsePreparedStackExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponsePreparedStackExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncAcquireResponsePreparedStackExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponsePreparedStackExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponsePreparedStackExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponsePreparedStackExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponsePreparedStackExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncAcquireResponsePreparedStackExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncAcquireResponsePreparedStackExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponsePreparedStackExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncAcquireResponsePreparedStackExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponsePreparedStackExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponsePreparedStackExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponsePreparedStackExtendConditionResource = { + expression: string; + title: string; +}; + +export type SyncAcquireResponsePreparedStackExtendResourceConditionUnion = + | SyncAcquireResponsePreparedStackExtendConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponsePreparedStackExtendGcpResource = { + condition?: + | SyncAcquireResponsePreparedStackExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponsePreparedStackExtendConditionStack = { + expression: string; + title: string; +}; + +export type SyncAcquireResponsePreparedStackExtendStackConditionUnion = + | SyncAcquireResponsePreparedStackExtendConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponsePreparedStackExtendGcpStack = { + condition?: + | SyncAcquireResponsePreparedStackExtendConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponsePreparedStackExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncAcquireResponsePreparedStackExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncAcquireResponsePreparedStackExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponsePreparedStackExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncAcquireResponsePreparedStackExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponsePreparedStackExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponsePreparedStackExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncAcquireResponsePreparedStackExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncAcquireResponsePreparedStackExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponsePreparedStackExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncAcquireResponsePreparedStackExtendUnion = + | SyncAcquireResponsePreparedStackExtend + | string; + +export type SyncAcquireResponsePreparedStackManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array; + }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type SyncAcquireResponsePreparedStackManagementUnion = + | SyncAcquireResponsePreparedStackManagement1 + | SyncAcquireResponsePreparedStackManagement2 + | SyncAcquireResponsePreparedStackManagementEnum; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponsePreparedStackProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponsePreparedStackProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponsePreparedStackProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncAcquireResponsePreparedStackProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponsePreparedStackProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncAcquireResponsePreparedStackProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncAcquireResponsePreparedStackProfileEffect = ClosedEnum< + typeof SyncAcquireResponsePreparedStackProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponsePreparedStackProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncAcquireResponsePreparedStackProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponsePreparedStackProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncAcquireResponsePreparedStackProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponsePreparedStackProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponsePreparedStackProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponsePreparedStackProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponsePreparedStackProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncAcquireResponsePreparedStackProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncAcquireResponsePreparedStackProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponsePreparedStackProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncAcquireResponsePreparedStackProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponsePreparedStackProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponsePreparedStackProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponsePreparedStackProfileConditionResource = { + expression: string; + title: string; +}; + +export type SyncAcquireResponsePreparedStackProfileResourceConditionUnion = + | SyncAcquireResponsePreparedStackProfileConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponsePreparedStackProfileGcpResource = { + condition?: + | SyncAcquireResponsePreparedStackProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponsePreparedStackProfileConditionStack = { + expression: string; + title: string; +}; + +export type SyncAcquireResponsePreparedStackProfileStackConditionUnion = + | SyncAcquireResponsePreparedStackProfileConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponsePreparedStackProfileGcpStack = { + condition?: + | SyncAcquireResponsePreparedStackProfileConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponsePreparedStackProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncAcquireResponsePreparedStackProfileGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncAcquireResponsePreparedStackProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponsePreparedStackProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncAcquireResponsePreparedStackProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponsePreparedStackProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponsePreparedStackProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncAcquireResponsePreparedStackProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncAcquireResponsePreparedStackProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponsePreparedStackProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncAcquireResponsePreparedStackProfileUnion = + | SyncAcquireResponsePreparedStackProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncAcquireResponsePreparedStackPermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncAcquireResponsePreparedStackManagement1 + | SyncAcquireResponsePreparedStackManagement2 + | SyncAcquireResponsePreparedStackManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncAcquireResponsePreparedStackConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncAcquireResponsePreparedStackDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const SyncAcquireResponsePreparedStackLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type SyncAcquireResponsePreparedStackLifecycle = ClosedEnum< + typeof SyncAcquireResponsePreparedStackLifecycle +>; + +export type SyncAcquireResponsePreparedStackResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncAcquireResponsePreparedStackConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: SyncAcquireResponsePreparedStackLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncAcquireResponsePreparedStackSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponsePreparedStackSupportedPlatform = ClosedEnum< + typeof SyncAcquireResponsePreparedStackSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncAcquireResponsePreparedStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncAcquireResponsePreparedStackPermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncAcquireResponsePreparedStackResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +export type SyncAcquireResponsePreparedStackUnion = + | SyncAcquireResponsePreparedStack + | any; + +/** + * Runtime metadata for deployment + * + * @remarks + * + * Stores deployment state that needs to persist across step calls. + */ +export type SyncAcquireResponseRuntimeMetadata = { + /** + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment + */ + lastSyncedEnvVarsHash?: string | null | undefined; + preparedStack?: SyncAcquireResponsePreparedStack | any | null | undefined; + /** + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. + */ + registryAccessGranted?: boolean | undefined; +}; + +export type SyncAcquireResponseRuntimeMetadataUnion = + | SyncAcquireResponseRuntimeMetadata + | any; + +/** + * Represents the target cloud platform. + */ +export const SyncAcquireResponseStackStatePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponseStackStatePlatform = ClosedEnum< + typeof SyncAcquireResponseStackStatePlatform +>; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncAcquireResponseStackStateConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncAcquireResponseControllerPlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponseControllerPlatformEnum = ClosedEnum< + typeof SyncAcquireResponseControllerPlatformEnum +>; + +export type SyncAcquireResponseControllerPlatformUnion = + | SyncAcquireResponseControllerPlatformEnum + | any; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncAcquireResponseStackStateDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type SyncAcquireResponseStackStateError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type SyncAcquireResponseStackStateErrorUnion = + | SyncAcquireResponseStackStateError + | any; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const SyncAcquireResponseStackStateLifecycleEnum = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type SyncAcquireResponseStackStateLifecycleEnum = ClosedEnum< + typeof SyncAcquireResponseStackStateLifecycleEnum +>; + +export type SyncAcquireResponseLifecycleUnion = + | SyncAcquireResponseStackStateLifecycleEnum + | any; + +/** + * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. + */ +export type SyncAcquireResponseOutputs = { + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type SyncAcquireResponseOutputsUnion = SyncAcquireResponseOutputs | any; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncAcquireResponsePreviousConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type SyncAcquireResponsePreviousConfigUnion = + | SyncAcquireResponsePreviousConfig + | any; + +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export const SyncAcquireResponseStackStateStatus = { + Pending: "pending", + Provisioning: "provisioning", + ProvisionFailed: "provision-failed", + Running: "running", + Updating: "updating", + UpdateFailed: "update-failed", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + Deleted: "deleted", + RefreshFailed: "refresh-failed", +} as const; +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export type SyncAcquireResponseStackStateStatus = ClosedEnum< + typeof SyncAcquireResponseStackStateStatus +>; + +/** + * Represents the state of a single resource within the stack for a specific platform. + */ +export type SyncAcquireResponseStackStateResources = { + /** + * The platform-specific resource controller that manages this resource's lifecycle. + * + * @remarks + * This is None when the resource status is Pending. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + internal?: any | null | undefined; + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncAcquireResponseStackStateConfig; + controllerPlatform?: + | SyncAcquireResponseControllerPlatformEnum + | any + | null + | undefined; + /** + * Complete list of dependencies for this resource, including infrastructure dependencies. + * + * @remarks + * This preserves the full dependency information from the stack definition. + */ + dependencies?: Array | undefined; + error?: SyncAcquireResponseStackStateError | any | null | undefined; + /** + * Stores the controller state that failed, used for manual retry operations. + * + * @remarks + * This allows resuming from the exact point where the failure occurred. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + lastFailedState?: any | null | undefined; + lifecycle?: + | SyncAcquireResponseStackStateLifecycleEnum + | any + | null + | undefined; + outputs?: SyncAcquireResponseOutputs | any | null | undefined; + previousConfig?: SyncAcquireResponsePreviousConfig | any | null | undefined; + /** + * Binding parameters for remote access. + * + * @remarks + * Only populated when the resource has `remote_access: true` in its ResourceEntry. + * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). + * Populated by controllers during provisioning using get_binding_params(). + */ + remoteBindingParams?: any | null | undefined; + /** + * Tracks consecutive retry attempts for the current state transition. + */ + retryAttempt?: number | undefined; + /** + * Represents the high-level status of a resource during its lifecycle. + */ + status: SyncAcquireResponseStackStateStatus; + /** + * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + */ + type: string; +}; + +/** + * Represents the collective state of all resources in a stack, including platform and pending actions. + */ +export type SyncAcquireResponseStackState = { + /** + * Represents the target cloud platform. + */ + platform: SyncAcquireResponseStackStatePlatform; + /** + * A prefix used for resource naming to ensure uniqueness across deployments. + */ + resourcePrefix: string; + /** + * The state of individual resources, keyed by resource ID. + */ + resources: { [k: string]: SyncAcquireResponseStackStateResources }; +}; + +export type SyncAcquireResponseStackStateUnion = + | SyncAcquireResponseStackState + | any; + +/** + * Deployment status in the deployment lifecycle + */ +export const SyncAcquireResponseStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", +} as const; +/** + * Deployment status in the deployment lifecycle + */ +export type SyncAcquireResponseStatus = ClosedEnum< + typeof SyncAcquireResponseStatus +>; + +export const SyncAcquireResponseTargetReleaseTypeStringList = { + StringList: "stringList", +} as const; +export type SyncAcquireResponseTargetReleaseTypeStringList = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseTypeStringList +>; + +export type SyncAcquireResponseTargetReleaseDefaultStringList = { + type: SyncAcquireResponseTargetReleaseTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const SyncAcquireResponseTargetReleaseTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncAcquireResponseTargetReleaseTypeBoolean = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseTypeBoolean +>; + +export type SyncAcquireResponseTargetReleaseDefaultBoolean = { + type: SyncAcquireResponseTargetReleaseTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const SyncAcquireResponseTargetReleaseTypeNumber = { + Number: "number", +} as const; +export type SyncAcquireResponseTargetReleaseTypeNumber = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseTypeNumber +>; + +export type SyncAcquireResponseTargetReleaseDefaultNumber = { + type: SyncAcquireResponseTargetReleaseTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const SyncAcquireResponseTargetReleaseTypeString = { + String: "string", +} as const; +export type SyncAcquireResponseTargetReleaseTypeString = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseTypeString +>; + +export type SyncAcquireResponseTargetReleaseDefaultString = { + type: SyncAcquireResponseTargetReleaseTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncAcquireResponseTargetReleaseDefaultUnion = + | SyncAcquireResponseTargetReleaseDefaultString + | SyncAcquireResponseTargetReleaseDefaultNumber + | SyncAcquireResponseTargetReleaseDefaultBoolean + | SyncAcquireResponseTargetReleaseDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const SyncAcquireResponseTargetReleaseTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncAcquireResponseTargetReleaseTypeEnvEnum = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseTypeEnvEnum +>; + +export type SyncAcquireResponseTargetReleaseTypeUnion = + | SyncAcquireResponseTargetReleaseTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncAcquireResponseTargetReleaseEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: SyncAcquireResponseTargetReleaseTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const SyncAcquireResponseTargetReleaseKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type SyncAcquireResponseTargetReleaseKind = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseKind +>; + +/** + * Represents the target cloud platform. + */ +export const SyncAcquireResponseTargetReleasePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncAcquireResponseTargetReleasePlatform = ClosedEnum< + typeof SyncAcquireResponseTargetReleasePlatform +>; + +/** + * Who can provide a stack input value. + */ +export const SyncAcquireResponseTargetReleaseProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncAcquireResponseTargetReleaseProvidedBy = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type SyncAcquireResponseTargetReleaseValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type SyncAcquireResponseTargetReleaseValidationUnion = + | SyncAcquireResponseTargetReleaseValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type SyncAcquireResponseTargetReleaseInput = { + default?: + | SyncAcquireResponseTargetReleaseDefaultString + | SyncAcquireResponseTargetReleaseDefaultNumber + | SyncAcquireResponseTargetReleaseDefaultBoolean + | SyncAcquireResponseTargetReleaseDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: SyncAcquireResponseTargetReleaseKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncAcquireResponseTargetReleaseValidation + | any + | null + | undefined; +}; + +export const SyncAcquireResponseTargetReleaseManagementEnum = { + Auto: "auto", +} as const; +export type SyncAcquireResponseTargetReleaseManagementEnum = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseTargetReleaseOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncAcquireResponseTargetReleaseOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponseTargetReleaseOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncAcquireResponseTargetReleaseOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncAcquireResponseTargetReleaseOverrideEffect = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseTargetReleaseOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncAcquireResponseTargetReleaseOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseTargetReleaseOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncAcquireResponseTargetReleaseOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseTargetReleaseOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseTargetReleaseOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncAcquireResponseTargetReleaseOverrideAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncAcquireResponseTargetReleaseOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseTargetReleaseOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncAcquireResponseTargetReleaseOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseTargetReleaseOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseTargetReleaseOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseTargetReleaseOverrideConditionResource = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion = + | SyncAcquireResponseTargetReleaseOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseOverrideGcpResource = { + condition?: + | SyncAcquireResponseTargetReleaseOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseTargetReleaseOverrideCondition = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseTargetReleaseOverrideConditionUnion = + | SyncAcquireResponseTargetReleaseOverrideCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseOverrideGcpStack = { + condition?: + | SyncAcquireResponseTargetReleaseOverrideCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseTargetReleaseOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncAcquireResponseTargetReleaseOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncAcquireResponseTargetReleaseOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseTargetReleaseOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncAcquireResponseTargetReleaseOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseTargetReleaseOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseTargetReleaseOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncAcquireResponseTargetReleaseOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncAcquireResponseTargetReleaseOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponseTargetReleaseOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncAcquireResponseTargetReleaseOverrideUnion = + | SyncAcquireResponseTargetReleaseOverride + | string; + +export type SyncAcquireResponseTargetReleaseManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseTargetReleaseExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncAcquireResponseTargetReleaseExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncAcquireResponseTargetReleaseExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncAcquireResponseTargetReleaseExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncAcquireResponseTargetReleaseExtendEffect = ClosedEnum< + typeof SyncAcquireResponseTargetReleaseExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseTargetReleaseExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncAcquireResponseTargetReleaseExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseTargetReleaseExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncAcquireResponseTargetReleaseExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseTargetReleaseExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseTargetReleaseExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncAcquireResponseTargetReleaseExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncAcquireResponseTargetReleaseExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseTargetReleaseExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncAcquireResponseTargetReleaseExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseTargetReleaseExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseTargetReleaseExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseTargetReleaseExtendConditionResource = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseTargetReleaseExtendResourceConditionUnion = + | SyncAcquireResponseTargetReleaseExtendConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseExtendGcpResource = { + condition?: + | SyncAcquireResponseTargetReleaseExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncAcquireResponseTargetReleaseExtendCondition = { + expression: string; + title: string; +}; + +export type SyncAcquireResponseTargetReleaseExtendConditionUnion = + | SyncAcquireResponseTargetReleaseExtendCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncAcquireResponseTargetReleaseExtendGcpStack = { + condition?: + | SyncAcquireResponseTargetReleaseExtendCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncAcquireResponseTargetReleaseExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncAcquireResponseTargetReleaseExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncAcquireResponseTargetReleaseExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncAcquireResponseTargetReleaseExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncAcquireResponseTargetReleaseExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncAcquireResponseTargetReleaseExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncAcquireResponseTargetReleaseExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncAcquireResponseTargetReleaseExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: Array | null | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncAcquireResponseTargetReleaseExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncAcquireResponseTargetReleaseExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncAcquireResponseTargetReleaseExtendUnion = + | SyncAcquireResponseTargetReleaseExtend + | string; + +export type SyncAcquireResponseTargetReleaseManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array; + }; +}; + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: + SyncAcquireResponsePreparedStackOverrideGcpResource$inboundSchema + .optional(), + stack: SyncAcquireResponsePreparedStackOverrideGcpStack$inboundSchema + .optional(), + }); + +export function syncAcquireResponsePreparedStackOverrideGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponsePreparedStackOverrideGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponsePreparedStackOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponsePreparedStackOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponsePreparedStackOverrideGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverridePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(SyncAcquireResponsePreparedStackOverrideAw$inboundSchema), + ).optional(), + azure: z.nullable( + z.array(SyncAcquireResponsePreparedStackOverrideAzure$inboundSchema), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponsePreparedStackOverrideGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponsePreparedStackOverridePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverridePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverridePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverridePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverride$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackOverride, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponsePreparedStackOverridePlatforms$inboundSchema + ), +}); + +export function syncAcquireResponsePreparedStackOverrideFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverride, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverride$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverride' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackOverrideUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponsePreparedStackOverride$inboundSchema), + z.string(), + ]); + +export function syncAcquireResponsePreparedStackOverrideUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackOverrideUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackOverrideUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackOverrideUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackManagement2$inboundSchema: + z.ZodType = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncAcquireResponsePreparedStackOverride$inboundSchema), + z.string(), + ])), + ), + }); + +export function syncAcquireResponsePreparedStackManagement2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackManagement2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackManagement2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponsePreparedStackExtendAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendAwStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponsePreparedStackExtendAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponsePreparedStackExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponsePreparedStackExtendAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponsePreparedStackExtendAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponsePreparedStackExtendEffect, + ); + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendAwGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponsePreparedStackExtendAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendAw$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackExtendAw, + unknown +> = z.object({ + binding: z.lazy(() => + SyncAcquireResponsePreparedStackExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncAcquireResponsePreparedStackExtendEffect$inboundSchema.optional(), + grant: z.lazy(() => + SyncAcquireResponsePreparedStackExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponsePreparedStackExtendAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponsePreparedStackExtendAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponsePreparedStackExtendAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponsePreparedStackExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponsePreparedStackExtendAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponsePreparedStackExtendAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponsePreparedStackExtendAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponsePreparedStackExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponsePreparedStackExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponsePreparedStackExtendAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendConditionResource$inboundSchema: + z.ZodType = + z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponsePreparedStackExtendConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponsePreparedStackExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponsePreparedStackExtendResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponsePreparedStackExtendGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendConditionStack$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponsePreparedStackExtendConditionStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendConditionStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendConditionStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendConditionStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendStackConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponsePreparedStackExtendStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponsePreparedStackExtendStackConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendStackConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendStackConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendGcpStack$inboundSchema: + z.ZodType = z.object( + { + condition: z.nullable(z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ])).optional(), + scope: z.string(), + }, + ); + +export function syncAcquireResponsePreparedStackExtendGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponsePreparedStackExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponsePreparedStackExtendGcpStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponsePreparedStackExtendGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendGcpGrant$inboundSchema: + z.ZodType = z.object( + { + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }, + ); + +export function syncAcquireResponsePreparedStackExtendGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendGcp$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackExtendGcp, + unknown +> = z.object({ + binding: z.lazy(() => + SyncAcquireResponsePreparedStackExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponsePreparedStackExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponsePreparedStackExtendGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendPlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponsePreparedStackExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponsePreparedStackExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponsePreparedStackExtendGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponsePreparedStackExtendPlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendPlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendPlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendPlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtend$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackExtend, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponsePreparedStackExtendPlatforms$inboundSchema + ), +}); + +export function syncAcquireResponsePreparedStackExtendFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtend$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackExtend' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackExtendUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponsePreparedStackExtend$inboundSchema), + z.string(), + ]); + +export function syncAcquireResponsePreparedStackExtendUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackExtendUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackExtendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackExtendUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackManagement1$inboundSchema: + z.ZodType = z.object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncAcquireResponsePreparedStackExtend$inboundSchema), + z.string(), + ])), + ), + }); + +export function syncAcquireResponsePreparedStackManagement1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackManagement1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackManagement1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackManagement1' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackManagementUnion$inboundSchema: + z.ZodType = z.union( + [ + z.lazy(() => SyncAcquireResponsePreparedStackManagement1$inboundSchema), + z.lazy(() => SyncAcquireResponsePreparedStackManagement2$inboundSchema), + SyncAcquireResponsePreparedStackManagementEnum$inboundSchema, + ], + ); + +export function syncAcquireResponsePreparedStackManagementUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackManagementUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackManagementUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackManagementUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponsePreparedStackProfileAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileAwStack$inboundSchema: + z.ZodType = z.object( + { + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }, + ); + +export function syncAcquireResponsePreparedStackProfileAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponsePreparedStackProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponsePreparedStackProfileAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponsePreparedStackProfileAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponsePreparedStackProfileEffect, + ); + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileAwGrant$inboundSchema: + z.ZodType = z.object( + { + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }, + ); + +export function syncAcquireResponsePreparedStackProfileAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileAw$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackProfileAw, + unknown +> = z.object({ + binding: z.lazy(() => + SyncAcquireResponsePreparedStackProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncAcquireResponsePreparedStackProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponsePreparedStackProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponsePreparedStackProfileAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponsePreparedStackProfileAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponsePreparedStackProfileAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponsePreparedStackProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponsePreparedStackProfileAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponsePreparedStackProfileAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponsePreparedStackProfileAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponsePreparedStackProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponsePreparedStackProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponsePreparedStackProfileAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileConditionResource$inboundSchema: + z.ZodType = + z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponsePreparedStackProfileConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponsePreparedStackProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponsePreparedStackProfileResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponsePreparedStackProfileGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileConditionStack$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponsePreparedStackProfileConditionStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileConditionStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileConditionStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileConditionStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileStackConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponsePreparedStackProfileStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponsePreparedStackProfileStackConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileStackConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileStackConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponsePreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponsePreparedStackProfileGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponsePreparedStackProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponsePreparedStackProfileGcpStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponsePreparedStackProfileGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponsePreparedStackProfileGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponsePreparedStackProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponsePreparedStackProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponsePreparedStackProfileGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfilePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponsePreparedStackProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponsePreparedStackProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponsePreparedStackProfileGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponsePreparedStackProfilePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfilePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfilePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfile$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackProfile, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponsePreparedStackProfilePlatforms$inboundSchema + ), +}); + +export function syncAcquireResponsePreparedStackProfileFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfile, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfile$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfile' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackProfileUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponsePreparedStackProfile$inboundSchema), + z.string(), + ]); + +export function syncAcquireResponsePreparedStackProfileUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackProfileUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackProfileUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackProfileUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackPermissions$inboundSchema: + z.ZodType = z.object({ + management: z.union([ + z.lazy(() => SyncAcquireResponsePreparedStackManagement1$inboundSchema), + z.lazy(() => SyncAcquireResponsePreparedStackManagement2$inboundSchema), + SyncAcquireResponsePreparedStackManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => SyncAcquireResponsePreparedStackProfile$inboundSchema), + z.string(), + ]), + ), + ), + ), + }); + +export function syncAcquireResponsePreparedStackPermissionsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackPermissions, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackPermissions$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackPermissions' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackConfig$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncAcquireResponsePreparedStackConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackDependency$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + type: z.string(), + }); + +export function syncAcquireResponsePreparedStackDependencyFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackDependency, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackDependency' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackLifecycle$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponsePreparedStackLifecycle +> = z.enum(SyncAcquireResponsePreparedStackLifecycle); + +/** @internal */ +export const SyncAcquireResponsePreparedStackResources$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackResources, + unknown +> = z.object({ + config: z.lazy(() => SyncAcquireResponsePreparedStackConfig$inboundSchema), + dependencies: z.array( + z.lazy(() => SyncAcquireResponsePreparedStackDependency$inboundSchema), + ), + lifecycle: SyncAcquireResponsePreparedStackLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), +}); + +export function syncAcquireResponsePreparedStackResourcesFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponsePreparedStackResources, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponsePreparedStackResources' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackSupportedPlatform$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponsePreparedStackSupportedPlatform, + ); + +/** @internal */ +export const SyncAcquireResponsePreparedStack$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStack, + unknown +> = z.object({ + id: z.string(), + inputs: z.array(SyncAcquireResponsePreparedStackInput$inboundSchema) + .optional(), + permissions: z.lazy(() => + SyncAcquireResponsePreparedStackPermissions$inboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncAcquireResponsePreparedStackResources$inboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncAcquireResponsePreparedStackSupportedPlatform$inboundSchema), + ).optional(), +}); + +export function syncAcquireResponsePreparedStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponsePreparedStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreparedStackUnion$inboundSchema: z.ZodType< + SyncAcquireResponsePreparedStackUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponsePreparedStack$inboundSchema), + z.any(), +]); + +export function syncAcquireResponsePreparedStackUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreparedStackUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreparedStackUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRuntimeMetadata$inboundSchema: z.ZodType< + SyncAcquireResponseRuntimeMetadata, + unknown +> = z.object({ + lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), + preparedStack: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponsePreparedStack$inboundSchema), + z.any(), + ]), + ).optional(), + registryAccessGranted: z.boolean().optional(), +}); + +export function syncAcquireResponseRuntimeMetadataFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRuntimeMetadata$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseRuntimeMetadata' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseRuntimeMetadataUnion$inboundSchema: z.ZodType< + SyncAcquireResponseRuntimeMetadataUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseRuntimeMetadata$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseRuntimeMetadataUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseRuntimeMetadataUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseRuntimeMetadataUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseRuntimeMetadataUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackStatePlatform$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseStackStatePlatform +> = z.enum(SyncAcquireResponseStackStatePlatform); + +/** @internal */ +export const SyncAcquireResponseStackStateConfig$inboundSchema: z.ZodType< + SyncAcquireResponseStackStateConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncAcquireResponseStackStateConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStackStateConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseStackStateConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseControllerPlatformEnum$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseControllerPlatformEnum +> = z.enum(SyncAcquireResponseControllerPlatformEnum); + +/** @internal */ +export const SyncAcquireResponseControllerPlatformUnion$inboundSchema: + z.ZodType = z.union([ + SyncAcquireResponseControllerPlatformEnum$inboundSchema, + z.any(), + ]); + +export function syncAcquireResponseControllerPlatformUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseControllerPlatformUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseControllerPlatformUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseControllerPlatformUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackStateDependency$inboundSchema: z.ZodType< + SyncAcquireResponseStackStateDependency, + unknown +> = z.object({ + id: z.string(), + type: z.string(), +}); + +export function syncAcquireResponseStackStateDependencyFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseStackStateDependency, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStackStateDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseStackStateDependency' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackStateError$inboundSchema: z.ZodType< + SyncAcquireResponseStackStateError, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function syncAcquireResponseStackStateErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStackStateError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseStackStateError' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackStateErrorUnion$inboundSchema: z.ZodType< + SyncAcquireResponseStackStateErrorUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseStackStateError$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseStackStateErrorUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseStackStateErrorUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStackStateErrorUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseStackStateErrorUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackStateLifecycleEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseStackStateLifecycleEnum, + ); + +/** @internal */ +export const SyncAcquireResponseLifecycleUnion$inboundSchema: z.ZodType< + SyncAcquireResponseLifecycleUnion, + unknown +> = z.union([ + SyncAcquireResponseStackStateLifecycleEnum$inboundSchema, + z.any(), +]); + +export function syncAcquireResponseLifecycleUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseLifecycleUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseOutputs$inboundSchema: z.ZodType< + SyncAcquireResponseOutputs, + unknown +> = collectExtraKeys$( + z.object({ + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncAcquireResponseOutputsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseOutputs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseOutputs' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseOutputsUnion$inboundSchema: z.ZodType< + SyncAcquireResponseOutputsUnion, + unknown +> = z.union([z.lazy(() => SyncAcquireResponseOutputs$inboundSchema), z.any()]); + +export function syncAcquireResponseOutputsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseOutputsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreviousConfig$inboundSchema: z.ZodType< + SyncAcquireResponsePreviousConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncAcquireResponsePreviousConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreviousConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponsePreviousConfigUnion$inboundSchema: z.ZodType< + SyncAcquireResponsePreviousConfigUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponsePreviousConfig$inboundSchema), + z.any(), +]); + +export function syncAcquireResponsePreviousConfigUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponsePreviousConfigUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponsePreviousConfigUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackStateStatus$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseStackStateStatus +> = z.enum(SyncAcquireResponseStackStateStatus); + +/** @internal */ +export const SyncAcquireResponseStackStateResources$inboundSchema: z.ZodType< + SyncAcquireResponseStackStateResources, + unknown +> = z.object({ + _internal: z.nullable(z.any()).optional(), + config: z.lazy(() => SyncAcquireResponseStackStateConfig$inboundSchema), + controllerPlatform: z.nullable( + z.union([SyncAcquireResponseControllerPlatformEnum$inboundSchema, z.any()]), + ).optional(), + dependencies: z.array( + z.lazy(() => SyncAcquireResponseStackStateDependency$inboundSchema), + ).optional(), + error: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseStackStateError$inboundSchema), + z.any(), + ]), + ).optional(), + lastFailedState: z.nullable(z.any()).optional(), + lifecycle: z.nullable( + z.union([ + SyncAcquireResponseStackStateLifecycleEnum$inboundSchema, + z.any(), + ]), + ).optional(), + outputs: z.nullable( + z.union([z.lazy(() => SyncAcquireResponseOutputs$inboundSchema), z.any()]), + ).optional(), + previousConfig: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponsePreviousConfig$inboundSchema), + z.any(), + ]), + ).optional(), + remoteBindingParams: z.nullable(z.any()).optional(), + retryAttempt: z.int().optional(), + status: SyncAcquireResponseStackStateStatus$inboundSchema, + type: z.string(), +}).transform((v) => { + return remap$(v, { + "_internal": "internal", + }); +}); + +export function syncAcquireResponseStackStateResourcesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStackStateResources$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseStackStateResources' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackState$inboundSchema: z.ZodType< + SyncAcquireResponseStackState, + unknown +> = z.object({ + platform: SyncAcquireResponseStackStatePlatform$inboundSchema, + resourcePrefix: z.string(), + resources: z.record( + z.string(), + z.lazy(() => SyncAcquireResponseStackStateResources$inboundSchema), + ), +}); + +export function syncAcquireResponseStackStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncAcquireResponseStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseStackState' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStackStateUnion$inboundSchema: z.ZodType< + SyncAcquireResponseStackStateUnion, + unknown +> = z.union([ + z.lazy(() => SyncAcquireResponseStackState$inboundSchema), + z.any(), +]); + +export function syncAcquireResponseStackStateUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseStackStateUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseStackStateUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseStatus$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseStatus +> = z.enum(SyncAcquireResponseStatus); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseTypeStringList$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTargetReleaseTypeStringList, + ); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseDefaultStringList$inboundSchema: + z.ZodType = z + .object({ + type: SyncAcquireResponseTargetReleaseTypeStringList$inboundSchema, + value: z.array(z.string()), + }); + +export function syncAcquireResponseTargetReleaseDefaultStringListFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseDefaultStringList, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseDefaultStringList' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseTypeBoolean$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTargetReleaseTypeBoolean, + ); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseDefaultBoolean$inboundSchema: + z.ZodType = z.object( + { + type: SyncAcquireResponseTargetReleaseTypeBoolean$inboundSchema, + value: z.boolean(), + }, + ); + +export function syncAcquireResponseTargetReleaseDefaultBooleanFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseDefaultBoolean, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseDefaultBoolean$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseDefaultBoolean' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseTypeNumber$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTargetReleaseTypeNumber, + ); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseDefaultNumber$inboundSchema: + z.ZodType = z.object({ + type: SyncAcquireResponseTargetReleaseTypeNumber$inboundSchema, + value: z.string(), + }); + +export function syncAcquireResponseTargetReleaseDefaultNumberFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseDefaultNumber, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseDefaultNumber$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseDefaultNumber' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseTypeString$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTargetReleaseTypeString, + ); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseDefaultString$inboundSchema: + z.ZodType = z.object({ + type: SyncAcquireResponseTargetReleaseTypeString$inboundSchema, + value: z.string(), + }); + +export function syncAcquireResponseTargetReleaseDefaultStringFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseDefaultString, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseDefaultString$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseDefaultString' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseDefaultUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseTargetReleaseDefaultString$inboundSchema), + z.lazy(() => SyncAcquireResponseTargetReleaseDefaultNumber$inboundSchema), + z.lazy(() => SyncAcquireResponseTargetReleaseDefaultBoolean$inboundSchema), + z.lazy(() => + SyncAcquireResponseTargetReleaseDefaultStringList$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseTargetReleaseDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseDefaultUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseDefaultUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseTypeEnvEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTargetReleaseTypeEnvEnum, + ); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseTypeUnion$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseTypeUnion, + unknown +> = z.union([ + SyncAcquireResponseTargetReleaseTypeEnvEnum$inboundSchema, + z.any(), +]); + +export function syncAcquireResponseTargetReleaseTypeUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseTypeUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseEnv$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseEnv, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncAcquireResponseTargetReleaseTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function syncAcquireResponseTargetReleaseEnvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseEnv' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseKind$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTargetReleaseKind +> = z.enum(SyncAcquireResponseTargetReleaseKind); + +/** @internal */ +export const SyncAcquireResponseTargetReleasePlatform$inboundSchema: z.ZodEnum< + typeof SyncAcquireResponseTargetReleasePlatform +> = z.enum(SyncAcquireResponseTargetReleasePlatform); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseProvidedBy$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTargetReleaseProvidedBy, + ); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseValidation$inboundSchema: + z.ZodType = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseTargetReleaseValidationFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseValidation, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseValidation' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseValidationUnion$inboundSchema: + z.ZodType = z.union( + [ + z.lazy(() => SyncAcquireResponseTargetReleaseValidation$inboundSchema), + z.any(), + ], + ); + +export function syncAcquireResponseTargetReleaseValidationUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseValidationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseValidationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseInput$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseInput, + unknown +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseTargetReleaseDefaultString$inboundSchema), + z.lazy(() => + SyncAcquireResponseTargetReleaseDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseTargetReleaseDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncAcquireResponseTargetReleaseDefaultStringList$inboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array(z.lazy(() => SyncAcquireResponseTargetReleaseEnv$inboundSchema)) + .optional(), + id: z.string(), + kind: SyncAcquireResponseTargetReleaseKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncAcquireResponseTargetReleasePlatform$inboundSchema), + ).optional(), + providedBy: z.array(SyncAcquireResponseTargetReleaseProvidedBy$inboundSchema), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncAcquireResponseTargetReleaseValidation$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncAcquireResponseTargetReleaseInputFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseInput$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseInput' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseManagementEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTargetReleaseManagementEnum, + ); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseTargetReleaseOverrideAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseTargetReleaseOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTargetReleaseOverrideEffect, + ); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseTargetReleaseOverrideAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncAcquireResponseTargetReleaseOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseTargetReleaseOverrideAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseTargetReleaseOverrideAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseTargetReleaseOverrideAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseOverrideAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseTargetReleaseOverrideAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseTargetReleaseOverrideAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideConditionResource$inboundSchema: + z.ZodType< + SyncAcquireResponseTargetReleaseOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseTargetReleaseOverrideConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseTargetReleaseOverrideResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseTargetReleaseOverrideGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseTargetReleaseOverrideConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseTargetReleaseOverrideConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseTargetReleaseOverrideGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideGcpStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseOverrideGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseTargetReleaseOverrideGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseTargetReleaseOverrideGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverridePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseTargetReleaseOverrideGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseOverridePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverridePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverridePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverridePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverride$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseOverride, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseTargetReleaseOverridePlatforms$inboundSchema + ), +}); + +export function syncAcquireResponseTargetReleaseOverrideFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverride, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverride$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverride' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseOverrideUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseTargetReleaseOverride$inboundSchema), + z.string(), + ]); + +export function syncAcquireResponseTargetReleaseOverrideUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseOverrideUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseOverrideUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseOverrideUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseManagement2$inboundSchema: + z.ZodType = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncAcquireResponseTargetReleaseOverride$inboundSchema), + z.string(), + ])), + ), + }); + +export function syncAcquireResponseTargetReleaseManagement2FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseManagement2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseManagement2' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseTargetReleaseExtendAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendAwStack$inboundSchema: + z.ZodType = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncAcquireResponseTargetReleaseExtendAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendAwStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseExtendAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncAcquireResponseTargetReleaseExtendEffect, + ); + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendAwGrant$inboundSchema: + z.ZodType = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseTargetReleaseExtendAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendAw$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseExtendAw, + unknown +> = z.object({ + binding: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncAcquireResponseTargetReleaseExtendEffect$inboundSchema.optional(), + grant: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponseTargetReleaseExtendAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAw' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseTargetReleaseExtendAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncAcquireResponseTargetReleaseExtendAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendAzureStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseExtendAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncAcquireResponseTargetReleaseExtendAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncAcquireResponseTargetReleaseExtendAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendConditionResource$inboundSchema: + z.ZodType = + z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseTargetReleaseExtendConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncAcquireResponseTargetReleaseExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseTargetReleaseExtendResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncAcquireResponseTargetReleaseExtendGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncAcquireResponseTargetReleaseExtendConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseExtendCondition$inboundSchema + ), + z.any(), + ]); + +export function syncAcquireResponseTargetReleaseExtendConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendConditionUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendGcpStack$inboundSchema: + z.ZodType = z.object( + { + condition: z.nullable(z.union([ + z.lazy(() => + SyncAcquireResponseTargetReleaseExtendCondition$inboundSchema + ), + z.any(), + ])).optional(), + scope: z.string(), + }, + ); + +export function syncAcquireResponseTargetReleaseExtendGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendGcpStack$inboundSchema + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseExtendGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendGcpGrant$inboundSchema: + z.ZodType = z.object( + { + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }, + ); + +export function syncAcquireResponseTargetReleaseExtendGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendGcp$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseExtendGcp, + unknown +> = z.object({ + binding: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), +}); + +export function syncAcquireResponseTargetReleaseExtendGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendPlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseTargetReleaseExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseTargetReleaseExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncAcquireResponseTargetReleaseExtendGcp$inboundSchema + )), + ).optional(), + }); + +export function syncAcquireResponseTargetReleaseExtendPlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendPlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendPlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendPlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtend$inboundSchema: z.ZodType< + SyncAcquireResponseTargetReleaseExtend, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncAcquireResponseTargetReleaseExtendPlatforms$inboundSchema + ), +}); + +export function syncAcquireResponseTargetReleaseExtendFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtend$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtend' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseExtendUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncAcquireResponseTargetReleaseExtend$inboundSchema), + z.string(), + ]); + +export function syncAcquireResponseTargetReleaseExtendUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseExtendUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseExtendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseExtendUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncAcquireResponseTargetReleaseManagement1$inboundSchema: + z.ZodType = z.object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncAcquireResponseTargetReleaseExtend$inboundSchema), + z.string(), + ])), + ), + }); + +export function syncAcquireResponseTargetReleaseManagement1FromJSON( + jsonString: string, +): SafeParseResult< + SyncAcquireResponseTargetReleaseManagement1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncAcquireResponseTargetReleaseManagement1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncAcquireResponseTargetReleaseManagement1' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/synclistresponse.ts b/client-sdks/platform/typescript/src/models/synclistresponse.ts index 4c032e510..11e1f0d2c 100644 --- a/client-sdks/platform/typescript/src/models/synclistresponse.ts +++ b/client-sdks/platform/typescript/src/models/synclistresponse.ts @@ -3,7 +3,6 @@ */ import * as z from "zod/v4"; -import { remap as remap$ } from "../lib/primitives.js"; import { collectExtraKeys as collectExtraKeys$, safeParse, @@ -15,5960 +14,1538 @@ import { EnvironmentVariableConfig$inboundSchema, } from "./environmentvariableconfig.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + SyncListResponseBasePlatform, + SyncListResponseBasePlatform$inboundSchema, + SyncListResponseEnvironmentInfoUnion, + SyncListResponseEnvironmentInfoUnion$inboundSchema, + SyncListResponseInput, + SyncListResponseInput$inboundSchema, + SyncListResponseManagementEnum, + SyncListResponseManagementEnum$inboundSchema, + SyncListResponseOverrideAw, + SyncListResponseOverrideAw$inboundSchema, + SyncListResponsePlatform, + SyncListResponsePlatform$inboundSchema, + SyncListResponseStackSettings, + SyncListResponseStackSettings$inboundSchema, + SyncListResponseStackState, + SyncListResponseStackState$inboundSchema, + SyncListResponseStatus, + SyncListResponseStatus$inboundSchema, +} from "./synclistresponseoverrideaw.js"; /** - * Deployment status in the deployment lifecycle - */ -export const SyncListResponseStatus = { - Pending: "pending", - PreflightsFailed: "preflights-failed", - InitialSetup: "initial-setup", - InitialSetupFailed: "initial-setup-failed", - Provisioning: "provisioning", - ProvisioningFailed: "provisioning-failed", - Running: "running", - RefreshFailed: "refresh-failed", - UpdatePending: "update-pending", - Updating: "updating", - UpdateFailed: "update-failed", - DeletePending: "delete-pending", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - TeardownFailed: "teardown-failed", - Deleted: "deleted", - Error: "error", -} as const; -/** - * Deployment status in the deployment lifecycle - */ -export type SyncListResponseStatus = ClosedEnum; - -/** - * Target platform for the deployment - */ -export const SyncListResponsePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Target platform for the deployment - */ -export type SyncListResponsePlatform = ClosedEnum< - typeof SyncListResponsePlatform ->; - -/** - * Underlying cloud platform for Kubernetes deployments. - */ -export const SyncListResponseBasePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", -} as const; -/** - * Underlying cloud platform for Kubernetes deployments. - */ -export type SyncListResponseBasePlatform = ClosedEnum< - typeof SyncListResponseBasePlatform ->; - -export const SyncListResponsePlatformTest = { - Test: "test", -} as const; -export type SyncListResponsePlatformTest = ClosedEnum< - typeof SyncListResponsePlatformTest ->; - -/** - * Test platform environment information (mock) + * Azure-specific binding specification */ -export type SyncListResponseEnvironmentInfoTest = { +export type SyncListResponseOverrideAzureResource = { /** - * Test identifier for this environment + * Scope (subscription/resource group/resource level) */ - testId: string; - platform: SyncListResponsePlatformTest; + scope: string; }; -export const SyncListResponsePlatformLocal = { - Local: "local", -} as const; -export type SyncListResponsePlatformLocal = ClosedEnum< - typeof SyncListResponsePlatformLocal ->; - /** - * Local platform environment information + * Azure-specific binding specification */ -export type SyncListResponseEnvironmentInfoLocal = { - /** - * Architecture (e.g., "x86_64", "aarch64") - */ - arch: string; - /** - * Hostname of the machine running the deployment - */ - hostname: string; +export type SyncListResponseOverrideAzureStack = { /** - * Operating system (e.g., "linux", "macos", "windows") + * Scope (subscription/resource group/resource level) */ - os: string; - platform: SyncListResponsePlatformLocal; + scope: string; }; -export const SyncListResponseEnvironmentInfoPlatformAzure = { - Azure: "azure", -} as const; -export type SyncListResponseEnvironmentInfoPlatformAzure = ClosedEnum< - typeof SyncListResponseEnvironmentInfoPlatformAzure ->; - /** - * Azure-specific environment information + * Generic binding configuration for permissions */ -export type SyncListResponseEnvironmentInfoAzure = { - /** - * Azure location/region - */ - location: string; +export type SyncListResponseOverrideAzureBinding = { /** - * Azure subscription ID + * Azure-specific binding specification */ - subscriptionId: string; + resource?: SyncListResponseOverrideAzureResource | undefined; /** - * Azure tenant ID + * Azure-specific binding specification */ - tenantId: string; - platform: SyncListResponseEnvironmentInfoPlatformAzure; + stack?: SyncListResponseOverrideAzureStack | undefined; }; -export const SyncListResponseEnvironmentInfoPlatformGcp = { - Gcp: "gcp", -} as const; -export type SyncListResponseEnvironmentInfoPlatformGcp = ClosedEnum< - typeof SyncListResponseEnvironmentInfoPlatformGcp ->; - /** - * GCP-specific environment information + * Grant permissions for a specific cloud platform */ -export type SyncListResponseEnvironmentInfoGcp = { +export type SyncListResponseOverrideAzureGrant = { /** - * GCP project ID (e.g., "my-project") + * AWS IAM actions (only for AWS) */ - projectId: string; + actions?: Array | null | undefined; /** - * GCP project number (e.g., "123456789012") + * Azure actions (only for Azure) */ - projectNumber: string; + dataActions?: Array | null | undefined; /** - * GCP region + * GCP permissions that require an exact residual custom role. */ - region: string; - platform: SyncListResponseEnvironmentInfoPlatformGcp; -}; - -export const SyncListResponseEnvironmentInfoPlatformAws = { - Aws: "aws", -} as const; -export type SyncListResponseEnvironmentInfoPlatformAws = ClosedEnum< - typeof SyncListResponseEnvironmentInfoPlatformAws ->; - -/** - * AWS-specific environment information - */ -export type SyncListResponseEnvironmentInfoAws = { + permissions?: Array | null | undefined; /** - * AWS account ID + * Provider predefined roles to bind directly. */ - accountId: string; + predefinedRoles?: Array | null | undefined; /** - * AWS region + * GCP residual custom permissions to pair with predefined roles. */ - region: string; - platform: SyncListResponseEnvironmentInfoPlatformAws; + residualPermissions?: Array | null | undefined; }; /** - * Cloud environment information + * Azure-specific platform permission configuration */ -export type SyncListResponseEnvironmentInfoUnion = - | SyncListResponseEnvironmentInfoGcp - | SyncListResponseEnvironmentInfoAzure - | SyncListResponseEnvironmentInfoLocal - | SyncListResponseEnvironmentInfoAws - | SyncListResponseEnvironmentInfoTest - | any; - -export type SyncListResponsePoolsAutoscale = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; +export type SyncListResponseOverrideAzure = { /** - * Maximum machine count. + * Generic binding configuration for permissions */ - max: number; + binding: SyncListResponseOverrideAzureBinding; /** - * Minimum machine count. + * Short admin-facing description of why this entry exists. */ - min: number; - mode: "autoscale"; -}; - -export type SyncListResponsePoolsFixed = { + description?: string | null | undefined; /** - * Provider machine type selected for this deployment. + * Grant permissions for a specific cloud platform */ - machine?: string | null | undefined; + grant: SyncListResponseOverrideAzureGrant; /** - * Number of machines to run. + * Stable admin-facing label for this permission entry. */ - machines: number; - mode: "fixed"; + label?: string | null | undefined; }; /** - * User-selected deployment settings for one compute pool. + * GCP IAM condition */ -export type SyncListResponsePoolsUnion = - | SyncListResponsePoolsFixed - | SyncListResponsePoolsAutoscale; +export type SyncListResponseOverrideConditionResource = { + expression: string; + title: string; +}; + +export type SyncListResponseOverrideResourceConditionUnion = + | SyncListResponseOverrideConditionResource + | any; /** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. + * GCP-specific binding specification */ -export type SyncListResponseCompute = { +export type SyncListResponseOverrideGcpResource = { + condition?: + | SyncListResponseOverrideConditionResource + | any + | null + | undefined; /** - * Selected compute choices keyed by pool ID. + * Scope (project/resource level) */ - pools?: { - [k: string]: SyncListResponsePoolsFixed | SyncListResponsePoolsAutoscale; - } | undefined; + scope: string; }; -export type SyncListResponseComputeUnion = SyncListResponseCompute | any; - -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export const SyncListResponseDeploymentModel = { - Push: "push", - Pull: "pull", -} as const; /** - * Deployment model: how updates are delivered to the remote environment. + * GCP IAM condition */ -export type SyncListResponseDeploymentModel = ClosedEnum< - typeof SyncListResponseDeploymentModel ->; - -export type SyncListResponseAws = { - certificateArn: string; -}; - -export type SyncListResponseAwsUnion = SyncListResponseAws | any; - -export type SyncListResponseAzureStackSettings = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; +export type SyncListResponseOverrideConditionStack = { + expression: string; + title: string; }; -export type SyncListResponseAzureUnion = - | SyncListResponseAzureStackSettings +export type SyncListResponseOverrideStackConditionUnion = + | SyncListResponseOverrideConditionStack | any; -export type SyncListResponseGcpStackSettings = { - certificateName: string; -}; - -export type SyncListResponseGcpUnion = SyncListResponseGcpStackSettings | any; - /** - * Namespace-scoped Kubernetes TLS Secret reference. + * GCP-specific binding specification */ -export type SyncListResponseTlsSecretRef = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; -}; - -export type SyncListResponseDomainsKubernetes = { +export type SyncListResponseOverrideGcpStack = { + condition?: SyncListResponseOverrideConditionStack | any | null | undefined; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Scope (project/resource level) */ - tlsSecretRef: SyncListResponseTlsSecretRef; -}; - -export type SyncListResponseDomainsKubernetesUnion = - | SyncListResponseDomainsKubernetes - | any; - -/** - * Platform-specific certificate references for custom domains. - */ -export type SyncListResponseDomainsCertificate = { - aws?: SyncListResponseAws | any | null | undefined; - azure?: SyncListResponseAzureStackSettings | any | null | undefined; - gcp?: SyncListResponseGcpStackSettings | any | null | undefined; - kubernetes?: SyncListResponseDomainsKubernetes | any | null | undefined; + scope: string; }; /** - * Custom domain configuration for a single resource. + * Generic binding configuration for permissions */ -export type SyncListResponseCustomDomains = { +export type SyncListResponseOverrideGcpBinding = { /** - * Platform-specific certificate references for custom domains. + * GCP-specific binding specification */ - certificate: SyncListResponseDomainsCertificate; + resource?: SyncListResponseOverrideGcpResource | undefined; /** - * Fully qualified domain name to use. + * GCP-specific binding specification */ - domain: string; + stack?: SyncListResponseOverrideGcpStack | undefined; }; /** - * Domain configuration for the stack. - * - * @remarks - * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. + * Grant permissions for a specific cloud platform */ -export type SyncListResponseDomains = { +export type SyncListResponseOverrideGcpGrant = { /** - * Custom domain configuration per resource ID. + * AWS IAM actions (only for AWS) */ - customDomains?: - | { [k: string]: SyncListResponseCustomDomains } - | null - | undefined; -}; - -export type SyncListResponseDomainsUnion = SyncListResponseDomains | any; - -/** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ -export type SyncListResponseExternalBindings = {}; - -/** - * How heartbeat health checks are handled. - */ -export const SyncListResponseHeartbeats = { - Off: "off", - On: "on", -} as const; -/** - * How heartbeat health checks are handled. - */ -export type SyncListResponseHeartbeats = ClosedEnum< - typeof SyncListResponseHeartbeats ->; - -/** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. - */ -export type SyncListResponseCloud = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; -}; - -export type SyncListResponseCloudUnion = SyncListResponseCloud | any; - -/** - * Ownership model for the Kubernetes cluster. - */ -export const SyncListResponseOwnership = { - Managed: "managed", - Existing: "existing", - External: "external", -} as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type SyncListResponseOwnership = ClosedEnum< - typeof SyncListResponseOwnership ->; - -/** - * Kubernetes cluster setup settings. - */ -export type SyncListResponseCluster = { - cloud?: SyncListResponseCloud | any | null | undefined; + actions?: Array | null | undefined; /** - * Namespace where the Alien chart and application resources run. + * Azure actions (only for Azure) */ - namespace?: string | null | undefined; + dataActions?: Array | null | undefined; /** - * Ownership model for the Kubernetes cluster. + * GCP permissions that require an exact residual custom role. */ - ownership: SyncListResponseOwnership; -}; - -export type SyncListResponseClusterUnion = SyncListResponseCluster | any; - -export type SyncListResponseCertificateNone2 = { - mode: "none"; -}; - -export type SyncListResponseCertificateManagedTLSSecret2 = { - mode: "managedTlsSecret"; + permissions?: Array | null | undefined; /** - * Secret name template. Runtime may substitute resource/deployment tokens. + * Provider predefined roles to bind directly. */ - secretNameTemplate: string; -}; - -export type SyncListResponseCertificateAwsAcmArn2 = { + predefinedRoles?: Array | null | undefined; /** - * Existing ACM certificate ARN. + * GCP residual custom permissions to pair with predefined roles. */ - certificateArn: string; - mode: "awsAcmArn"; + residualPermissions?: Array | null | undefined; }; -export type SyncListResponseCertificateManagedAcmImport2 = { - mode: "managedAcmImport"; +/** + * GCP-specific platform permission configuration + */ +export type SyncListResponseOverrideGcp = { /** - * ACM region. Defaults to the deployment region when omitted. + * Generic binding configuration for permissions */ - region?: string | null | undefined; + binding: SyncListResponseOverrideGcpBinding; /** - * Tags applied to runtime-imported ACM certificates. + * Short admin-facing description of why this entry exists. */ - tags?: { [k: string]: string } | undefined; -}; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type SyncListResponseCertificateTLSSecretRef2 = { + description?: string | null | undefined; /** - * Secret namespace. Defaults to the release namespace when omitted. + * Grant permissions for a specific cloud platform */ - namespace?: string | null | undefined; + grant: SyncListResponseOverrideGcpGrant; /** - * Secret name. + * Stable admin-facing label for this permission entry. */ - secretName: string; - mode: "tlsSecretRef"; + label?: string | null | undefined; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Platform-specific permission configurations */ -export type SyncListResponseCertificateUnion2 = - | SyncListResponseCertificateTLSSecretRef2 - | SyncListResponseCertificateManagedAcmImport2 - | SyncListResponseCertificateAwsAcmArn2 - | SyncListResponseCertificateManagedTLSSecret2 - | SyncListResponseCertificateNone2; - -export const SyncListResponseModeCustom = { - Custom: "custom", -} as const; -export type SyncListResponseModeCustom = ClosedEnum< - typeof SyncListResponseModeCustom ->; - -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum4 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncListResponseProviderAzureApplicationGatewayForContainersEnum4 = - ClosedEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum4 - >; - -export type SyncListResponseProviderAzureApplicationGatewayForContainers4 = { +export type SyncListResponseOverridePlatforms = { /** - * Optional ALB name when using BYO Application Gateway resources. + * AWS permission configurations */ - albName?: string | null | undefined; + aws?: Array | null | undefined; /** - * Optional ALB namespace when using BYO Application Gateway resources. + * Azure permission configurations */ - albNamespace?: string | null | undefined; + azure?: Array | null | undefined; /** - * Public or internal frontend exposure. + * GCP permission configurations */ - frontend: string; - provider: SyncListResponseProviderAzureApplicationGatewayForContainersEnum4; + gcp?: Array | null | undefined; }; -export const SyncListResponseProviderGkeGatewayEnum4 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncListResponseProviderGkeGatewayEnum4 = ClosedEnum< - typeof SyncListResponseProviderGkeGatewayEnum4 ->; - -export type SyncListResponseProviderGkeGateway4 = { - provider: SyncListResponseProviderGkeGatewayEnum4; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const SyncListResponseProviderAwsAlbEnum4 = { - AwsAlb: "awsAlb", -} as const; -export type SyncListResponseProviderAwsAlbEnum4 = ClosedEnum< - typeof SyncListResponseProviderAwsAlbEnum4 ->; - -export type SyncListResponseProviderAwsAlb4 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncListResponseProviderAwsAlbEnum4; +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncListResponseOverride = { /** - * Internet-facing or internal ALB scheme. + * Human-readable description of what this permission set allows */ - scheme: string; + description: string; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Unique identifier for the permission set (e.g., "storage/data-read") */ - subnetIds?: Array | undefined; + id: string; /** - * ALB target type, usually `ip`. + * Platform-specific permission configurations */ - targetType: string; + platforms: SyncListResponseOverridePlatforms; }; -export type SyncListResponseProviderUnion4 = - | SyncListResponseProviderAwsAlb4 - | SyncListResponseProviderAzureApplicationGatewayForContainers4 - | SyncListResponseProviderGkeGateway4 - | any; - /** - * Shared Gateway API route profile values. + * Reference to a permission set - either by name or inline definition */ -export type SyncListResponseRouteGateway2 = { +export type SyncListResponseOverrideUnion = SyncListResponseOverride | string; + +export type SyncListResponseManagement2 = { /** - * Annotations applied to route objects. + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource */ - annotations?: { [k: string]: string } | undefined; + override: { [k: string]: Array }; +}; + +/** + * AWS-specific binding specification + */ +export type SyncListResponseExtendAwResource = { /** - * Route controller identifier, for example a cloud Gateway controller. + * Optional condition for additional filtering (rare) */ - controller?: string | null | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * GatewayClass selected for generated Gateways. + * Resource ARNs to bind to */ - gatewayClassName: string; + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncListResponseExtendAwStack = { /** - * Labels applied to route objects. + * Optional condition for additional filtering (rare) */ - labels?: { [k: string]: string } | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Listener port, usually 443. + * Resource ARNs to bind to */ - listenerPort: number; - provider?: - | SyncListResponseProviderAwsAlb4 - | SyncListResponseProviderAzureApplicationGatewayForContainers4 - | SyncListResponseProviderGkeGateway4 - | any - | null - | undefined; - routeApi: "gateway"; + resources: Array; }; -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum3 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncListResponseProviderAzureApplicationGatewayForContainersEnum3 = - ClosedEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum3 - >; - -export type SyncListResponseProviderAzureApplicationGatewayForContainers3 = { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; +/** + * Generic binding configuration for permissions + */ +export type SyncListResponseExtendAwBinding = { /** - * Optional ALB namespace when using BYO Application Gateway resources. + * AWS-specific binding specification */ - albNamespace?: string | null | undefined; + resource?: SyncListResponseExtendAwResource | undefined; /** - * Public or internal frontend exposure. + * AWS-specific binding specification */ - frontend: string; - provider: SyncListResponseProviderAzureApplicationGatewayForContainersEnum3; + stack?: SyncListResponseExtendAwStack | undefined; }; -export const SyncListResponseProviderGkeGatewayEnum3 = { - GkeGateway: "gkeGateway", +/** + * IAM effect. Defaults to Allow. + */ +export const SyncListResponseExtendEffect = { + Allow: "Allow", + Deny: "Deny", } as const; -export type SyncListResponseProviderGkeGatewayEnum3 = ClosedEnum< - typeof SyncListResponseProviderGkeGatewayEnum3 +/** + * IAM effect. Defaults to Allow. + */ +export type SyncListResponseExtendEffect = ClosedEnum< + typeof SyncListResponseExtendEffect >; -export type SyncListResponseProviderGkeGateway3 = { - provider: SyncListResponseProviderGkeGatewayEnum3; +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponseExtendAwGrant = { /** - * Optional static address name for the Gateway frontend. + * AWS IAM actions (only for AWS) */ - staticAddressName?: string | null | undefined; -}; - -export const SyncListResponseProviderAwsAlbEnum3 = { - AwsAlb: "awsAlb", -} as const; -export type SyncListResponseProviderAwsAlbEnum3 = ClosedEnum< - typeof SyncListResponseProviderAwsAlbEnum3 ->; - -export type SyncListResponseProviderAwsAlb3 = { + actions?: Array | null | undefined; /** - * Optional ALB IP address type, such as `dualstack`. + * Azure actions (only for Azure) */ - ipAddressType?: string | null | undefined; - provider: SyncListResponseProviderAwsAlbEnum3; + dataActions?: Array | null | undefined; /** - * Internet-facing or internal ALB scheme. + * GCP permissions that require an exact residual custom role. */ - scheme: string; + permissions?: Array | null | undefined; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Provider predefined roles to bind directly. */ - subnetIds?: Array | undefined; + predefinedRoles?: Array | null | undefined; /** - * ALB target type, usually `ip`. + * GCP residual custom permissions to pair with predefined roles. */ - targetType: string; + residualPermissions?: Array | null | undefined; }; -export type SyncListResponseProviderUnion3 = - | SyncListResponseProviderAwsAlb3 - | SyncListResponseProviderAzureApplicationGatewayForContainers3 - | SyncListResponseProviderGkeGateway3 - | any; - /** - * Shared Ingress route profile values. + * AWS-specific platform permission configuration */ -export type SyncListResponseRouteIngress2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; +export type SyncListResponseExtendAw = { /** - * `spec.ingressClassName` for generated Ingresses. + * Generic binding configuration for permissions */ - ingressClassName: string; + binding: SyncListResponseExtendAwBinding; /** - * Labels applied to route objects. + * Short admin-facing description of why this entry exists. */ - labels?: { [k: string]: string } | undefined; - provider?: - | SyncListResponseProviderAwsAlb3 - | SyncListResponseProviderAzureApplicationGatewayForContainers3 - | SyncListResponseProviderGkeGateway3 - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** - * Kubernetes route API selected for public endpoints. - */ -export type SyncListResponseRouteUnion2 = - | SyncListResponseRouteIngress2 - | SyncListResponseRouteGateway2; - -export type SyncListResponseExposureCustom = { + description?: string | null | undefined; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * IAM effect. Defaults to Allow. */ - certificate: - | SyncListResponseCertificateTLSSecretRef2 - | SyncListResponseCertificateManagedAcmImport2 - | SyncListResponseCertificateAwsAcmArn2 - | SyncListResponseCertificateManagedTLSSecret2 - | SyncListResponseCertificateNone2; + effect?: SyncListResponseExtendEffect | undefined; /** - * Hostname routed by the Kubernetes public endpoint. + * Grant permissions for a specific cloud platform */ - domain: string; - mode: SyncListResponseModeCustom; + grant: SyncListResponseExtendAwGrant; /** - * Kubernetes route API selected for public endpoints. + * Stable admin-facing label for this permission entry. */ - route: SyncListResponseRouteIngress2 | SyncListResponseRouteGateway2; -}; - -export type SyncListResponseCertificateNone1 = { - mode: "none"; + label?: string | null | undefined; }; -export type SyncListResponseCertificateManagedTLSSecret1 = { - mode: "managedTlsSecret"; +/** + * Azure-specific binding specification + */ +export type SyncListResponseExtendAzureResource = { /** - * Secret name template. Runtime may substitute resource/deployment tokens. + * Scope (subscription/resource group/resource level) */ - secretNameTemplate: string; + scope: string; }; -export type SyncListResponseCertificateAwsAcmArn1 = { +/** + * Azure-specific binding specification + */ +export type SyncListResponseExtendAzureStack = { /** - * Existing ACM certificate ARN. + * Scope (subscription/resource group/resource level) */ - certificateArn: string; - mode: "awsAcmArn"; + scope: string; }; -export type SyncListResponseCertificateManagedAcmImport1 = { - mode: "managedAcmImport"; +/** + * Generic binding configuration for permissions + */ +export type SyncListResponseExtendAzureBinding = { /** - * ACM region. Defaults to the deployment region when omitted. + * Azure-specific binding specification */ - region?: string | null | undefined; + resource?: SyncListResponseExtendAzureResource | undefined; /** - * Tags applied to runtime-imported ACM certificates. + * Azure-specific binding specification */ - tags?: { [k: string]: string } | undefined; + stack?: SyncListResponseExtendAzureStack | undefined; }; /** - * Namespace-scoped Kubernetes TLS Secret reference. + * Grant permissions for a specific cloud platform */ -export type SyncListResponseCertificateTLSSecretRef1 = { +export type SyncListResponseExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; /** - * Secret namespace. Defaults to the release namespace when omitted. + * Provider predefined roles to bind directly. */ - namespace?: string | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Secret name. + * GCP residual custom permissions to pair with predefined roles. */ - secretName: string; - mode: "tlsSecretRef"; + residualPermissions?: Array | null | undefined; }; /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Azure-specific platform permission configuration */ -export type SyncListResponseCertificateUnion1 = - | SyncListResponseCertificateTLSSecretRef1 - | SyncListResponseCertificateManagedAcmImport1 - | SyncListResponseCertificateAwsAcmArn1 - | SyncListResponseCertificateManagedTLSSecret1 - | SyncListResponseCertificateNone1; - -export const SyncListResponseModeGenerated = { - Generated: "generated", -} as const; -export type SyncListResponseModeGenerated = ClosedEnum< - typeof SyncListResponseModeGenerated ->; - -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum2 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncListResponseProviderAzureApplicationGatewayForContainersEnum2 = - ClosedEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum2 - >; - -export type SyncListResponseProviderAzureApplicationGatewayForContainers2 = { +export type SyncListResponseExtendAzure = { /** - * Optional ALB name when using BYO Application Gateway resources. + * Generic binding configuration for permissions + */ + binding: SyncListResponseExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. */ - albName?: string | null | undefined; + description?: string | null | undefined; /** - * Optional ALB namespace when using BYO Application Gateway resources. + * Grant permissions for a specific cloud platform */ - albNamespace?: string | null | undefined; + grant: SyncListResponseExtendAzureGrant; /** - * Public or internal frontend exposure. + * Stable admin-facing label for this permission entry. */ - frontend: string; - provider: SyncListResponseProviderAzureApplicationGatewayForContainersEnum2; + label?: string | null | undefined; }; -export const SyncListResponseProviderGkeGatewayEnum2 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncListResponseProviderGkeGatewayEnum2 = ClosedEnum< - typeof SyncListResponseProviderGkeGatewayEnum2 ->; +/** + * GCP IAM condition + */ +export type SyncListResponseExtendConditionResource = { + expression: string; + title: string; +}; + +export type SyncListResponseExtendResourceConditionUnion = + | SyncListResponseExtendConditionResource + | any; -export type SyncListResponseProviderGkeGateway2 = { - provider: SyncListResponseProviderGkeGatewayEnum2; +/** + * GCP-specific binding specification + */ +export type SyncListResponseExtendGcpResource = { + condition?: SyncListResponseExtendConditionResource | any | null | undefined; /** - * Optional static address name for the Gateway frontend. + * Scope (project/resource level) */ - staticAddressName?: string | null | undefined; + scope: string; }; -export const SyncListResponseProviderAwsAlbEnum2 = { - AwsAlb: "awsAlb", -} as const; -export type SyncListResponseProviderAwsAlbEnum2 = ClosedEnum< - typeof SyncListResponseProviderAwsAlbEnum2 ->; +/** + * GCP IAM condition + */ +export type SyncListResponseExtendConditionStack = { + expression: string; + title: string; +}; -export type SyncListResponseProviderAwsAlb2 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncListResponseProviderAwsAlbEnum2; +export type SyncListResponseExtendStackConditionUnion = + | SyncListResponseExtendConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncListResponseExtendGcpStack = { + condition?: SyncListResponseExtendConditionStack | any | null | undefined; /** - * Internet-facing or internal ALB scheme. + * Scope (project/resource level) */ - scheme: string; + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncListResponseExtendGcpBinding = { /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * GCP-specific binding specification */ - subnetIds?: Array | undefined; + resource?: SyncListResponseExtendGcpResource | undefined; /** - * ALB target type, usually `ip`. + * GCP-specific binding specification */ - targetType: string; + stack?: SyncListResponseExtendGcpStack | undefined; }; -export type SyncListResponseProviderUnion2 = - | SyncListResponseProviderAwsAlb2 - | SyncListResponseProviderAzureApplicationGatewayForContainers2 - | SyncListResponseProviderGkeGateway2 - | any; - /** - * Shared Gateway API route profile values. + * Grant permissions for a specific cloud platform */ -export type SyncListResponseRouteGateway1 = { +export type SyncListResponseExtendGcpGrant = { /** - * Annotations applied to route objects. + * AWS IAM actions (only for AWS) */ - annotations?: { [k: string]: string } | undefined; + actions?: Array | null | undefined; /** - * Route controller identifier, for example a cloud Gateway controller. + * Azure actions (only for Azure) */ - controller?: string | null | undefined; + dataActions?: Array | null | undefined; /** - * GatewayClass selected for generated Gateways. + * GCP permissions that require an exact residual custom role. */ - gatewayClassName: string; + permissions?: Array | null | undefined; /** - * Labels applied to route objects. + * Provider predefined roles to bind directly. */ - labels?: { [k: string]: string } | undefined; + predefinedRoles?: Array | null | undefined; /** - * Listener port, usually 443. + * GCP residual custom permissions to pair with predefined roles. */ - listenerPort: number; - provider?: - | SyncListResponseProviderAwsAlb2 - | SyncListResponseProviderAzureApplicationGatewayForContainers2 - | SyncListResponseProviderGkeGateway2 - | any - | null - | undefined; - routeApi: "gateway"; + residualPermissions?: Array | null | undefined; }; -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum1 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncListResponseProviderAzureApplicationGatewayForContainersEnum1 = - ClosedEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum1 - >; - -export type SyncListResponseProviderAzureApplicationGatewayForContainers1 = { +/** + * GCP-specific platform permission configuration + */ +export type SyncListResponseExtendGcp = { /** - * Optional ALB name when using BYO Application Gateway resources. + * Generic binding configuration for permissions */ - albName?: string | null | undefined; + binding: SyncListResponseExtendGcpBinding; /** - * Optional ALB namespace when using BYO Application Gateway resources. + * Short admin-facing description of why this entry exists. */ - albNamespace?: string | null | undefined; + description?: string | null | undefined; /** - * Public or internal frontend exposure. + * Grant permissions for a specific cloud platform */ - frontend: string; - provider: SyncListResponseProviderAzureApplicationGatewayForContainersEnum1; -}; - -export const SyncListResponseProviderGkeGatewayEnum1 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncListResponseProviderGkeGatewayEnum1 = ClosedEnum< - typeof SyncListResponseProviderGkeGatewayEnum1 ->; - -export type SyncListResponseProviderGkeGateway1 = { - provider: SyncListResponseProviderGkeGatewayEnum1; + grant: SyncListResponseExtendGcpGrant; /** - * Optional static address name for the Gateway frontend. + * Stable admin-facing label for this permission entry. */ - staticAddressName?: string | null | undefined; + label?: string | null | undefined; }; -export const SyncListResponseProviderAwsAlbEnum1 = { - AwsAlb: "awsAlb", -} as const; -export type SyncListResponseProviderAwsAlbEnum1 = ClosedEnum< - typeof SyncListResponseProviderAwsAlbEnum1 ->; - -export type SyncListResponseProviderAwsAlb1 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncListResponseProviderAwsAlbEnum1; +/** + * Platform-specific permission configurations + */ +export type SyncListResponseExtendPlatforms = { /** - * Internet-facing or internal ALB scheme. + * AWS permission configurations */ - scheme: string; + aws?: Array | null | undefined; /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. + * Azure permission configurations */ - subnetIds?: Array | undefined; + azure?: Array | null | undefined; /** - * ALB target type, usually `ip`. + * GCP permission configurations */ - targetType: string; + gcp?: Array | null | undefined; }; -export type SyncListResponseProviderUnion1 = - | SyncListResponseProviderAwsAlb1 - | SyncListResponseProviderAzureApplicationGatewayForContainers1 - | SyncListResponseProviderGkeGateway1 - | any; - /** - * Shared Ingress route profile values. + * A permission set that can be applied across different cloud platforms */ -export type SyncListResponseRouteIngress1 = { +export type SyncListResponseExtend = { /** - * Annotations applied to route objects. + * Human-readable description of what this permission set allows */ - annotations?: { [k: string]: string } | undefined; + description: string; /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. + * Unique identifier for the permission set (e.g., "storage/data-read") */ - controller?: string | null | undefined; + id: string; /** - * `spec.ingressClassName` for generated Ingresses. + * Platform-specific permission configurations */ - ingressClassName: string; + platforms: SyncListResponseExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncListResponseExtendUnion = SyncListResponseExtend | string; + +export type SyncListResponseManagement1 = { /** - * Labels applied to route objects. + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource */ - labels?: { [k: string]: string } | undefined; - provider?: - | SyncListResponseProviderAwsAlb1 - | SyncListResponseProviderAzureApplicationGatewayForContainers1 - | SyncListResponseProviderGkeGateway1 - | any - | null - | undefined; - routeApi: "ingress"; + extend: { [k: string]: Array }; }; /** - * Kubernetes route API selected for public endpoints. + * Management permissions configuration for stack management access */ -export type SyncListResponseRouteUnion1 = - | SyncListResponseRouteIngress1 - | SyncListResponseRouteGateway1; +export type SyncListResponseManagementUnion = + | SyncListResponseManagement1 + | SyncListResponseManagement2 + | SyncListResponseManagementEnum; -export type SyncListResponseExposureGenerated = { +/** + * AWS-specific binding specification + */ +export type SyncListResponseProfileAwResource = { /** - * Certificate publication or reference mode for Kubernetes public endpoints. + * Optional condition for additional filtering (rare) */ - certificate: - | SyncListResponseCertificateTLSSecretRef1 - | SyncListResponseCertificateManagedAcmImport1 - | SyncListResponseCertificateAwsAcmArn1 - | SyncListResponseCertificateManagedTLSSecret1 - | SyncListResponseCertificateNone1; - mode: SyncListResponseModeGenerated; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Kubernetes route API selected for public endpoints. + * Resource ARNs to bind to */ - route: SyncListResponseRouteIngress1 | SyncListResponseRouteGateway1; -}; - -export const SyncListResponseModeDisabled = { - Disabled: "disabled", -} as const; -export type SyncListResponseModeDisabled = ClosedEnum< - typeof SyncListResponseModeDisabled ->; - -export type SyncListResponseExposureDisabled = { - mode: SyncListResponseModeDisabled; + resources: Array; }; -export type SyncListResponseExposureUnion = - | SyncListResponseExposureCustom - | SyncListResponseExposureGenerated - | SyncListResponseExposureDisabled - | any; - /** - * Kubernetes runtime substrate configuration. - * - * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. + * AWS-specific binding specification */ -export type SyncListResponseKubernetes = { - cluster?: SyncListResponseCluster | any | null | undefined; - exposure?: - | SyncListResponseExposureCustom - | SyncListResponseExposureGenerated - | SyncListResponseExposureDisabled - | any - | null - | undefined; -}; - -export type SyncListResponseKubernetesUnion = SyncListResponseKubernetes | any; - -export const SyncListResponseTypeByoVnetAzure = { - ByoVnetAzure: "byo-vnet-azure", -} as const; -export type SyncListResponseTypeByoVnetAzure = ClosedEnum< - typeof SyncListResponseTypeByoVnetAzure ->; - -export type SyncListResponseNetworkByoVnetAzure = { +export type SyncListResponseProfileAwStack = { /** - * Name of the dedicated classic Application Gateway subnet within the VNet. + * Optional condition for additional filtering (rare) */ - applicationGatewaySubnetName?: string | null | undefined; + condition?: { [k: string]: { [k: string]: string } } | null | undefined; /** - * Name of the private subnet within the VNet + * Resource ARNs to bind to */ - privateSubnetName: string; + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncListResponseProfileAwBinding = { /** - * Name of the public subnet within the VNet + * AWS-specific binding specification */ - publicSubnetName: string; - type: SyncListResponseTypeByoVnetAzure; + resource?: SyncListResponseProfileAwResource | undefined; /** - * The full resource ID of the existing VNet + * AWS-specific binding specification */ - vnetResourceId: string; + stack?: SyncListResponseProfileAwStack | undefined; }; -export const SyncListResponseTypeByoVpcGcp = { - ByoVpcGcp: "byo-vpc-gcp", +/** + * IAM effect. Defaults to Allow. + */ +export const SyncListResponseProfileEffect = { + Allow: "Allow", + Deny: "Deny", } as const; -export type SyncListResponseTypeByoVpcGcp = ClosedEnum< - typeof SyncListResponseTypeByoVpcGcp +/** + * IAM effect. Defaults to Allow. + */ +export type SyncListResponseProfileEffect = ClosedEnum< + typeof SyncListResponseProfileEffect >; -export type SyncListResponseNetworkByoVpcGcp = { +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponseProfileAwGrant = { /** - * The name of the existing VPC network + * AWS IAM actions (only for AWS) */ - networkName: string; + actions?: Array | null | undefined; /** - * The region of the subnet + * Azure actions (only for Azure) */ - region: string; + dataActions?: Array | null | undefined; /** - * The name of the subnet to use + * GCP permissions that require an exact residual custom role. */ - subnetName: string; - type: SyncListResponseTypeByoVpcGcp; -}; - -export const SyncListResponseTypeByoVpcAws = { - ByoVpcAws: "byo-vpc-aws", -} as const; -export type SyncListResponseTypeByoVpcAws = ClosedEnum< - typeof SyncListResponseTypeByoVpcAws ->; - -export type SyncListResponseNetworkByoVpcAws = { + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; /** - * IDs of private subnets + * GCP residual custom permissions to pair with predefined roles. */ - privateSubnetIds: Array; + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncListResponseProfileAw = { /** - * IDs of public subnets (required for public ingress) + * Generic binding configuration for permissions */ - publicSubnetIds: Array; + binding: SyncListResponseProfileAwBinding; /** - * Optional security group IDs to use + * Short admin-facing description of why this entry exists. */ - securityGroupIds?: Array | undefined; - type: SyncListResponseTypeByoVpcAws; + description?: string | null | undefined; /** - * The ID of the existing VPC + * IAM effect. Defaults to Allow. */ - vpcId: string; -}; - -export const SyncListResponseTypeCreate = { - Create: "create", -} as const; -export type SyncListResponseTypeCreate = ClosedEnum< - typeof SyncListResponseTypeCreate ->; - -export type SyncListResponseNetworkCreate = { + effect?: SyncListResponseProfileEffect | undefined; /** - * Number of availability zones (default: 2). + * Grant permissions for a specific cloud platform */ - availabilityZones?: number | undefined; + grant: SyncListResponseProfileAwGrant; /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + * Stable admin-facing label for this permission entry. */ - cidr?: string | null | undefined; - type: SyncListResponseTypeCreate; -}; - -export const SyncListResponseTypeUseDefault = { - UseDefault: "use-default", -} as const; -export type SyncListResponseTypeUseDefault = ClosedEnum< - typeof SyncListResponseTypeUseDefault ->; - -export type SyncListResponseNetworkUseDefault = { - type: SyncListResponseTypeUseDefault; + label?: string | null | undefined; }; -export type SyncListResponseNetworkUnion = - | SyncListResponseNetworkByoVpcAws - | SyncListResponseNetworkByoVpcGcp - | SyncListResponseNetworkByoVnetAzure - | SyncListResponseNetworkUseDefault - | SyncListResponseNetworkCreate - | any; - /** - * How telemetry (logs, metrics, traces) is handled. - */ -export const SyncListResponseTelemetry = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How telemetry (logs, metrics, traces) is handled. + * Azure-specific binding specification */ -export type SyncListResponseTelemetry = ClosedEnum< - typeof SyncListResponseTelemetry ->; +export type SyncListResponseProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; /** - * How updates are delivered to the deployment. + * Azure-specific binding specification */ -export const SyncListResponseUpdates = { - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; +export type SyncListResponseProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + /** - * How updates are delivered to the deployment. + * Generic binding configuration for permissions */ -export type SyncListResponseUpdates = ClosedEnum< - typeof SyncListResponseUpdates ->; +export type SyncListResponseProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncListResponseProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncListResponseProfileAzureStack | undefined; +}; /** - * User-provided configuration (network, deployment model, approvals) + * Grant permissions for a specific cloud platform */ -export type SyncListResponseStackSettings = { - compute?: SyncListResponseCompute | any | null | undefined; +export type SyncListResponseProfileAzureGrant = { /** - * Deployment model: how updates are delivered to the remote environment. + * AWS IAM actions (only for AWS) */ - deploymentModel?: SyncListResponseDeploymentModel | undefined; - domains?: SyncListResponseDomains | any | null | undefined; + actions?: Array | null | undefined; /** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ - externalBindings?: SyncListResponseExternalBindings | null | undefined; - /** - * How heartbeat health checks are handled. - */ - heartbeats?: SyncListResponseHeartbeats | undefined; - kubernetes?: SyncListResponseKubernetes | any | null | undefined; - network?: - | SyncListResponseNetworkByoVpcAws - | SyncListResponseNetworkByoVpcGcp - | SyncListResponseNetworkByoVnetAzure - | SyncListResponseNetworkUseDefault - | SyncListResponseNetworkCreate - | any - | null - | undefined; + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; /** - * How telemetry (logs, metrics, traces) is handled. + * Provider predefined roles to bind directly. */ - telemetry?: SyncListResponseTelemetry | undefined; + predefinedRoles?: Array | null | undefined; /** - * How updates are delivered to the deployment. + * GCP residual custom permissions to pair with predefined roles. */ - updates?: SyncListResponseUpdates | undefined; + residualPermissions?: Array | null | undefined; }; /** - * Represents the target cloud platform. - */ -export const SyncListResponseStackStatePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncListResponseStackStatePlatform = ClosedEnum< - typeof SyncListResponseStackStatePlatform ->; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Azure-specific platform permission configuration */ -export type SyncListResponseStackStateConfig = { +export type SyncListResponseProfileAzure = { /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * Generic binding configuration for permissions */ - id: string; + binding: SyncListResponseProfileAzureBinding; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Short admin-facing description of why this entry exists. */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncListResponseProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; }; /** - * Represents the target cloud platform. + * GCP IAM condition */ -export const SyncListResponseControllerPlatformEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncListResponseControllerPlatformEnum = ClosedEnum< - typeof SyncListResponseControllerPlatformEnum ->; +export type SyncListResponseProfileConditionResource = { + expression: string; + title: string; +}; -export type SyncListResponseControllerPlatformUnion = - | SyncListResponseControllerPlatformEnum +export type SyncListResponseProfileResourceConditionUnion = + | SyncListResponseProfileConditionResource | any; /** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. + * GCP-specific binding specification */ -export type SyncListResponseStackStateDependency = { - id: string; +export type SyncListResponseProfileGcpResource = { + condition?: SyncListResponseProfileConditionResource | any | null | undefined; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Scope (project/resource level) */ - type: string; + scope: string; }; /** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. + * GCP IAM condition */ -export type SyncListResponseErrorStackState = { - /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" - */ - code: string; - /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. - */ - context?: any | null | undefined; - /** - * Optional human-facing remediation hint. - */ - hint?: string | null | undefined; - /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. - */ - httpStatusCode?: number | null | undefined; - /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. - */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable: boolean; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; +export type SyncListResponseProfileConditionStack = { + expression: string; + title: string; }; -export type SyncListResponseErrorUnion = SyncListResponseErrorStackState | any; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const SyncListResponseLifecycleStackStateEnum = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type SyncListResponseLifecycleStackStateEnum = ClosedEnum< - typeof SyncListResponseLifecycleStackStateEnum ->; - -export type SyncListResponseLifecycleUnion = - | SyncListResponseLifecycleStackStateEnum +export type SyncListResponseProfileStackConditionUnion = + | SyncListResponseProfileConditionStack | any; /** - * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. + * GCP-specific binding specification */ -export type SyncListResponseOutputs = { +export type SyncListResponseProfileGcpStack = { + condition?: SyncListResponseProfileConditionStack | any | null | undefined; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * Scope (project/resource level) */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + scope: string; }; -export type SyncListResponseOutputsUnion = SyncListResponseOutputs | any; - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Generic binding configuration for permissions */ -export type SyncListResponsePreviousConfig = { +export type SyncListResponseProfileGcpBinding = { /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + * GCP-specific binding specification */ - id: string; + resource?: SyncListResponseProfileGcpResource | undefined; /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + * GCP-specific binding specification */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; + stack?: SyncListResponseProfileGcpStack | undefined; }; -export type SyncListResponsePreviousConfigUnion = - | SyncListResponsePreviousConfig - | any; - -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export const SyncListResponseStackStateStatus = { - Pending: "pending", - Provisioning: "provisioning", - ProvisionFailed: "provision-failed", - Running: "running", - Updating: "updating", - UpdateFailed: "update-failed", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - Deleted: "deleted", - RefreshFailed: "refresh-failed", -} as const; -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export type SyncListResponseStackStateStatus = ClosedEnum< - typeof SyncListResponseStackStateStatus ->; - /** - * Represents the state of a single resource within the stack for a specific platform. + * Grant permissions for a specific cloud platform */ -export type SyncListResponseStackStateResources = { +export type SyncListResponseProfileGcpGrant = { /** - * The platform-specific resource controller that manages this resource's lifecycle. - * - * @remarks - * This is None when the resource status is Pending. - * Stored as JSON to make the struct serializable and movable to alien-core. + * AWS IAM actions (only for AWS) */ - internal?: any | null | undefined; + actions?: Array | null | undefined; /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + * Azure actions (only for Azure) */ - config: SyncListResponseStackStateConfig; - controllerPlatform?: - | SyncListResponseControllerPlatformEnum - | any - | null - | undefined; + dataActions?: Array | null | undefined; /** - * Complete list of dependencies for this resource, including infrastructure dependencies. - * - * @remarks - * This preserves the full dependency information from the stack definition. + * GCP permissions that require an exact residual custom role. */ - dependencies?: Array | undefined; - error?: SyncListResponseErrorStackState | any | null | undefined; + permissions?: Array | null | undefined; /** - * Stores the controller state that failed, used for manual retry operations. - * - * @remarks - * This allows resuming from the exact point where the failure occurred. - * Stored as JSON to make the struct serializable and movable to alien-core. + * Provider predefined roles to bind directly. */ - lastFailedState?: any | null | undefined; - lifecycle?: SyncListResponseLifecycleStackStateEnum | any | null | undefined; - outputs?: SyncListResponseOutputs | any | null | undefined; - previousConfig?: SyncListResponsePreviousConfig | any | null | undefined; + predefinedRoles?: Array | null | undefined; /** - * Binding parameters for remote access. - * - * @remarks - * Only populated when the resource has `remote_access: true` in its ResourceEntry. - * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). - * Populated by controllers during provisioning using get_binding_params(). + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncListResponseProfileGcp = { + /** + * Generic binding configuration for permissions */ - remoteBindingParams?: any | null | undefined; + binding: SyncListResponseProfileGcpBinding; /** - * Tracks consecutive retry attempts for the current state transition. + * Short admin-facing description of why this entry exists. */ - retryAttempt?: number | undefined; + description?: string | null | undefined; /** - * Represents the high-level status of a resource during its lifecycle. + * Grant permissions for a specific cloud platform */ - status: SyncListResponseStackStateStatus; + grant: SyncListResponseProfileGcpGrant; /** - * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + * Stable admin-facing label for this permission entry. */ - type: string; + label?: string | null | undefined; }; /** - * State of infrastructure components managed by this deployment + * Platform-specific permission configurations */ -export type SyncListResponseStackState = { - /** - * Represents the target cloud platform. - */ - platform: SyncListResponseStackStatePlatform; +export type SyncListResponseProfilePlatforms = { /** - * A prefix used for resource naming to ensure uniqueness across deployments. + * AWS permission configurations */ - resourcePrefix: string; + aws?: Array | null | undefined; /** - * The state of individual resources, keyed by resource ID. + * Azure permission configurations */ - resources: { [k: string]: SyncListResponseStackStateResources }; -}; - -export const SyncListResponseTypeStringList = { - StringList: "stringList", -} as const; -export type SyncListResponseTypeStringList = ClosedEnum< - typeof SyncListResponseTypeStringList ->; - -export type SyncListResponseDefaultStringList = { - type: SyncListResponseTypeStringList; + azure?: Array | null | undefined; /** - * String list default. + * GCP permission configurations */ - value: Array; + gcp?: Array | null | undefined; }; -export const SyncListResponseTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncListResponseTypeBoolean = ClosedEnum< - typeof SyncListResponseTypeBoolean ->; - -export type SyncListResponseDefaultBoolean = { - type: SyncListResponseTypeBoolean; +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncListResponseProfile = { /** - * Boolean default. + * Human-readable description of what this permission set allows */ - value: boolean; -}; - -export const SyncListResponseTypeNumber = { - Number: "number", -} as const; -export type SyncListResponseTypeNumber = ClosedEnum< - typeof SyncListResponseTypeNumber ->; - -export type SyncListResponseDefaultNumber = { - type: SyncListResponseTypeNumber; + description: string; /** - * Number default. + * Unique identifier for the permission set (e.g., "storage/data-read") */ - value: string; -}; - -export const SyncListResponseTypeString = { - String: "string", -} as const; -export type SyncListResponseTypeString = ClosedEnum< - typeof SyncListResponseTypeString ->; - -export type SyncListResponseDefaultString = { - type: SyncListResponseTypeString; + id: string; /** - * String default. + * Platform-specific permission configurations */ - value: string; + platforms: SyncListResponseProfilePlatforms; }; -export type SyncListResponseDefaultUnion = - | SyncListResponseDefaultString - | SyncListResponseDefaultNumber - | SyncListResponseDefaultBoolean - | SyncListResponseDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncListResponseTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; /** - * Environment variable handling for a stack input mapping. + * Reference to a permission set - either by name or inline definition */ -export type SyncListResponseTypeEnvEnum = ClosedEnum< - typeof SyncListResponseTypeEnvEnum ->; - -export type SyncListResponseTypeUnion = SyncListResponseTypeEnvEnum | any; +export type SyncListResponseProfileUnion = SyncListResponseProfile | string; /** - * How a resolved stack input is injected into runtime environment variables. + * Combined permissions configuration that contains both profiles and management */ -export type SyncListResponseEnv = { +export type SyncListResponsePermissions = { /** - * Environment variable name. + * Management permissions configuration for stack management access */ - name: string; + management?: + | SyncListResponseManagement1 + | SyncListResponseManagement2 + | SyncListResponseManagementEnum + | undefined; /** - * Target resource IDs or patterns. None means every env-capable resource. + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration */ - targetResources?: Array | null | undefined; - type?: SyncListResponseTypeEnvEnum | any | null | undefined; + profiles: { + [k: string]: { [k: string]: Array }; + }; }; /** - * Primitive stack input kind. - */ -export const SyncListResponseKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ -export type SyncListResponseKind = ClosedEnum; - -/** - * Represents the target cloud platform. - */ -export const SyncListResponsePreparedStackPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; +export type SyncListResponsePreparedStackConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + /** - * Represents the target cloud platform. + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. */ -export type SyncListResponsePreparedStackPlatform = ClosedEnum< - typeof SyncListResponsePreparedStackPlatform ->; +export type SyncListResponsePreparedStackDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; /** - * Who can provide a stack input value. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export const SyncListResponseProvidedBy = { - Developer: "developer", - Deployer: "deployer", +export const SyncListResponsePreparedStackLifecycle = { + Frozen: "frozen", + Live: "live", } as const; /** - * Who can provide a stack input value. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ -export type SyncListResponseProvidedBy = ClosedEnum< - typeof SyncListResponseProvidedBy +export type SyncListResponsePreparedStackLifecycle = ClosedEnum< + typeof SyncListResponsePreparedStackLifecycle >; -/** - * Portable stack input validation constraints. - */ -export type SyncListResponseValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; +export type SyncListResponsePreparedStackResources = { /** - * Minimum string-list items. + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. */ - minItems?: number | null | undefined; + config: SyncListResponsePreparedStackConfig; /** - * Minimum string length. + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list */ - minLength?: number | null | undefined; + dependencies: Array; /** - * Portable whole-value regex pattern. + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. */ - pattern?: string | null | undefined; + lifecycle: SyncListResponsePreparedStackLifecycle; /** - * Allowed string enum values. + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). */ - values?: Array | null | undefined; + remoteAccess?: boolean | undefined; }; -export type SyncListResponseValidationUnion = SyncListResponseValidation | any; +/** + * Represents the target cloud platform. + */ +export const SyncListResponseSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncListResponseSupportedPlatform = ClosedEnum< + typeof SyncListResponseSupportedPlatform +>; /** - * Stack input definition serialized into a release stack. + * A bag of resources, unaware of any cloud. */ -export type SyncListResponseInput = { - default?: - | SyncListResponseDefaultString - | SyncListResponseDefaultNumber - | SyncListResponseDefaultBoolean - | SyncListResponseDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; +export type SyncListResponsePreparedStack = { /** - * Stable input ID used by CLI/API calls. + * Unique identifier for the stack */ id: string; /** - * Primitive stack input kind. - */ - kind: SyncListResponseKind; - /** - * Human-facing field label. - */ - label: string; - /** - * Example placeholder shown in UI. + * Input definitions required before setup or deployment can proceed. */ - placeholder?: string | null | undefined; + inputs?: Array | undefined; /** - * Platforms where this input applies. + * Combined permissions configuration that contains both profiles and management */ - platforms?: Array | null | undefined; + permissions?: SyncListResponsePermissions | undefined; /** - * Who can provide this value. + * Map of resource IDs to their configurations and lifecycle settings */ - providedBy: Array; + resources: { [k: string]: SyncListResponsePreparedStackResources }; /** - * Whether a resolved value is required before deployment can proceed. + * Which platforms this stack supports. When None, all platforms are supported. */ - required: boolean; - validation?: SyncListResponseValidation | any | null | undefined; + supportedPlatforms?: + | Array + | null + | undefined; }; -export const SyncListResponseManagementEnum = { - Auto: "auto", -} as const; -export type SyncListResponseManagementEnum = ClosedEnum< - typeof SyncListResponseManagementEnum ->; +export type SyncListResponsePreparedStackUnion = + | SyncListResponsePreparedStack + | any; /** - * AWS-specific binding specification + * Runtime metadata for deployment state persistence */ -export type SyncListResponseOverrideAwResource = { +export type SyncListResponseRuntimeMetadata = { /** - * Optional condition for additional filtering (rare) + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; + lastSyncedEnvVarsHash?: string | null | undefined; + preparedStack?: SyncListResponsePreparedStack | any | null | undefined; /** - * Resource ARNs to bind to + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. */ - resources: Array; + registryAccessGranted?: boolean | undefined; }; /** - * AWS-specific binding specification + * Setup source that imported this deployment */ -export type SyncListResponseOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - +export const SyncListResponseImportSource = { + Cloudformation: "cloudformation", + Terraform: "terraform", + Helm: "helm", +} as const; /** - * Generic binding configuration for permissions + * Setup source that imported this deployment */ -export type SyncListResponseOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncListResponseOverrideAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncListResponseOverrideAwStack | undefined; -}; +export type SyncListResponseImportSource = ClosedEnum< + typeof SyncListResponseImportSource +>; /** - * IAM effect. Defaults to Allow. + * Setup method that created the deployment record and owns setup-time resources. */ -export const SyncListResponseOverrideEffect = { - Allow: "Allow", - Deny: "Deny", +export const SyncListResponseSetupMethod = { + Cloudformation: "cloudformation", + GoogleOauth: "google-oauth", + Terraform: "terraform", + Helm: "helm", + Cli: "cli", + Manual: "manual", } as const; /** - * IAM effect. Defaults to Allow. + * Setup method that created the deployment record and owns setup-time resources. */ -export type SyncListResponseOverrideEffect = ClosedEnum< - typeof SyncListResponseOverrideEffect +export type SyncListResponseSetupMethod = ClosedEnum< + typeof SyncListResponseSetupMethod >; /** - * Grant permissions for a specific cloud platform + * Latest error information if the deployment is in a failed state */ -export type SyncListResponseOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; +export type SyncListResponseError = { /** - * GCP permissions that require an exact residual custom role. + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" */ - permissions?: Array | null | undefined; + code: string; /** - * Provider predefined roles to bind directly. + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. */ - predefinedRoles?: Array | null | undefined; + context?: any | null | undefined; /** - * GCP residual custom permissions to pair with predefined roles. + * Optional human-facing remediation hint. */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncListResponseOverrideAw = { + hint?: string | null | undefined; /** - * Generic binding configuration for permissions + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. */ - binding: SyncListResponseOverrideAwBinding; + httpStatusCode?: number | null | undefined; /** - * Short admin-facing description of why this entry exists. + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. */ - description?: string | null | undefined; + internal: boolean; /** - * IAM effect. Defaults to Allow. + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. */ - effect?: SyncListResponseOverrideEffect | undefined; + message: string; /** - * Grant permissions for a specific cloud platform + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. */ - grant: SyncListResponseOverrideAwGrant; + retryable: boolean; /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncListResponseOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncListResponseOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncListResponseOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncListResponseOverrideAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncListResponseOverrideAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncListResponseOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncListResponseOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncListResponseOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncListResponseOverrideAzureGrant; - /** - * Stable admin-facing label for this permission entry. + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. */ - label?: string | null | undefined; + source?: any | null | undefined; }; /** - * GCP IAM condition + * Agent host OS reported on the last sync */ -export type SyncListResponseOverrideConditionResource = { - expression: string; - title: string; -}; - -export type SyncListResponseOverrideResourceConditionUnion = - | SyncListResponseOverrideConditionResource - | any; - +export const SyncListResponseAgentOs = { + Linux: "linux", + Macos: "macos", + Windows: "windows", +} as const; /** - * GCP-specific binding specification + * Agent host OS reported on the last sync */ -export type SyncListResponseOverrideGcpResource = { - condition?: - | SyncListResponseOverrideConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type SyncListResponseAgentOs = ClosedEnum< + typeof SyncListResponseAgentOs +>; /** - * GCP IAM condition + * Agent host architecture reported on the last sync */ -export type SyncListResponseOverrideConditionStack = { - expression: string; - title: string; -}; - -export type SyncListResponseOverrideStackConditionUnion = - | SyncListResponseOverrideConditionStack - | any; - +export const SyncListResponseAgentArch = { + X8664: "x86_64", + Aarch64: "aarch64", +} as const; /** - * GCP-specific binding specification + * Agent host architecture reported on the last sync */ -export type SyncListResponseOverrideGcpStack = { - condition?: SyncListResponseOverrideConditionStack | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; +export type SyncListResponseAgentArch = ClosedEnum< + typeof SyncListResponseAgentArch +>; /** - * Generic binding configuration for permissions + * Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. */ -export type SyncListResponseOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncListResponseOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncListResponseOverrideGcpStack | undefined; -}; - +export const SyncListResponseRegime = { + OsService: "os-service", + Kubernetes: "kubernetes", +} as const; /** - * Grant permissions for a specific cloud platform + * Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. */ -export type SyncListResponseOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; +export type SyncListResponseRegime = ClosedEnum; -/** - * GCP-specific platform permission configuration - */ -export type SyncListResponseOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncListResponseOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncListResponseOverrideGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; +export const SyncListResponsePlatformKubernetes = { + Kubernetes: "kubernetes", +} as const; +export type SyncListResponsePlatformKubernetes = ClosedEnum< + typeof SyncListResponsePlatformKubernetes +>; -/** - * Platform-specific permission configurations - */ -export type SyncListResponseOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; +export type SyncListResponseManagementConfigKubernetes = { + platform: SyncListResponsePlatformKubernetes; }; -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncListResponseOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncListResponseOverridePlatforms; -}; +export const SyncListResponseManagementConfigPlatformAzure = { + Azure: "azure", +} as const; +export type SyncListResponseManagementConfigPlatformAzure = ClosedEnum< + typeof SyncListResponseManagementConfigPlatformAzure +>; /** - * Reference to a permission set - either by name or inline definition + * Azure management configuration extracted from stack settings */ -export type SyncListResponseOverrideUnion = SyncListResponseOverride | string; - -export type SyncListResponseManagement2 = { +export type SyncListResponseManagementConfigAzure = { /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource + * The managing Azure Tenant ID for cross-tenant access */ - override: { [k: string]: Array }; -}; - -/** - * AWS-specific binding specification - */ -export type SyncListResponseExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncListResponseExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncListResponseExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncListResponseExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncListResponseExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncListResponseExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncListResponseExtendEffect = ClosedEnum< - typeof SyncListResponseExtendEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncListResponseExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncListResponseExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncListResponseExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncListResponseExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncListResponseExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncListResponseExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncListResponseExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncListResponseExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncListResponseExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncListResponseExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncListResponseExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncListResponseExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncListResponseExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncListResponseExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncListResponseExtendConditionResource = { - expression: string; - title: string; -}; - -export type SyncListResponseExtendResourceConditionUnion = - | SyncListResponseExtendConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncListResponseExtendGcpResource = { - condition?: SyncListResponseExtendConditionResource | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncListResponseExtendConditionStack = { - expression: string; - title: string; -}; - -export type SyncListResponseExtendStackConditionUnion = - | SyncListResponseExtendConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type SyncListResponseExtendGcpStack = { - condition?: SyncListResponseExtendConditionStack | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncListResponseExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncListResponseExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncListResponseExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncListResponseExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncListResponseExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncListResponseExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncListResponseExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncListResponseExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncListResponseExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncListResponseExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncListResponseExtendUnion = SyncListResponseExtend | string; - -export type SyncListResponseManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { [k: string]: Array }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type SyncListResponseManagementUnion = - | SyncListResponseManagement1 - | SyncListResponseManagement2 - | SyncListResponseManagementEnum; - -/** - * AWS-specific binding specification - */ -export type SyncListResponseProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncListResponseProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncListResponseProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncListResponseProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncListResponseProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncListResponseProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncListResponseProfileEffect = ClosedEnum< - typeof SyncListResponseProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncListResponseProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncListResponseProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncListResponseProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncListResponseProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncListResponseProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncListResponseProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncListResponseProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncListResponseProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncListResponseProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncListResponseProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncListResponseProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncListResponseProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncListResponseProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncListResponseProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncListResponseProfileConditionResource = { - expression: string; - title: string; -}; - -export type SyncListResponseProfileResourceConditionUnion = - | SyncListResponseProfileConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncListResponseProfileGcpResource = { - condition?: SyncListResponseProfileConditionResource | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncListResponseProfileConditionStack = { - expression: string; - title: string; -}; - -export type SyncListResponseProfileStackConditionUnion = - | SyncListResponseProfileConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type SyncListResponseProfileGcpStack = { - condition?: SyncListResponseProfileConditionStack | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncListResponseProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncListResponseProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncListResponseProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncListResponseProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncListResponseProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncListResponseProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncListResponseProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncListResponseProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncListResponseProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncListResponseProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncListResponseProfileUnion = SyncListResponseProfile | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type SyncListResponsePermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncListResponseManagement1 - | SyncListResponseManagement2 - | SyncListResponseManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { [k: string]: Array }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncListResponsePreparedStackConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncListResponsePreparedStackDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const SyncListResponsePreparedStackLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type SyncListResponsePreparedStackLifecycle = ClosedEnum< - typeof SyncListResponsePreparedStackLifecycle ->; - -export type SyncListResponsePreparedStackResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncListResponsePreparedStackConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: SyncListResponsePreparedStackLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncListResponseSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncListResponseSupportedPlatform = ClosedEnum< - typeof SyncListResponseSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncListResponsePreparedStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: SyncListResponsePermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: SyncListResponsePreparedStackResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -export type SyncListResponsePreparedStackUnion = - | SyncListResponsePreparedStack - | any; - -/** - * Runtime metadata for deployment state persistence - */ -export type SyncListResponseRuntimeMetadata = { - /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment - */ - lastSyncedEnvVarsHash?: string | null | undefined; - preparedStack?: SyncListResponsePreparedStack | any | null | undefined; - /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. - */ - registryAccessGranted?: boolean | undefined; -}; - -/** - * Setup source that imported this deployment - */ -export const SyncListResponseImportSource = { - Cloudformation: "cloudformation", - Terraform: "terraform", - Helm: "helm", -} as const; -/** - * Setup source that imported this deployment - */ -export type SyncListResponseImportSource = ClosedEnum< - typeof SyncListResponseImportSource ->; - -/** - * Setup method that created the deployment record and owns setup-time resources. - */ -export const SyncListResponseSetupMethod = { - Cloudformation: "cloudformation", - GoogleOauth: "google-oauth", - Terraform: "terraform", - Helm: "helm", - Cli: "cli", - Manual: "manual", -} as const; -/** - * Setup method that created the deployment record and owns setup-time resources. - */ -export type SyncListResponseSetupMethod = ClosedEnum< - typeof SyncListResponseSetupMethod ->; - -/** - * Latest error information if the deployment is in a failed state - */ -export type SyncListResponseError = { - /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" - */ - code: string; - /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. - */ - context?: any | null | undefined; - /** - * Optional human-facing remediation hint. - */ - hint?: string | null | undefined; - /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. - */ - httpStatusCode?: number | null | undefined; - /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. - */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable: boolean; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; -}; - -export const SyncListResponsePlatformKubernetes = { - Kubernetes: "kubernetes", -} as const; -export type SyncListResponsePlatformKubernetes = ClosedEnum< - typeof SyncListResponsePlatformKubernetes ->; - -export type SyncListResponseManagementConfigKubernetes = { - platform: SyncListResponsePlatformKubernetes; -}; - -export const SyncListResponseManagementConfigPlatformAzure = { - Azure: "azure", -} as const; -export type SyncListResponseManagementConfigPlatformAzure = ClosedEnum< - typeof SyncListResponseManagementConfigPlatformAzure ->; - -/** - * Azure management configuration extracted from stack settings - */ -export type SyncListResponseManagementConfigAzure = { - /** - * The managing Azure Tenant ID for cross-tenant access - */ - managingTenantId: string; - /** - * OIDC issuer URL trusted by the target-side managed identity. - */ - oidcIssuer: string; - /** - * OIDC subject claim trusted by the target-side managed identity. - */ - oidcSubject: string; - platform: SyncListResponseManagementConfigPlatformAzure; -}; - -export const SyncListResponseManagementConfigPlatformGcp = { - Gcp: "gcp", -} as const; -export type SyncListResponseManagementConfigPlatformGcp = ClosedEnum< - typeof SyncListResponseManagementConfigPlatformGcp ->; - -/** - * GCP management configuration extracted from stack settings - */ -export type SyncListResponseManagementConfigGcp = { - /** - * Service account email for management roles - */ - serviceAccountEmail: string; - platform: SyncListResponseManagementConfigPlatformGcp; -}; - -export const SyncListResponseManagementConfigPlatformAws = { - Aws: "aws", -} as const; -export type SyncListResponseManagementConfigPlatformAws = ClosedEnum< - typeof SyncListResponseManagementConfigPlatformAws ->; - -/** - * AWS management configuration extracted from stack settings - */ -export type SyncListResponseManagementConfigAws = { - /** - * The managing AWS IAM role ARN that can assume cross-account roles - */ - managingRoleArn: string; - platform: SyncListResponseManagementConfigPlatformAws; -}; - -/** - * Management configuration for different cloud platforms. - * - * @remarks - * - * Platform-derived configuration for cross-account/cross-tenant access. - * This is NOT user-specified - it's derived from the Manager's ServiceAccount. - */ -export type SyncListResponseManagementConfigUnion = - | SyncListResponseManagementConfigAzure - | SyncListResponseManagementConfigAws - | SyncListResponseManagementConfigGcp - | SyncListResponseManagementConfigKubernetes - | any; - -export type SyncListResponseDeployment = { - /** - * Unique identifier for the deployment. - */ - id: string; - /** - * Deployment name. - */ - name: string; - /** - * Public subdomain for auto-generated domains - */ - publicSubdomain?: string | null | undefined; - /** - * Deployment status in the deployment lifecycle - */ - status: SyncListResponseStatus; - /** - * Unique identifier for the project. - */ - projectId: string; - /** - * Target platform for the deployment - */ - platform: SyncListResponsePlatform; - /** - * Underlying cloud platform for Kubernetes deployments. - */ - basePlatform?: SyncListResponseBasePlatform | null | undefined; - /** - * Cloud region or location for the deployment. - */ - region?: string | null | undefined; - /** - * DeploymentState protocol version owned by the runtime/manager - */ - deploymentProtocolVersion: number; - /** - * ID of deployment group this deployment belongs to - */ - deploymentGroupId: string; - /** - * Cloud environment information - */ - environmentInfo?: - | SyncListResponseEnvironmentInfoGcp - | SyncListResponseEnvironmentInfoAzure - | SyncListResponseEnvironmentInfoLocal - | SyncListResponseEnvironmentInfoAws - | SyncListResponseEnvironmentInfoTest - | any - | null - | undefined; - /** - * User-provided configuration (network, deployment model, approvals) - */ - stackSettings: SyncListResponseStackSettings; - /** - * State of infrastructure components managed by this deployment - */ - stackState?: SyncListResponseStackState | null | undefined; - /** - * Runtime metadata for deployment state persistence - */ - runtimeMetadata?: SyncListResponseRuntimeMetadata | null | undefined; - /** - * ID of the currently deployed release (actual state) - */ - currentReleaseId?: string | null | undefined; - /** - * ID of the desired release for deployment/update (desired state) - */ - desiredReleaseId?: string | null | undefined; - /** - * ID of the pinned release - */ - pinnedReleaseId?: string | null | undefined; - /** - * Setup source that imported this deployment - */ - importSource?: SyncListResponseImportSource | null | undefined; - /** - * Setup method that created the deployment record and owns setup-time resources. - */ - setupMethod?: SyncListResponseSetupMethod | null | undefined; - /** - * Setup method metadata needed to guide privileged teardown. - */ - setupMetadata?: { [k: string]: any | null } | null | undefined; - /** - * Imported setup target for compatibility checks - */ - setupTarget?: string | null | undefined; - /** - * Imported setup compatibility fingerprint - */ - setupFingerprint?: string | null | undefined; - /** - * Imported setup fingerprint algorithm version - */ - setupFingerprintVersion?: number | null | undefined; - /** - * Whether a retry has been requested for a failed deployment - */ - retryRequested: boolean; - /** - * Timestamp of the last received heartbeat from the deployment - */ - lastHeartbeatAt?: Date | null | undefined; - /** - * Latest error information if the deployment is in a failed state - */ - error?: SyncListResponseError | null | undefined; - createdAt: Date; - updatedAt: Date; - managerId: string; - /** - * Unique identifier for the workspace. - */ - workspaceId: string; - userEnvironmentVariables: Array | null; - /** - * Management configuration for different cloud platforms. - * - * @remarks - * - * Platform-derived configuration for cross-account/cross-tenant access. - * This is NOT user-specified - it's derived from the Manager's ServiceAccount. - */ - managementConfig?: - | SyncListResponseManagementConfigAzure - | SyncListResponseManagementConfigAws - | SyncListResponseManagementConfigGcp - | SyncListResponseManagementConfigKubernetes - | any - | null - | undefined; - deploymentToken?: string | null | undefined; - lockedBy?: string | null | undefined; - lockedAt?: Date | null | undefined; -}; - -/** - * Full deployment records for manager operation - */ -export type SyncListResponse = { - deployments: Array; -}; - -/** @internal */ -export const SyncListResponseStatus$inboundSchema: z.ZodEnum< - typeof SyncListResponseStatus -> = z.enum(SyncListResponseStatus); - -/** @internal */ -export const SyncListResponsePlatform$inboundSchema: z.ZodEnum< - typeof SyncListResponsePlatform -> = z.enum(SyncListResponsePlatform); - -/** @internal */ -export const SyncListResponseBasePlatform$inboundSchema: z.ZodEnum< - typeof SyncListResponseBasePlatform -> = z.enum(SyncListResponseBasePlatform); - -/** @internal */ -export const SyncListResponsePlatformTest$inboundSchema: z.ZodEnum< - typeof SyncListResponsePlatformTest -> = z.enum(SyncListResponsePlatformTest); - -/** @internal */ -export const SyncListResponseEnvironmentInfoTest$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoTest, - unknown -> = z.object({ - testId: z.string(), - platform: SyncListResponsePlatformTest$inboundSchema, -}); - -export function syncListResponseEnvironmentInfoTestFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseEnvironmentInfoTest$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoTest' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponsePlatformLocal$inboundSchema: z.ZodEnum< - typeof SyncListResponsePlatformLocal -> = z.enum(SyncListResponsePlatformLocal); - -/** @internal */ -export const SyncListResponseEnvironmentInfoLocal$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoLocal, - unknown -> = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: SyncListResponsePlatformLocal$inboundSchema, -}); - -export function syncListResponseEnvironmentInfoLocalFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseEnvironmentInfoLocal$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoLocal' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseEnvironmentInfoPlatformAzure$inboundSchema: - z.ZodEnum = z.enum( - SyncListResponseEnvironmentInfoPlatformAzure, - ); - -/** @internal */ -export const SyncListResponseEnvironmentInfoAzure$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoAzure, - unknown -> = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: SyncListResponseEnvironmentInfoPlatformAzure$inboundSchema, -}); - -export function syncListResponseEnvironmentInfoAzureFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseEnvironmentInfoAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseEnvironmentInfoPlatformGcp$inboundSchema: - z.ZodEnum = z.enum( - SyncListResponseEnvironmentInfoPlatformGcp, - ); - -/** @internal */ -export const SyncListResponseEnvironmentInfoGcp$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoGcp, - unknown -> = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: SyncListResponseEnvironmentInfoPlatformGcp$inboundSchema, -}); - -export function syncListResponseEnvironmentInfoGcpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseEnvironmentInfoGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseEnvironmentInfoPlatformAws$inboundSchema: - z.ZodEnum = z.enum( - SyncListResponseEnvironmentInfoPlatformAws, - ); - -/** @internal */ -export const SyncListResponseEnvironmentInfoAws$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoAws, - unknown -> = z.object({ - accountId: z.string(), - region: z.string(), - platform: SyncListResponseEnvironmentInfoPlatformAws$inboundSchema, -}); - -export function syncListResponseEnvironmentInfoAwsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseEnvironmentInfoAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoAws' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseEnvironmentInfoUnion$inboundSchema: z.ZodType< - SyncListResponseEnvironmentInfoUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseEnvironmentInfoGcp$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoAzure$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoLocal$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoAws$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoTest$inboundSchema), - z.any(), -]); - -export function syncListResponseEnvironmentInfoUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseEnvironmentInfoUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnvironmentInfoUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponsePoolsAutoscale$inboundSchema: z.ZodType< - SyncListResponsePoolsAutoscale, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); - -export function syncListResponsePoolsAutoscaleFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponsePoolsAutoscale' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponsePoolsFixed$inboundSchema: z.ZodType< - SyncListResponsePoolsFixed, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); - -export function syncListResponsePoolsFixedFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponsePoolsFixed' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponsePoolsUnion$inboundSchema: z.ZodType< - SyncListResponsePoolsUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponsePoolsFixed$inboundSchema), - z.lazy(() => SyncListResponsePoolsAutoscale$inboundSchema), -]); - -export function syncListResponsePoolsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponsePoolsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCompute$inboundSchema: z.ZodType< - SyncListResponseCompute, - unknown -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => SyncListResponsePoolsFixed$inboundSchema), - z.lazy(() => SyncListResponsePoolsAutoscale$inboundSchema), - ]), - ).optional(), -}); - -export function syncListResponseComputeFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseCompute$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCompute' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseComputeUnion$inboundSchema: z.ZodType< - SyncListResponseComputeUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseCompute$inboundSchema), z.any()]); - -export function syncListResponseComputeUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseComputeUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseDeploymentModel$inboundSchema: z.ZodEnum< - typeof SyncListResponseDeploymentModel -> = z.enum(SyncListResponseDeploymentModel); - -/** @internal */ -export const SyncListResponseAws$inboundSchema: z.ZodType< - SyncListResponseAws, - unknown -> = z.object({ - certificateArn: z.string(), -}); - -export function syncListResponseAwsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseAws' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseAwsUnion$inboundSchema: z.ZodType< - SyncListResponseAwsUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseAws$inboundSchema), z.any()]); - -export function syncListResponseAwsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseAwsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseAwsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseAzureStackSettings$inboundSchema: z.ZodType< - SyncListResponseAzureStackSettings, - unknown -> = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), -}); - -export function syncListResponseAzureStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseAzureStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseAzureStackSettings' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseAzureUnion$inboundSchema: z.ZodType< - SyncListResponseAzureUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseAzureStackSettings$inboundSchema), - z.any(), -]); - -export function syncListResponseAzureUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseAzureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseAzureUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseGcpStackSettings$inboundSchema: z.ZodType< - SyncListResponseGcpStackSettings, - unknown -> = z.object({ - certificateName: z.string(), -}); - -export function syncListResponseGcpStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseGcpStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseGcpStackSettings' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseGcpUnion$inboundSchema: z.ZodType< - SyncListResponseGcpUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseGcpStackSettings$inboundSchema), - z.any(), -]); - -export function syncListResponseGcpUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseGcpUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseGcpUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTlsSecretRef$inboundSchema: z.ZodType< - SyncListResponseTlsSecretRef, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), -}); - -export function syncListResponseTlsSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseTlsSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseDomainsKubernetes$inboundSchema: z.ZodType< - SyncListResponseDomainsKubernetes, - unknown -> = z.object({ - tlsSecretRef: z.lazy(() => SyncListResponseTlsSecretRef$inboundSchema), -}); - -export function syncListResponseDomainsKubernetesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDomainsKubernetes' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseDomainsKubernetesUnion$inboundSchema: z.ZodType< - SyncListResponseDomainsKubernetesUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseDomainsKubernetes$inboundSchema), - z.any(), -]); - -export function syncListResponseDomainsKubernetesUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseDomainsKubernetesUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDomainsKubernetesUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseDomainsCertificate$inboundSchema: z.ZodType< - SyncListResponseDomainsCertificate, - unknown -> = z.object({ - aws: z.nullable( - z.union([z.lazy(() => SyncListResponseAws$inboundSchema), z.any()]), - ).optional(), - azure: z.nullable( - z.union([ - z.lazy(() => SyncListResponseAzureStackSettings$inboundSchema), - z.any(), - ]), - ).optional(), - gcp: z.nullable( - z.union([ - z.lazy(() => SyncListResponseGcpStackSettings$inboundSchema), - z.any(), - ]), - ).optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => SyncListResponseDomainsKubernetes$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncListResponseDomainsCertificateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseDomainsCertificate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDomainsCertificate' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCustomDomains$inboundSchema: z.ZodType< - SyncListResponseCustomDomains, - unknown -> = z.object({ - certificate: z.lazy(() => SyncListResponseDomainsCertificate$inboundSchema), - domain: z.string(), -}); - -export function syncListResponseCustomDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCustomDomains' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseDomains$inboundSchema: z.ZodType< - SyncListResponseDomains, - unknown -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => SyncListResponseCustomDomains$inboundSchema), - ), - ).optional(), -}); - -export function syncListResponseDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDomains' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseDomainsUnion$inboundSchema: z.ZodType< - SyncListResponseDomainsUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseDomains$inboundSchema), z.any()]); - -export function syncListResponseDomainsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDomainsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseExternalBindings$inboundSchema: z.ZodType< - SyncListResponseExternalBindings, - unknown -> = z.object({}); - -export function syncListResponseExternalBindingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseExternalBindings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExternalBindings' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseHeartbeats$inboundSchema: z.ZodEnum< - typeof SyncListResponseHeartbeats -> = z.enum(SyncListResponseHeartbeats); - -/** @internal */ -export const SyncListResponseCloud$inboundSchema: z.ZodType< - SyncListResponseCloud, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); - -export function syncListResponseCloudFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseCloud$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCloud' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCloudUnion$inboundSchema: z.ZodType< - SyncListResponseCloudUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseCloud$inboundSchema), z.any()]); - -export function syncListResponseCloudUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCloudUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseOwnership$inboundSchema: z.ZodEnum< - typeof SyncListResponseOwnership -> = z.enum(SyncListResponseOwnership); - -/** @internal */ -export const SyncListResponseCluster$inboundSchema: z.ZodType< - SyncListResponseCluster, - unknown -> = z.object({ - cloud: z.nullable( - z.union([z.lazy(() => SyncListResponseCloud$inboundSchema), z.any()]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: SyncListResponseOwnership$inboundSchema, -}); - -export function syncListResponseClusterFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseCluster$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCluster' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseClusterUnion$inboundSchema: z.ZodType< - SyncListResponseClusterUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseCluster$inboundSchema), z.any()]); - -export function syncListResponseClusterUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseClusterUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateNone2$inboundSchema: z.ZodType< - SyncListResponseCertificateNone2, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function syncListResponseCertificateNone2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseCertificateNone2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateNone2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateManagedTLSSecret2$inboundSchema: - z.ZodType = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function syncListResponseCertificateManagedTLSSecret2FromJSON( - jsonString: string, -): SafeParseResult< - SyncListResponseCertificateManagedTLSSecret2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncListResponseCertificateManagedTLSSecret2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseCertificateManagedTLSSecret2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateAwsAcmArn2$inboundSchema: z.ZodType< - SyncListResponseCertificateAwsAcmArn2, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); - -export function syncListResponseCertificateAwsAcmArn2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseCertificateAwsAcmArn2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateAwsAcmArn2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateManagedAcmImport2$inboundSchema: - z.ZodType = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function syncListResponseCertificateManagedAcmImport2FromJSON( - jsonString: string, -): SafeParseResult< - SyncListResponseCertificateManagedAcmImport2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncListResponseCertificateManagedAcmImport2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseCertificateManagedAcmImport2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateTLSSecretRef2$inboundSchema: z.ZodType< - SyncListResponseCertificateTLSSecretRef2, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), -}); - -export function syncListResponseCertificateTLSSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncListResponseCertificateTLSSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncListResponseCertificateTLSSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseCertificateTLSSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateUnion2$inboundSchema: z.ZodType< - SyncListResponseCertificateUnion2, - unknown -> = z.union([ - z.lazy(() => SyncListResponseCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedAcmImport2$inboundSchema), - z.lazy(() => SyncListResponseCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedTLSSecret2$inboundSchema), - z.lazy(() => SyncListResponseCertificateNone2$inboundSchema), -]); - -export function syncListResponseCertificateUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseCertificateUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseModeCustom$inboundSchema: z.ZodEnum< - typeof SyncListResponseModeCustom -> = z.enum(SyncListResponseModeCustom); - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: - z.ZodEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum4 - > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum4); - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: - z.ZodType< - SyncListResponseProviderAzureApplicationGatewayForContainers4, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncListResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, - }); - -export function syncListResponseProviderAzureApplicationGatewayForContainers4FromJSON( - jsonString: string, -): SafeParseResult< - SyncListResponseProviderAzureApplicationGatewayForContainers4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers4' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderGkeGatewayEnum4$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderGkeGatewayEnum4 -> = z.enum(SyncListResponseProviderGkeGatewayEnum4); - -/** @internal */ -export const SyncListResponseProviderGkeGateway4$inboundSchema: z.ZodType< - SyncListResponseProviderGkeGateway4, - unknown -> = z.object({ - provider: SyncListResponseProviderGkeGatewayEnum4$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function syncListResponseProviderGkeGateway4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseProviderGkeGateway4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderGkeGateway4' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderAwsAlbEnum4 -> = z.enum(SyncListResponseProviderAwsAlbEnum4); - -/** @internal */ -export const SyncListResponseProviderAwsAlb4$inboundSchema: z.ZodType< - SyncListResponseProviderAwsAlb4, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncListResponseProviderAwsAlbEnum4$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function syncListResponseProviderAwsAlb4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAwsAlb4' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderUnion4$inboundSchema: z.ZodType< - SyncListResponseProviderUnion4, - unknown -> = z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway4$inboundSchema), - z.any(), -]); - -export function syncListResponseProviderUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderUnion4' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseRouteGateway2$inboundSchema: z.ZodType< - SyncListResponseRouteGateway2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway4$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function syncListResponseRouteGateway2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteGateway2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: - z.ZodEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum3 - > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum3); - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema: - z.ZodType< - SyncListResponseProviderAzureApplicationGatewayForContainers3, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncListResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, - }); - -export function syncListResponseProviderAzureApplicationGatewayForContainers3FromJSON( - jsonString: string, -): SafeParseResult< - SyncListResponseProviderAzureApplicationGatewayForContainers3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers3' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderGkeGatewayEnum3$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderGkeGatewayEnum3 -> = z.enum(SyncListResponseProviderGkeGatewayEnum3); - -/** @internal */ -export const SyncListResponseProviderGkeGateway3$inboundSchema: z.ZodType< - SyncListResponseProviderGkeGateway3, - unknown -> = z.object({ - provider: SyncListResponseProviderGkeGatewayEnum3$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function syncListResponseProviderGkeGateway3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseProviderGkeGateway3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderGkeGateway3' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderAwsAlbEnum3$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderAwsAlbEnum3 -> = z.enum(SyncListResponseProviderAwsAlbEnum3); - -/** @internal */ -export const SyncListResponseProviderAwsAlb3$inboundSchema: z.ZodType< - SyncListResponseProviderAwsAlb3, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncListResponseProviderAwsAlbEnum3$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function syncListResponseProviderAwsAlb3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseProviderAwsAlb3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAwsAlb3' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderUnion3$inboundSchema: z.ZodType< - SyncListResponseProviderUnion3, - unknown -> = z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb3$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway3$inboundSchema), - z.any(), -]); - -export function syncListResponseProviderUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseProviderUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderUnion3' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseRouteIngress2$inboundSchema: z.ZodType< - SyncListResponseRouteIngress2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb3$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway3$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function syncListResponseRouteIngress2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseRouteIngress2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteIngress2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseRouteUnion2$inboundSchema: z.ZodType< - SyncListResponseRouteUnion2, - unknown -> = z.union([ - z.lazy(() => SyncListResponseRouteIngress2$inboundSchema), - z.lazy(() => SyncListResponseRouteGateway2$inboundSchema), -]); - -export function syncListResponseRouteUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseRouteUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseExposureCustom$inboundSchema: z.ZodType< - SyncListResponseExposureCustom, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => SyncListResponseCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedAcmImport2$inboundSchema), - z.lazy(() => SyncListResponseCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedTLSSecret2$inboundSchema), - z.lazy(() => SyncListResponseCertificateNone2$inboundSchema), - ]), - domain: z.string(), - mode: SyncListResponseModeCustom$inboundSchema, - route: z.union([ - z.lazy(() => SyncListResponseRouteIngress2$inboundSchema), - z.lazy(() => SyncListResponseRouteGateway2$inboundSchema), - ]), -}); - -export function syncListResponseExposureCustomFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseExposureCustom$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExposureCustom' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateNone1$inboundSchema: z.ZodType< - SyncListResponseCertificateNone1, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function syncListResponseCertificateNone1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseCertificateNone1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateNone1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateManagedTLSSecret1$inboundSchema: - z.ZodType = z.object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function syncListResponseCertificateManagedTLSSecret1FromJSON( - jsonString: string, -): SafeParseResult< - SyncListResponseCertificateManagedTLSSecret1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncListResponseCertificateManagedTLSSecret1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseCertificateManagedTLSSecret1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateAwsAcmArn1$inboundSchema: z.ZodType< - SyncListResponseCertificateAwsAcmArn1, - unknown -> = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), -}); - -export function syncListResponseCertificateAwsAcmArn1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseCertificateAwsAcmArn1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateAwsAcmArn1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateManagedAcmImport1$inboundSchema: - z.ZodType = z.object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function syncListResponseCertificateManagedAcmImport1FromJSON( - jsonString: string, -): SafeParseResult< - SyncListResponseCertificateManagedAcmImport1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncListResponseCertificateManagedAcmImport1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseCertificateManagedAcmImport1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateTLSSecretRef1$inboundSchema: z.ZodType< - SyncListResponseCertificateTLSSecretRef1, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), -}); - -export function syncListResponseCertificateTLSSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncListResponseCertificateTLSSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncListResponseCertificateTLSSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseCertificateTLSSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseCertificateUnion1$inboundSchema: z.ZodType< - SyncListResponseCertificateUnion1, - unknown -> = z.union([ - z.lazy(() => SyncListResponseCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedAcmImport1$inboundSchema), - z.lazy(() => SyncListResponseCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedTLSSecret1$inboundSchema), - z.lazy(() => SyncListResponseCertificateNone1$inboundSchema), -]); - -export function syncListResponseCertificateUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseCertificateUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseCertificateUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseModeGenerated$inboundSchema: z.ZodEnum< - typeof SyncListResponseModeGenerated -> = z.enum(SyncListResponseModeGenerated); - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: - z.ZodEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum2 - > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum2); - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema: - z.ZodType< - SyncListResponseProviderAzureApplicationGatewayForContainers2, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncListResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, - }); - -export function syncListResponseProviderAzureApplicationGatewayForContainers2FromJSON( - jsonString: string, -): SafeParseResult< - SyncListResponseProviderAzureApplicationGatewayForContainers2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderGkeGatewayEnum2$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderGkeGatewayEnum2 -> = z.enum(SyncListResponseProviderGkeGatewayEnum2); - -/** @internal */ -export const SyncListResponseProviderGkeGateway2$inboundSchema: z.ZodType< - SyncListResponseProviderGkeGateway2, - unknown -> = z.object({ - provider: SyncListResponseProviderGkeGatewayEnum2$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function syncListResponseProviderGkeGateway2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseProviderGkeGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderGkeGateway2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderAwsAlbEnum2$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderAwsAlbEnum2 -> = z.enum(SyncListResponseProviderAwsAlbEnum2); - -/** @internal */ -export const SyncListResponseProviderAwsAlb2$inboundSchema: z.ZodType< - SyncListResponseProviderAwsAlb2, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncListResponseProviderAwsAlbEnum2$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function syncListResponseProviderAwsAlb2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseProviderAwsAlb2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAwsAlb2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderUnion2$inboundSchema: z.ZodType< - SyncListResponseProviderUnion2, - unknown -> = z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb2$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway2$inboundSchema), - z.any(), -]); - -export function syncListResponseProviderUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseProviderUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseRouteGateway1$inboundSchema: z.ZodType< - SyncListResponseRouteGateway1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb2$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway2$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function syncListResponseRouteGateway1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseRouteGateway1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteGateway1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: - z.ZodEnum< - typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum1 - > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum1); - -/** @internal */ -export const SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema: - z.ZodType< - SyncListResponseProviderAzureApplicationGatewayForContainers1, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncListResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, - }); - -export function syncListResponseProviderAzureApplicationGatewayForContainers1FromJSON( - jsonString: string, -): SafeParseResult< - SyncListResponseProviderAzureApplicationGatewayForContainers1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderGkeGatewayEnum1$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderGkeGatewayEnum1 -> = z.enum(SyncListResponseProviderGkeGatewayEnum1); - -/** @internal */ -export const SyncListResponseProviderGkeGateway1$inboundSchema: z.ZodType< - SyncListResponseProviderGkeGateway1, - unknown -> = z.object({ - provider: SyncListResponseProviderGkeGatewayEnum1$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function syncListResponseProviderGkeGateway1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseProviderGkeGateway1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderGkeGateway1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderAwsAlbEnum1$inboundSchema: z.ZodEnum< - typeof SyncListResponseProviderAwsAlbEnum1 -> = z.enum(SyncListResponseProviderAwsAlbEnum1); - -/** @internal */ -export const SyncListResponseProviderAwsAlb1$inboundSchema: z.ZodType< - SyncListResponseProviderAwsAlb1, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncListResponseProviderAwsAlbEnum1$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function syncListResponseProviderAwsAlb1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseProviderAwsAlb1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderAwsAlb1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseProviderUnion1$inboundSchema: z.ZodType< - SyncListResponseProviderUnion1, - unknown -> = z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb1$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway1$inboundSchema), - z.any(), -]); - -export function syncListResponseProviderUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseProviderUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseProviderUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseRouteIngress1$inboundSchema: z.ZodType< - SyncListResponseRouteIngress1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncListResponseProviderAwsAlb1$inboundSchema), - z.lazy(() => - SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => SyncListResponseProviderGkeGateway1$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function syncListResponseRouteIngress1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseRouteIngress1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteIngress1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseRouteUnion1$inboundSchema: z.ZodType< - SyncListResponseRouteUnion1, - unknown -> = z.union([ - z.lazy(() => SyncListResponseRouteIngress1$inboundSchema), - z.lazy(() => SyncListResponseRouteGateway1$inboundSchema), -]); - -export function syncListResponseRouteUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseRouteUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseRouteUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseExposureGenerated$inboundSchema: z.ZodType< - SyncListResponseExposureGenerated, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => SyncListResponseCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedAcmImport1$inboundSchema), - z.lazy(() => SyncListResponseCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => SyncListResponseCertificateManagedTLSSecret1$inboundSchema), - z.lazy(() => SyncListResponseCertificateNone1$inboundSchema), - ]), - mode: SyncListResponseModeGenerated$inboundSchema, - route: z.union([ - z.lazy(() => SyncListResponseRouteIngress1$inboundSchema), - z.lazy(() => SyncListResponseRouteGateway1$inboundSchema), - ]), -}); - -export function syncListResponseExposureGeneratedFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseExposureGenerated$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExposureGenerated' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseModeDisabled$inboundSchema: z.ZodEnum< - typeof SyncListResponseModeDisabled -> = z.enum(SyncListResponseModeDisabled); - -/** @internal */ -export const SyncListResponseExposureDisabled$inboundSchema: z.ZodType< - SyncListResponseExposureDisabled, - unknown -> = z.object({ - mode: SyncListResponseModeDisabled$inboundSchema, -}); - -export function syncListResponseExposureDisabledFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseExposureDisabled$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExposureDisabled' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseExposureUnion$inboundSchema: z.ZodType< - SyncListResponseExposureUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseExposureCustom$inboundSchema), - z.lazy(() => SyncListResponseExposureGenerated$inboundSchema), - z.lazy(() => SyncListResponseExposureDisabled$inboundSchema), - z.any(), -]); - -export function syncListResponseExposureUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseExposureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseExposureUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseKubernetes$inboundSchema: z.ZodType< - SyncListResponseKubernetes, - unknown -> = z.object({ - cluster: z.nullable( - z.union([z.lazy(() => SyncListResponseCluster$inboundSchema), z.any()]), - ).optional(), - exposure: z.nullable( - z.union([ - z.lazy(() => SyncListResponseExposureCustom$inboundSchema), - z.lazy(() => SyncListResponseExposureGenerated$inboundSchema), - z.lazy(() => SyncListResponseExposureDisabled$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncListResponseKubernetesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseKubernetes' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseKubernetesUnion$inboundSchema: z.ZodType< - SyncListResponseKubernetesUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseKubernetes$inboundSchema), z.any()]); - -export function syncListResponseKubernetesUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseKubernetesUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseKubernetesUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTypeByoVnetAzure$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeByoVnetAzure -> = z.enum(SyncListResponseTypeByoVnetAzure); - -/** @internal */ -export const SyncListResponseNetworkByoVnetAzure$inboundSchema: z.ZodType< - SyncListResponseNetworkByoVnetAzure, - unknown -> = z.object({ - application_gateway_subnet_name: z.nullable(z.string()).optional(), - private_subnet_name: z.string(), - public_subnet_name: z.string(), - type: SyncListResponseTypeByoVnetAzure$inboundSchema, - vnet_resource_id: z.string(), -}).transform((v) => { - return remap$(v, { - "application_gateway_subnet_name": "applicationGatewaySubnetName", - "private_subnet_name": "privateSubnetName", - "public_subnet_name": "publicSubnetName", - "vnet_resource_id": "vnetResourceId", - }); -}); - -export function syncListResponseNetworkByoVnetAzureFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseNetworkByoVnetAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkByoVnetAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTypeByoVpcGcp$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeByoVpcGcp -> = z.enum(SyncListResponseTypeByoVpcGcp); - -/** @internal */ -export const SyncListResponseNetworkByoVpcGcp$inboundSchema: z.ZodType< - SyncListResponseNetworkByoVpcGcp, - unknown -> = z.object({ - network_name: z.string(), - region: z.string(), - subnet_name: z.string(), - type: SyncListResponseTypeByoVpcGcp$inboundSchema, -}).transform((v) => { - return remap$(v, { - "network_name": "networkName", - "subnet_name": "subnetName", - }); -}); - -export function syncListResponseNetworkByoVpcGcpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseNetworkByoVpcGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkByoVpcGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTypeByoVpcAws$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeByoVpcAws -> = z.enum(SyncListResponseTypeByoVpcAws); - -/** @internal */ -export const SyncListResponseNetworkByoVpcAws$inboundSchema: z.ZodType< - SyncListResponseNetworkByoVpcAws, - unknown -> = z.object({ - private_subnet_ids: z.array(z.string()), - public_subnet_ids: z.array(z.string()), - security_group_ids: z.array(z.string()).optional(), - type: SyncListResponseTypeByoVpcAws$inboundSchema, - vpc_id: z.string(), -}).transform((v) => { - return remap$(v, { - "private_subnet_ids": "privateSubnetIds", - "public_subnet_ids": "publicSubnetIds", - "security_group_ids": "securityGroupIds", - "vpc_id": "vpcId", - }); -}); - -export function syncListResponseNetworkByoVpcAwsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseNetworkByoVpcAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkByoVpcAws' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTypeCreate$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeCreate -> = z.enum(SyncListResponseTypeCreate); - -/** @internal */ -export const SyncListResponseNetworkCreate$inboundSchema: z.ZodType< - SyncListResponseNetworkCreate, - unknown -> = z.object({ - availability_zones: z.int().optional(), - cidr: z.nullable(z.string()).optional(), - type: SyncListResponseTypeCreate$inboundSchema, -}).transform((v) => { - return remap$(v, { - "availability_zones": "availabilityZones", - }); -}); - -export function syncListResponseNetworkCreateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseNetworkCreate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkCreate' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTypeUseDefault$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeUseDefault -> = z.enum(SyncListResponseTypeUseDefault); - -/** @internal */ -export const SyncListResponseNetworkUseDefault$inboundSchema: z.ZodType< - SyncListResponseNetworkUseDefault, - unknown -> = z.object({ - type: SyncListResponseTypeUseDefault$inboundSchema, -}); - -export function syncListResponseNetworkUseDefaultFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseNetworkUseDefault$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkUseDefault' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseNetworkUnion$inboundSchema: z.ZodType< - SyncListResponseNetworkUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseNetworkByoVpcAws$inboundSchema), - z.lazy(() => SyncListResponseNetworkByoVpcGcp$inboundSchema), - z.lazy(() => SyncListResponseNetworkByoVnetAzure$inboundSchema), - z.lazy(() => SyncListResponseNetworkUseDefault$inboundSchema), - z.lazy(() => SyncListResponseNetworkCreate$inboundSchema), - z.any(), -]); - -export function syncListResponseNetworkUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseNetworkUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseNetworkUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTelemetry$inboundSchema: z.ZodEnum< - typeof SyncListResponseTelemetry -> = z.enum(SyncListResponseTelemetry); - -/** @internal */ -export const SyncListResponseUpdates$inboundSchema: z.ZodEnum< - typeof SyncListResponseUpdates -> = z.enum(SyncListResponseUpdates); - -/** @internal */ -export const SyncListResponseStackSettings$inboundSchema: z.ZodType< - SyncListResponseStackSettings, - unknown -> = z.object({ - compute: z.nullable( - z.union([z.lazy(() => SyncListResponseCompute$inboundSchema), z.any()]), - ).optional(), - deploymentModel: SyncListResponseDeploymentModel$inboundSchema.optional(), - domains: z.nullable( - z.union([z.lazy(() => SyncListResponseDomains$inboundSchema), z.any()]), - ).optional(), - externalBindings: z.nullable( - z.lazy(() => SyncListResponseExternalBindings$inboundSchema), - ).optional(), - heartbeats: SyncListResponseHeartbeats$inboundSchema.optional(), - kubernetes: z.nullable( - z.union([z.lazy(() => SyncListResponseKubernetes$inboundSchema), z.any()]), - ).optional(), - network: z.nullable( - z.union([ - z.lazy(() => SyncListResponseNetworkByoVpcAws$inboundSchema), - z.lazy(() => SyncListResponseNetworkByoVpcGcp$inboundSchema), - z.lazy(() => SyncListResponseNetworkByoVnetAzure$inboundSchema), - z.lazy(() => SyncListResponseNetworkUseDefault$inboundSchema), - z.lazy(() => SyncListResponseNetworkCreate$inboundSchema), - z.any(), - ]), - ).optional(), - telemetry: SyncListResponseTelemetry$inboundSchema.optional(), - updates: SyncListResponseUpdates$inboundSchema.optional(), -}); - -export function syncListResponseStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseStackSettings' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseStackStatePlatform$inboundSchema: z.ZodEnum< - typeof SyncListResponseStackStatePlatform -> = z.enum(SyncListResponseStackStatePlatform); - -/** @internal */ -export const SyncListResponseStackStateConfig$inboundSchema: z.ZodType< - SyncListResponseStackStateConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncListResponseStackStateConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseStackStateConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseStackStateConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseControllerPlatformEnum$inboundSchema: z.ZodEnum< - typeof SyncListResponseControllerPlatformEnum -> = z.enum(SyncListResponseControllerPlatformEnum); - -/** @internal */ -export const SyncListResponseControllerPlatformUnion$inboundSchema: z.ZodType< - SyncListResponseControllerPlatformUnion, - unknown -> = z.union([SyncListResponseControllerPlatformEnum$inboundSchema, z.any()]); - -export function syncListResponseControllerPlatformUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncListResponseControllerPlatformUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncListResponseControllerPlatformUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncListResponseControllerPlatformUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseStackStateDependency$inboundSchema: z.ZodType< - SyncListResponseStackStateDependency, - unknown -> = z.object({ - id: z.string(), - type: z.string(), -}); - -export function syncListResponseStackStateDependencyFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseStackStateDependency$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseStackStateDependency' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseErrorStackState$inboundSchema: z.ZodType< - SyncListResponseErrorStackState, - unknown -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); - -export function syncListResponseErrorStackStateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseErrorStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseErrorStackState' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseErrorUnion$inboundSchema: z.ZodType< - SyncListResponseErrorUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseErrorStackState$inboundSchema), - z.any(), -]); - -export function syncListResponseErrorUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseErrorUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseLifecycleStackStateEnum$inboundSchema: z.ZodEnum< - typeof SyncListResponseLifecycleStackStateEnum -> = z.enum(SyncListResponseLifecycleStackStateEnum); - -/** @internal */ -export const SyncListResponseLifecycleUnion$inboundSchema: z.ZodType< - SyncListResponseLifecycleUnion, - unknown -> = z.union([SyncListResponseLifecycleStackStateEnum$inboundSchema, z.any()]); - -export function syncListResponseLifecycleUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseLifecycleUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseOutputs$inboundSchema: z.ZodType< - SyncListResponseOutputs, - unknown -> = collectExtraKeys$( - z.object({ - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncListResponseOutputsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseOutputs$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOutputs' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseOutputsUnion$inboundSchema: z.ZodType< - SyncListResponseOutputsUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseOutputs$inboundSchema), z.any()]); - -export function syncListResponseOutputsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOutputsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponsePreviousConfig$inboundSchema: z.ZodType< - SyncListResponsePreviousConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncListResponsePreviousConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponsePreviousConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponsePreviousConfigUnion$inboundSchema: z.ZodType< - SyncListResponsePreviousConfigUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponsePreviousConfig$inboundSchema), - z.any(), -]); - -export function syncListResponsePreviousConfigUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponsePreviousConfigUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponsePreviousConfigUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseStackStateStatus$inboundSchema: z.ZodEnum< - typeof SyncListResponseStackStateStatus -> = z.enum(SyncListResponseStackStateStatus); - -/** @internal */ -export const SyncListResponseStackStateResources$inboundSchema: z.ZodType< - SyncListResponseStackStateResources, - unknown -> = z.object({ - _internal: z.nullable(z.any()).optional(), - config: z.lazy(() => SyncListResponseStackStateConfig$inboundSchema), - controllerPlatform: z.nullable( - z.union([SyncListResponseControllerPlatformEnum$inboundSchema, z.any()]), - ).optional(), - dependencies: z.array( - z.lazy(() => SyncListResponseStackStateDependency$inboundSchema), - ).optional(), - error: z.nullable( - z.union([ - z.lazy(() => SyncListResponseErrorStackState$inboundSchema), - z.any(), - ]), - ).optional(), - lastFailedState: z.nullable(z.any()).optional(), - lifecycle: z.nullable( - z.union([SyncListResponseLifecycleStackStateEnum$inboundSchema, z.any()]), - ).optional(), - outputs: z.nullable( - z.union([z.lazy(() => SyncListResponseOutputs$inboundSchema), z.any()]), - ).optional(), - previousConfig: z.nullable( - z.union([ - z.lazy(() => SyncListResponsePreviousConfig$inboundSchema), - z.any(), - ]), - ).optional(), - remoteBindingParams: z.nullable(z.any()).optional(), - retryAttempt: z.int().optional(), - status: SyncListResponseStackStateStatus$inboundSchema, - type: z.string(), -}).transform((v) => { - return remap$(v, { - "_internal": "internal", - }); -}); - -export function syncListResponseStackStateResourcesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseStackStateResources$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseStackStateResources' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseStackState$inboundSchema: z.ZodType< - SyncListResponseStackState, - unknown -> = z.object({ - platform: SyncListResponseStackStatePlatform$inboundSchema, - resourcePrefix: z.string(), - resources: z.record( - z.string(), - z.lazy(() => SyncListResponseStackStateResources$inboundSchema), - ), -}); - -export function syncListResponseStackStateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseStackState' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTypeStringList$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeStringList -> = z.enum(SyncListResponseTypeStringList); - -/** @internal */ -export const SyncListResponseDefaultStringList$inboundSchema: z.ZodType< - SyncListResponseDefaultStringList, - unknown -> = z.object({ - type: SyncListResponseTypeStringList$inboundSchema, - value: z.array(z.string()), -}); - -export function syncListResponseDefaultStringListFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseDefaultStringList$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDefaultStringList' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTypeBoolean$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeBoolean -> = z.enum(SyncListResponseTypeBoolean); - -/** @internal */ -export const SyncListResponseDefaultBoolean$inboundSchema: z.ZodType< - SyncListResponseDefaultBoolean, - unknown -> = z.object({ - type: SyncListResponseTypeBoolean$inboundSchema, - value: z.boolean(), -}); - -export function syncListResponseDefaultBooleanFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseDefaultBoolean$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDefaultBoolean' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTypeNumber$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeNumber -> = z.enum(SyncListResponseTypeNumber); - -/** @internal */ -export const SyncListResponseDefaultNumber$inboundSchema: z.ZodType< - SyncListResponseDefaultNumber, - unknown -> = z.object({ - type: SyncListResponseTypeNumber$inboundSchema, - value: z.string(), -}); - -export function syncListResponseDefaultNumberFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseDefaultNumber$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDefaultNumber' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTypeString$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeString -> = z.enum(SyncListResponseTypeString); - -/** @internal */ -export const SyncListResponseDefaultString$inboundSchema: z.ZodType< - SyncListResponseDefaultString, - unknown -> = z.object({ - type: SyncListResponseTypeString$inboundSchema, - value: z.string(), -}); - -export function syncListResponseDefaultStringFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseDefaultString$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDefaultString' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseDefaultUnion$inboundSchema: z.ZodType< - SyncListResponseDefaultUnion, - unknown -> = z.union([ - z.lazy(() => SyncListResponseDefaultString$inboundSchema), - z.lazy(() => SyncListResponseDefaultNumber$inboundSchema), - z.lazy(() => SyncListResponseDefaultBoolean$inboundSchema), - z.lazy(() => SyncListResponseDefaultStringList$inboundSchema), - z.any(), -]); - -export function syncListResponseDefaultUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseDefaultUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseDefaultUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseTypeEnvEnum$inboundSchema: z.ZodEnum< - typeof SyncListResponseTypeEnvEnum -> = z.enum(SyncListResponseTypeEnvEnum); - -/** @internal */ -export const SyncListResponseTypeUnion$inboundSchema: z.ZodType< - SyncListResponseTypeUnion, - unknown -> = z.union([SyncListResponseTypeEnvEnum$inboundSchema, z.any()]); - -export function syncListResponseTypeUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseTypeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseTypeUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseEnv$inboundSchema: z.ZodType< - SyncListResponseEnv, - unknown -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([SyncListResponseTypeEnvEnum$inboundSchema, z.any()]), - ).optional(), -}); - -export function syncListResponseEnvFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseEnv' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseKind$inboundSchema: z.ZodEnum< - typeof SyncListResponseKind -> = z.enum(SyncListResponseKind); - -/** @internal */ -export const SyncListResponsePreparedStackPlatform$inboundSchema: z.ZodEnum< - typeof SyncListResponsePreparedStackPlatform -> = z.enum(SyncListResponsePreparedStackPlatform); - -/** @internal */ -export const SyncListResponseProvidedBy$inboundSchema: z.ZodEnum< - typeof SyncListResponseProvidedBy -> = z.enum(SyncListResponseProvidedBy); - -/** @internal */ -export const SyncListResponseValidation$inboundSchema: z.ZodType< - SyncListResponseValidation, - unknown -> = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), -}); - -export function syncListResponseValidationFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseValidation$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseValidation' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseValidationUnion$inboundSchema: z.ZodType< - SyncListResponseValidationUnion, - unknown -> = z.union([z.lazy(() => SyncListResponseValidation$inboundSchema), z.any()]); - -export function syncListResponseValidationUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseValidationUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseValidationUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseInput$inboundSchema: z.ZodType< - SyncListResponseInput, - unknown -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => SyncListResponseDefaultString$inboundSchema), - z.lazy(() => SyncListResponseDefaultNumber$inboundSchema), - z.lazy(() => SyncListResponseDefaultBoolean$inboundSchema), - z.lazy(() => SyncListResponseDefaultStringList$inboundSchema), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array(z.lazy(() => SyncListResponseEnv$inboundSchema)).optional(), - id: z.string(), - kind: SyncListResponseKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncListResponsePreparedStackPlatform$inboundSchema), - ).optional(), - providedBy: z.array(SyncListResponseProvidedBy$inboundSchema), - required: z.boolean(), - validation: z.nullable( - z.union([z.lazy(() => SyncListResponseValidation$inboundSchema), z.any()]), - ).optional(), -}); - -export function syncListResponseInputFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseInput$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseInput' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseManagementEnum$inboundSchema: z.ZodEnum< - typeof SyncListResponseManagementEnum -> = z.enum(SyncListResponseManagementEnum); - -/** @internal */ -export const SyncListResponseOverrideAwResource$inboundSchema: z.ZodType< - SyncListResponseOverrideAwResource, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function syncListResponseOverrideAwResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncListResponseOverrideAwResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncListResponseOverrideAwStack$inboundSchema: z.ZodType< - SyncListResponseOverrideAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function syncListResponseOverrideAwStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseOverrideAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAwStack' from JSON`, - ); -} + managingTenantId: string; + /** + * OIDC issuer URL trusted by the target-side managed identity. + */ + oidcIssuer: string; + /** + * OIDC subject claim trusted by the target-side managed identity. + */ + oidcSubject: string; + platform: SyncListResponseManagementConfigPlatformAzure; +}; -/** @internal */ -export const SyncListResponseOverrideAwBinding$inboundSchema: z.ZodType< - SyncListResponseOverrideAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => SyncListResponseOverrideAwResource$inboundSchema) - .optional(), - stack: z.lazy(() => SyncListResponseOverrideAwStack$inboundSchema).optional(), -}); +export const SyncListResponseManagementConfigPlatformGcp = { + Gcp: "gcp", +} as const; +export type SyncListResponseManagementConfigPlatformGcp = ClosedEnum< + typeof SyncListResponseManagementConfigPlatformGcp +>; -export function syncListResponseOverrideAwBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseOverrideAwBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAwBinding' from JSON`, - ); -} +/** + * GCP management configuration extracted from stack settings + */ +export type SyncListResponseManagementConfigGcp = { + /** + * Service account email for management roles + */ + serviceAccountEmail: string; + platform: SyncListResponseManagementConfigPlatformGcp; +}; -/** @internal */ -export const SyncListResponseOverrideEffect$inboundSchema: z.ZodEnum< - typeof SyncListResponseOverrideEffect -> = z.enum(SyncListResponseOverrideEffect); +export const SyncListResponseManagementConfigPlatformAws = { + Aws: "aws", +} as const; +export type SyncListResponseManagementConfigPlatformAws = ClosedEnum< + typeof SyncListResponseManagementConfigPlatformAws +>; -/** @internal */ -export const SyncListResponseOverrideAwGrant$inboundSchema: z.ZodType< - SyncListResponseOverrideAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); +/** + * AWS management configuration extracted from stack settings + */ +export type SyncListResponseManagementConfigAws = { + /** + * The managing AWS IAM role ARN that can assume cross-account roles + */ + managingRoleArn: string; + platform: SyncListResponseManagementConfigPlatformAws; +}; -export function syncListResponseOverrideAwGrantFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseOverrideAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAwGrant' from JSON`, - ); -} +/** + * Management configuration for different cloud platforms. + * + * @remarks + * + * Platform-derived configuration for cross-account/cross-tenant access. + * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + */ +export type SyncListResponseManagementConfigUnion = + | SyncListResponseManagementConfigAzure + | SyncListResponseManagementConfigAws + | SyncListResponseManagementConfigGcp + | SyncListResponseManagementConfigKubernetes + | any; -/** @internal */ -export const SyncListResponseOverrideAw$inboundSchema: z.ZodType< - SyncListResponseOverrideAw, - unknown -> = z.object({ - binding: z.lazy(() => SyncListResponseOverrideAwBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - effect: SyncListResponseOverrideEffect$inboundSchema.optional(), - grant: z.lazy(() => SyncListResponseOverrideAwGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); +export type SyncListResponseDeployment = { + /** + * Unique identifier for the deployment. + */ + id: string; + /** + * Deployment name. + */ + name: string; + /** + * Public subdomain for auto-generated domains + */ + publicSubdomain?: string | null | undefined; + /** + * Deployment status in the deployment lifecycle + */ + status: SyncListResponseStatus; + /** + * Unique identifier for the project. + */ + projectId: string; + /** + * Target platform for the deployment + */ + platform: SyncListResponsePlatform; + /** + * Underlying cloud platform for Kubernetes deployments. + */ + basePlatform?: SyncListResponseBasePlatform | null | undefined; + /** + * Cloud region or location for the deployment. + */ + region?: string | null | undefined; + /** + * DeploymentState protocol version owned by the runtime/manager + */ + deploymentProtocolVersion: number; + /** + * ID of deployment group this deployment belongs to + */ + deploymentGroupId: string; + /** + * Cloud environment information + */ + environmentInfo?: SyncListResponseEnvironmentInfoUnion | null | undefined; + /** + * User-provided configuration (network, deployment model, approvals) + */ + stackSettings: SyncListResponseStackSettings; + /** + * State of infrastructure components managed by this deployment + */ + stackState?: SyncListResponseStackState | null | undefined; + /** + * Runtime metadata for deployment state persistence + */ + runtimeMetadata?: SyncListResponseRuntimeMetadata | null | undefined; + /** + * ID of the currently deployed release (actual state) + */ + currentReleaseId?: string | null | undefined; + /** + * ID of the desired release for deployment/update (desired state) + */ + desiredReleaseId?: string | null | undefined; + /** + * ID of the pinned release + */ + pinnedReleaseId?: string | null | undefined; + /** + * Setup source that imported this deployment + */ + importSource?: SyncListResponseImportSource | null | undefined; + /** + * Setup method that created the deployment record and owns setup-time resources. + */ + setupMethod?: SyncListResponseSetupMethod | null | undefined; + /** + * Setup method metadata needed to guide privileged teardown. + */ + setupMetadata?: { [k: string]: any | null } | null | undefined; + /** + * Imported setup target for compatibility checks + */ + setupTarget?: string | null | undefined; + /** + * Imported setup compatibility fingerprint + */ + setupFingerprint?: string | null | undefined; + /** + * Imported setup fingerprint algorithm version + */ + setupFingerprintVersion?: number | null | undefined; + /** + * Whether a retry has been requested for a failed deployment + */ + retryRequested: boolean; + /** + * Timestamp of the last received heartbeat from the deployment + */ + lastHeartbeatAt?: Date | null | undefined; + /** + * Latest error information if the deployment is in a failed state + */ + error?: SyncListResponseError | null | undefined; + createdAt: Date; + updatedAt: Date; + managerId: string; + /** + * Unique identifier for the workspace. + */ + workspaceId: string; + /** + * Agent binary version reported on the last sync (e.g. "1.3.5") + */ + agentVersion?: string | null | undefined; + /** + * Agent host OS reported on the last sync + */ + agentOs?: SyncListResponseAgentOs | null | undefined; + /** + * Agent host architecture reported on the last sync + */ + agentArch?: SyncListResponseAgentArch | null | undefined; + /** + * Supervisor regime reported on the last sync. Drives which `agent_target` payload (`binary` vs `helm`) the manager sends. + */ + regime?: SyncListResponseRegime | null | undefined; + /** + * Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry a pinned tag will be pulled from. + */ + agentImageRepository?: string | null | undefined; + /** + * Pinned target agent version (semver). When set and different from agentVersion, the manager drives an upgrade to this version via agent_target. + */ + targetAgentVersion?: string | null | undefined; + userEnvironmentVariables: Array | null; + /** + * Management configuration for different cloud platforms. + * + * @remarks + * + * Platform-derived configuration for cross-account/cross-tenant access. + * This is NOT user-specified - it's derived from the Manager's ServiceAccount. + */ + managementConfig?: + | SyncListResponseManagementConfigAzure + | SyncListResponseManagementConfigAws + | SyncListResponseManagementConfigGcp + | SyncListResponseManagementConfigKubernetes + | any + | null + | undefined; + deploymentToken?: string | null | undefined; + lockedBy?: string | null | undefined; + lockedAt?: Date | null | undefined; +}; -export function syncListResponseOverrideAwFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncListResponseOverrideAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncListResponseOverrideAw' from JSON`, - ); -} +/** + * Full deployment records for manager operation + */ +export type SyncListResponse = { + deployments: Array; +}; /** @internal */ export const SyncListResponseOverrideAzureResource$inboundSchema: z.ZodType< @@ -6284,9 +1861,7 @@ export const SyncListResponseOverridePlatforms$inboundSchema: z.ZodType< SyncListResponseOverridePlatforms, unknown > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => SyncListResponseOverrideAw$inboundSchema)), - ).optional(), + aws: z.nullable(z.array(SyncListResponseOverrideAw$inboundSchema)).optional(), azure: z.nullable( z.array(z.lazy(() => SyncListResponseOverrideAzure$inboundSchema)), ).optional(), @@ -7483,7 +3058,7 @@ export const SyncListResponsePreparedStack$inboundSchema: z.ZodType< unknown > = z.object({ id: z.string(), - inputs: z.array(z.lazy(() => SyncListResponseInput$inboundSchema)).optional(), + inputs: z.array(SyncListResponseInput$inboundSchema).optional(), permissions: z.lazy(() => SyncListResponsePermissions$inboundSchema) .optional(), resources: z.record( @@ -7585,6 +3160,21 @@ export function syncListResponseErrorFromJSON( ); } +/** @internal */ +export const SyncListResponseAgentOs$inboundSchema: z.ZodEnum< + typeof SyncListResponseAgentOs +> = z.enum(SyncListResponseAgentOs); + +/** @internal */ +export const SyncListResponseAgentArch$inboundSchema: z.ZodEnum< + typeof SyncListResponseAgentArch +> = z.enum(SyncListResponseAgentArch); + +/** @internal */ +export const SyncListResponseRegime$inboundSchema: z.ZodEnum< + typeof SyncListResponseRegime +> = z.enum(SyncListResponseRegime); + /** @internal */ export const SyncListResponsePlatformKubernetes$inboundSchema: z.ZodEnum< typeof SyncListResponsePlatformKubernetes @@ -7732,18 +3322,10 @@ export const SyncListResponseDeployment$inboundSchema: z.ZodType< deploymentProtocolVersion: z.int(), deploymentGroupId: z.string(), environmentInfo: z.nullable( - z.union([ - z.lazy(() => SyncListResponseEnvironmentInfoGcp$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoAzure$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoLocal$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoAws$inboundSchema), - z.lazy(() => SyncListResponseEnvironmentInfoTest$inboundSchema), - z.any(), - ]), + SyncListResponseEnvironmentInfoUnion$inboundSchema, ).optional(), - stackSettings: z.lazy(() => SyncListResponseStackSettings$inboundSchema), - stackState: z.nullable(z.lazy(() => SyncListResponseStackState$inboundSchema)) - .optional(), + stackSettings: SyncListResponseStackSettings$inboundSchema, + stackState: z.nullable(SyncListResponseStackState$inboundSchema).optional(), runtimeMetadata: z.nullable( z.lazy(() => SyncListResponseRuntimeMetadata$inboundSchema), ).optional(), @@ -7768,6 +3350,12 @@ export const SyncListResponseDeployment$inboundSchema: z.ZodType< updatedAt: z.iso.datetime({ offset: true }).transform(v => new Date(v)), managerId: z.string(), workspaceId: z.string(), + agentVersion: z.nullable(z.string()).optional(), + agentOs: z.nullable(SyncListResponseAgentOs$inboundSchema).optional(), + agentArch: z.nullable(SyncListResponseAgentArch$inboundSchema).optional(), + regime: z.nullable(SyncListResponseRegime$inboundSchema).optional(), + agentImageRepository: z.nullable(z.string()).optional(), + targetAgentVersion: z.nullable(z.string()).optional(), userEnvironmentVariables: z.nullable( z.array(EnvironmentVariableConfig$inboundSchema), ), diff --git a/client-sdks/platform/typescript/src/models/synclistresponseoverrideaw.ts b/client-sdks/platform/typescript/src/models/synclistresponseoverrideaw.ts new file mode 100644 index 000000000..57615fe00 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/synclistresponseoverrideaw.ts @@ -0,0 +1,4512 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { + collectExtraKeys as collectExtraKeys$, + safeParse, +} from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +/** + * Deployment status in the deployment lifecycle + */ +export const SyncListResponseStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", +} as const; +/** + * Deployment status in the deployment lifecycle + */ +export type SyncListResponseStatus = ClosedEnum; + +/** + * Target platform for the deployment + */ +export const SyncListResponsePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Target platform for the deployment + */ +export type SyncListResponsePlatform = ClosedEnum< + typeof SyncListResponsePlatform +>; + +/** + * Underlying cloud platform for Kubernetes deployments. + */ +export const SyncListResponseBasePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", +} as const; +/** + * Underlying cloud platform for Kubernetes deployments. + */ +export type SyncListResponseBasePlatform = ClosedEnum< + typeof SyncListResponseBasePlatform +>; + +export const SyncListResponsePlatformTest = { + Test: "test", +} as const; +export type SyncListResponsePlatformTest = ClosedEnum< + typeof SyncListResponsePlatformTest +>; + +/** + * Test platform environment information (mock) + */ +export type SyncListResponseEnvironmentInfoTest = { + /** + * Test identifier for this environment + */ + testId: string; + platform: SyncListResponsePlatformTest; +}; + +export const SyncListResponsePlatformLocal = { + Local: "local", +} as const; +export type SyncListResponsePlatformLocal = ClosedEnum< + typeof SyncListResponsePlatformLocal +>; + +/** + * Local platform environment information + */ +export type SyncListResponseEnvironmentInfoLocal = { + /** + * Architecture (e.g., "x86_64", "aarch64") + */ + arch: string; + /** + * Hostname of the machine running the deployment + */ + hostname: string; + /** + * Operating system (e.g., "linux", "macos", "windows") + */ + os: string; + platform: SyncListResponsePlatformLocal; +}; + +export const SyncListResponseEnvironmentInfoPlatformAzure = { + Azure: "azure", +} as const; +export type SyncListResponseEnvironmentInfoPlatformAzure = ClosedEnum< + typeof SyncListResponseEnvironmentInfoPlatformAzure +>; + +/** + * Azure-specific environment information + */ +export type SyncListResponseEnvironmentInfoAzure = { + /** + * Azure location/region + */ + location: string; + /** + * Azure subscription ID + */ + subscriptionId: string; + /** + * Azure tenant ID + */ + tenantId: string; + platform: SyncListResponseEnvironmentInfoPlatformAzure; +}; + +export const SyncListResponseEnvironmentInfoPlatformGcp = { + Gcp: "gcp", +} as const; +export type SyncListResponseEnvironmentInfoPlatformGcp = ClosedEnum< + typeof SyncListResponseEnvironmentInfoPlatformGcp +>; + +/** + * GCP-specific environment information + */ +export type SyncListResponseEnvironmentInfoGcp = { + /** + * GCP project ID (e.g., "my-project") + */ + projectId: string; + /** + * GCP project number (e.g., "123456789012") + */ + projectNumber: string; + /** + * GCP region + */ + region: string; + platform: SyncListResponseEnvironmentInfoPlatformGcp; +}; + +export const SyncListResponseEnvironmentInfoPlatformAws = { + Aws: "aws", +} as const; +export type SyncListResponseEnvironmentInfoPlatformAws = ClosedEnum< + typeof SyncListResponseEnvironmentInfoPlatformAws +>; + +/** + * AWS-specific environment information + */ +export type SyncListResponseEnvironmentInfoAws = { + /** + * AWS account ID + */ + accountId: string; + /** + * AWS region + */ + region: string; + platform: SyncListResponseEnvironmentInfoPlatformAws; +}; + +/** + * Cloud environment information + */ +export type SyncListResponseEnvironmentInfoUnion = + | SyncListResponseEnvironmentInfoGcp + | SyncListResponseEnvironmentInfoAzure + | SyncListResponseEnvironmentInfoLocal + | SyncListResponseEnvironmentInfoAws + | SyncListResponseEnvironmentInfoTest + | any; + +export type SyncListResponsePoolsAutoscale = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Maximum machine count. + */ + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; +}; + +export type SyncListResponsePoolsFixed = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Number of machines to run. + */ + machines: number; + mode: "fixed"; +}; + +/** + * User-selected deployment settings for one compute pool. + */ +export type SyncListResponsePoolsUnion = + | SyncListResponsePoolsFixed + | SyncListResponsePoolsAutoscale; + +/** + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. + */ +export type SyncListResponseCompute = { + /** + * Selected compute choices keyed by pool ID. + */ + pools?: { + [k: string]: SyncListResponsePoolsFixed | SyncListResponsePoolsAutoscale; + } | undefined; +}; + +export type SyncListResponseComputeUnion = SyncListResponseCompute | any; + +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export const SyncListResponseDeploymentModel = { + Push: "push", + Pull: "pull", +} as const; +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export type SyncListResponseDeploymentModel = ClosedEnum< + typeof SyncListResponseDeploymentModel +>; + +export type SyncListResponseAws = { + certificateArn: string; +}; + +export type SyncListResponseAwsUnion = SyncListResponseAws | any; + +export type SyncListResponseAzureStackSettings = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +export type SyncListResponseAzureUnion = + | SyncListResponseAzureStackSettings + | any; + +export type SyncListResponseGcpStackSettings = { + certificateName: string; +}; + +export type SyncListResponseGcpUnion = SyncListResponseGcpStackSettings | any; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncListResponseTlsSecretRef = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; +}; + +export type SyncListResponseDomainsKubernetes = { + /** + * Namespace-scoped Kubernetes TLS Secret reference. + */ + tlsSecretRef: SyncListResponseTlsSecretRef; +}; + +export type SyncListResponseDomainsKubernetesUnion = + | SyncListResponseDomainsKubernetes + | any; + +/** + * Platform-specific certificate references for custom domains. + */ +export type SyncListResponseDomainsCertificate = { + aws?: SyncListResponseAws | any | null | undefined; + azure?: SyncListResponseAzureStackSettings | any | null | undefined; + gcp?: SyncListResponseGcpStackSettings | any | null | undefined; + kubernetes?: SyncListResponseDomainsKubernetes | any | null | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type SyncListResponseCustomDomains = { + /** + * Platform-specific certificate references for custom domains. + */ + certificate: SyncListResponseDomainsCertificate; + /** + * Fully qualified domain name to use. + */ + domain: string; +}; + +/** + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. + */ +export type SyncListResponseDomains = { + /** + * Custom domain configuration per resource ID. + */ + customDomains?: + | { [k: string]: SyncListResponseCustomDomains } + | null + | undefined; +}; + +export type SyncListResponseDomainsUnion = SyncListResponseDomains | any; + +/** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ +export type SyncListResponseExternalBindings = {}; + +/** + * How heartbeat health checks are handled. + */ +export const SyncListResponseHeartbeats = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type SyncListResponseHeartbeats = ClosedEnum< + typeof SyncListResponseHeartbeats +>; + +/** + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + */ +export type SyncListResponseCloud = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +export type SyncListResponseCloudUnion = SyncListResponseCloud | any; + +/** + * Ownership model for the Kubernetes cluster. + */ +export const SyncListResponseOwnership = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type SyncListResponseOwnership = ClosedEnum< + typeof SyncListResponseOwnership +>; + +/** + * Kubernetes cluster setup settings. + */ +export type SyncListResponseCluster = { + cloud?: SyncListResponseCloud | any | null | undefined; + /** + * Namespace where the Alien chart and application resources run. + */ + namespace?: string | null | undefined; + /** + * Ownership model for the Kubernetes cluster. + */ + ownership: SyncListResponseOwnership; +}; + +export type SyncListResponseClusterUnion = SyncListResponseCluster | any; + +export type SyncListResponseCertificateNone2 = { + mode: "none"; +}; + +export type SyncListResponseCertificateManagedTLSSecret2 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type SyncListResponseCertificateAwsAcmArn2 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type SyncListResponseCertificateManagedAcmImport2 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncListResponseCertificateTLSSecretRef2 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type SyncListResponseCertificateUnion2 = + | SyncListResponseCertificateTLSSecretRef2 + | SyncListResponseCertificateManagedAcmImport2 + | SyncListResponseCertificateAwsAcmArn2 + | SyncListResponseCertificateManagedTLSSecret2 + | SyncListResponseCertificateNone2; + +export const SyncListResponseModeCustom = { + Custom: "custom", +} as const; +export type SyncListResponseModeCustom = ClosedEnum< + typeof SyncListResponseModeCustom +>; + +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum4 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncListResponseProviderAzureApplicationGatewayForContainersEnum4 = + ClosedEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum4 + >; + +export type SyncListResponseProviderAzureApplicationGatewayForContainers4 = { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: SyncListResponseProviderAzureApplicationGatewayForContainersEnum4; +}; + +export const SyncListResponseProviderGkeGatewayEnum4 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncListResponseProviderGkeGatewayEnum4 = ClosedEnum< + typeof SyncListResponseProviderGkeGatewayEnum4 +>; + +export type SyncListResponseProviderGkeGateway4 = { + provider: SyncListResponseProviderGkeGatewayEnum4; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncListResponseProviderAwsAlbEnum4 = { + AwsAlb: "awsAlb", +} as const; +export type SyncListResponseProviderAwsAlbEnum4 = ClosedEnum< + typeof SyncListResponseProviderAwsAlbEnum4 +>; + +export type SyncListResponseProviderAwsAlb4 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncListResponseProviderAwsAlbEnum4; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncListResponseProviderUnion4 = + | SyncListResponseProviderAwsAlb4 + | SyncListResponseProviderAzureApplicationGatewayForContainers4 + | SyncListResponseProviderGkeGateway4 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type SyncListResponseRouteGateway2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | SyncListResponseProviderAwsAlb4 + | SyncListResponseProviderAzureApplicationGatewayForContainers4 + | SyncListResponseProviderGkeGateway4 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum3 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncListResponseProviderAzureApplicationGatewayForContainersEnum3 = + ClosedEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum3 + >; + +export type SyncListResponseProviderAzureApplicationGatewayForContainers3 = { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: SyncListResponseProviderAzureApplicationGatewayForContainersEnum3; +}; + +export const SyncListResponseProviderGkeGatewayEnum3 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncListResponseProviderGkeGatewayEnum3 = ClosedEnum< + typeof SyncListResponseProviderGkeGatewayEnum3 +>; + +export type SyncListResponseProviderGkeGateway3 = { + provider: SyncListResponseProviderGkeGatewayEnum3; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncListResponseProviderAwsAlbEnum3 = { + AwsAlb: "awsAlb", +} as const; +export type SyncListResponseProviderAwsAlbEnum3 = ClosedEnum< + typeof SyncListResponseProviderAwsAlbEnum3 +>; + +export type SyncListResponseProviderAwsAlb3 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncListResponseProviderAwsAlbEnum3; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncListResponseProviderUnion3 = + | SyncListResponseProviderAwsAlb3 + | SyncListResponseProviderAzureApplicationGatewayForContainers3 + | SyncListResponseProviderGkeGateway3 + | any; + +/** + * Shared Ingress route profile values. + */ +export type SyncListResponseRouteIngress2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | SyncListResponseProviderAwsAlb3 + | SyncListResponseProviderAzureApplicationGatewayForContainers3 + | SyncListResponseProviderGkeGateway3 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type SyncListResponseRouteUnion2 = + | SyncListResponseRouteIngress2 + | SyncListResponseRouteGateway2; + +export type SyncListResponseExposureCustom = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | SyncListResponseCertificateTLSSecretRef2 + | SyncListResponseCertificateManagedAcmImport2 + | SyncListResponseCertificateAwsAcmArn2 + | SyncListResponseCertificateManagedTLSSecret2 + | SyncListResponseCertificateNone2; + /** + * Hostname routed by the Kubernetes public endpoint. + */ + domain: string; + mode: SyncListResponseModeCustom; + /** + * Kubernetes route API selected for public endpoints. + */ + route: SyncListResponseRouteIngress2 | SyncListResponseRouteGateway2; +}; + +export type SyncListResponseCertificateNone1 = { + mode: "none"; +}; + +export type SyncListResponseCertificateManagedTLSSecret1 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type SyncListResponseCertificateAwsAcmArn1 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type SyncListResponseCertificateManagedAcmImport1 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncListResponseCertificateTLSSecretRef1 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type SyncListResponseCertificateUnion1 = + | SyncListResponseCertificateTLSSecretRef1 + | SyncListResponseCertificateManagedAcmImport1 + | SyncListResponseCertificateAwsAcmArn1 + | SyncListResponseCertificateManagedTLSSecret1 + | SyncListResponseCertificateNone1; + +export const SyncListResponseModeGenerated = { + Generated: "generated", +} as const; +export type SyncListResponseModeGenerated = ClosedEnum< + typeof SyncListResponseModeGenerated +>; + +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum2 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncListResponseProviderAzureApplicationGatewayForContainersEnum2 = + ClosedEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum2 + >; + +export type SyncListResponseProviderAzureApplicationGatewayForContainers2 = { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: SyncListResponseProviderAzureApplicationGatewayForContainersEnum2; +}; + +export const SyncListResponseProviderGkeGatewayEnum2 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncListResponseProviderGkeGatewayEnum2 = ClosedEnum< + typeof SyncListResponseProviderGkeGatewayEnum2 +>; + +export type SyncListResponseProviderGkeGateway2 = { + provider: SyncListResponseProviderGkeGatewayEnum2; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncListResponseProviderAwsAlbEnum2 = { + AwsAlb: "awsAlb", +} as const; +export type SyncListResponseProviderAwsAlbEnum2 = ClosedEnum< + typeof SyncListResponseProviderAwsAlbEnum2 +>; + +export type SyncListResponseProviderAwsAlb2 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncListResponseProviderAwsAlbEnum2; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncListResponseProviderUnion2 = + | SyncListResponseProviderAwsAlb2 + | SyncListResponseProviderAzureApplicationGatewayForContainers2 + | SyncListResponseProviderGkeGateway2 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type SyncListResponseRouteGateway1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | SyncListResponseProviderAwsAlb2 + | SyncListResponseProviderAzureApplicationGatewayForContainers2 + | SyncListResponseProviderGkeGateway2 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum1 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncListResponseProviderAzureApplicationGatewayForContainersEnum1 = + ClosedEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum1 + >; + +export type SyncListResponseProviderAzureApplicationGatewayForContainers1 = { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: SyncListResponseProviderAzureApplicationGatewayForContainersEnum1; +}; + +export const SyncListResponseProviderGkeGatewayEnum1 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncListResponseProviderGkeGatewayEnum1 = ClosedEnum< + typeof SyncListResponseProviderGkeGatewayEnum1 +>; + +export type SyncListResponseProviderGkeGateway1 = { + provider: SyncListResponseProviderGkeGatewayEnum1; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncListResponseProviderAwsAlbEnum1 = { + AwsAlb: "awsAlb", +} as const; +export type SyncListResponseProviderAwsAlbEnum1 = ClosedEnum< + typeof SyncListResponseProviderAwsAlbEnum1 +>; + +export type SyncListResponseProviderAwsAlb1 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncListResponseProviderAwsAlbEnum1; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncListResponseProviderUnion1 = + | SyncListResponseProviderAwsAlb1 + | SyncListResponseProviderAzureApplicationGatewayForContainers1 + | SyncListResponseProviderGkeGateway1 + | any; + +/** + * Shared Ingress route profile values. + */ +export type SyncListResponseRouteIngress1 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example `eks.amazonaws.com/alb`. + */ + controller?: string | null | undefined; + /** + * `spec.ingressClassName` for generated Ingresses. + */ + ingressClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + provider?: + | SyncListResponseProviderAwsAlb1 + | SyncListResponseProviderAzureApplicationGatewayForContainers1 + | SyncListResponseProviderGkeGateway1 + | any + | null + | undefined; + routeApi: "ingress"; +}; + +/** + * Kubernetes route API selected for public endpoints. + */ +export type SyncListResponseRouteUnion1 = + | SyncListResponseRouteIngress1 + | SyncListResponseRouteGateway1; + +export type SyncListResponseExposureGenerated = { + /** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ + certificate: + | SyncListResponseCertificateTLSSecretRef1 + | SyncListResponseCertificateManagedAcmImport1 + | SyncListResponseCertificateAwsAcmArn1 + | SyncListResponseCertificateManagedTLSSecret1 + | SyncListResponseCertificateNone1; + mode: SyncListResponseModeGenerated; + /** + * Kubernetes route API selected for public endpoints. + */ + route: SyncListResponseRouteIngress1 | SyncListResponseRouteGateway1; +}; + +export const SyncListResponseModeDisabled = { + Disabled: "disabled", +} as const; +export type SyncListResponseModeDisabled = ClosedEnum< + typeof SyncListResponseModeDisabled +>; + +export type SyncListResponseExposureDisabled = { + mode: SyncListResponseModeDisabled; +}; + +export type SyncListResponseExposureUnion = + | SyncListResponseExposureCustom + | SyncListResponseExposureGenerated + | SyncListResponseExposureDisabled + | any; + +/** + * Kubernetes runtime substrate configuration. + * + * @remarks + * + * This controls how setup chooses the cluster backing `Platform::Kubernetes` + * deployments. When omitted, cloud-backed Kubernetes deployments default to a + * managed cluster and generic/on-prem Kubernetes defaults to an external + * cluster. + */ +export type SyncListResponseKubernetes = { + cluster?: SyncListResponseCluster | any | null | undefined; + exposure?: + | SyncListResponseExposureCustom + | SyncListResponseExposureGenerated + | SyncListResponseExposureDisabled + | any + | null + | undefined; +}; + +export type SyncListResponseKubernetesUnion = SyncListResponseKubernetes | any; + +export const SyncListResponseTypeByoVnetAzure = { + ByoVnetAzure: "byo-vnet-azure", +} as const; +export type SyncListResponseTypeByoVnetAzure = ClosedEnum< + typeof SyncListResponseTypeByoVnetAzure +>; + +export type SyncListResponseNetworkByoVnetAzure = { + /** + * Name of the dedicated classic Application Gateway subnet within the VNet. + */ + applicationGatewaySubnetName?: string | null | undefined; + /** + * Name of the private subnet within the VNet + */ + privateSubnetName: string; + /** + * Name of the public subnet within the VNet + */ + publicSubnetName: string; + type: SyncListResponseTypeByoVnetAzure; + /** + * The full resource ID of the existing VNet + */ + vnetResourceId: string; +}; + +export const SyncListResponseTypeByoVpcGcp = { + ByoVpcGcp: "byo-vpc-gcp", +} as const; +export type SyncListResponseTypeByoVpcGcp = ClosedEnum< + typeof SyncListResponseTypeByoVpcGcp +>; + +export type SyncListResponseNetworkByoVpcGcp = { + /** + * The name of the existing VPC network + */ + networkName: string; + /** + * The region of the subnet + */ + region: string; + /** + * The name of the subnet to use + */ + subnetName: string; + type: SyncListResponseTypeByoVpcGcp; +}; + +export const SyncListResponseTypeByoVpcAws = { + ByoVpcAws: "byo-vpc-aws", +} as const; +export type SyncListResponseTypeByoVpcAws = ClosedEnum< + typeof SyncListResponseTypeByoVpcAws +>; + +export type SyncListResponseNetworkByoVpcAws = { + /** + * IDs of private subnets + */ + privateSubnetIds: Array; + /** + * IDs of public subnets (required for public ingress) + */ + publicSubnetIds: Array; + /** + * Optional security group IDs to use + */ + securityGroupIds?: Array | undefined; + type: SyncListResponseTypeByoVpcAws; + /** + * The ID of the existing VPC + */ + vpcId: string; +}; + +export const SyncListResponseTypeCreate = { + Create: "create", +} as const; +export type SyncListResponseTypeCreate = ClosedEnum< + typeof SyncListResponseTypeCreate +>; + +export type SyncListResponseNetworkCreate = { + /** + * Number of availability zones (default: 2). + */ + availabilityZones?: number | undefined; + /** + * VPC/VNet CIDR block. If not specified, auto-generated from stack ID + * + * @remarks + * to reduce conflicts (e.g., "10.{hash}.0.0/16"). + */ + cidr?: string | null | undefined; + type: SyncListResponseTypeCreate; +}; + +export const SyncListResponseTypeUseDefault = { + UseDefault: "use-default", +} as const; +export type SyncListResponseTypeUseDefault = ClosedEnum< + typeof SyncListResponseTypeUseDefault +>; + +export type SyncListResponseNetworkUseDefault = { + type: SyncListResponseTypeUseDefault; +}; + +export type SyncListResponseNetworkUnion = + | SyncListResponseNetworkByoVpcAws + | SyncListResponseNetworkByoVpcGcp + | SyncListResponseNetworkByoVnetAzure + | SyncListResponseNetworkUseDefault + | SyncListResponseNetworkCreate + | any; + +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export const SyncListResponseTelemetry = { + Off: "off", + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How telemetry (logs, metrics, traces) is handled. + */ +export type SyncListResponseTelemetry = ClosedEnum< + typeof SyncListResponseTelemetry +>; + +/** + * How updates are delivered to the deployment. + */ +export const SyncListResponseUpdates = { + Auto: "auto", + ApprovalRequired: "approval-required", +} as const; +/** + * How updates are delivered to the deployment. + */ +export type SyncListResponseUpdates = ClosedEnum< + typeof SyncListResponseUpdates +>; + +/** + * User-provided configuration (network, deployment model, approvals) + */ +export type SyncListResponseStackSettings = { + compute?: SyncListResponseCompute | any | null | undefined; + /** + * Deployment model: how updates are delivered to the remote environment. + */ + deploymentModel?: SyncListResponseDeploymentModel | undefined; + domains?: SyncListResponseDomains | any | null | undefined; + /** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ + externalBindings?: SyncListResponseExternalBindings | null | undefined; + /** + * How heartbeat health checks are handled. + */ + heartbeats?: SyncListResponseHeartbeats | undefined; + kubernetes?: SyncListResponseKubernetes | any | null | undefined; + network?: + | SyncListResponseNetworkByoVpcAws + | SyncListResponseNetworkByoVpcGcp + | SyncListResponseNetworkByoVnetAzure + | SyncListResponseNetworkUseDefault + | SyncListResponseNetworkCreate + | any + | null + | undefined; + /** + * How telemetry (logs, metrics, traces) is handled. + */ + telemetry?: SyncListResponseTelemetry | undefined; + /** + * How updates are delivered to the deployment. + */ + updates?: SyncListResponseUpdates | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncListResponseStackStatePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncListResponseStackStatePlatform = ClosedEnum< + typeof SyncListResponseStackStatePlatform +>; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncListResponseStackStateConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncListResponseControllerPlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncListResponseControllerPlatformEnum = ClosedEnum< + typeof SyncListResponseControllerPlatformEnum +>; + +export type SyncListResponseControllerPlatformUnion = + | SyncListResponseControllerPlatformEnum + | any; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncListResponseStackStateDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type SyncListResponseErrorStackState = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type SyncListResponseErrorUnion = SyncListResponseErrorStackState | any; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const SyncListResponseLifecycleStackStateEnum = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type SyncListResponseLifecycleStackStateEnum = ClosedEnum< + typeof SyncListResponseLifecycleStackStateEnum +>; + +export type SyncListResponseLifecycleUnion = + | SyncListResponseLifecycleStackStateEnum + | any; + +/** + * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. + */ +export type SyncListResponseOutputs = { + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type SyncListResponseOutputsUnion = SyncListResponseOutputs | any; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncListResponsePreviousConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type SyncListResponsePreviousConfigUnion = + | SyncListResponsePreviousConfig + | any; + +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export const SyncListResponseStackStateStatus = { + Pending: "pending", + Provisioning: "provisioning", + ProvisionFailed: "provision-failed", + Running: "running", + Updating: "updating", + UpdateFailed: "update-failed", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + Deleted: "deleted", + RefreshFailed: "refresh-failed", +} as const; +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export type SyncListResponseStackStateStatus = ClosedEnum< + typeof SyncListResponseStackStateStatus +>; + +/** + * Represents the state of a single resource within the stack for a specific platform. + */ +export type SyncListResponseStackStateResources = { + /** + * The platform-specific resource controller that manages this resource's lifecycle. + * + * @remarks + * This is None when the resource status is Pending. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + internal?: any | null | undefined; + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncListResponseStackStateConfig; + controllerPlatform?: + | SyncListResponseControllerPlatformEnum + | any + | null + | undefined; + /** + * Complete list of dependencies for this resource, including infrastructure dependencies. + * + * @remarks + * This preserves the full dependency information from the stack definition. + */ + dependencies?: Array | undefined; + error?: SyncListResponseErrorStackState | any | null | undefined; + /** + * Stores the controller state that failed, used for manual retry operations. + * + * @remarks + * This allows resuming from the exact point where the failure occurred. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + lastFailedState?: any | null | undefined; + lifecycle?: SyncListResponseLifecycleStackStateEnum | any | null | undefined; + outputs?: SyncListResponseOutputs | any | null | undefined; + previousConfig?: SyncListResponsePreviousConfig | any | null | undefined; + /** + * Binding parameters for remote access. + * + * @remarks + * Only populated when the resource has `remote_access: true` in its ResourceEntry. + * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). + * Populated by controllers during provisioning using get_binding_params(). + */ + remoteBindingParams?: any | null | undefined; + /** + * Tracks consecutive retry attempts for the current state transition. + */ + retryAttempt?: number | undefined; + /** + * Represents the high-level status of a resource during its lifecycle. + */ + status: SyncListResponseStackStateStatus; + /** + * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + */ + type: string; +}; + +/** + * State of infrastructure components managed by this deployment + */ +export type SyncListResponseStackState = { + /** + * Represents the target cloud platform. + */ + platform: SyncListResponseStackStatePlatform; + /** + * A prefix used for resource naming to ensure uniqueness across deployments. + */ + resourcePrefix: string; + /** + * The state of individual resources, keyed by resource ID. + */ + resources: { [k: string]: SyncListResponseStackStateResources }; +}; + +export const SyncListResponseTypeStringList = { + StringList: "stringList", +} as const; +export type SyncListResponseTypeStringList = ClosedEnum< + typeof SyncListResponseTypeStringList +>; + +export type SyncListResponseDefaultStringList = { + type: SyncListResponseTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const SyncListResponseTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncListResponseTypeBoolean = ClosedEnum< + typeof SyncListResponseTypeBoolean +>; + +export type SyncListResponseDefaultBoolean = { + type: SyncListResponseTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const SyncListResponseTypeNumber = { + Number: "number", +} as const; +export type SyncListResponseTypeNumber = ClosedEnum< + typeof SyncListResponseTypeNumber +>; + +export type SyncListResponseDefaultNumber = { + type: SyncListResponseTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const SyncListResponseTypeString = { + String: "string", +} as const; +export type SyncListResponseTypeString = ClosedEnum< + typeof SyncListResponseTypeString +>; + +export type SyncListResponseDefaultString = { + type: SyncListResponseTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncListResponseDefaultUnion = + | SyncListResponseDefaultString + | SyncListResponseDefaultNumber + | SyncListResponseDefaultBoolean + | SyncListResponseDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const SyncListResponseTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncListResponseTypeEnvEnum = ClosedEnum< + typeof SyncListResponseTypeEnvEnum +>; + +export type SyncListResponseTypeUnion = SyncListResponseTypeEnvEnum | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncListResponseEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: SyncListResponseTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const SyncListResponseKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type SyncListResponseKind = ClosedEnum; + +/** + * Represents the target cloud platform. + */ +export const SyncListResponsePreparedStackPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncListResponsePreparedStackPlatform = ClosedEnum< + typeof SyncListResponsePreparedStackPlatform +>; + +/** + * Who can provide a stack input value. + */ +export const SyncListResponseProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncListResponseProvidedBy = ClosedEnum< + typeof SyncListResponseProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type SyncListResponseValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type SyncListResponseValidationUnion = SyncListResponseValidation | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type SyncListResponseInput = { + default?: + | SyncListResponseDefaultString + | SyncListResponseDefaultNumber + | SyncListResponseDefaultBoolean + | SyncListResponseDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: SyncListResponseKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: Array | null | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: SyncListResponseValidation | any | null | undefined; +}; + +export const SyncListResponseManagementEnum = { + Auto: "auto", +} as const; +export type SyncListResponseManagementEnum = ClosedEnum< + typeof SyncListResponseManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type SyncListResponseOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncListResponseOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncListResponseOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncListResponseOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncListResponseOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncListResponseOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncListResponseOverrideEffect = ClosedEnum< + typeof SyncListResponseOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncListResponseOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncListResponseOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncListResponseOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncListResponseOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncListResponseOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncListResponseStatus$inboundSchema: z.ZodEnum< + typeof SyncListResponseStatus +> = z.enum(SyncListResponseStatus); + +/** @internal */ +export const SyncListResponsePlatform$inboundSchema: z.ZodEnum< + typeof SyncListResponsePlatform +> = z.enum(SyncListResponsePlatform); + +/** @internal */ +export const SyncListResponseBasePlatform$inboundSchema: z.ZodEnum< + typeof SyncListResponseBasePlatform +> = z.enum(SyncListResponseBasePlatform); + +/** @internal */ +export const SyncListResponsePlatformTest$inboundSchema: z.ZodEnum< + typeof SyncListResponsePlatformTest +> = z.enum(SyncListResponsePlatformTest); + +/** @internal */ +export const SyncListResponseEnvironmentInfoTest$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoTest, + unknown +> = z.object({ + testId: z.string(), + platform: SyncListResponsePlatformTest$inboundSchema, +}); + +export function syncListResponseEnvironmentInfoTestFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoTest$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoTest' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponsePlatformLocal$inboundSchema: z.ZodEnum< + typeof SyncListResponsePlatformLocal +> = z.enum(SyncListResponsePlatformLocal); + +/** @internal */ +export const SyncListResponseEnvironmentInfoLocal$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoLocal, + unknown +> = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: SyncListResponsePlatformLocal$inboundSchema, +}); + +export function syncListResponseEnvironmentInfoLocalFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoLocal$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoLocal' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseEnvironmentInfoPlatformAzure$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponseEnvironmentInfoPlatformAzure, + ); + +/** @internal */ +export const SyncListResponseEnvironmentInfoAzure$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoAzure, + unknown +> = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: SyncListResponseEnvironmentInfoPlatformAzure$inboundSchema, +}); + +export function syncListResponseEnvironmentInfoAzureFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseEnvironmentInfoPlatformGcp$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponseEnvironmentInfoPlatformGcp, + ); + +/** @internal */ +export const SyncListResponseEnvironmentInfoGcp$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoGcp, + unknown +> = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: SyncListResponseEnvironmentInfoPlatformGcp$inboundSchema, +}); + +export function syncListResponseEnvironmentInfoGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseEnvironmentInfoPlatformAws$inboundSchema: + z.ZodEnum = z.enum( + SyncListResponseEnvironmentInfoPlatformAws, + ); + +/** @internal */ +export const SyncListResponseEnvironmentInfoAws$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoAws, + unknown +> = z.object({ + accountId: z.string(), + region: z.string(), + platform: SyncListResponseEnvironmentInfoPlatformAws$inboundSchema, +}); + +export function syncListResponseEnvironmentInfoAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoAws' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseEnvironmentInfoUnion$inboundSchema: z.ZodType< + SyncListResponseEnvironmentInfoUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseEnvironmentInfoGcp$inboundSchema), + z.lazy(() => SyncListResponseEnvironmentInfoAzure$inboundSchema), + z.lazy(() => SyncListResponseEnvironmentInfoLocal$inboundSchema), + z.lazy(() => SyncListResponseEnvironmentInfoAws$inboundSchema), + z.lazy(() => SyncListResponseEnvironmentInfoTest$inboundSchema), + z.any(), +]); + +export function syncListResponseEnvironmentInfoUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseEnvironmentInfoUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnvironmentInfoUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponsePoolsAutoscale$inboundSchema: z.ZodType< + SyncListResponsePoolsAutoscale, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}); + +export function syncListResponsePoolsAutoscaleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePoolsAutoscale' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponsePoolsFixed$inboundSchema: z.ZodType< + SyncListResponsePoolsFixed, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}); + +export function syncListResponsePoolsFixedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePoolsFixed' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponsePoolsUnion$inboundSchema: z.ZodType< + SyncListResponsePoolsUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponsePoolsFixed$inboundSchema), + z.lazy(() => SyncListResponsePoolsAutoscale$inboundSchema), +]); + +export function syncListResponsePoolsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePoolsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCompute$inboundSchema: z.ZodType< + SyncListResponseCompute, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => SyncListResponsePoolsFixed$inboundSchema), + z.lazy(() => SyncListResponsePoolsAutoscale$inboundSchema), + ]), + ).optional(), +}); + +export function syncListResponseComputeFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCompute$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCompute' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseComputeUnion$inboundSchema: z.ZodType< + SyncListResponseComputeUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseCompute$inboundSchema), z.any()]); + +export function syncListResponseComputeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseComputeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDeploymentModel$inboundSchema: z.ZodEnum< + typeof SyncListResponseDeploymentModel +> = z.enum(SyncListResponseDeploymentModel); + +/** @internal */ +export const SyncListResponseAws$inboundSchema: z.ZodType< + SyncListResponseAws, + unknown +> = z.object({ + certificateArn: z.string(), +}); + +export function syncListResponseAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseAws' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseAwsUnion$inboundSchema: z.ZodType< + SyncListResponseAwsUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseAws$inboundSchema), z.any()]); + +export function syncListResponseAwsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseAwsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseAwsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseAzureStackSettings$inboundSchema: z.ZodType< + SyncListResponseAzureStackSettings, + unknown +> = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), +}); + +export function syncListResponseAzureStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseAzureStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseAzureStackSettings' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseAzureUnion$inboundSchema: z.ZodType< + SyncListResponseAzureUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseAzureStackSettings$inboundSchema), + z.any(), +]); + +export function syncListResponseAzureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseAzureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseAzureUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseGcpStackSettings$inboundSchema: z.ZodType< + SyncListResponseGcpStackSettings, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function syncListResponseGcpStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseGcpStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseGcpStackSettings' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseGcpUnion$inboundSchema: z.ZodType< + SyncListResponseGcpUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseGcpStackSettings$inboundSchema), + z.any(), +]); + +export function syncListResponseGcpUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseGcpUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseGcpUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTlsSecretRef$inboundSchema: z.ZodType< + SyncListResponseTlsSecretRef, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function syncListResponseTlsSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseTlsSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDomainsKubernetes$inboundSchema: z.ZodType< + SyncListResponseDomainsKubernetes, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => SyncListResponseTlsSecretRef$inboundSchema), +}); + +export function syncListResponseDomainsKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDomainsKubernetes' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDomainsKubernetesUnion$inboundSchema: z.ZodType< + SyncListResponseDomainsKubernetesUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseDomainsKubernetes$inboundSchema), + z.any(), +]); + +export function syncListResponseDomainsKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseDomainsKubernetesUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDomainsKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDomainsCertificate$inboundSchema: z.ZodType< + SyncListResponseDomainsCertificate, + unknown +> = z.object({ + aws: z.nullable( + z.union([z.lazy(() => SyncListResponseAws$inboundSchema), z.any()]), + ).optional(), + azure: z.nullable( + z.union([ + z.lazy(() => SyncListResponseAzureStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + gcp: z.nullable( + z.union([ + z.lazy(() => SyncListResponseGcpStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => SyncListResponseDomainsKubernetes$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncListResponseDomainsCertificateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseDomainsCertificate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDomainsCertificate' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCustomDomains$inboundSchema: z.ZodType< + SyncListResponseCustomDomains, + unknown +> = z.object({ + certificate: z.lazy(() => SyncListResponseDomainsCertificate$inboundSchema), + domain: z.string(), +}); + +export function syncListResponseCustomDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCustomDomains' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDomains$inboundSchema: z.ZodType< + SyncListResponseDomains, + unknown +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => SyncListResponseCustomDomains$inboundSchema), + ), + ).optional(), +}); + +export function syncListResponseDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDomains' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDomainsUnion$inboundSchema: z.ZodType< + SyncListResponseDomainsUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseDomains$inboundSchema), z.any()]); + +export function syncListResponseDomainsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDomainsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseExternalBindings$inboundSchema: z.ZodType< + SyncListResponseExternalBindings, + unknown +> = z.object({}); + +export function syncListResponseExternalBindingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseExternalBindings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseExternalBindings' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseHeartbeats$inboundSchema: z.ZodEnum< + typeof SyncListResponseHeartbeats +> = z.enum(SyncListResponseHeartbeats); + +/** @internal */ +export const SyncListResponseCloud$inboundSchema: z.ZodType< + SyncListResponseCloud, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function syncListResponseCloudFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCloud$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCloud' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCloudUnion$inboundSchema: z.ZodType< + SyncListResponseCloudUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseCloud$inboundSchema), z.any()]); + +export function syncListResponseCloudUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCloudUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseOwnership$inboundSchema: z.ZodEnum< + typeof SyncListResponseOwnership +> = z.enum(SyncListResponseOwnership); + +/** @internal */ +export const SyncListResponseCluster$inboundSchema: z.ZodType< + SyncListResponseCluster, + unknown +> = z.object({ + cloud: z.nullable( + z.union([z.lazy(() => SyncListResponseCloud$inboundSchema), z.any()]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: SyncListResponseOwnership$inboundSchema, +}); + +export function syncListResponseClusterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCluster$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCluster' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseClusterUnion$inboundSchema: z.ZodType< + SyncListResponseClusterUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseCluster$inboundSchema), z.any()]); + +export function syncListResponseClusterUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseClusterUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateNone2$inboundSchema: z.ZodType< + SyncListResponseCertificateNone2, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function syncListResponseCertificateNone2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCertificateNone2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateNone2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateManagedTLSSecret2$inboundSchema: + z.ZodType = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function syncListResponseCertificateManagedTLSSecret2FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateManagedTLSSecret2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateManagedTLSSecret2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateManagedTLSSecret2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateAwsAcmArn2$inboundSchema: z.ZodType< + SyncListResponseCertificateAwsAcmArn2, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function syncListResponseCertificateAwsAcmArn2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateAwsAcmArn2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateAwsAcmArn2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateManagedAcmImport2$inboundSchema: + z.ZodType = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function syncListResponseCertificateManagedAcmImport2FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateManagedAcmImport2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateManagedAcmImport2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateManagedAcmImport2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateTLSSecretRef2$inboundSchema: z.ZodType< + SyncListResponseCertificateTLSSecretRef2, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), +}); + +export function syncListResponseCertificateTLSSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateTLSSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateTLSSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateTLSSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateUnion2$inboundSchema: z.ZodType< + SyncListResponseCertificateUnion2, + unknown +> = z.union([ + z.lazy(() => SyncListResponseCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedAcmImport2$inboundSchema), + z.lazy(() => SyncListResponseCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedTLSSecret2$inboundSchema), + z.lazy(() => SyncListResponseCertificateNone2$inboundSchema), +]); + +export function syncListResponseCertificateUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCertificateUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseModeCustom$inboundSchema: z.ZodEnum< + typeof SyncListResponseModeCustom +> = z.enum(SyncListResponseModeCustom); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: + z.ZodEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum4 + > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum4); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: + z.ZodType< + SyncListResponseProviderAzureApplicationGatewayForContainers4, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncListResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, + }); + +export function syncListResponseProviderAzureApplicationGatewayForContainers4FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseProviderAzureApplicationGatewayForContainers4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers4' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderGkeGatewayEnum4$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderGkeGatewayEnum4 +> = z.enum(SyncListResponseProviderGkeGatewayEnum4); + +/** @internal */ +export const SyncListResponseProviderGkeGateway4$inboundSchema: z.ZodType< + SyncListResponseProviderGkeGateway4, + unknown +> = z.object({ + provider: SyncListResponseProviderGkeGatewayEnum4$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncListResponseProviderGkeGateway4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderGkeGateway4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderGkeGateway4' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderAwsAlbEnum4 +> = z.enum(SyncListResponseProviderAwsAlbEnum4); + +/** @internal */ +export const SyncListResponseProviderAwsAlb4$inboundSchema: z.ZodType< + SyncListResponseProviderAwsAlb4, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncListResponseProviderAwsAlbEnum4$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncListResponseProviderAwsAlb4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAwsAlb4' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderUnion4$inboundSchema: z.ZodType< + SyncListResponseProviderUnion4, + unknown +> = z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway4$inboundSchema), + z.any(), +]); + +export function syncListResponseProviderUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderUnion4' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteGateway2$inboundSchema: z.ZodType< + SyncListResponseRouteGateway2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway4$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function syncListResponseRouteGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteGateway2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: + z.ZodEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum3 + > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum3); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema: + z.ZodType< + SyncListResponseProviderAzureApplicationGatewayForContainers3, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncListResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, + }); + +export function syncListResponseProviderAzureApplicationGatewayForContainers3FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseProviderAzureApplicationGatewayForContainers3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers3' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderGkeGatewayEnum3$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderGkeGatewayEnum3 +> = z.enum(SyncListResponseProviderGkeGatewayEnum3); + +/** @internal */ +export const SyncListResponseProviderGkeGateway3$inboundSchema: z.ZodType< + SyncListResponseProviderGkeGateway3, + unknown +> = z.object({ + provider: SyncListResponseProviderGkeGatewayEnum3$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncListResponseProviderGkeGateway3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderGkeGateway3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderGkeGateway3' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAwsAlbEnum3$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderAwsAlbEnum3 +> = z.enum(SyncListResponseProviderAwsAlbEnum3); + +/** @internal */ +export const SyncListResponseProviderAwsAlb3$inboundSchema: z.ZodType< + SyncListResponseProviderAwsAlb3, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncListResponseProviderAwsAlbEnum3$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncListResponseProviderAwsAlb3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderAwsAlb3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAwsAlb3' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderUnion3$inboundSchema: z.ZodType< + SyncListResponseProviderUnion3, + unknown +> = z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb3$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway3$inboundSchema), + z.any(), +]); + +export function syncListResponseProviderUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderUnion3' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteIngress2$inboundSchema: z.ZodType< + SyncListResponseRouteIngress2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb3$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers3$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway3$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function syncListResponseRouteIngress2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteIngress2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteIngress2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteUnion2$inboundSchema: z.ZodType< + SyncListResponseRouteUnion2, + unknown +> = z.union([ + z.lazy(() => SyncListResponseRouteIngress2$inboundSchema), + z.lazy(() => SyncListResponseRouteGateway2$inboundSchema), +]); + +export function syncListResponseRouteUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseExposureCustom$inboundSchema: z.ZodType< + SyncListResponseExposureCustom, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => SyncListResponseCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedAcmImport2$inboundSchema), + z.lazy(() => SyncListResponseCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedTLSSecret2$inboundSchema), + z.lazy(() => SyncListResponseCertificateNone2$inboundSchema), + ]), + domain: z.string(), + mode: SyncListResponseModeCustom$inboundSchema, + route: z.union([ + z.lazy(() => SyncListResponseRouteIngress2$inboundSchema), + z.lazy(() => SyncListResponseRouteGateway2$inboundSchema), + ]), +}); + +export function syncListResponseExposureCustomFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseExposureCustom$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseExposureCustom' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateNone1$inboundSchema: z.ZodType< + SyncListResponseCertificateNone1, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function syncListResponseCertificateNone1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCertificateNone1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateNone1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateManagedTLSSecret1$inboundSchema: + z.ZodType = z.object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function syncListResponseCertificateManagedTLSSecret1FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateManagedTLSSecret1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateManagedTLSSecret1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateManagedTLSSecret1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateAwsAcmArn1$inboundSchema: z.ZodType< + SyncListResponseCertificateAwsAcmArn1, + unknown +> = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), +}); + +export function syncListResponseCertificateAwsAcmArn1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateAwsAcmArn1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateAwsAcmArn1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateManagedAcmImport1$inboundSchema: + z.ZodType = z.object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function syncListResponseCertificateManagedAcmImport1FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateManagedAcmImport1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateManagedAcmImport1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateManagedAcmImport1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateTLSSecretRef1$inboundSchema: z.ZodType< + SyncListResponseCertificateTLSSecretRef1, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), +}); + +export function syncListResponseCertificateTLSSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseCertificateTLSSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseCertificateTLSSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseCertificateTLSSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseCertificateUnion1$inboundSchema: z.ZodType< + SyncListResponseCertificateUnion1, + unknown +> = z.union([ + z.lazy(() => SyncListResponseCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedAcmImport1$inboundSchema), + z.lazy(() => SyncListResponseCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedTLSSecret1$inboundSchema), + z.lazy(() => SyncListResponseCertificateNone1$inboundSchema), +]); + +export function syncListResponseCertificateUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseCertificateUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseCertificateUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseModeGenerated$inboundSchema: z.ZodEnum< + typeof SyncListResponseModeGenerated +> = z.enum(SyncListResponseModeGenerated); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: + z.ZodEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum2 + > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum2); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema: + z.ZodType< + SyncListResponseProviderAzureApplicationGatewayForContainers2, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncListResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, + }); + +export function syncListResponseProviderAzureApplicationGatewayForContainers2FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseProviderAzureApplicationGatewayForContainers2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderGkeGatewayEnum2$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderGkeGatewayEnum2 +> = z.enum(SyncListResponseProviderGkeGatewayEnum2); + +/** @internal */ +export const SyncListResponseProviderGkeGateway2$inboundSchema: z.ZodType< + SyncListResponseProviderGkeGateway2, + unknown +> = z.object({ + provider: SyncListResponseProviderGkeGatewayEnum2$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncListResponseProviderGkeGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderGkeGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderGkeGateway2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAwsAlbEnum2$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderAwsAlbEnum2 +> = z.enum(SyncListResponseProviderAwsAlbEnum2); + +/** @internal */ +export const SyncListResponseProviderAwsAlb2$inboundSchema: z.ZodType< + SyncListResponseProviderAwsAlb2, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncListResponseProviderAwsAlbEnum2$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncListResponseProviderAwsAlb2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderAwsAlb2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAwsAlb2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderUnion2$inboundSchema: z.ZodType< + SyncListResponseProviderUnion2, + unknown +> = z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb2$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway2$inboundSchema), + z.any(), +]); + +export function syncListResponseProviderUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteGateway1$inboundSchema: z.ZodType< + SyncListResponseRouteGateway1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb2$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers2$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway2$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function syncListResponseRouteGateway1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteGateway1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteGateway1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: + z.ZodEnum< + typeof SyncListResponseProviderAzureApplicationGatewayForContainersEnum1 + > = z.enum(SyncListResponseProviderAzureApplicationGatewayForContainersEnum1); + +/** @internal */ +export const SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema: + z.ZodType< + SyncListResponseProviderAzureApplicationGatewayForContainers1, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncListResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, + }); + +export function syncListResponseProviderAzureApplicationGatewayForContainers1FromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseProviderAzureApplicationGatewayForContainers1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAzureApplicationGatewayForContainers1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderGkeGatewayEnum1$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderGkeGatewayEnum1 +> = z.enum(SyncListResponseProviderGkeGatewayEnum1); + +/** @internal */ +export const SyncListResponseProviderGkeGateway1$inboundSchema: z.ZodType< + SyncListResponseProviderGkeGateway1, + unknown +> = z.object({ + provider: SyncListResponseProviderGkeGatewayEnum1$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncListResponseProviderGkeGateway1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseProviderGkeGateway1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderGkeGateway1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderAwsAlbEnum1$inboundSchema: z.ZodEnum< + typeof SyncListResponseProviderAwsAlbEnum1 +> = z.enum(SyncListResponseProviderAwsAlbEnum1); + +/** @internal */ +export const SyncListResponseProviderAwsAlb1$inboundSchema: z.ZodType< + SyncListResponseProviderAwsAlb1, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncListResponseProviderAwsAlbEnum1$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncListResponseProviderAwsAlb1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderAwsAlb1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderAwsAlb1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseProviderUnion1$inboundSchema: z.ZodType< + SyncListResponseProviderUnion1, + unknown +> = z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb1$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway1$inboundSchema), + z.any(), +]); + +export function syncListResponseProviderUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseProviderUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseProviderUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteIngress1$inboundSchema: z.ZodType< + SyncListResponseRouteIngress1, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + ingressClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncListResponseProviderAwsAlb1$inboundSchema), + z.lazy(() => + SyncListResponseProviderAzureApplicationGatewayForContainers1$inboundSchema + ), + z.lazy(() => SyncListResponseProviderGkeGateway1$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("ingress"), +}); + +export function syncListResponseRouteIngress1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteIngress1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteIngress1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseRouteUnion1$inboundSchema: z.ZodType< + SyncListResponseRouteUnion1, + unknown +> = z.union([ + z.lazy(() => SyncListResponseRouteIngress1$inboundSchema), + z.lazy(() => SyncListResponseRouteGateway1$inboundSchema), +]); + +export function syncListResponseRouteUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseRouteUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseRouteUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseExposureGenerated$inboundSchema: z.ZodType< + SyncListResponseExposureGenerated, + unknown +> = z.object({ + certificate: z.union([ + z.lazy(() => SyncListResponseCertificateTLSSecretRef1$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedAcmImport1$inboundSchema), + z.lazy(() => SyncListResponseCertificateAwsAcmArn1$inboundSchema), + z.lazy(() => SyncListResponseCertificateManagedTLSSecret1$inboundSchema), + z.lazy(() => SyncListResponseCertificateNone1$inboundSchema), + ]), + mode: SyncListResponseModeGenerated$inboundSchema, + route: z.union([ + z.lazy(() => SyncListResponseRouteIngress1$inboundSchema), + z.lazy(() => SyncListResponseRouteGateway1$inboundSchema), + ]), +}); + +export function syncListResponseExposureGeneratedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseExposureGenerated$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseExposureGenerated' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseModeDisabled$inboundSchema: z.ZodEnum< + typeof SyncListResponseModeDisabled +> = z.enum(SyncListResponseModeDisabled); + +/** @internal */ +export const SyncListResponseExposureDisabled$inboundSchema: z.ZodType< + SyncListResponseExposureDisabled, + unknown +> = z.object({ + mode: SyncListResponseModeDisabled$inboundSchema, +}); + +export function syncListResponseExposureDisabledFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseExposureDisabled$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseExposureDisabled' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseExposureUnion$inboundSchema: z.ZodType< + SyncListResponseExposureUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseExposureCustom$inboundSchema), + z.lazy(() => SyncListResponseExposureGenerated$inboundSchema), + z.lazy(() => SyncListResponseExposureDisabled$inboundSchema), + z.any(), +]); + +export function syncListResponseExposureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseExposureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseExposureUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseKubernetes$inboundSchema: z.ZodType< + SyncListResponseKubernetes, + unknown +> = z.object({ + cluster: z.nullable( + z.union([z.lazy(() => SyncListResponseCluster$inboundSchema), z.any()]), + ).optional(), + exposure: z.nullable( + z.union([ + z.lazy(() => SyncListResponseExposureCustom$inboundSchema), + z.lazy(() => SyncListResponseExposureGenerated$inboundSchema), + z.lazy(() => SyncListResponseExposureDisabled$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncListResponseKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseKubernetes' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseKubernetesUnion$inboundSchema: z.ZodType< + SyncListResponseKubernetesUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseKubernetes$inboundSchema), z.any()]); + +export function syncListResponseKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseKubernetesUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeByoVnetAzure$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeByoVnetAzure +> = z.enum(SyncListResponseTypeByoVnetAzure); + +/** @internal */ +export const SyncListResponseNetworkByoVnetAzure$inboundSchema: z.ZodType< + SyncListResponseNetworkByoVnetAzure, + unknown +> = z.object({ + application_gateway_subnet_name: z.nullable(z.string()).optional(), + private_subnet_name: z.string(), + public_subnet_name: z.string(), + type: SyncListResponseTypeByoVnetAzure$inboundSchema, + vnet_resource_id: z.string(), +}).transform((v) => { + return remap$(v, { + "application_gateway_subnet_name": "applicationGatewaySubnetName", + "private_subnet_name": "privateSubnetName", + "public_subnet_name": "publicSubnetName", + "vnet_resource_id": "vnetResourceId", + }); +}); + +export function syncListResponseNetworkByoVnetAzureFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseNetworkByoVnetAzure$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkByoVnetAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeByoVpcGcp$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeByoVpcGcp +> = z.enum(SyncListResponseTypeByoVpcGcp); + +/** @internal */ +export const SyncListResponseNetworkByoVpcGcp$inboundSchema: z.ZodType< + SyncListResponseNetworkByoVpcGcp, + unknown +> = z.object({ + network_name: z.string(), + region: z.string(), + subnet_name: z.string(), + type: SyncListResponseTypeByoVpcGcp$inboundSchema, +}).transform((v) => { + return remap$(v, { + "network_name": "networkName", + "subnet_name": "subnetName", + }); +}); + +export function syncListResponseNetworkByoVpcGcpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseNetworkByoVpcGcp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkByoVpcGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeByoVpcAws$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeByoVpcAws +> = z.enum(SyncListResponseTypeByoVpcAws); + +/** @internal */ +export const SyncListResponseNetworkByoVpcAws$inboundSchema: z.ZodType< + SyncListResponseNetworkByoVpcAws, + unknown +> = z.object({ + private_subnet_ids: z.array(z.string()), + public_subnet_ids: z.array(z.string()), + security_group_ids: z.array(z.string()).optional(), + type: SyncListResponseTypeByoVpcAws$inboundSchema, + vpc_id: z.string(), +}).transform((v) => { + return remap$(v, { + "private_subnet_ids": "privateSubnetIds", + "public_subnet_ids": "publicSubnetIds", + "security_group_ids": "securityGroupIds", + "vpc_id": "vpcId", + }); +}); + +export function syncListResponseNetworkByoVpcAwsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseNetworkByoVpcAws$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkByoVpcAws' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeCreate$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeCreate +> = z.enum(SyncListResponseTypeCreate); + +/** @internal */ +export const SyncListResponseNetworkCreate$inboundSchema: z.ZodType< + SyncListResponseNetworkCreate, + unknown +> = z.object({ + availability_zones: z.int().optional(), + cidr: z.nullable(z.string()).optional(), + type: SyncListResponseTypeCreate$inboundSchema, +}).transform((v) => { + return remap$(v, { + "availability_zones": "availabilityZones", + }); +}); + +export function syncListResponseNetworkCreateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseNetworkCreate$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkCreate' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeUseDefault$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeUseDefault +> = z.enum(SyncListResponseTypeUseDefault); + +/** @internal */ +export const SyncListResponseNetworkUseDefault$inboundSchema: z.ZodType< + SyncListResponseNetworkUseDefault, + unknown +> = z.object({ + type: SyncListResponseTypeUseDefault$inboundSchema, +}); + +export function syncListResponseNetworkUseDefaultFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseNetworkUseDefault$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkUseDefault' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseNetworkUnion$inboundSchema: z.ZodType< + SyncListResponseNetworkUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseNetworkByoVpcAws$inboundSchema), + z.lazy(() => SyncListResponseNetworkByoVpcGcp$inboundSchema), + z.lazy(() => SyncListResponseNetworkByoVnetAzure$inboundSchema), + z.lazy(() => SyncListResponseNetworkUseDefault$inboundSchema), + z.lazy(() => SyncListResponseNetworkCreate$inboundSchema), + z.any(), +]); + +export function syncListResponseNetworkUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseNetworkUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseNetworkUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTelemetry$inboundSchema: z.ZodEnum< + typeof SyncListResponseTelemetry +> = z.enum(SyncListResponseTelemetry); + +/** @internal */ +export const SyncListResponseUpdates$inboundSchema: z.ZodEnum< + typeof SyncListResponseUpdates +> = z.enum(SyncListResponseUpdates); + +/** @internal */ +export const SyncListResponseStackSettings$inboundSchema: z.ZodType< + SyncListResponseStackSettings, + unknown +> = z.object({ + compute: z.nullable( + z.union([z.lazy(() => SyncListResponseCompute$inboundSchema), z.any()]), + ).optional(), + deploymentModel: SyncListResponseDeploymentModel$inboundSchema.optional(), + domains: z.nullable( + z.union([z.lazy(() => SyncListResponseDomains$inboundSchema), z.any()]), + ).optional(), + externalBindings: z.nullable( + z.lazy(() => SyncListResponseExternalBindings$inboundSchema), + ).optional(), + heartbeats: SyncListResponseHeartbeats$inboundSchema.optional(), + kubernetes: z.nullable( + z.union([z.lazy(() => SyncListResponseKubernetes$inboundSchema), z.any()]), + ).optional(), + network: z.nullable( + z.union([ + z.lazy(() => SyncListResponseNetworkByoVpcAws$inboundSchema), + z.lazy(() => SyncListResponseNetworkByoVpcGcp$inboundSchema), + z.lazy(() => SyncListResponseNetworkByoVnetAzure$inboundSchema), + z.lazy(() => SyncListResponseNetworkUseDefault$inboundSchema), + z.lazy(() => SyncListResponseNetworkCreate$inboundSchema), + z.any(), + ]), + ).optional(), + telemetry: SyncListResponseTelemetry$inboundSchema.optional(), + updates: SyncListResponseUpdates$inboundSchema.optional(), +}); + +export function syncListResponseStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseStackSettings' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseStackStatePlatform$inboundSchema: z.ZodEnum< + typeof SyncListResponseStackStatePlatform +> = z.enum(SyncListResponseStackStatePlatform); + +/** @internal */ +export const SyncListResponseStackStateConfig$inboundSchema: z.ZodType< + SyncListResponseStackStateConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncListResponseStackStateConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseStackStateConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseStackStateConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseControllerPlatformEnum$inboundSchema: z.ZodEnum< + typeof SyncListResponseControllerPlatformEnum +> = z.enum(SyncListResponseControllerPlatformEnum); + +/** @internal */ +export const SyncListResponseControllerPlatformUnion$inboundSchema: z.ZodType< + SyncListResponseControllerPlatformUnion, + unknown +> = z.union([SyncListResponseControllerPlatformEnum$inboundSchema, z.any()]); + +export function syncListResponseControllerPlatformUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncListResponseControllerPlatformUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncListResponseControllerPlatformUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncListResponseControllerPlatformUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseStackStateDependency$inboundSchema: z.ZodType< + SyncListResponseStackStateDependency, + unknown +> = z.object({ + id: z.string(), + type: z.string(), +}); + +export function syncListResponseStackStateDependencyFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseStackStateDependency$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseStackStateDependency' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseErrorStackState$inboundSchema: z.ZodType< + SyncListResponseErrorStackState, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function syncListResponseErrorStackStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseErrorStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseErrorStackState' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseErrorUnion$inboundSchema: z.ZodType< + SyncListResponseErrorUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseErrorStackState$inboundSchema), + z.any(), +]); + +export function syncListResponseErrorUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseErrorUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseLifecycleStackStateEnum$inboundSchema: z.ZodEnum< + typeof SyncListResponseLifecycleStackStateEnum +> = z.enum(SyncListResponseLifecycleStackStateEnum); + +/** @internal */ +export const SyncListResponseLifecycleUnion$inboundSchema: z.ZodType< + SyncListResponseLifecycleUnion, + unknown +> = z.union([SyncListResponseLifecycleStackStateEnum$inboundSchema, z.any()]); + +export function syncListResponseLifecycleUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseLifecycleUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseOutputs$inboundSchema: z.ZodType< + SyncListResponseOutputs, + unknown +> = collectExtraKeys$( + z.object({ + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncListResponseOutputsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseOutputs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseOutputs' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseOutputsUnion$inboundSchema: z.ZodType< + SyncListResponseOutputsUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseOutputs$inboundSchema), z.any()]); + +export function syncListResponseOutputsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseOutputsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponsePreviousConfig$inboundSchema: z.ZodType< + SyncListResponsePreviousConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncListResponsePreviousConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreviousConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponsePreviousConfigUnion$inboundSchema: z.ZodType< + SyncListResponsePreviousConfigUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponsePreviousConfig$inboundSchema), + z.any(), +]); + +export function syncListResponsePreviousConfigUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponsePreviousConfigUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponsePreviousConfigUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseStackStateStatus$inboundSchema: z.ZodEnum< + typeof SyncListResponseStackStateStatus +> = z.enum(SyncListResponseStackStateStatus); + +/** @internal */ +export const SyncListResponseStackStateResources$inboundSchema: z.ZodType< + SyncListResponseStackStateResources, + unknown +> = z.object({ + _internal: z.nullable(z.any()).optional(), + config: z.lazy(() => SyncListResponseStackStateConfig$inboundSchema), + controllerPlatform: z.nullable( + z.union([SyncListResponseControllerPlatformEnum$inboundSchema, z.any()]), + ).optional(), + dependencies: z.array( + z.lazy(() => SyncListResponseStackStateDependency$inboundSchema), + ).optional(), + error: z.nullable( + z.union([ + z.lazy(() => SyncListResponseErrorStackState$inboundSchema), + z.any(), + ]), + ).optional(), + lastFailedState: z.nullable(z.any()).optional(), + lifecycle: z.nullable( + z.union([SyncListResponseLifecycleStackStateEnum$inboundSchema, z.any()]), + ).optional(), + outputs: z.nullable( + z.union([z.lazy(() => SyncListResponseOutputs$inboundSchema), z.any()]), + ).optional(), + previousConfig: z.nullable( + z.union([ + z.lazy(() => SyncListResponsePreviousConfig$inboundSchema), + z.any(), + ]), + ).optional(), + remoteBindingParams: z.nullable(z.any()).optional(), + retryAttempt: z.int().optional(), + status: SyncListResponseStackStateStatus$inboundSchema, + type: z.string(), +}).transform((v) => { + return remap$(v, { + "_internal": "internal", + }); +}); + +export function syncListResponseStackStateResourcesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseStackStateResources$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseStackStateResources' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseStackState$inboundSchema: z.ZodType< + SyncListResponseStackState, + unknown +> = z.object({ + platform: SyncListResponseStackStatePlatform$inboundSchema, + resourcePrefix: z.string(), + resources: z.record( + z.string(), + z.lazy(() => SyncListResponseStackStateResources$inboundSchema), + ), +}); + +export function syncListResponseStackStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseStackState' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeStringList$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeStringList +> = z.enum(SyncListResponseTypeStringList); + +/** @internal */ +export const SyncListResponseDefaultStringList$inboundSchema: z.ZodType< + SyncListResponseDefaultStringList, + unknown +> = z.object({ + type: SyncListResponseTypeStringList$inboundSchema, + value: z.array(z.string()), +}); + +export function syncListResponseDefaultStringListFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseDefaultStringList$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDefaultStringList' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeBoolean$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeBoolean +> = z.enum(SyncListResponseTypeBoolean); + +/** @internal */ +export const SyncListResponseDefaultBoolean$inboundSchema: z.ZodType< + SyncListResponseDefaultBoolean, + unknown +> = z.object({ + type: SyncListResponseTypeBoolean$inboundSchema, + value: z.boolean(), +}); + +export function syncListResponseDefaultBooleanFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseDefaultBoolean$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDefaultBoolean' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeNumber$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeNumber +> = z.enum(SyncListResponseTypeNumber); + +/** @internal */ +export const SyncListResponseDefaultNumber$inboundSchema: z.ZodType< + SyncListResponseDefaultNumber, + unknown +> = z.object({ + type: SyncListResponseTypeNumber$inboundSchema, + value: z.string(), +}); + +export function syncListResponseDefaultNumberFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseDefaultNumber$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDefaultNumber' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeString$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeString +> = z.enum(SyncListResponseTypeString); + +/** @internal */ +export const SyncListResponseDefaultString$inboundSchema: z.ZodType< + SyncListResponseDefaultString, + unknown +> = z.object({ + type: SyncListResponseTypeString$inboundSchema, + value: z.string(), +}); + +export function syncListResponseDefaultStringFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseDefaultString$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDefaultString' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseDefaultUnion$inboundSchema: z.ZodType< + SyncListResponseDefaultUnion, + unknown +> = z.union([ + z.lazy(() => SyncListResponseDefaultString$inboundSchema), + z.lazy(() => SyncListResponseDefaultNumber$inboundSchema), + z.lazy(() => SyncListResponseDefaultBoolean$inboundSchema), + z.lazy(() => SyncListResponseDefaultStringList$inboundSchema), + z.any(), +]); + +export function syncListResponseDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseDefaultUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseTypeEnvEnum$inboundSchema: z.ZodEnum< + typeof SyncListResponseTypeEnvEnum +> = z.enum(SyncListResponseTypeEnvEnum); + +/** @internal */ +export const SyncListResponseTypeUnion$inboundSchema: z.ZodType< + SyncListResponseTypeUnion, + unknown +> = z.union([SyncListResponseTypeEnvEnum$inboundSchema, z.any()]); + +export function syncListResponseTypeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseTypeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseEnv$inboundSchema: z.ZodType< + SyncListResponseEnv, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([SyncListResponseTypeEnvEnum$inboundSchema, z.any()]), + ).optional(), +}); + +export function syncListResponseEnvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseEnv' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseKind$inboundSchema: z.ZodEnum< + typeof SyncListResponseKind +> = z.enum(SyncListResponseKind); + +/** @internal */ +export const SyncListResponsePreparedStackPlatform$inboundSchema: z.ZodEnum< + typeof SyncListResponsePreparedStackPlatform +> = z.enum(SyncListResponsePreparedStackPlatform); + +/** @internal */ +export const SyncListResponseProvidedBy$inboundSchema: z.ZodEnum< + typeof SyncListResponseProvidedBy +> = z.enum(SyncListResponseProvidedBy); + +/** @internal */ +export const SyncListResponseValidation$inboundSchema: z.ZodType< + SyncListResponseValidation, + unknown +> = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), +}); + +export function syncListResponseValidationFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseValidation$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseValidation' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseValidationUnion$inboundSchema: z.ZodType< + SyncListResponseValidationUnion, + unknown +> = z.union([z.lazy(() => SyncListResponseValidation$inboundSchema), z.any()]); + +export function syncListResponseValidationUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseValidationUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseInput$inboundSchema: z.ZodType< + SyncListResponseInput, + unknown +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => SyncListResponseDefaultString$inboundSchema), + z.lazy(() => SyncListResponseDefaultNumber$inboundSchema), + z.lazy(() => SyncListResponseDefaultBoolean$inboundSchema), + z.lazy(() => SyncListResponseDefaultStringList$inboundSchema), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array(z.lazy(() => SyncListResponseEnv$inboundSchema)).optional(), + id: z.string(), + kind: SyncListResponseKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncListResponsePreparedStackPlatform$inboundSchema), + ).optional(), + providedBy: z.array(SyncListResponseProvidedBy$inboundSchema), + required: z.boolean(), + validation: z.nullable( + z.union([z.lazy(() => SyncListResponseValidation$inboundSchema), z.any()]), + ).optional(), +}); + +export function syncListResponseInputFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseInput$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseInput' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseManagementEnum$inboundSchema: z.ZodEnum< + typeof SyncListResponseManagementEnum +> = z.enum(SyncListResponseManagementEnum); + +/** @internal */ +export const SyncListResponseOverrideAwResource$inboundSchema: z.ZodType< + SyncListResponseOverrideAwResource, + unknown +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function syncListResponseOverrideAwResourceFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncListResponseOverrideAwResource$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseOverrideAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseOverrideAwStack$inboundSchema: z.ZodType< + SyncListResponseOverrideAwStack, + unknown +> = z.object({ + condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) + .optional(), + resources: z.array(z.string()), +}); + +export function syncListResponseOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseOverrideAwStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseOverrideAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseOverrideAwBinding$inboundSchema: z.ZodType< + SyncListResponseOverrideAwBinding, + unknown +> = z.object({ + resource: z.lazy(() => SyncListResponseOverrideAwResource$inboundSchema) + .optional(), + stack: z.lazy(() => SyncListResponseOverrideAwStack$inboundSchema).optional(), +}); + +export function syncListResponseOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseOverrideAwBinding$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseOverrideEffect$inboundSchema: z.ZodEnum< + typeof SyncListResponseOverrideEffect +> = z.enum(SyncListResponseOverrideEffect); + +/** @internal */ +export const SyncListResponseOverrideAwGrant$inboundSchema: z.ZodType< + SyncListResponseOverrideAwGrant, + unknown +> = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), +}); + +export function syncListResponseOverrideAwGrantFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseOverrideAwGrant$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseOverrideAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncListResponseOverrideAw$inboundSchema: z.ZodType< + SyncListResponseOverrideAw, + unknown +> = z.object({ + binding: z.lazy(() => SyncListResponseOverrideAwBinding$inboundSchema), + description: z.nullable(z.string()).optional(), + effect: SyncListResponseOverrideEffect$inboundSchema.optional(), + grant: z.lazy(() => SyncListResponseOverrideAwGrant$inboundSchema), + label: z.nullable(z.string()).optional(), +}); + +export function syncListResponseOverrideAwFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncListResponseOverrideAw$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncListResponseOverrideAw' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/syncreconcilerequest.ts b/client-sdks/platform/typescript/src/models/syncreconcilerequest.ts index 7f18298cd..0745228b1 100644 --- a/client-sdks/platform/typescript/src/models/syncreconcilerequest.ts +++ b/client-sdks/platform/typescript/src/models/syncreconcilerequest.ts @@ -3,34331 +3,340 @@ */ import * as z from "zod/v4"; -import { remap as remap$ } from "../lib/primitives.js"; import { ClosedEnum } from "../types/enums.js"; - -export const SyncReconcileRequestCurrentReleaseTypeStringList = { - StringList: "stringList", -} as const; -export type SyncReconcileRequestCurrentReleaseTypeStringList = ClosedEnum< - typeof SyncReconcileRequestCurrentReleaseTypeStringList ->; - -export type SyncReconcileRequestCurrentReleaseDefaultStringList = { - type: SyncReconcileRequestCurrentReleaseTypeStringList; - /** - * String list default. - */ - value: Array; -}; - -export const SyncReconcileRequestCurrentReleaseTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncReconcileRequestCurrentReleaseTypeBoolean = ClosedEnum< - typeof SyncReconcileRequestCurrentReleaseTypeBoolean ->; - -export type SyncReconcileRequestCurrentReleaseDefaultBoolean = { - type: SyncReconcileRequestCurrentReleaseTypeBoolean; - /** - * Boolean default. - */ - value: boolean; -}; - -export const SyncReconcileRequestCurrentReleaseTypeNumber = { - Number: "number", -} as const; -export type SyncReconcileRequestCurrentReleaseTypeNumber = ClosedEnum< - typeof SyncReconcileRequestCurrentReleaseTypeNumber ->; - -export type SyncReconcileRequestCurrentReleaseDefaultNumber = { - type: SyncReconcileRequestCurrentReleaseTypeNumber; - /** - * Number default. - */ - value: string; -}; - -export const SyncReconcileRequestCurrentReleaseTypeString = { - String: "string", -} as const; -export type SyncReconcileRequestCurrentReleaseTypeString = ClosedEnum< - typeof SyncReconcileRequestCurrentReleaseTypeString ->; - -export type SyncReconcileRequestCurrentReleaseDefaultString = { - type: SyncReconcileRequestCurrentReleaseTypeString; - /** - * String default. - */ - value: string; -}; - -export type SyncReconcileRequestCurrentReleaseDefaultUnion = - | SyncReconcileRequestCurrentReleaseDefaultString - | SyncReconcileRequestCurrentReleaseDefaultNumber - | SyncReconcileRequestCurrentReleaseDefaultBoolean - | SyncReconcileRequestCurrentReleaseDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncReconcileRequestCurrentReleaseTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type SyncReconcileRequestCurrentReleaseTypeEnvEnum = ClosedEnum< - typeof SyncReconcileRequestCurrentReleaseTypeEnvEnum ->; - -export type SyncReconcileRequestCurrentReleaseTypeUnion = - | SyncReconcileRequestCurrentReleaseTypeEnvEnum - | any; - -/** - * How a resolved stack input is injected into runtime environment variables. - */ -export type SyncReconcileRequestCurrentReleaseEnv = { - /** - * Environment variable name. - */ - name: string; - /** - * Target resource IDs or patterns. None means every env-capable resource. - */ - targetResources?: Array | null | undefined; - type?: SyncReconcileRequestCurrentReleaseTypeEnvEnum | any | null | undefined; -}; - -/** - * Primitive stack input kind. - */ -export const CurrentReleaseStateKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type CurrentReleaseStateKind = ClosedEnum< - typeof CurrentReleaseStateKind ->; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileRequestCurrentReleasePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileRequestCurrentReleasePlatform = ClosedEnum< - typeof SyncReconcileRequestCurrentReleasePlatform ->; - -/** - * Who can provide a stack input value. - */ -export const SyncReconcileRequestCurrentReleaseProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type SyncReconcileRequestCurrentReleaseProvidedBy = ClosedEnum< - typeof SyncReconcileRequestCurrentReleaseProvidedBy ->; - -/** - * Portable stack input validation constraints. - */ -export type SyncReconcileRequestCurrentReleaseValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; - /** - * Minimum string-list items. - */ - minItems?: number | null | undefined; - /** - * Minimum string length. - */ - minLength?: number | null | undefined; - /** - * Portable whole-value regex pattern. - */ - pattern?: string | null | undefined; - /** - * Allowed string enum values. - */ - values?: Array | null | undefined; -}; - -export type SyncReconcileRequestCurrentReleaseValidationUnion = - | SyncReconcileRequestCurrentReleaseValidation - | any; - -/** - * Stack input definition serialized into a release stack. - */ -export type SyncReconcileRequestCurrentReleaseInput = { - default?: - | SyncReconcileRequestCurrentReleaseDefaultString - | SyncReconcileRequestCurrentReleaseDefaultNumber - | SyncReconcileRequestCurrentReleaseDefaultBoolean - | SyncReconcileRequestCurrentReleaseDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; - /** - * Stable input ID used by CLI/API calls. - */ - id: string; - /** - * Primitive stack input kind. - */ - kind: CurrentReleaseStateKind; - /** - * Human-facing field label. - */ - label: string; - /** - * Example placeholder shown in UI. - */ - placeholder?: string | null | undefined; - /** - * Platforms where this input applies. - */ - platforms?: - | Array - | null - | undefined; - /** - * Who can provide this value. - */ - providedBy: Array; - /** - * Whether a resolved value is required before deployment can proceed. - */ - required: boolean; - validation?: - | SyncReconcileRequestCurrentReleaseValidation - | any - | null - | undefined; -}; - -export const SyncReconcileRequestCurrentReleaseManagementEnum = { - Auto: "auto", -} as const; -export type SyncReconcileRequestCurrentReleaseManagementEnum = ClosedEnum< - typeof SyncReconcileRequestCurrentReleaseManagementEnum ->; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseOverrideAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestCurrentReleaseOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileRequestCurrentReleaseOverrideAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileRequestCurrentReleaseOverrideAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileRequestCurrentReleaseOverrideEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileRequestCurrentReleaseOverrideEffect = ClosedEnum< - typeof SyncReconcileRequestCurrentReleaseOverrideEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestCurrentReleaseOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileRequestCurrentReleaseOverrideAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestCurrentReleaseOverrideAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileRequestCurrentReleaseOverrideEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestCurrentReleaseOverrideAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestCurrentReleaseOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: - | SyncReconcileRequestCurrentReleaseOverrideAzureResource - | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileRequestCurrentReleaseOverrideAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestCurrentReleaseOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileRequestCurrentReleaseOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestCurrentReleaseOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestCurrentReleaseOverrideAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type CurrentReleaseOverrideConditionStateResource = { - expression: string; - title: string; -}; - -export type CurrentReleaseOverrideStateResourceConditionUnion = - | CurrentReleaseOverrideConditionStateResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseOverrideGcpResource = { - condition?: - | CurrentReleaseOverrideConditionStateResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type CurrentReleaseOverrideConditionState = { - expression: string; - title: string; -}; - -export type CurrentReleaseOverrideStateConditionUnion = - | CurrentReleaseOverrideConditionState - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseOverrideGcpStack = { - condition?: CurrentReleaseOverrideConditionState | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestCurrentReleaseOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileRequestCurrentReleaseOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileRequestCurrentReleaseOverrideGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestCurrentReleaseOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileRequestCurrentReleaseOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestCurrentReleaseOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestCurrentReleaseOverrideGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileRequestCurrentReleaseOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileRequestCurrentReleaseOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileRequestCurrentReleaseOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileRequestCurrentReleaseOverrideUnion = - | SyncReconcileRequestCurrentReleaseOverride - | string; - -export type SyncReconcileRequestCurrentReleaseManagement2 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { - [k: string]: Array; - }; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestCurrentReleaseExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileRequestCurrentReleaseExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileRequestCurrentReleaseExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileRequestCurrentReleaseExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileRequestCurrentReleaseExtendEffect = ClosedEnum< - typeof SyncReconcileRequestCurrentReleaseExtendEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestCurrentReleaseExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileRequestCurrentReleaseExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestCurrentReleaseExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileRequestCurrentReleaseExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestCurrentReleaseExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestCurrentReleaseExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileRequestCurrentReleaseExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileRequestCurrentReleaseExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestCurrentReleaseExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileRequestCurrentReleaseExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestCurrentReleaseExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestCurrentReleaseExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type CurrentReleaseExtendConditionStateResource = { - expression: string; - title: string; -}; - -export type CurrentReleaseExtendStateResourceConditionUnion = - | CurrentReleaseExtendConditionStateResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseExtendGcpResource = { - condition?: - | CurrentReleaseExtendConditionStateResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type CurrentReleaseExtendConditionState = { - expression: string; - title: string; -}; - -export type CurrentReleaseExtendStateConditionUnion = - | CurrentReleaseExtendConditionState - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseExtendGcpStack = { - condition?: CurrentReleaseExtendConditionState | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestCurrentReleaseExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileRequestCurrentReleaseExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileRequestCurrentReleaseExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestCurrentReleaseExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileRequestCurrentReleaseExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestCurrentReleaseExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestCurrentReleaseExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileRequestCurrentReleaseExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileRequestCurrentReleaseExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileRequestCurrentReleaseExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileRequestCurrentReleaseExtendUnion = - | SyncReconcileRequestCurrentReleaseExtend - | string; - -export type SyncReconcileRequestCurrentReleaseManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { - [k: string]: Array; - }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type SyncReconcileRequestCurrentReleaseManagementUnion = - | SyncReconcileRequestCurrentReleaseManagement1 - | SyncReconcileRequestCurrentReleaseManagement2 - | SyncReconcileRequestCurrentReleaseManagementEnum; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestCurrentReleaseProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileRequestCurrentReleaseProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileRequestCurrentReleaseProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileRequestCurrentReleaseProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileRequestCurrentReleaseProfileEffect = ClosedEnum< - typeof SyncReconcileRequestCurrentReleaseProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestCurrentReleaseProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileRequestCurrentReleaseProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestCurrentReleaseProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileRequestCurrentReleaseProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestCurrentReleaseProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestCurrentReleaseProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileRequestCurrentReleaseProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileRequestCurrentReleaseProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestCurrentReleaseProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileRequestCurrentReleaseProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestCurrentReleaseProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestCurrentReleaseProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type CurrentReleaseProfileConditionStateResource = { - expression: string; - title: string; -}; - -export type CurrentReleaseProfileStateResourceConditionUnion = - | CurrentReleaseProfileConditionStateResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseProfileGcpResource = { - condition?: - | CurrentReleaseProfileConditionStateResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type CurrentReleaseProfileConditionState = { - expression: string; - title: string; -}; - -export type CurrentReleaseProfileStateConditionUnion = - | CurrentReleaseProfileConditionState - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestCurrentReleaseProfileGcpStack = { - condition?: CurrentReleaseProfileConditionState | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestCurrentReleaseProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileRequestCurrentReleaseProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileRequestCurrentReleaseProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestCurrentReleaseProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileRequestCurrentReleaseProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestCurrentReleaseProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestCurrentReleaseProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileRequestCurrentReleaseProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileRequestCurrentReleaseProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileRequestCurrentReleaseProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileRequestCurrentReleaseProfileUnion = - | SyncReconcileRequestCurrentReleaseProfile - | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type SyncReconcileRequestCurrentReleasePermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncReconcileRequestCurrentReleaseManagement1 - | SyncReconcileRequestCurrentReleaseManagement2 - | SyncReconcileRequestCurrentReleaseManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncReconcileRequestCurrentReleaseConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncReconcileRequestCurrentReleaseDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const CurrentReleaseStateLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type CurrentReleaseStateLifecycle = ClosedEnum< - typeof CurrentReleaseStateLifecycle ->; - -export type SyncReconcileRequestCurrentReleaseResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncReconcileRequestCurrentReleaseConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: CurrentReleaseStateLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileRequestCurrentReleaseSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileRequestCurrentReleaseSupportedPlatform = ClosedEnum< - typeof SyncReconcileRequestCurrentReleaseSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncReconcileRequestCurrentReleaseStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: SyncReconcileRequestCurrentReleasePermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: SyncReconcileRequestCurrentReleaseResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -/** - * Release metadata - * - * @remarks - * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. - */ -export type SyncReconcileRequestCurrentRelease = { - /** - * Short description of the release - */ - description?: string | null | undefined; - /** - * Release ID (e.g., rel_xyz) - */ - releaseId: string; - /** - * A bag of resources, unaware of any cloud. - */ - stack: SyncReconcileRequestCurrentReleaseStack; - /** - * Version string (e.g., 2.1.0) - */ - version?: string | null | undefined; -}; - -export type SyncReconcileRequestCurrentReleaseUnion = - | SyncReconcileRequestCurrentRelease - | any; - -export const SyncReconcileRequestPlatformTest = { - Test: "test", -} as const; -export type SyncReconcileRequestPlatformTest = ClosedEnum< - typeof SyncReconcileRequestPlatformTest ->; - -/** - * Test platform environment information (mock) - */ -export type SyncReconcileRequestEnvironmentInfoTest = { - /** - * Test identifier for this environment - */ - testId: string; - platform: SyncReconcileRequestPlatformTest; -}; - -export const SyncReconcileRequestPlatformLocal = { - Local: "local", -} as const; -export type SyncReconcileRequestPlatformLocal = ClosedEnum< - typeof SyncReconcileRequestPlatformLocal ->; - -/** - * Local platform environment information - */ -export type SyncReconcileRequestEnvironmentInfoLocal = { - /** - * Architecture (e.g., "x86_64", "aarch64") - */ - arch: string; - /** - * Hostname of the machine running the deployment - */ - hostname: string; - /** - * Operating system (e.g., "linux", "macos", "windows") - */ - os: string; - platform: SyncReconcileRequestPlatformLocal; -}; - -export const SyncReconcileRequestPlatformAzure = { - Azure: "azure", -} as const; -export type SyncReconcileRequestPlatformAzure = ClosedEnum< - typeof SyncReconcileRequestPlatformAzure ->; - -/** - * Azure-specific environment information - */ -export type SyncReconcileRequestEnvironmentInfoAzure = { - /** - * Azure location/region - */ - location: string; - /** - * Azure subscription ID - */ - subscriptionId: string; - /** - * Azure tenant ID - */ - tenantId: string; - platform: SyncReconcileRequestPlatformAzure; -}; - -export const SyncReconcileRequestPlatformGcp = { - Gcp: "gcp", -} as const; -export type SyncReconcileRequestPlatformGcp = ClosedEnum< - typeof SyncReconcileRequestPlatformGcp ->; - -/** - * GCP-specific environment information - */ -export type SyncReconcileRequestEnvironmentInfoGcp = { - /** - * GCP project ID (e.g., "my-project") - */ - projectId: string; - /** - * GCP project number (e.g., "123456789012") - */ - projectNumber: string; - /** - * GCP region - */ - region: string; - platform: SyncReconcileRequestPlatformGcp; -}; - -export const SyncReconcileRequestPlatformAws = { - Aws: "aws", -} as const; -export type SyncReconcileRequestPlatformAws = ClosedEnum< - typeof SyncReconcileRequestPlatformAws ->; - -/** - * AWS-specific environment information - */ -export type SyncReconcileRequestEnvironmentInfoAws = { - /** - * AWS account ID - */ - accountId: string; - /** - * AWS region - */ - region: string; - platform: SyncReconcileRequestPlatformAws; -}; - -export type SyncReconcileRequestEnvironmentInfoUnion = - | SyncReconcileRequestEnvironmentInfoGcp - | SyncReconcileRequestEnvironmentInfoAzure - | SyncReconcileRequestEnvironmentInfoLocal - | SyncReconcileRequestEnvironmentInfoAws - | SyncReconcileRequestEnvironmentInfoTest - | any; - -/** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. - */ -export type SyncReconcileRequestError = { - /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" - */ - code: string; - /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. - */ - context?: any | null | undefined; - /** - * Optional human-facing remediation hint. - */ - hint?: string | null | undefined; - /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. - */ - httpStatusCode?: number | null | undefined; - /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. - */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable?: boolean | undefined; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; -}; - -export type SyncReconcileRequestErrorUnion = SyncReconcileRequestError | any; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileRequestPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileRequestPlatform = ClosedEnum< - typeof SyncReconcileRequestPlatform ->; - -export const SyncReconcileRequestPreparedStackTypeStringList = { - StringList: "stringList", -} as const; -export type SyncReconcileRequestPreparedStackTypeStringList = ClosedEnum< - typeof SyncReconcileRequestPreparedStackTypeStringList ->; - -export type SyncReconcileRequestPreparedStackDefaultStringList = { - type: SyncReconcileRequestPreparedStackTypeStringList; - /** - * String list default. - */ - value: Array; -}; - -export const SyncReconcileRequestPreparedStackTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncReconcileRequestPreparedStackTypeBoolean = ClosedEnum< - typeof SyncReconcileRequestPreparedStackTypeBoolean ->; - -export type SyncReconcileRequestPreparedStackDefaultBoolean = { - type: SyncReconcileRequestPreparedStackTypeBoolean; - /** - * Boolean default. - */ - value: boolean; -}; - -export const SyncReconcileRequestPreparedStackTypeNumber = { - Number: "number", -} as const; -export type SyncReconcileRequestPreparedStackTypeNumber = ClosedEnum< - typeof SyncReconcileRequestPreparedStackTypeNumber ->; - -export type SyncReconcileRequestPreparedStackDefaultNumber = { - type: SyncReconcileRequestPreparedStackTypeNumber; - /** - * Number default. - */ - value: string; -}; - -export const SyncReconcileRequestPreparedStackTypeString = { - String: "string", -} as const; -export type SyncReconcileRequestPreparedStackTypeString = ClosedEnum< - typeof SyncReconcileRequestPreparedStackTypeString ->; - -export type SyncReconcileRequestPreparedStackDefaultString = { - type: SyncReconcileRequestPreparedStackTypeString; - /** - * String default. - */ - value: string; -}; - -export type SyncReconcileRequestPreparedStackDefaultUnion = - | SyncReconcileRequestPreparedStackDefaultString - | SyncReconcileRequestPreparedStackDefaultNumber - | SyncReconcileRequestPreparedStackDefaultBoolean - | SyncReconcileRequestPreparedStackDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncReconcileRequestPreparedStackTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type SyncReconcileRequestPreparedStackTypeEnvEnum = ClosedEnum< - typeof SyncReconcileRequestPreparedStackTypeEnvEnum ->; - -export type SyncReconcileRequestPreparedStackTypeUnion = - | SyncReconcileRequestPreparedStackTypeEnvEnum - | any; - -/** - * How a resolved stack input is injected into runtime environment variables. - */ -export type SyncReconcileRequestPreparedStackEnv = { - /** - * Environment variable name. - */ - name: string; - /** - * Target resource IDs or patterns. None means every env-capable resource. - */ - targetResources?: Array | null | undefined; - type?: SyncReconcileRequestPreparedStackTypeEnvEnum | any | null | undefined; -}; - -/** - * Primitive stack input kind. - */ -export const PreparedStackStateKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type PreparedStackStateKind = ClosedEnum; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileRequestPreparedStackPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileRequestPreparedStackPlatform = ClosedEnum< - typeof SyncReconcileRequestPreparedStackPlatform ->; - -/** - * Who can provide a stack input value. - */ -export const SyncReconcileRequestPreparedStackProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type SyncReconcileRequestPreparedStackProvidedBy = ClosedEnum< - typeof SyncReconcileRequestPreparedStackProvidedBy ->; - -/** - * Portable stack input validation constraints. - */ -export type SyncReconcileRequestPreparedStackValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; - /** - * Minimum string-list items. - */ - minItems?: number | null | undefined; - /** - * Minimum string length. - */ - minLength?: number | null | undefined; - /** - * Portable whole-value regex pattern. - */ - pattern?: string | null | undefined; - /** - * Allowed string enum values. - */ - values?: Array | null | undefined; -}; - -export type SyncReconcileRequestPreparedStackValidationUnion = - | SyncReconcileRequestPreparedStackValidation - | any; - -/** - * Stack input definition serialized into a release stack. - */ -export type SyncReconcileRequestPreparedStackInput = { - default?: - | SyncReconcileRequestPreparedStackDefaultString - | SyncReconcileRequestPreparedStackDefaultNumber - | SyncReconcileRequestPreparedStackDefaultBoolean - | SyncReconcileRequestPreparedStackDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; - /** - * Stable input ID used by CLI/API calls. - */ - id: string; - /** - * Primitive stack input kind. - */ - kind: PreparedStackStateKind; - /** - * Human-facing field label. - */ - label: string; - /** - * Example placeholder shown in UI. - */ - placeholder?: string | null | undefined; - /** - * Platforms where this input applies. - */ - platforms?: - | Array - | null - | undefined; - /** - * Who can provide this value. - */ - providedBy: Array; - /** - * Whether a resolved value is required before deployment can proceed. - */ - required: boolean; - validation?: - | SyncReconcileRequestPreparedStackValidation - | any - | null - | undefined; -}; - -export const SyncReconcileRequestPreparedStackManagementEnum = { - Auto: "auto", -} as const; -export type SyncReconcileRequestPreparedStackManagementEnum = ClosedEnum< - typeof SyncReconcileRequestPreparedStackManagementEnum ->; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestPreparedStackOverrideAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestPreparedStackOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestPreparedStackOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileRequestPreparedStackOverrideAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileRequestPreparedStackOverrideAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileRequestPreparedStackOverrideEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileRequestPreparedStackOverrideEffect = ClosedEnum< - typeof SyncReconcileRequestPreparedStackOverrideEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestPreparedStackOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileRequestPreparedStackOverrideAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestPreparedStackOverrideAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileRequestPreparedStackOverrideEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestPreparedStackOverrideAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestPreparedStackOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestPreparedStackOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestPreparedStackOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileRequestPreparedStackOverrideAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileRequestPreparedStackOverrideAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestPreparedStackOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileRequestPreparedStackOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestPreparedStackOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestPreparedStackOverrideAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type PreparedStackOverrideConditionStateResource = { - expression: string; - title: string; -}; - -export type PreparedStackOverrideStateResourceConditionUnion = - | PreparedStackOverrideConditionStateResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestPreparedStackOverrideGcpResource = { - condition?: - | PreparedStackOverrideConditionStateResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type PreparedStackOverrideConditionStateStack = { - expression: string; - title: string; -}; - -export type PreparedStackOverrideStateStackConditionUnion = - | PreparedStackOverrideConditionStateStack - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestPreparedStackOverrideGcpStack = { - condition?: PreparedStackOverrideConditionStateStack | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestPreparedStackOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileRequestPreparedStackOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileRequestPreparedStackOverrideGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestPreparedStackOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileRequestPreparedStackOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestPreparedStackOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestPreparedStackOverrideGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileRequestPreparedStackOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileRequestPreparedStackOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileRequestPreparedStackOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileRequestPreparedStackOverrideUnion = - | SyncReconcileRequestPreparedStackOverride - | string; - -export type SyncReconcileRequestPreparedStackManagement2 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { - [k: string]: Array; - }; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestPreparedStackExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestPreparedStackExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestPreparedStackExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileRequestPreparedStackExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileRequestPreparedStackExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileRequestPreparedStackExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileRequestPreparedStackExtendEffect = ClosedEnum< - typeof SyncReconcileRequestPreparedStackExtendEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestPreparedStackExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileRequestPreparedStackExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestPreparedStackExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileRequestPreparedStackExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestPreparedStackExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestPreparedStackExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestPreparedStackExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestPreparedStackExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileRequestPreparedStackExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileRequestPreparedStackExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestPreparedStackExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileRequestPreparedStackExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestPreparedStackExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestPreparedStackExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type PreparedStackExtendConditionStateResource = { - expression: string; - title: string; -}; - -export type PreparedStackExtendStateResourceConditionUnion = - | PreparedStackExtendConditionStateResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestPreparedStackExtendGcpResource = { - condition?: - | PreparedStackExtendConditionStateResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type PreparedStackExtendConditionStateStack = { - expression: string; - title: string; -}; - -export type PreparedStackExtendStateStackConditionUnion = - | PreparedStackExtendConditionStateStack - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestPreparedStackExtendGcpStack = { - condition?: PreparedStackExtendConditionStateStack | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestPreparedStackExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileRequestPreparedStackExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileRequestPreparedStackExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestPreparedStackExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileRequestPreparedStackExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestPreparedStackExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestPreparedStackExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileRequestPreparedStackExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileRequestPreparedStackExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileRequestPreparedStackExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileRequestPreparedStackExtendUnion = - | SyncReconcileRequestPreparedStackExtend - | string; - -export type SyncReconcileRequestPreparedStackManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { - [k: string]: Array; - }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type SyncReconcileRequestPreparedStackManagementUnion = - | SyncReconcileRequestPreparedStackManagement1 - | SyncReconcileRequestPreparedStackManagement2 - | SyncReconcileRequestPreparedStackManagementEnum; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestPreparedStackProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestPreparedStackProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestPreparedStackProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileRequestPreparedStackProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileRequestPreparedStackProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileRequestPreparedStackProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileRequestPreparedStackProfileEffect = ClosedEnum< - typeof SyncReconcileRequestPreparedStackProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestPreparedStackProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileRequestPreparedStackProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestPreparedStackProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileRequestPreparedStackProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestPreparedStackProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestPreparedStackProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestPreparedStackProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestPreparedStackProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileRequestPreparedStackProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileRequestPreparedStackProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestPreparedStackProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileRequestPreparedStackProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestPreparedStackProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestPreparedStackProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type PreparedStackProfileConditionStateResource = { - expression: string; - title: string; -}; - -export type PreparedStackProfileStateResourceConditionUnion = - | PreparedStackProfileConditionStateResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestPreparedStackProfileGcpResource = { - condition?: - | PreparedStackProfileConditionStateResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type PreparedStackProfileConditionStateStack = { - expression: string; - title: string; -}; - -export type PreparedStackProfileStateStackConditionUnion = - | PreparedStackProfileConditionStateStack - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestPreparedStackProfileGcpStack = { - condition?: PreparedStackProfileConditionStateStack | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestPreparedStackProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileRequestPreparedStackProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileRequestPreparedStackProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestPreparedStackProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileRequestPreparedStackProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestPreparedStackProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestPreparedStackProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileRequestPreparedStackProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileRequestPreparedStackProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileRequestPreparedStackProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileRequestPreparedStackProfileUnion = - | SyncReconcileRequestPreparedStackProfile - | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type SyncReconcileRequestPreparedStackPermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncReconcileRequestPreparedStackManagement1 - | SyncReconcileRequestPreparedStackManagement2 - | SyncReconcileRequestPreparedStackManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncReconcileRequestPreparedStackConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncReconcileRequestPreparedStackDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const PreparedStackStateLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type PreparedStackStateLifecycle = ClosedEnum< - typeof PreparedStackStateLifecycle ->; - -export type SyncReconcileRequestPreparedStackResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncReconcileRequestPreparedStackConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: PreparedStackStateLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileRequestPreparedStackSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileRequestPreparedStackSupportedPlatform = ClosedEnum< - typeof SyncReconcileRequestPreparedStackSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncReconcileRequestPreparedStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: SyncReconcileRequestPreparedStackPermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: SyncReconcileRequestPreparedStackResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -export type SyncReconcileRequestPreparedStackUnion = - | SyncReconcileRequestPreparedStack - | any; - -/** - * Runtime metadata for deployment - * - * @remarks - * - * Stores deployment state that needs to persist across step calls. - */ -export type SyncReconcileRequestRuntimeMetadata = { - /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment - */ - lastSyncedEnvVarsHash?: string | null | undefined; - preparedStack?: SyncReconcileRequestPreparedStack | any | null | undefined; - /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. - */ - registryAccessGranted?: boolean | undefined; -}; - -export type SyncReconcileRequestRuntimeMetadataUnion = - | SyncReconcileRequestRuntimeMetadata - | any; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileRequestStackStatePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileRequestStackStatePlatform = ClosedEnum< - typeof SyncReconcileRequestStackStatePlatform ->; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncReconcileRequestStackStateConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const ControllerPlatformStateEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type ControllerPlatformStateEnum = ClosedEnum< - typeof ControllerPlatformStateEnum ->; - -export type StateControllerPlatformUnion = ControllerPlatformStateEnum | any; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncReconcileRequestStackStateDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. - */ -export type SyncReconcileRequestStackStateError = { - /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" - */ - code: string; - /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. - */ - context?: any | null | undefined; - /** - * Optional human-facing remediation hint. - */ - hint?: string | null | undefined; - /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. - */ - httpStatusCode?: number | null | undefined; - /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. - */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable?: boolean | undefined; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; -}; - -export type SyncReconcileRequestStackStateErrorUnion = - | SyncReconcileRequestStackStateError - | any; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const StackStateLifecycleStateEnum = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type StackStateLifecycleStateEnum = ClosedEnum< - typeof StackStateLifecycleStateEnum ->; - -export type StateLifecycleUnion = StackStateLifecycleStateEnum | any; - -/** - * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. - */ -export type SyncReconcileRequestOutputs = { - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -export type SyncReconcileRequestOutputsUnion = - | SyncReconcileRequestOutputs - | any; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncReconcileRequestPreviousConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -export type SyncReconcileRequestPreviousConfigUnion = - | SyncReconcileRequestPreviousConfig - | any; - -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export const StackStateStateStatus = { - Pending: "pending", - Provisioning: "provisioning", - ProvisionFailed: "provision-failed", - Running: "running", - Updating: "updating", - UpdateFailed: "update-failed", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - Deleted: "deleted", - RefreshFailed: "refresh-failed", -} as const; -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export type StackStateStateStatus = ClosedEnum; - -/** - * Represents the state of a single resource within the stack for a specific platform. - */ -export type SyncReconcileRequestStackStateResources = { - /** - * The platform-specific resource controller that manages this resource's lifecycle. - * - * @remarks - * This is None when the resource status is Pending. - * Stored as JSON to make the struct serializable and movable to alien-core. - */ - internal?: any | null | undefined; - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncReconcileRequestStackStateConfig; - controllerPlatform?: ControllerPlatformStateEnum | any | null | undefined; - /** - * Complete list of dependencies for this resource, including infrastructure dependencies. - * - * @remarks - * This preserves the full dependency information from the stack definition. - */ - dependencies?: Array | undefined; - error?: SyncReconcileRequestStackStateError | any | null | undefined; - /** - * Stores the controller state that failed, used for manual retry operations. - * - * @remarks - * This allows resuming from the exact point where the failure occurred. - * Stored as JSON to make the struct serializable and movable to alien-core. - */ - lastFailedState?: any | null | undefined; - lifecycle?: StackStateLifecycleStateEnum | any | null | undefined; - outputs?: SyncReconcileRequestOutputs | any | null | undefined; - previousConfig?: SyncReconcileRequestPreviousConfig | any | null | undefined; - /** - * Binding parameters for remote access. - * - * @remarks - * Only populated when the resource has `remote_access: true` in its ResourceEntry. - * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). - * Populated by controllers during provisioning using get_binding_params(). - */ - remoteBindingParams?: any | null | undefined; - /** - * Tracks consecutive retry attempts for the current state transition. - */ - retryAttempt?: number | undefined; - /** - * Represents the high-level status of a resource during its lifecycle. - */ - status: StackStateStateStatus; - /** - * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). - */ - type: string; -}; - -/** - * Represents the collective state of all resources in a stack, including platform and pending actions. - */ -export type SyncReconcileRequestStackState = { - /** - * Represents the target cloud platform. - */ - platform: SyncReconcileRequestStackStatePlatform; - /** - * A prefix used for resource naming to ensure uniqueness across deployments. - */ - resourcePrefix: string; - /** - * The state of individual resources, keyed by resource ID. - */ - resources: { [k: string]: SyncReconcileRequestStackStateResources }; -}; - -export type SyncReconcileRequestStackStateUnion = - | SyncReconcileRequestStackState - | any; - -/** - * Deployment status in the deployment lifecycle - */ -export const StateStatus = { - Pending: "pending", - PreflightsFailed: "preflights-failed", - InitialSetup: "initial-setup", - InitialSetupFailed: "initial-setup-failed", - Provisioning: "provisioning", - ProvisioningFailed: "provisioning-failed", - Running: "running", - RefreshFailed: "refresh-failed", - UpdatePending: "update-pending", - Updating: "updating", - UpdateFailed: "update-failed", - DeletePending: "delete-pending", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - TeardownFailed: "teardown-failed", - Deleted: "deleted", - Error: "error", -} as const; -/** - * Deployment status in the deployment lifecycle - */ -export type StateStatus = ClosedEnum; - -export const SyncReconcileRequestTargetReleaseTypeStringList = { - StringList: "stringList", -} as const; -export type SyncReconcileRequestTargetReleaseTypeStringList = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseTypeStringList ->; - -export type SyncReconcileRequestTargetReleaseDefaultStringList = { - type: SyncReconcileRequestTargetReleaseTypeStringList; - /** - * String list default. - */ - value: Array; -}; - -export const SyncReconcileRequestTargetReleaseTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncReconcileRequestTargetReleaseTypeBoolean = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseTypeBoolean ->; - -export type SyncReconcileRequestTargetReleaseDefaultBoolean = { - type: SyncReconcileRequestTargetReleaseTypeBoolean; - /** - * Boolean default. - */ - value: boolean; -}; - -export const SyncReconcileRequestTargetReleaseTypeNumber = { - Number: "number", -} as const; -export type SyncReconcileRequestTargetReleaseTypeNumber = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseTypeNumber ->; - -export type SyncReconcileRequestTargetReleaseDefaultNumber = { - type: SyncReconcileRequestTargetReleaseTypeNumber; - /** - * Number default. - */ - value: string; -}; - -export const SyncReconcileRequestTargetReleaseTypeString = { - String: "string", -} as const; -export type SyncReconcileRequestTargetReleaseTypeString = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseTypeString ->; - -export type SyncReconcileRequestTargetReleaseDefaultString = { - type: SyncReconcileRequestTargetReleaseTypeString; - /** - * String default. - */ - value: string; -}; - -export type SyncReconcileRequestTargetReleaseDefaultUnion = - | SyncReconcileRequestTargetReleaseDefaultString - | SyncReconcileRequestTargetReleaseDefaultNumber - | SyncReconcileRequestTargetReleaseDefaultBoolean - | SyncReconcileRequestTargetReleaseDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncReconcileRequestTargetReleaseTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type SyncReconcileRequestTargetReleaseTypeEnvEnum = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseTypeEnvEnum ->; - -export type SyncReconcileRequestTargetReleaseTypeUnion = - | SyncReconcileRequestTargetReleaseTypeEnvEnum - | any; - -/** - * How a resolved stack input is injected into runtime environment variables. - */ -export type SyncReconcileRequestTargetReleaseEnv = { - /** - * Environment variable name. - */ - name: string; - /** - * Target resource IDs or patterns. None means every env-capable resource. - */ - targetResources?: Array | null | undefined; - type?: SyncReconcileRequestTargetReleaseTypeEnvEnum | any | null | undefined; -}; - -/** - * Primitive stack input kind. - */ -export const TargetReleaseStateKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type TargetReleaseStateKind = ClosedEnum; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileRequestTargetReleasePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileRequestTargetReleasePlatform = ClosedEnum< - typeof SyncReconcileRequestTargetReleasePlatform ->; - -/** - * Who can provide a stack input value. - */ -export const SyncReconcileRequestTargetReleaseProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type SyncReconcileRequestTargetReleaseProvidedBy = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseProvidedBy ->; - -/** - * Portable stack input validation constraints. - */ -export type SyncReconcileRequestTargetReleaseValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; - /** - * Minimum string-list items. - */ - minItems?: number | null | undefined; - /** - * Minimum string length. - */ - minLength?: number | null | undefined; - /** - * Portable whole-value regex pattern. - */ - pattern?: string | null | undefined; - /** - * Allowed string enum values. - */ - values?: Array | null | undefined; -}; - -export type SyncReconcileRequestTargetReleaseValidationUnion = - | SyncReconcileRequestTargetReleaseValidation - | any; - -/** - * Stack input definition serialized into a release stack. - */ -export type SyncReconcileRequestTargetReleaseInput = { - default?: - | SyncReconcileRequestTargetReleaseDefaultString - | SyncReconcileRequestTargetReleaseDefaultNumber - | SyncReconcileRequestTargetReleaseDefaultBoolean - | SyncReconcileRequestTargetReleaseDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; - /** - * Stable input ID used by CLI/API calls. - */ - id: string; - /** - * Primitive stack input kind. - */ - kind: TargetReleaseStateKind; - /** - * Human-facing field label. - */ - label: string; - /** - * Example placeholder shown in UI. - */ - placeholder?: string | null | undefined; - /** - * Platforms where this input applies. - */ - platforms?: - | Array - | null - | undefined; - /** - * Who can provide this value. - */ - providedBy: Array; - /** - * Whether a resolved value is required before deployment can proceed. - */ - required: boolean; - validation?: - | SyncReconcileRequestTargetReleaseValidation - | any - | null - | undefined; -}; - -export const SyncReconcileRequestTargetReleaseManagementEnum = { - Auto: "auto", -} as const; -export type SyncReconcileRequestTargetReleaseManagementEnum = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseManagementEnum ->; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseOverrideAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestTargetReleaseOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileRequestTargetReleaseOverrideAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileRequestTargetReleaseOverrideAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileRequestTargetReleaseOverrideEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileRequestTargetReleaseOverrideEffect = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseOverrideEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestTargetReleaseOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileRequestTargetReleaseOverrideAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestTargetReleaseOverrideAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileRequestTargetReleaseOverrideEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestTargetReleaseOverrideAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestTargetReleaseOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileRequestTargetReleaseOverrideAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileRequestTargetReleaseOverrideAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestTargetReleaseOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileRequestTargetReleaseOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestTargetReleaseOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestTargetReleaseOverrideAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type TargetReleaseOverrideConditionStateResource = { - expression: string; - title: string; -}; - -export type TargetReleaseOverrideStateResourceConditionUnion = - | TargetReleaseOverrideConditionStateResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseOverrideGcpResource = { - condition?: - | TargetReleaseOverrideConditionStateResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type TargetReleaseOverrideConditionState = { - expression: string; - title: string; -}; - -export type TargetReleaseOverrideStateConditionUnion = - | TargetReleaseOverrideConditionState - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseOverrideGcpStack = { - condition?: TargetReleaseOverrideConditionState | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestTargetReleaseOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileRequestTargetReleaseOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileRequestTargetReleaseOverrideGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestTargetReleaseOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileRequestTargetReleaseOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestTargetReleaseOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestTargetReleaseOverrideGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileRequestTargetReleaseOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileRequestTargetReleaseOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileRequestTargetReleaseOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileRequestTargetReleaseOverrideUnion = - | SyncReconcileRequestTargetReleaseOverride - | string; - -export type SyncReconcileRequestTargetReleaseManagement2 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { - [k: string]: Array; - }; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestTargetReleaseExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileRequestTargetReleaseExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileRequestTargetReleaseExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileRequestTargetReleaseExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileRequestTargetReleaseExtendEffect = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseExtendEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestTargetReleaseExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileRequestTargetReleaseExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestTargetReleaseExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileRequestTargetReleaseExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestTargetReleaseExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestTargetReleaseExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileRequestTargetReleaseExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileRequestTargetReleaseExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestTargetReleaseExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileRequestTargetReleaseExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestTargetReleaseExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestTargetReleaseExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type TargetReleaseExtendConditionStateResource = { - expression: string; - title: string; -}; - -export type TargetReleaseExtendStateResourceConditionUnion = - | TargetReleaseExtendConditionStateResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseExtendGcpResource = { - condition?: - | TargetReleaseExtendConditionStateResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type TargetReleaseExtendConditionState = { - expression: string; - title: string; -}; - -export type TargetReleaseExtendStateConditionUnion = - | TargetReleaseExtendConditionState - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseExtendGcpStack = { - condition?: TargetReleaseExtendConditionState | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestTargetReleaseExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileRequestTargetReleaseExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileRequestTargetReleaseExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestTargetReleaseExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileRequestTargetReleaseExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestTargetReleaseExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestTargetReleaseExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileRequestTargetReleaseExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileRequestTargetReleaseExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileRequestTargetReleaseExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileRequestTargetReleaseExtendUnion = - | SyncReconcileRequestTargetReleaseExtend - | string; - -export type SyncReconcileRequestTargetReleaseManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { - [k: string]: Array; - }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type SyncReconcileRequestTargetReleaseManagementUnion = - | SyncReconcileRequestTargetReleaseManagement1 - | SyncReconcileRequestTargetReleaseManagement2 - | SyncReconcileRequestTargetReleaseManagementEnum; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestTargetReleaseProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileRequestTargetReleaseProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileRequestTargetReleaseProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileRequestTargetReleaseProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileRequestTargetReleaseProfileEffect = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestTargetReleaseProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileRequestTargetReleaseProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestTargetReleaseProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileRequestTargetReleaseProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestTargetReleaseProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestTargetReleaseProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileRequestTargetReleaseProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileRequestTargetReleaseProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestTargetReleaseProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileRequestTargetReleaseProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestTargetReleaseProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestTargetReleaseProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type TargetReleaseProfileConditionStateResource = { - expression: string; - title: string; -}; - -export type TargetReleaseProfileStateResourceConditionUnion = - | TargetReleaseProfileConditionStateResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseProfileGcpResource = { - condition?: - | TargetReleaseProfileConditionStateResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type TargetReleaseProfileConditionState = { - expression: string; - title: string; -}; - -export type TargetReleaseProfileStateConditionUnion = - | TargetReleaseProfileConditionState - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileRequestTargetReleaseProfileGcpStack = { - condition?: TargetReleaseProfileConditionState | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileRequestTargetReleaseProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileRequestTargetReleaseProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileRequestTargetReleaseProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileRequestTargetReleaseProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileRequestTargetReleaseProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileRequestTargetReleaseProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileRequestTargetReleaseProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileRequestTargetReleaseProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileRequestTargetReleaseProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileRequestTargetReleaseProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileRequestTargetReleaseProfileUnion = - | SyncReconcileRequestTargetReleaseProfile - | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type SyncReconcileRequestTargetReleasePermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncReconcileRequestTargetReleaseManagement1 - | SyncReconcileRequestTargetReleaseManagement2 - | SyncReconcileRequestTargetReleaseManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncReconcileRequestTargetReleaseConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncReconcileRequestTargetReleaseDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const TargetReleaseStateLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type TargetReleaseStateLifecycle = ClosedEnum< - typeof TargetReleaseStateLifecycle ->; - -export type SyncReconcileRequestTargetReleaseResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncReconcileRequestTargetReleaseConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: TargetReleaseStateLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileRequestTargetReleaseSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileRequestTargetReleaseSupportedPlatform = ClosedEnum< - typeof SyncReconcileRequestTargetReleaseSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncReconcileRequestTargetReleaseStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: SyncReconcileRequestTargetReleasePermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: SyncReconcileRequestTargetReleaseResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -/** - * Release metadata - * - * @remarks - * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. - */ -export type SyncReconcileRequestTargetRelease = { - /** - * Short description of the release - */ - description?: string | null | undefined; - /** - * Release ID (e.g., rel_xyz) - */ - releaseId: string; - /** - * A bag of resources, unaware of any cloud. - */ - stack: SyncReconcileRequestTargetReleaseStack; - /** - * Version string (e.g., 2.1.0) - */ - version?: string | null | undefined; -}; - -export type SyncReconcileRequestTargetReleaseUnion = - | SyncReconcileRequestTargetRelease - | any; - -/** - * Complete deployment state after step() execution - */ -export type SyncReconcileRequestState = { - currentRelease?: SyncReconcileRequestCurrentRelease | any | null | undefined; - environmentInfo?: - | SyncReconcileRequestEnvironmentInfoGcp - | SyncReconcileRequestEnvironmentInfoAzure - | SyncReconcileRequestEnvironmentInfoLocal - | SyncReconcileRequestEnvironmentInfoAws - | SyncReconcileRequestEnvironmentInfoTest - | any - | null - | undefined; - error?: SyncReconcileRequestError | any | null | undefined; - /** - * Represents the target cloud platform. - */ - platform: SyncReconcileRequestPlatform; - /** - * Protocol version for cross-actor compatibility. - * - * @remarks - * All actors (manager, push client, agent) check this before stepping. - * Mismatched versions produce a clear error instead of silent corruption. - * See docs/02-manager/10-deployment-protocol.md. - */ - protocolVersion: number; - /** - * Whether a retry has been requested for a failed deployment - * - * @remarks - * When true and status is a failed state, the deployment system will retry failed resources - */ - retryRequested?: boolean | undefined; - runtimeMetadata?: - | SyncReconcileRequestRuntimeMetadata - | any - | null - | undefined; - stackState?: SyncReconcileRequestStackState | any | null | undefined; - /** - * Deployment status in the deployment lifecycle - */ - status: StateStatus; - targetRelease?: SyncReconcileRequestTargetRelease | any | null | undefined; -}; - -export const BackendEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Managed: "managed", - External: "external", - Test: "test", -} as const; -export type BackendEnum = ClosedEnum; - -/** - * Represents the target cloud platform. - */ -export const HeartbeatControllerPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type HeartbeatControllerPlatform = ClosedEnum< - typeof HeartbeatControllerPlatform ->; - -export const Reason59 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason59 = ClosedEnum; - -export const CollectionIssueSeverity59 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity59 = ClosedEnum< - typeof CollectionIssueSeverity59 ->; - -export type CollectionIssue59 = { - message: string; - reason: Reason59; - severity: CollectionIssueSeverity59; - source: string; -}; - -export const Health59 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health59 = ClosedEnum; - -export const StatusLifecycle59 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle59 = ClosedEnum; - -export type HeartbeatStatus59 = { - collectionIssues: Array; - health: Health59; - lifecycle: StatusLifecycle59; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type SyncReconcileRequestData5 = { - createdAt?: string | null | undefined; - disableLocalAuth?: boolean | null | undefined; - location?: string | null | undefined; - metricId?: string | null | undefined; - minimumTlsVersion?: string | null | undefined; - name: string; - namespaceStatus?: string | null | undefined; - premiumMessagingPartitions?: number | null | undefined; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - serviceBusEndpoint?: string | null | undefined; - skuCapacity?: number | null | undefined; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: HeartbeatStatus59; - updatedAt?: string | null | undefined; - zoneRedundant?: boolean | null | undefined; -}; - -export type DataAzureServiceBusNamespace = { - data: SyncReconcileRequestData5; - resourceType: "azure_service_bus_namespace"; -}; - -export const Reason58 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason58 = ClosedEnum; - -export const CollectionIssueSeverity58 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity58 = ClosedEnum< - typeof CollectionIssueSeverity58 ->; - -export type CollectionIssue58 = { - message: string; - reason: Reason58; - severity: CollectionIssueSeverity58; - source: string; -}; - -export const Health58 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health58 = ClosedEnum; - -export const StatusLifecycle58 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle58 = ClosedEnum; - -export type HeartbeatStatus58 = { - collectionIssues: Array; - health: Health58; - lifecycle: StatusLifecycle58; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type WorkloadProfile = { - maximumCount?: number | null | undefined; - minimumCount?: number | null | undefined; - name: string; - workloadProfileType: string; -}; - -export type SyncReconcileRequestData4 = { - customDomainVerificationId?: string | null | undefined; - defaultDomain?: string | null | undefined; - eventStreamEndpoint?: string | null | undefined; - infrastructureResourceGroup?: string | null | undefined; - kind?: string | null | undefined; - location?: string | null | undefined; - name: string; - provisioningState?: string | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - staticIp?: string | null | undefined; - status: HeartbeatStatus58; - workloadProfileCount: number; - workloadProfiles: Array; - zoneRedundant?: boolean | null | undefined; -}; - -export type DataAzureContainerAppsEnvironment = { - data: SyncReconcileRequestData4; - resourceType: "azure_container_apps_environment"; -}; - -export type PrimaryEndpoints = { - blob?: string | null | undefined; - dfs?: string | null | undefined; - file?: string | null | undefined; - queue?: string | null | undefined; - table?: string | null | undefined; - web?: string | null | undefined; -}; - -export type SecondaryEndpoints = { - blob?: string | null | undefined; - dfs?: string | null | undefined; - file?: string | null | undefined; - queue?: string | null | undefined; - table?: string | null | undefined; - web?: string | null | undefined; -}; - -export const Reason57 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason57 = ClosedEnum; - -export const CollectionIssueSeverity57 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity57 = ClosedEnum< - typeof CollectionIssueSeverity57 ->; - -export type CollectionIssue57 = { - message: string; - reason: Reason57; - severity: CollectionIssueSeverity57; - source: string; -}; - -export const Health57 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health57 = ClosedEnum; - -export const StatusLifecycle57 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle57 = ClosedEnum; - -export type HeartbeatStatus57 = { - collectionIssues: Array; - health: Health57; - lifecycle: StatusLifecycle57; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type SyncReconcileRequestData3 = { - allowBlobPublicAccess?: boolean | null | undefined; - allowSharedKeyAccess?: boolean | null | undefined; - encryptionKeySource?: string | null | undefined; - kind?: string | null | undefined; - location?: string | null | undefined; - minimumTlsVersion?: string | null | undefined; - name: string; - networkBypass?: string | null | undefined; - networkDefaultAction?: string | null | undefined; - networkIpRuleCount?: number | null | undefined; - networkResourceAccessRuleCount?: number | null | undefined; - networkVirtualNetworkRuleCount?: number | null | undefined; - primaryEndpoints: PrimaryEndpoints; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - requireInfrastructureEncryption?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - secondaryEndpoints: SecondaryEndpoints; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: HeartbeatStatus57; - supportsHttpsTrafficOnly?: boolean | null | undefined; -}; - -export type DataAzureStorageAccount = { - data: SyncReconcileRequestData3; - resourceType: "azure_storage_account"; -}; - -export const Reason56 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason56 = ClosedEnum; - -export const CollectionIssueSeverity56 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity56 = ClosedEnum< - typeof CollectionIssueSeverity56 ->; - -export type CollectionIssue56 = { - message: string; - reason: Reason56; - severity: CollectionIssueSeverity56; - source: string; -}; - -export const Health56 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health56 = ClosedEnum; - -export const StatusLifecycle56 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle56 = ClosedEnum; - -export type HeartbeatStatus56 = { - collectionIssues: Array; - health: Health56; - lifecycle: StatusLifecycle56; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type SyncReconcileRequestData2 = { - location?: string | null | undefined; - managedTags: { [k: string]: string }; - name: string; - provisioningState?: string | null | undefined; - resourceId?: string | null | undefined; - status: HeartbeatStatus56; -}; - -export type DataAzureResourceGroup = { - data: SyncReconcileRequestData2; - resourceType: "azure_resource_group"; -}; - -export const Reason55 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason55 = ClosedEnum; - -export const CollectionIssueSeverity55 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity55 = ClosedEnum< - typeof CollectionIssueSeverity55 ->; - -export type CollectionIssue55 = { - message: string; - reason: Reason55; - severity: CollectionIssueSeverity55; - source: string; -}; - -export const Health55 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health55 = ClosedEnum; - -export const StatusLifecycle55 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle55 = ClosedEnum; - -export type HeartbeatStatus55 = { - collectionIssues: Array; - health: Health55; - lifecycle: StatusLifecycle55; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureResourceProvider = { - namespace: string; - providerId?: string | null | undefined; - registered: boolean; - registrationPolicy?: string | null | undefined; - registrationState?: string | null | undefined; - resourceTypeCount: number; - status: HeartbeatStatus55; - backend: "azureResourceProvider"; -}; - -export const Reason54 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason54 = ClosedEnum; - -export const CollectionIssueSeverity54 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity54 = ClosedEnum< - typeof CollectionIssueSeverity54 ->; - -export type CollectionIssue54 = { - message: string; - reason: Reason54; - severity: CollectionIssueSeverity54; - source: string; -}; - -export const Health54 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health54 = ClosedEnum; - -export const StatusLifecycle54 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle54 = ClosedEnum; - -export type HeartbeatStatus54 = { - collectionIssues: Array; - health: Health54; - lifecycle: StatusLifecycle54; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpServiceUsage = { - enabled: boolean; - lastOperationName?: string | null | undefined; - projectId: string; - serviceName: string; - serviceResourceName?: string | null | undefined; - state?: string | null | undefined; - status: HeartbeatStatus54; - title?: string | null | undefined; - backend: "gcpServiceUsage"; -}; - -export type SyncReconcileRequestDataUnion14 = - | DataGcpServiceUsage - | DataAzureResourceProvider; - -export type DataServiceActivation = { - data: DataGcpServiceUsage | DataAzureResourceProvider; - resourceType: "service_activation"; -}; - -export type InvolvedObject9 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion9 = InvolvedObject9 | any; - -export type SyncReconcileRequestSource9 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion9 = SyncReconcileRequestSource9 | any; - -export type SyncReconcileRequestEvent12 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject9 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource9 | any | null | undefined; - type?: string | null | undefined; -}; - -export const Reason53 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason53 = ClosedEnum; - -export const CollectionIssueSeverity53 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity53 = ClosedEnum< - typeof CollectionIssueSeverity53 ->; - -export type CollectionIssue53 = { - message: string; - reason: Reason53; - severity: CollectionIssueSeverity53; - source: string; -}; - -export const Health53 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health53 = ClosedEnum; - -export const StatusLifecycle53 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle53 = ClosedEnum; - -export type HeartbeatStatus53 = { - collectionIssues: Array; - health: Health53; - lifecycle: StatusLifecycle53; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataKubernetesJob = { - active?: number | null | undefined; - completionTime?: Date | null | undefined; - conditionCount: number; - events: Array; - failed?: number | null | undefined; - imageDigest?: string | null | undefined; - jobName: string; - namespace: string; - startTime?: Date | null | undefined; - status: HeartbeatStatus53; - succeeded?: number | null | undefined; - backend: "kubernetesJob"; -}; - -export const Reason52 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason52 = ClosedEnum; - -export const CollectionIssueSeverity52 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity52 = ClosedEnum< - typeof CollectionIssueSeverity52 ->; - -export type CollectionIssue52 = { - message: string; - reason: Reason52; - severity: CollectionIssueSeverity52; - source: string; -}; - -export const Health52 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health52 = ClosedEnum; - -export const StatusLifecycle52 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle52 = ClosedEnum; - -export type HeartbeatStatus52 = { - collectionIssues: Array; - health: Health52; - lifecycle: StatusLifecycle52; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureContainerApps2 = { - environmentVariableCount: number; - managedEnvironmentId: string; - managedIdentityId?: string | null | undefined; - resourceGroupName: string; - resourcePrefix?: string | null | undefined; - status: HeartbeatStatus52; - backend: "azureContainerApps"; -}; - -export const Reason51 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason51 = ClosedEnum; - -export const CollectionIssueSeverity51 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity51 = ClosedEnum< - typeof CollectionIssueSeverity51 ->; - -export type CollectionIssue51 = { - message: string; - reason: Reason51; - severity: CollectionIssueSeverity51; - source: string; -}; - -export const Health51 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health51 = ClosedEnum; - -export const StatusLifecycle51 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle51 = ClosedEnum; - -export type HeartbeatStatus51 = { - collectionIssues: Array; - health: Health51; - lifecycle: StatusLifecycle51; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpCloudBuild = { - buildConfigId: string; - environmentVariableCount: number; - location: string; - projectId: string; - serviceAccount?: string | null | undefined; - status: HeartbeatStatus51; - backend: "gcpCloudBuild"; -}; - -export const Reason50 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason50 = ClosedEnum; - -export const CollectionIssueSeverity50 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity50 = ClosedEnum< - typeof CollectionIssueSeverity50 ->; - -export type CollectionIssue50 = { - message: string; - reason: Reason50; - severity: CollectionIssueSeverity50; - source: string; -}; - -export const Health50 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health50 = ClosedEnum; - -export const StatusLifecycle50 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle50 = ClosedEnum; - -export type HeartbeatStatus50 = { - collectionIssues: Array; - health: Health50; - lifecycle: StatusLifecycle50; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsCodeBuild = { - artifactsEncryptionDisabled?: boolean | null | undefined; - artifactsType?: string | null | undefined; - cloudWatchLogsStatus?: string | null | undefined; - computeType?: string | null | undefined; - created?: number | null | undefined; - description?: string | null | undefined; - encryptionKeyPresent: boolean; - environmentImage?: string | null | undefined; - environmentType?: string | null | undefined; - environmentVariableCount: number; - imagePullCredentialsType?: string | null | undefined; - lastModified?: number | null | undefined; - privilegedMode?: boolean | null | undefined; - projectArn?: string | null | undefined; - projectName: string; - queuedTimeoutInMinutes?: number | null | undefined; - s3LogsStatus?: string | null | undefined; - serviceRolePresent: boolean; - sourceType?: string | null | undefined; - status: HeartbeatStatus50; - timeoutInMinutes?: number | null | undefined; - backend: "awsCodeBuild"; -}; - -export type SyncReconcileRequestDataUnion13 = - | DataAwsCodeBuild - | DataGcpCloudBuild - | DataAzureContainerApps2 - | DataKubernetesJob; - -export type DataBuild = { - data: - | DataAwsCodeBuild - | DataGcpCloudBuild - | DataAzureContainerApps2 - | DataKubernetesJob; - resourceType: "build"; -}; - -export const Reason49 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason49 = ClosedEnum; - -export const CollectionIssueSeverity49 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity49 = ClosedEnum< - typeof CollectionIssueSeverity49 ->; - -export type CollectionIssue49 = { - message: string; - reason: Reason49; - severity: CollectionIssueSeverity49; - source: string; -}; - -export const Health49 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health49 = ClosedEnum; - -export const StatusLifecycle49 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle49 = ClosedEnum; - -export type HeartbeatStatus49 = { - collectionIssues: Array; - health: Health49; - lifecycle: StatusLifecycle49; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal10 = { - reachable: boolean; - registryUrl: string; - status: HeartbeatStatus49; - backend: "local"; -}; - -export const Reason48 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason48 = ClosedEnum; - -export const CollectionIssueSeverity48 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity48 = ClosedEnum< - typeof CollectionIssueSeverity48 ->; - -export type CollectionIssue48 = { - message: string; - reason: Reason48; - severity: CollectionIssueSeverity48; - source: string; -}; - -export const Health48 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health48 = ClosedEnum; - -export const StatusLifecycle48 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle48 = ClosedEnum; - -export type HeartbeatStatus48 = { - collectionIssues: Array; - health: Health48; - lifecycle: StatusLifecycle48; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureContainerRegistry = { - adminUserEnabled: boolean; - anonymousPullEnabled: boolean; - creationDate?: string | null | undefined; - dataEndpointEnabled?: boolean | null | undefined; - dataEndpointHostNames: Array; - encryptionKeyIdentifierPresent: boolean; - encryptionKeyVaultUriPresent: boolean; - encryptionStatus?: string | null | undefined; - ipRuleCount: number; - location: string; - loginServer?: string | null | undefined; - managedTagCount: number; - name: string; - networkRuleBypassOptions: string; - networkRuleDefaultAction?: string | null | undefined; - policiesPresent: boolean; - policyCount: number; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess: string; - resourceGroup: string; - resourceId?: string | null | undefined; - skuName: string; - skuTier?: string | null | undefined; - status: HeartbeatStatus48; - type?: string | null | undefined; - zoneRedundancy: string; - backend: "azureContainerRegistry"; -}; - -export const Reason47 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason47 = ClosedEnum; - -export const CollectionIssueSeverity47 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity47 = ClosedEnum< - typeof CollectionIssueSeverity47 ->; - -export type CollectionIssue47 = { - message: string; - reason: Reason47; - severity: CollectionIssueSeverity47; - source: string; -}; - -export const Health47 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health47 = ClosedEnum; - -export const StatusLifecycle47 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle47 = ClosedEnum; - -export type HeartbeatStatus47 = { - collectionIssues: Array; - health: Health47; - lifecycle: StatusLifecycle47; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpArtifactRegistry = { - cleanupPolicyCount: number; - cleanupPolicyDryRun?: boolean | null | undefined; - createTime?: string | null | undefined; - description?: string | null | undefined; - format?: string | null | undefined; - iamBindingCount: number; - iamPolicyEtagPresent: boolean; - iamRoles: Array; - kmsKeyNamePresent: boolean; - labelCount: number; - location: string; - mode?: string | null | undefined; - name?: string | null | undefined; - projectId: string; - pullServiceAccountEmail?: string | null | undefined; - pushServiceAccountEmail?: string | null | undefined; - repositoryId: string; - satisfiesPzs?: boolean | null | undefined; - sizeBytes?: string | null | undefined; - status: HeartbeatStatus47; - updateTime?: string | null | undefined; - backend: "gcpArtifactRegistry"; -}; - -export type Repository = { - createdAt: number; - encryptionType?: string | null | undefined; - imageTagMutability?: string | null | undefined; - kmsKeyPresent: boolean; - registryId: string; - repositoryArn: string; - repositoryName: string; - repositoryUri: string; - scanOnPush?: boolean | null | undefined; -}; - -export const Reason46 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason46 = ClosedEnum; - -export const CollectionIssueSeverity46 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity46 = ClosedEnum< - typeof CollectionIssueSeverity46 ->; - -export type CollectionIssue46 = { - message: string; - reason: Reason46; - severity: CollectionIssueSeverity46; - source: string; -}; - -export const Health46 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health46 = ClosedEnum; - -export const StatusLifecycle46 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle46 = ClosedEnum; - -export type HeartbeatStatus46 = { - collectionIssues: Array; - health: Health46; - lifecycle: StatusLifecycle46; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsEcr = { - pullRoleArn?: string | null | undefined; - pushRoleArn?: string | null | undefined; - region: string; - registryId: string; - registryUri: string; - repositories: Array; - repositoriesTruncated: boolean; - repositoryCount: number; - repositoryPrefix: string; - status: HeartbeatStatus46; - backend: "awsEcr"; -}; - -export type SyncReconcileRequestDataUnion12 = - | DataAwsEcr - | DataGcpArtifactRegistry - | DataAzureContainerRegistry - | DataLocal10; - -export type DataArtifactRegistry = { - data: - | DataAwsEcr - | DataGcpArtifactRegistry - | DataAzureContainerRegistry - | DataLocal10; - resourceType: "artifact-registry"; -}; - -export const Reason45 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason45 = ClosedEnum; - -export const CollectionIssueSeverity45 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity45 = ClosedEnum< - typeof CollectionIssueSeverity45 ->; - -export type CollectionIssue45 = { - message: string; - reason: Reason45; - severity: CollectionIssueSeverity45; - source: string; -}; - -export const Health45 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health45 = ClosedEnum; - -export const StatusLifecycle45 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle45 = ClosedEnum; - -export type HeartbeatStatus45 = { - collectionIssues: Array; - health: Health45; - lifecycle: StatusLifecycle45; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureManagedIdentity2 = { - ficName?: string | null | undefined; - roleAssignmentIds: Array; - roleDefinitionId?: string | null | undefined; - status: HeartbeatStatus45; - tenantId?: string | null | undefined; - uamiClientId?: string | null | undefined; - uamiPrincipalId?: string | null | undefined; - uamiResourceId?: string | null | undefined; - backend: "azureManagedIdentity"; -}; - -export const Reason44 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason44 = ClosedEnum; - -export const CollectionIssueSeverity44 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity44 = ClosedEnum< - typeof CollectionIssueSeverity44 ->; - -export type CollectionIssue44 = { - message: string; - reason: Reason44; - severity: CollectionIssueSeverity44; - source: string; -}; - -export const Health44 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health44 = ClosedEnum; - -export const StatusLifecycle44 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle44 = ClosedEnum; - -export type HeartbeatStatus44 = { - collectionIssues: Array; - health: Health44; - lifecycle: StatusLifecycle44; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpServiceAccount2 = { - impersonationGranted: boolean; - roleBound: boolean; - serviceAccountEmail?: string | null | undefined; - serviceAccountUniqueId?: string | null | undefined; - status: HeartbeatStatus44; - backend: "gcpServiceAccount"; -}; - -export const Reason43 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason43 = ClosedEnum; - -export const CollectionIssueSeverity43 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity43 = ClosedEnum< - typeof CollectionIssueSeverity43 ->; - -export type CollectionIssue43 = { - message: string; - reason: Reason43; - severity: CollectionIssueSeverity43; - source: string; -}; - -export const Health43 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health43 = ClosedEnum; - -export const StatusLifecycle43 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle43 = ClosedEnum; - -export type HeartbeatStatus43 = { - collectionIssues: Array; - health: Health43; - lifecycle: StatusLifecycle43; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsIamRole2 = { - managementPermissionsApplied: boolean; - roleArn?: string | null | undefined; - roleName?: string | null | undefined; - status: HeartbeatStatus43; - backend: "awsIamRole"; -}; - -export type SyncReconcileRequestDataUnion11 = - | DataAwsIamRole2 - | DataGcpServiceAccount2 - | DataAzureManagedIdentity2; - -export type DataRemoteStackManagement = { - data: DataAwsIamRole2 | DataGcpServiceAccount2 | DataAzureManagedIdentity2; - resourceType: "remote-stack-management"; -}; - -export const Reason42 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason42 = ClosedEnum; - -export const CollectionIssueSeverity42 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity42 = ClosedEnum< - typeof CollectionIssueSeverity42 ->; - -export type CollectionIssue42 = { - message: string; - reason: Reason42; - severity: CollectionIssueSeverity42; - source: string; -}; - -export const Health42 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health42 = ClosedEnum; - -export const StatusLifecycle42 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle42 = ClosedEnum; - -export type HeartbeatStatus42 = { - collectionIssues: Array; - health: Health42; - lifecycle: StatusLifecycle42; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureVnet = { - applicationGatewaySubnetName?: string | null | undefined; - cidrBlock?: string | null | undefined; - isByoVnet: boolean; - lastByoVnetVerificationErrorCode?: string | null | undefined; - location?: string | null | undefined; - natGatewayId?: string | null | undefined; - nsgId?: string | null | undefined; - privateSubnetName?: string | null | undefined; - publicIpId?: string | null | undefined; - publicSubnetName?: string | null | undefined; - resourceGroup?: string | null | undefined; - status: HeartbeatStatus42; - vnetName?: string | null | undefined; - vnetResourceId?: string | null | undefined; - backend: "azureVnet"; -}; - -export const Reason41 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason41 = ClosedEnum; - -export const CollectionIssueSeverity41 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity41 = ClosedEnum< - typeof CollectionIssueSeverity41 ->; - -export type CollectionIssue41 = { - message: string; - reason: Reason41; - severity: CollectionIssueSeverity41; - source: string; -}; - -export const Health41 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health41 = ClosedEnum; - -export const StatusLifecycle41 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle41 = ClosedEnum; - -export type HeartbeatStatus41 = { - collectionIssues: Array; - health: Health41; - lifecycle: StatusLifecycle41; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpVpc = { - cidrBlock?: string | null | undefined; - cloudNatName?: string | null | undefined; - firewallName?: string | null | undefined; - isByoVpc: boolean; - networkName?: string | null | undefined; - networkSelfLink?: string | null | undefined; - region?: string | null | undefined; - routerName?: string | null | undefined; - status: HeartbeatStatus41; - subnetworkName?: string | null | undefined; - subnetworkSelfLink?: string | null | undefined; - backend: "gcpVpc"; -}; - -export const Reason40 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason40 = ClosedEnum; - -export const CollectionIssueSeverity40 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity40 = ClosedEnum< - typeof CollectionIssueSeverity40 ->; - -export type CollectionIssue40 = { - message: string; - reason: Reason40; - severity: CollectionIssueSeverity40; - source: string; -}; - -export const Health40 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health40 = ClosedEnum; - -export const StatusLifecycle40 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle40 = ClosedEnum; - -export type HeartbeatStatus40 = { - collectionIssues: Array; - health: Health40; - lifecycle: StatusLifecycle40; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsVpc = { - availabilityZones: Array; - cidrBlock?: string | null | undefined; - internetGatewayId?: string | null | undefined; - isByoVpc: boolean; - natGatewayId?: string | null | undefined; - privateSubnetIds: Array; - publicSubnetIds: Array; - routeTableCount: number; - securityGroupId?: string | null | undefined; - status: HeartbeatStatus40; - vpcId?: string | null | undefined; - vpcState?: string | null | undefined; - backend: "awsVpc"; -}; - -export type SyncReconcileRequestDataUnion10 = - | DataAwsVpc - | DataGcpVpc - | DataAzureVnet; - -export type DataNetwork = { - data: DataAwsVpc | DataGcpVpc | DataAzureVnet; - resourceType: "network"; -}; - -export const Reason39 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason39 = ClosedEnum; - -export const CollectionIssueSeverity39 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity39 = ClosedEnum< - typeof CollectionIssueSeverity39 ->; - -export type CollectionIssue39 = { - message: string; - reason: Reason39; - severity: CollectionIssueSeverity39; - source: string; -}; - -export const Health39 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health39 = ClosedEnum; - -export const StatusLifecycle39 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle39 = ClosedEnum; - -export type HeartbeatStatus39 = { - collectionIssues: Array; - health: Health39; - lifecycle: StatusLifecycle39; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal9 = { - configured: boolean; - identity: string; - status: HeartbeatStatus39; - backend: "local"; -}; - -export const Reason38 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason38 = ClosedEnum; - -export const CollectionIssueSeverity38 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity38 = ClosedEnum< - typeof CollectionIssueSeverity38 ->; - -export type CollectionIssue38 = { - message: string; - reason: Reason38; - severity: CollectionIssueSeverity38; - source: string; -}; - -export const Health38 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health38 = ClosedEnum; - -export const StatusLifecycle38 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle38 = ClosedEnum; - -export type HeartbeatStatus38 = { - collectionIssues: Array; - health: Health38; - lifecycle: StatusLifecycle38; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureManagedIdentity1 = { - clientId?: string | null | undefined; - customRoleDefinitionCount: number; - customRoleDefinitionIds: Array; - isolationScope?: string | null | undefined; - location: string; - managedTagCount: number; - name: string; - principalId?: string | null | undefined; - resourceGroup: string; - resourceId: string; - roleAssignmentCount: number; - roleAssignmentIds: Array; - stackPermissionsApplied: boolean; - status: HeartbeatStatus38; - tenantId?: string | null | undefined; - type?: string | null | undefined; - backend: "azureManagedIdentity"; -}; - -export const Reason37 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason37 = ClosedEnum; - -export const CollectionIssueSeverity37 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity37 = ClosedEnum< - typeof CollectionIssueSeverity37 ->; - -export type CollectionIssue37 = { - message: string; - reason: Reason37; - severity: CollectionIssueSeverity37; - source: string; -}; - -export const Health37 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health37 = ClosedEnum; - -export const StatusLifecycle37 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle37 = ClosedEnum; - -export type HeartbeatStatus37 = { - collectionIssues: Array; - health: Health37; - lifecycle: StatusLifecycle37; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpServiceAccount1 = { - description?: string | null | undefined; - disabled?: boolean | null | undefined; - displayName?: string | null | undefined; - email: string; - etag?: string | null | undefined; - name?: string | null | undefined; - oauth2ClientId?: string | null | undefined; - projectBindingCount: number; - projectId?: string | null | undefined; - projectRoles: Array; - serviceAccountBindingCount: number; - serviceAccountRoles: Array; - status: HeartbeatStatus37; - uniqueId?: string | null | undefined; - backend: "gcpServiceAccount"; -}; - -export const Reason36 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason36 = ClosedEnum; - -export const CollectionIssueSeverity36 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity36 = ClosedEnum< - typeof CollectionIssueSeverity36 ->; - -export type CollectionIssue36 = { - message: string; - reason: Reason36; - severity: CollectionIssueSeverity36; - source: string; -}; - -export const Health36 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health36 = ClosedEnum; - -export const StatusLifecycle36 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle36 = ClosedEnum; - -export type HeartbeatStatus36 = { - collectionIssues: Array; - health: Health36; - lifecycle: StatusLifecycle36; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsIamRole1 = { - assumeRolePolicyPresent: boolean; - attachedPolicyCount: number; - attachedPolicyNames: Array; - createDate: string; - description?: string | null | undefined; - inlinePolicyCount: number; - inlinePolicyNames: Array; - lastUsedDate?: string | null | undefined; - lastUsedRegion?: string | null | undefined; - managedTagCount: number; - maxSessionDuration?: number | null | undefined; - path: string; - permissionsBoundaryArn?: string | null | undefined; - permissionsBoundaryType?: string | null | undefined; - roleArn: string; - roleId: string; - roleName: string; - stackPermissionsApplied: boolean; - status: HeartbeatStatus36; - tagCount: number; - backend: "awsIamRole"; -}; - -export type SyncReconcileRequestDataUnion9 = - | DataAwsIamRole1 - | DataGcpServiceAccount1 - | DataAzureManagedIdentity1 - | DataLocal9; - -export type DataServiceAccount = { - data: - | DataAwsIamRole1 - | DataGcpServiceAccount1 - | DataAzureManagedIdentity1 - | DataLocal9; - resourceType: "service-account"; -}; - -export const Reason35 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason35 = ClosedEnum; - -export const CollectionIssueSeverity35 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity35 = ClosedEnum< - typeof CollectionIssueSeverity35 ->; - -export type CollectionIssue35 = { - message: string; - reason: Reason35; - severity: CollectionIssueSeverity35; - source: string; -}; - -export const Health35 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health35 = ClosedEnum; - -export const StatusLifecycle35 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle35 = ClosedEnum; - -export type HeartbeatStatus35 = { - collectionIssues: Array; - health: Health35; - lifecycle: StatusLifecycle35; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal8 = { - isDirectory?: boolean | null | undefined; - modifiedAt?: Date | null | undefined; - path: string; - pathExists: boolean; - readonly?: boolean | null | undefined; - secretMetadataListed: boolean; - status: HeartbeatStatus35; - backend: "local"; -}; - -export const Reason34 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason34 = ClosedEnum; - -export const CollectionIssueSeverity34 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity34 = ClosedEnum< - typeof CollectionIssueSeverity34 ->; - -export type CollectionIssue34 = { - message: string; - reason: Reason34; - severity: CollectionIssueSeverity34; - source: string; -}; - -export const Health34 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health34 = ClosedEnum; - -export const StatusLifecycle34 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle34 = ClosedEnum; - -export type HeartbeatStatus34 = { - collectionIssues: Array; - health: Health34; - lifecycle: StatusLifecycle34; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataKubernetesSecret = { - namespace: string; - prefix: string; - secretMetadataListed: boolean; - status: HeartbeatStatus34; - backend: "kubernetesSecret"; -}; - -export const Reason33 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason33 = ClosedEnum; - -export const CollectionIssueSeverity33 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity33 = ClosedEnum< - typeof CollectionIssueSeverity33 ->; - -export type CollectionIssue33 = { - message: string; - reason: Reason33; - severity: CollectionIssueSeverity33; - source: string; -}; - -export const Health33 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health33 = ClosedEnum; - -export const StatusLifecycle33 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle33 = ClosedEnum; - -export type HeartbeatStatus33 = { - collectionIssues: Array; - health: Health33; - lifecycle: StatusLifecycle33; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureKeyVault = { - accessPolicyCount: number; - location?: string | null | undefined; - name: string; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess: string; - purgeProtectionEnabled?: boolean | null | undefined; - rbacAuthorizationEnabled: boolean; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - secretMetadataListed: boolean; - skuFamily?: string | null | undefined; - skuName?: string | null | undefined; - softDeleteEnabled: boolean; - softDeleteRetentionDays: number; - status: HeartbeatStatus33; - vaultUri?: string | null | undefined; - backend: "azureKeyVault"; -}; - -export const Reason32 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason32 = ClosedEnum; - -export const CollectionIssueSeverity32 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity32 = ClosedEnum< - typeof CollectionIssueSeverity32 ->; - -export type CollectionIssue32 = { - message: string; - reason: Reason32; - severity: CollectionIssueSeverity32; - source: string; -}; - -export const Health32 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health32 = ClosedEnum; - -export const StatusLifecycle32 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle32 = ClosedEnum; - -export type HeartbeatStatus32 = { - collectionIssues: Array; - health: Health32; - lifecycle: StatusLifecycle32; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpSecretManager = { - location: string; - prefix: string; - projectId: string; - secretMetadataListed: boolean; - status: HeartbeatStatus32; - backend: "gcpSecretManager"; -}; - -export const Reason31 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason31 = ClosedEnum; - -export const CollectionIssueSeverity31 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity31 = ClosedEnum< - typeof CollectionIssueSeverity31 ->; - -export type CollectionIssue31 = { - message: string; - reason: Reason31; - severity: CollectionIssueSeverity31; - source: string; -}; - -export const Health31 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health31 = ClosedEnum; - -export const StatusLifecycle31 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle31 = ClosedEnum; - -export type HeartbeatStatus31 = { - collectionIssues: Array; - health: Health31; - lifecycle: StatusLifecycle31; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsParameterStore = { - accountId: string; - hasMoreParameters?: boolean | null | undefined; - latestModifiedAt?: Date | null | undefined; - parameterMetadataSampled: boolean; - prefix: string; - region: string; - sampledAdvancedTierCount?: number | null | undefined; - sampledKmsKeyMetadataPresentCount?: number | null | undefined; - sampledParameterCount?: number | null | undefined; - sampledSecureStringCount?: number | null | undefined; - sampledStringCount?: number | null | undefined; - sampledStringListCount?: number | null | undefined; - status: HeartbeatStatus31; - backend: "awsParameterStore"; -}; - -export type SyncReconcileRequestDataUnion8 = - | DataAwsParameterStore - | DataGcpSecretManager - | DataAzureKeyVault - | DataKubernetesSecret - | DataLocal8; - -export type DataVault = { - data: - | DataAwsParameterStore - | DataGcpSecretManager - | DataAzureKeyVault - | DataKubernetesSecret - | DataLocal8; - resourceType: "vault"; -}; - -export const Reason30 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason30 = ClosedEnum; - -export const CollectionIssueSeverity30 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity30 = ClosedEnum< - typeof CollectionIssueSeverity30 ->; - -export type CollectionIssue30 = { - message: string; - reason: Reason30; - severity: CollectionIssueSeverity30; - source: string; -}; - -export const Health30 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health30 = ClosedEnum; - -export const StatusLifecycle30 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle30 = ClosedEnum; - -export type HeartbeatStatus30 = { - collectionIssues: Array; - health: Health30; - lifecycle: StatusLifecycle30; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal7 = { - cloudMetadataSupported: boolean; - isDirectory?: boolean | null | undefined; - name: string; - path: string; - pathExists: boolean; - status: HeartbeatStatus30; - backend: "local"; -}; - -export const Reason29 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason29 = ClosedEnum; - -export const CollectionIssueSeverity29 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity29 = ClosedEnum< - typeof CollectionIssueSeverity29 ->; - -export type CollectionIssue29 = { - message: string; - reason: Reason29; - severity: CollectionIssueSeverity29; - source: string; -}; - -export const Health29 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health29 = ClosedEnum; - -export const StatusLifecycle29 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle29 = ClosedEnum; - -export type HeartbeatStatus29 = { - collectionIssues: Array; - health: Health29; - lifecycle: StatusLifecycle29; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureTable = { - endpoint?: string | null | undefined; - resourceGroup?: string | null | undefined; - signedIdentifierCount?: number | null | undefined; - status: HeartbeatStatus29; - storageAccountKind?: string | null | undefined; - storageAccountLocation?: string | null | undefined; - storageAccountName: string; - storageAccountPrimaryStatus?: string | null | undefined; - storageAccountProvisioningState?: string | null | undefined; - storageAccountResourceId?: string | null | undefined; - tableExists: boolean; - tableName: string; - backend: "azureTable"; -}; - -export const Reason28 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason28 = ClosedEnum; - -export const CollectionIssueSeverity28 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity28 = ClosedEnum< - typeof CollectionIssueSeverity28 ->; - -export type CollectionIssue28 = { - message: string; - reason: Reason28; - severity: CollectionIssueSeverity28; - source: string; -}; - -export const Health28 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health28 = ClosedEnum; - -export const StatusLifecycle28 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle28 = ClosedEnum; - -export type HeartbeatStatus28 = { - collectionIssues: Array; - health: Health28; - lifecycle: StatusLifecycle28; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpFirestore = { - appEngineIntegrationMode?: string | null | undefined; - cmekEnabled: boolean; - concurrencyMode?: string | null | undefined; - createTime?: string | null | undefined; - databaseEdition?: string | null | undefined; - databaseName: string; - databaseType?: string | null | undefined; - deleteProtectionState?: string | null | undefined; - deleteTime?: string | null | undefined; - earliestVersionTime?: string | null | undefined; - endpoint?: string | null | undefined; - locationId?: string | null | undefined; - pointInTimeRecoveryEnablement?: string | null | undefined; - projectId?: string | null | undefined; - sourceInfoPresent: boolean; - status: HeartbeatStatus28; - updateTime?: string | null | undefined; - versionRetentionPeriod?: string | null | undefined; - backend: "gcpFirestore"; -}; - -export type KeySchema = { - attributeName: string; - keyType: string; -}; - -export const Reason27 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason27 = ClosedEnum; - -export const CollectionIssueSeverity27 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity27 = ClosedEnum< - typeof CollectionIssueSeverity27 ->; - -export type CollectionIssue27 = { - message: string; - reason: Reason27; - severity: CollectionIssueSeverity27; - source: string; -}; - -export const Health27 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health27 = ClosedEnum; - -export const StatusLifecycle27 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle27 = ClosedEnum; - -export type HeartbeatStatus27 = { - collectionIssues: Array; - health: Health27; - lifecycle: StatusLifecycle27; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsDynamoDb = { - billingMode?: string | null | undefined; - deletionProtectionEnabled?: boolean | null | undefined; - globalSecondaryIndexCount?: number | null | undefined; - itemCount?: number | null | undefined; - keySchema: Array; - localSecondaryIndexCount?: number | null | undefined; - name: string; - region?: string | null | undefined; - replicaCount?: number | null | undefined; - restoreInProgress?: boolean | null | undefined; - sseStatus?: string | null | undefined; - sseType?: string | null | undefined; - status: HeartbeatStatus27; - streamEnabled?: boolean | null | undefined; - streamViewType?: string | null | undefined; - tableArn?: string | null | undefined; - tableClass?: string | null | undefined; - tableSizeBytes?: number | null | undefined; - tableStatus?: string | null | undefined; - ttlAttributeName?: string | null | undefined; - ttlStatus?: string | null | undefined; - backend: "awsDynamoDb"; -}; - -export type SyncReconcileRequestDataUnion7 = - | DataAwsDynamoDb - | DataGcpFirestore - | DataAzureTable - | DataLocal7; - -export type DataKv = { - data: DataAwsDynamoDb | DataGcpFirestore | DataAzureTable | DataLocal7; - resourceType: "kv"; -}; - -export const Reason26 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason26 = ClosedEnum; - -export const CollectionIssueSeverity26 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity26 = ClosedEnum< - typeof CollectionIssueSeverity26 ->; - -export type CollectionIssue26 = { - message: string; - reason: Reason26; - severity: CollectionIssueSeverity26; - source: string; -}; - -export const Health26 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health26 = ClosedEnum; - -export const StatusLifecycle26 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle26 = ClosedEnum; - -export type HeartbeatStatus26 = { - collectionIssues: Array; - health: Health26; - lifecycle: StatusLifecycle26; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal6 = { - name: string; - path?: string | null | undefined; - serviceStatus?: string | null | undefined; - status: HeartbeatStatus26; - backend: "local"; -}; - -export const Reason25 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason25 = ClosedEnum; - -export const CollectionIssueSeverity25 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity25 = ClosedEnum< - typeof CollectionIssueSeverity25 ->; - -export type CollectionIssue25 = { - message: string; - reason: Reason25; - severity: CollectionIssueSeverity25; - source: string; -}; - -export const Health25 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health25 = ClosedEnum; - -export const StatusLifecycle25 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle25 = ClosedEnum; - -export type HeartbeatStatus25 = { - collectionIssues: Array; - health: Health25; - lifecycle: StatusLifecycle25; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureServiceBus = { - accessedAt?: string | null | undefined; - activeMessageCount?: number | null | undefined; - autoDeleteOnIdle?: string | null | undefined; - createdAt?: string | null | undefined; - deadLetterMessageCount?: number | null | undefined; - deadLetteringOnMessageExpiration?: boolean | null | undefined; - defaultMessageTimeToLive?: string | null | undefined; - duplicateDetectionHistoryTimeWindow?: string | null | undefined; - enableBatchedOperations?: boolean | null | undefined; - enableExpress?: boolean | null | undefined; - enablePartitioning?: boolean | null | undefined; - endpoint?: string | null | undefined; - forwardDeadLetteredMessagesTo?: string | null | undefined; - forwardTo?: string | null | undefined; - lockDuration?: string | null | undefined; - maxDeliveryCount?: number | null | undefined; - maxMessageSizeInKilobytes?: number | null | undefined; - maxSizeInMegabytes?: number | null | undefined; - messageCount?: number | null | undefined; - name: string; - namespaceName: string; - queueStatus?: string | null | undefined; - requiresDuplicateDetection?: boolean | null | undefined; - requiresSession?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - scheduledMessageCount?: number | null | undefined; - sizeInBytes?: number | null | undefined; - status: HeartbeatStatus25; - transferDeadLetterMessageCount?: number | null | undefined; - transferMessageCount?: number | null | undefined; - updatedAt?: string | null | undefined; - backend: "azureServiceBus"; -}; - -export const Reason24 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason24 = ClosedEnum; - -export const CollectionIssueSeverity24 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity24 = ClosedEnum< - typeof CollectionIssueSeverity24 ->; - -export type CollectionIssue24 = { - message: string; - reason: Reason24; - severity: CollectionIssueSeverity24; - source: string; -}; - -export const Health24 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health24 = ClosedEnum; - -export const StatusLifecycle24 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle24 = ClosedEnum; - -export type HeartbeatStatus24 = { - collectionIssues: Array; - health: Health24; - lifecycle: StatusLifecycle24; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpPubSub = { - endpoint?: string | null | undefined; - kmsKeyName?: string | null | undefined; - messageStorageAllowedPersistenceRegions: Array; - messageStorageEnforceInTransit?: boolean | null | undefined; - projectId?: string | null | undefined; - schemaEncoding?: string | null | undefined; - schemaFirstRevisionId?: string | null | undefined; - schemaLastRevisionId?: string | null | undefined; - schemaName?: string | null | undefined; - status: HeartbeatStatus24; - subscriptionAckDeadlineSeconds?: number | null | undefined; - subscriptionDeadLetterMaxDeliveryAttempts?: number | null | undefined; - subscriptionDeadLetterTopic?: string | null | undefined; - subscriptionDetached?: boolean | null | undefined; - subscriptionEnableMessageOrdering?: boolean | null | undefined; - subscriptionFilter?: string | null | undefined; - subscriptionFullName?: string | null | undefined; - subscriptionLabels: { [k: string]: string }; - subscriptionMessageRetentionDuration?: string | null | undefined; - subscriptionName?: string | null | undefined; - subscriptionPushAttributes: { [k: string]: string }; - subscriptionPushConfigPresent?: boolean | null | undefined; - subscriptionPushEndpoint?: string | null | undefined; - subscriptionPushNoWrapperWriteMetadata?: boolean | null | undefined; - subscriptionPushOidcAudience?: string | null | undefined; - subscriptionPushOidcServiceAccountEmail?: string | null | undefined; - subscriptionPushPubsubWrapperWriteMetadata?: boolean | null | undefined; - subscriptionRetainAckedMessages?: boolean | null | undefined; - subscriptionState?: string | null | undefined; - topicFullName?: string | null | undefined; - topicLabels: { [k: string]: string }; - topicMessageRetentionDuration?: string | null | undefined; - topicName: string; - topicState?: string | null | undefined; - backend: "gcpPubSub"; -}; - -export const Reason23 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason23 = ClosedEnum; - -export const CollectionIssueSeverity23 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity23 = ClosedEnum< - typeof CollectionIssueSeverity23 ->; - -export type CollectionIssue23 = { - message: string; - reason: Reason23; - severity: CollectionIssueSeverity23; - source: string; -}; - -export const Health23 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health23 = ClosedEnum; - -export const StatusLifecycle23 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle23 = ClosedEnum; - -export type HeartbeatStatus23 = { - collectionIssues: Array; - health: Health23; - lifecycle: StatusLifecycle23; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsSqs = { - approximateCounts: boolean; - approximateDelayedMessages?: number | null | undefined; - approximateInFlightMessages?: number | null | undefined; - approximateVisibleMessages?: number | null | undefined; - contentBasedDeduplication?: boolean | null | undefined; - deduplicationScope?: string | null | undefined; - delaySeconds?: number | null | undefined; - fifoQueue?: boolean | null | undefined; - fifoThroughputLimit?: string | null | undefined; - kmsDataKeyReusePeriodSeconds?: number | null | undefined; - kmsMasterKeyId?: string | null | undefined; - maximumMessageSize?: number | null | undefined; - messageRetentionPeriodSeconds?: number | null | undefined; - name: string; - queueArn?: string | null | undefined; - queueUrl?: string | null | undefined; - receiveMessageWaitTimeSeconds?: number | null | undefined; - redriveAllowPolicy?: string | null | undefined; - redrivePolicy?: string | null | undefined; - region?: string | null | undefined; - sqsManagedSseEnabled?: boolean | null | undefined; - sseEnabled?: boolean | null | undefined; - status: HeartbeatStatus23; - visibilityTimeoutSeconds?: number | null | undefined; - backend: "awsSqs"; -}; - -export type SyncReconcileRequestDataUnion6 = - | DataAwsSqs - | DataGcpPubSub - | DataAzureServiceBus - | DataLocal6; - -export type DataQueue = { - data: DataAwsSqs | DataGcpPubSub | DataAzureServiceBus | DataLocal6; - resourceType: "queue"; -}; - -export const CpuUnit10 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit10 = ClosedEnum; - -export type Cpu10 = { - unit: CpuUnit10; - value: number; -}; - -export type CpuUnion10 = Cpu10 | any; - -export type InvolvedObject8 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion8 = InvolvedObject8 | any; - -export type SyncReconcileRequestSource8 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion8 = SyncReconcileRequestSource8 | any; - -export type SyncReconcileRequestEvent11 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject8 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource8 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit10 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit10 = ClosedEnum; - -export type Memory10 = { - unit: MemoryUnit10; - value: number; -}; - -export type MemoryUnion10 = Memory10 | any; - -export type NodeCounts = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export const CpuAllocatableUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuAllocatableUnit = ClosedEnum; - -export type CpuAllocatable = { - unit: CpuAllocatableUnit; - value: number; -}; - -export type AllocatableCpuUnion = CpuAllocatable | any; - -export const MemoryAllocatableUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryAllocatableUnit = ClosedEnum; - -export type MemoryAllocatable = { - unit: MemoryAllocatableUnit; - value: number; -}; - -export type AllocatableMemoryUnion = MemoryAllocatable | any; - -export type Allocatable = { - cpu?: CpuAllocatable | any | null | undefined; - memory?: MemoryAllocatable | any | null | undefined; - pods?: number | null | undefined; -}; - -export const CpuCapacityUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuCapacityUnit = ClosedEnum; - -export type CpuCapacity = { - unit: CpuCapacityUnit; - value: number; -}; - -export type CapacityCpuUnion = CpuCapacity | any; - -export const MemoryCapacityUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryCapacityUnit = ClosedEnum; - -export type MemoryCapacity = { - unit: MemoryCapacityUnit; - value: number; -}; - -export type CapacityMemoryUnion = MemoryCapacity | any; - -export type Capacity = { - cpu?: CpuCapacity | any | null | undefined; - memory?: MemoryCapacity | any | null | undefined; - pods?: number | null | undefined; -}; - -export type NodeStatusCondition = { - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export const UsageCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UsageCpuUnit = ClosedEnum; - -export type UsageCpu = { - unit: UsageCpuUnit; - value: number; -}; - -export type UsageCpuUnion = UsageCpu | any; - -export const UsageMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UsageMemoryUnit = ClosedEnum; - -export type UsageMemory = { - unit: UsageMemoryUnit; - value: number; -}; - -export type UsageMemoryUnion = UsageMemory | any; - -export type SyncReconcileRequestUsage = { - cpu?: UsageCpu | any | null | undefined; - memory?: UsageMemory | any | null | undefined; -}; - -export type Usage = SyncReconcileRequestUsage | any; - -export type NodeStatus = { - allocatable: Allocatable; - capacity: Capacity; - conditions?: Array | undefined; - containerRuntimeVersion?: string | null | undefined; - kubeletVersion?: string | null | undefined; - labels: { [k: string]: string }; - name: string; - ready: boolean; - roles: Array; - uid?: string | null | undefined; - usage?: SyncReconcileRequestUsage | any | null | undefined; -}; - -export type PodCounts = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export const Reason22 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason22 = ClosedEnum; - -export const CollectionIssueSeverity22 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity22 = ClosedEnum< - typeof CollectionIssueSeverity22 ->; - -export type CollectionIssue22 = { - message: string; - reason: Reason22; - severity: CollectionIssueSeverity22; - source: string; -}; - -export const Health22 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health22 = ClosedEnum; - -export const StatusLifecycle22 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle22 = ClosedEnum; - -export type HeartbeatStatus22 = { - collectionIssues: Array; - health: Health22; - lifecycle: StatusLifecycle22; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type SyncReconcileRequestData1 = { - cpu?: Cpu10 | any | null | undefined; - events: Array; - memory?: Memory10 | any | null | undefined; - name: string; - namespace?: string | null | undefined; - nodeCounts: NodeCounts; - nodeStatuses?: Array | undefined; - podCounts: PodCounts; - region?: string | null | undefined; - status: HeartbeatStatus22; - version?: string | null | undefined; -}; - -export type DataKubernetesCluster = { - data: SyncReconcileRequestData1; - resourceType: "kubernetes-cluster"; -}; - -export type Nodes4 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export const Reason21 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason21 = ClosedEnum; - -export const CollectionIssueSeverity21 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity21 = ClosedEnum< - typeof CollectionIssueSeverity21 ->; - -export type CollectionIssue21 = { - message: string; - reason: Reason21; - severity: CollectionIssueSeverity21; - source: string; -}; - -export const Health21 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health21 = ClosedEnum; - -export const StatusLifecycle21 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle21 = ClosedEnum; - -export type HeartbeatStatus21 = { - collectionIssues: Array; - health: Health21; - lifecycle: StatusLifecycle21; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal5 = { - dockerApiVersion?: string | null | undefined; - dockerArch?: string | null | undefined; - dockerAvailable: boolean; - dockerOs?: string | null | undefined; - dockerVersion?: string | null | undefined; - hostIdentifier?: string | null | undefined; - name: string; - networkAvailable: boolean; - networkName?: string | null | undefined; - nodes: Nodes4; - runningContainers?: number | null | undefined; - status: HeartbeatStatus21; - trackedContainers?: number | null | undefined; - backend: "local"; -}; - -export const Category3 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", -} as const; -export type Category3 = ClosedEnum; - -export type CapacityBlocker3 = { - category: Category3; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -export type CapacityBlockerUnion3 = CapacityBlocker3 | any; - -export const UtilizationUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UtilizationUnit3 = ClosedEnum; - -export type Utilization3 = { - unit: UtilizationUnit3; - value: number; -}; - -export type UtilizationUnion3 = Utilization3 | any; - -export type Recommendation3 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization3 | any | null | undefined; -}; - -export type RecommendationUnion3 = Recommendation3 | any; - -export type CapacityGroup3 = { - capacityBlocker?: CapacityBlocker3 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation3 | any | null | undefined; -}; - -export const CpuUnit9 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit9 = ClosedEnum; - -export type Cpu9 = { - unit: CpuUnit9; - value: number; -}; - -export type CpuUnion9 = Cpu9 | any; - -export const MemoryUnit9 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit9 = ClosedEnum; - -export type Memory9 = { - unit: MemoryUnit9; - value: number; -}; - -export type MemoryUnion9 = Memory9 | any; - -export type Nodes3 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export type ProviderFleet3 = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; -}; - -export const Reason20 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason20 = ClosedEnum; - -export const CollectionIssueSeverity20 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity20 = ClosedEnum< - typeof CollectionIssueSeverity20 ->; - -export type CollectionIssue20 = { - message: string; - reason: Reason20; - severity: CollectionIssueSeverity20; - source: string; -}; - -export const Health20 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health20 = ClosedEnum; - -export const StatusLifecycle20 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle20 = ClosedEnum; - -export type HeartbeatStatus20 = { - collectionIssues: Array; - health: Health20; - lifecycle: StatusLifecycle20; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzure2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu9 | any | null | undefined; - memory?: Memory9 | any | null | undefined; - name: string; - nodes: Nodes3; - providerFleets: Array; - region?: string | null | undefined; - status: HeartbeatStatus20; - backend: "azure"; -}; - -export const Category2 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", -} as const; -export type Category2 = ClosedEnum; - -export type CapacityBlocker2 = { - category: Category2; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -export type CapacityBlockerUnion2 = CapacityBlocker2 | any; - -export const UtilizationUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UtilizationUnit2 = ClosedEnum; - -export type Utilization2 = { - unit: UtilizationUnit2; - value: number; -}; - -export type UtilizationUnion2 = Utilization2 | any; - -export type Recommendation2 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization2 | any | null | undefined; -}; - -export type RecommendationUnion2 = Recommendation2 | any; - -export type CapacityGroup2 = { - capacityBlocker?: CapacityBlocker2 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation2 | any | null | undefined; -}; - -export const CpuUnit8 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit8 = ClosedEnum; - -export type Cpu8 = { - unit: CpuUnit8; - value: number; -}; - -export type CpuUnion8 = Cpu8 | any; - -export const MemoryUnit8 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit8 = ClosedEnum; - -export type Memory8 = { - unit: MemoryUnit8; - value: number; -}; - -export type MemoryUnion8 = Memory8 | any; - -export type Nodes2 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export type ProviderFleet2 = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; -}; - -export const Reason19 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason19 = ClosedEnum; - -export const CollectionIssueSeverity19 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity19 = ClosedEnum< - typeof CollectionIssueSeverity19 ->; - -export type CollectionIssue19 = { - message: string; - reason: Reason19; - severity: CollectionIssueSeverity19; - source: string; -}; - -export const Health19 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health19 = ClosedEnum; - -export const StatusLifecycle19 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle19 = ClosedEnum; - -export type HeartbeatStatus19 = { - collectionIssues: Array; - health: Health19; - lifecycle: StatusLifecycle19; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcp2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu8 | any | null | undefined; - memory?: Memory8 | any | null | undefined; - name: string; - nodes: Nodes2; - providerFleets: Array; - region?: string | null | undefined; - status: HeartbeatStatus19; - backend: "gcp"; -}; - -export const Category1 = { - Quota: "quota", - Capacity: "capacity", - Allocation: "allocation", - Other: "other", -} as const; -export type Category1 = ClosedEnum; - -export type CapacityBlocker1 = { - category: Category1; - message: string; - observedAt: Date; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -export type CapacityBlockerUnion1 = CapacityBlocker1 | any; - -export const UtilizationUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type UtilizationUnit1 = ClosedEnum; - -export type Utilization1 = { - unit: UtilizationUnit1; - value: number; -}; - -export type UtilizationUnion1 = Utilization1 | any; - -export type Recommendation1 = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization1 | any | null | undefined; -}; - -export type RecommendationUnion1 = Recommendation1 | any; - -export type CapacityGroup1 = { - capacityBlocker?: CapacityBlocker1 | any | null | undefined; - currentMachines: number; - desiredMachines: number; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation1 | any | null | undefined; -}; - -export const CpuUnit7 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit7 = ClosedEnum; - -export type Cpu7 = { - unit: CpuUnit7; - value: number; -}; - -export type CpuUnion7 = Cpu7 | any; - -export const MemoryUnit7 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit7 = ClosedEnum; - -export type Memory7 = { - unit: MemoryUnit7; - value: number; -}; - -export type MemoryUnion7 = Memory7 | any; - -export type Nodes1 = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -export type ProviderFleet1 = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; -}; - -export const Reason18 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason18 = ClosedEnum; - -export const CollectionIssueSeverity18 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity18 = ClosedEnum< - typeof CollectionIssueSeverity18 ->; - -export type CollectionIssue18 = { - message: string; - reason: Reason18; - severity: CollectionIssueSeverity18; - source: string; -}; - -export const Health18 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health18 = ClosedEnum; - -export const StatusLifecycle18 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle18 = ClosedEnum; - -export type HeartbeatStatus18 = { - collectionIssues: Array; - health: Health18; - lifecycle: StatusLifecycle18; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAws2 = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu7 | any | null | undefined; - memory?: Memory7 | any | null | undefined; - name: string; - nodes: Nodes1; - providerFleets: Array; - region?: string | null | undefined; - status: HeartbeatStatus18; - backend: "aws"; -}; - -export type SyncReconcileRequestDataUnion5 = - | DataAws2 - | DataGcp2 - | DataAzure2 - | DataLocal5; - -export type DataComputeCluster = { - data: DataAws2 | DataGcp2 | DataAzure2 | DataLocal5; - resourceType: "compute-cluster"; -}; - -export const DaemonInstanceCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type DaemonInstanceCpuUnit = ClosedEnum; - -export type DaemonInstanceCpu = { - unit: DaemonInstanceCpuUnit; - value: number; -}; - -export type DaemonInstanceCpuUnion4 = DaemonInstanceCpu | any; - -export const DaemonInstanceKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type DaemonInstanceKind = ClosedEnum; - -export const DaemonInstanceMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type DaemonInstanceMemoryUnit = ClosedEnum< - typeof DaemonInstanceMemoryUnit ->; - -export type DaemonInstanceMemory = { - unit: DaemonInstanceMemoryUnit; - value: number; -}; - -export type DaemonInstanceMemoryUnion4 = DaemonInstanceMemory | any; - -export type DaemonInstance4 = { - cpu?: DaemonInstanceCpu | any | null | undefined; - kind: DaemonInstanceKind; - memory?: DaemonInstanceMemory | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; -}; - -export type DaemonInstanceUnion = DaemonInstance4 | any; - -export const EventSeverity3 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type EventSeverity3 = ClosedEnum; - -export type SyncReconcileRequestSubject3 = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; -}; - -export type SyncReconcileRequestSubjectUnion3 = - | SyncReconcileRequestSubject3 - | any; - -export type SyncReconcileRequestEvent10 = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: EventSeverity3; - subject?: SyncReconcileRequestSubject3 | any | null | undefined; - timestamp: Date; -}; - -export const Reason17 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason17 = ClosedEnum; - -export const CollectionIssueSeverity17 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity17 = ClosedEnum< - typeof CollectionIssueSeverity17 ->; - -export type CollectionIssue17 = { - message: string; - reason: Reason17; - severity: CollectionIssueSeverity17; - source: string; -}; - -export const Health17 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health17 = ClosedEnum; - -export const StatusLifecycle17 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle17 = ClosedEnum; - -export type HeartbeatStatus17 = { - collectionIssues: Array; - health: Health17; - lifecycle: StatusLifecycle17; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal4 = { - commandSupported: boolean; - daemonInstance?: DaemonInstance4 | any | null | undefined; - daemonName: string; - events: Array; - exitReason?: string | null | undefined; - imagePathPresent: boolean; - pid?: number | null | undefined; - restartCount?: number | null | undefined; - runtimeId: string; - status: HeartbeatStatus17; - backend: "local"; -}; - -export const CpuUnit6 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit6 = ClosedEnum; - -export type Cpu6 = { - unit: CpuUnit6; - value: number; -}; - -export type CpuUnion6 = Cpu6 | any; - -export type InvolvedObject7 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion7 = InvolvedObject7 | any; - -export type SyncReconcileRequestSource7 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion7 = SyncReconcileRequestSource7 | any; - -export type SyncReconcileRequestEvent9 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject7 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource7 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit6 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit6 = ClosedEnum; - -export type Memory6 = { - unit: MemoryUnit6; - value: number; -}; - -export type MemoryUnion6 = Memory6 | any; - -export const CpuPodUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuPodUnit3 = ClosedEnum; - -export type CpuPod3 = { - unit: CpuPodUnit3; - value: number; -}; - -export type PodCpuUnion3 = CpuPod3 | any; - -export const MemoryPodUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryPodUnit3 = ClosedEnum; - -export type MemoryPod3 = { - unit: MemoryPodUnit3; - value: number; -}; - -export type PodMemoryUnion3 = MemoryPod3 | any; - -export type OwnerReference3 = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; - -export type Pod3 = { - cpu?: CpuPod3 | any | null | undefined; - memory?: MemoryPod3 | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type Replicas4 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -export const Reason16 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason16 = ClosedEnum; - -export const CollectionIssueSeverity16 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity16 = ClosedEnum< - typeof CollectionIssueSeverity16 ->; - -export type CollectionIssue16 = { - message: string; - reason: Reason16; - severity: CollectionIssueSeverity16; - source: string; -}; - -export const Health16 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health16 = ClosedEnum; - -export const StatusLifecycle16 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle16 = ClosedEnum; - -export type HeartbeatStatus16 = { - collectionIssues: Array; - health: Health16; - lifecycle: StatusLifecycle16; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type WorkloadCondition3 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export type Workload3 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; -}; - -export type WorkloadUnion3 = Workload3 | any; - -export type DataKubernetes3 = { - commandSupported: boolean; - cpu?: Cpu6 | any | null | undefined; - events: Array; - memory?: Memory6 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas4; - restarts?: number | null | undefined; - status: HeartbeatStatus16; - workload?: Workload3 | any | null | undefined; - backend: "kubernetes"; -}; - -export const CpuDaemonInstanceUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuDaemonInstanceUnit3 = ClosedEnum; - -export type CpuDaemonInstance3 = { - unit: CpuDaemonInstanceUnit3; - value: number; -}; - -export type DaemonInstanceCpuUnion3 = CpuDaemonInstance3 | any; - -export const MemoryDaemonInstanceUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryDaemonInstanceUnit3 = ClosedEnum< - typeof MemoryDaemonInstanceUnit3 ->; - -export type MemoryDaemonInstance3 = { - unit: MemoryDaemonInstanceUnit3; - value: number; -}; - -export type DaemonInstanceMemoryUnion3 = MemoryDaemonInstance3 | any; - -export type DaemonInstance3 = { - cpu?: CpuDaemonInstance3 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance3 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type InvolvedObject6 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion6 = InvolvedObject6 | any; - -export type SyncReconcileRequestSource6 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion6 = SyncReconcileRequestSource6 | any; - -export type SyncReconcileRequestEvent8 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject6 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource6 | any | null | undefined; - type?: string | null | undefined; -}; - -export const Reason15 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason15 = ClosedEnum; - -export const CollectionIssueSeverity15 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity15 = ClosedEnum< - typeof CollectionIssueSeverity15 ->; - -export type CollectionIssue15 = { - message: string; - reason: Reason15; - severity: CollectionIssueSeverity15; - source: string; -}; - -export const Health15 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health15 = ClosedEnum; - -export const StatusLifecycle15 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle15 = ClosedEnum; - -export type HeartbeatStatus15 = { - collectionIssues: Array; - health: Health15; - lifecycle: StatusLifecycle15; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzure1 = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName: string; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: HeartbeatStatus15; - unavailableInstances: number; - backend: "azure"; -}; - -export const CpuDaemonInstanceUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuDaemonInstanceUnit2 = ClosedEnum; - -export type CpuDaemonInstance2 = { - unit: CpuDaemonInstanceUnit2; - value: number; -}; - -export type DaemonInstanceCpuUnion2 = CpuDaemonInstance2 | any; - -export const MemoryDaemonInstanceUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryDaemonInstanceUnit2 = ClosedEnum< - typeof MemoryDaemonInstanceUnit2 ->; - -export type MemoryDaemonInstance2 = { - unit: MemoryDaemonInstanceUnit2; - value: number; -}; - -export type DaemonInstanceMemoryUnion2 = MemoryDaemonInstance2 | any; - -export type DaemonInstance2 = { - cpu?: CpuDaemonInstance2 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance2 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type InvolvedObject5 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion5 = InvolvedObject5 | any; - -export type SyncReconcileRequestSource5 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion5 = SyncReconcileRequestSource5 | any; - -export type SyncReconcileRequestEvent7 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject5 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource5 | any | null | undefined; - type?: string | null | undefined; -}; - -export const Reason14 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason14 = ClosedEnum; - -export const CollectionIssueSeverity14 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity14 = ClosedEnum< - typeof CollectionIssueSeverity14 ->; - -export type CollectionIssue14 = { - message: string; - reason: Reason14; - severity: CollectionIssueSeverity14; - source: string; -}; - -export const Health14 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health14 = ClosedEnum; - -export const StatusLifecycle14 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle14 = ClosedEnum; - -export type HeartbeatStatus14 = { - collectionIssues: Array; - health: Health14; - lifecycle: StatusLifecycle14; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcp1 = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName: string; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: HeartbeatStatus14; - unavailableInstances: number; - backend: "gcp"; -}; - -export const CpuDaemonInstanceUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuDaemonInstanceUnit1 = ClosedEnum; - -export type CpuDaemonInstance1 = { - unit: CpuDaemonInstanceUnit1; - value: number; -}; - -export type DaemonInstanceCpuUnion1 = CpuDaemonInstance1 | any; - -export const MemoryDaemonInstanceUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryDaemonInstanceUnit1 = ClosedEnum< - typeof MemoryDaemonInstanceUnit1 ->; - -export type MemoryDaemonInstance1 = { - unit: MemoryDaemonInstanceUnit1; - value: number; -}; - -export type DaemonInstanceMemoryUnion1 = MemoryDaemonInstance1 | any; - -export type DaemonInstance1 = { - cpu?: CpuDaemonInstance1 | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance1 | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type InvolvedObject4 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion4 = InvolvedObject4 | any; - -export type SyncReconcileRequestSource4 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion4 = SyncReconcileRequestSource4 | any; - -export type SyncReconcileRequestEvent6 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject4 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource4 | any | null | undefined; - type?: string | null | undefined; -}; - -export const Reason13 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason13 = ClosedEnum; - -export const CollectionIssueSeverity13 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity13 = ClosedEnum< - typeof CollectionIssueSeverity13 ->; - -export type CollectionIssue13 = { - message: string; - reason: Reason13; - severity: CollectionIssueSeverity13; - source: string; -}; - -export const Health13 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health13 = ClosedEnum; - -export const StatusLifecycle13 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle13 = ClosedEnum; - -export type HeartbeatStatus13 = { - collectionIssues: Array; - health: Health13; - lifecycle: StatusLifecycle13; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAws1 = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName: string; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: HeartbeatStatus13; - unavailableInstances: number; - backend: "aws"; -}; - -export type SyncReconcileRequestDataUnion4 = - | DataAws1 - | DataGcp1 - | DataAzure1 - | DataKubernetes3 - | DataLocal4; - -export type DataDaemon = { - data: DataAws1 | DataGcp1 | DataAzure1 | DataKubernetes3 | DataLocal4; - resourceType: "daemon"; -}; - -export const ContainerUnitCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ContainerUnitCpuUnit = ClosedEnum; - -export type ContainerUnitCpu = { - unit: ContainerUnitCpuUnit; - value: number; -}; - -export type ContainerUnitCpuUnion = ContainerUnitCpu | any; - -export const ContainerUnitKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type ContainerUnitKind = ClosedEnum; - -export const ContainerUnitMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ContainerUnitMemoryUnit = ClosedEnum< - typeof ContainerUnitMemoryUnit ->; - -export type ContainerUnitMemory = { - unit: ContainerUnitMemoryUnit; - value: number; -}; - -export type ContainerUnitMemoryUnion = ContainerUnitMemory | any; - -export type ContainerUnit = { - cpu?: ContainerUnitCpu | any | null | undefined; - kind: ContainerUnitKind; - memory?: ContainerUnitMemory | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; -}; - -export type ContainerUnitUnion = ContainerUnit | any; - -export const CpuUnit5 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit5 = ClosedEnum; - -export type Cpu5 = { - unit: CpuUnit5; - value: number; -}; - -export type CpuUnion5 = Cpu5 | any; - -export const EventSeverity2 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type EventSeverity2 = ClosedEnum; - -export type SyncReconcileRequestSubject2 = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; -}; - -export type SyncReconcileRequestSubjectUnion2 = - | SyncReconcileRequestSubject2 - | any; - -export type SyncReconcileRequestEvent5 = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: EventSeverity2; - subject?: SyncReconcileRequestSubject2 | any | null | undefined; - timestamp: Date; -}; - -export const MemoryUnit5 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit5 = ClosedEnum; - -export type Memory5 = { - unit: MemoryUnit5; - value: number; -}; - -export type MemoryUnion5 = Memory5 | any; - -export const Reason12 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason12 = ClosedEnum; - -export const CollectionIssueSeverity12 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity12 = ClosedEnum< - typeof CollectionIssueSeverity12 ->; - -export type CollectionIssue12 = { - message: string; - reason: Reason12; - severity: CollectionIssueSeverity12; - source: string; -}; - -export const Health12 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health12 = ClosedEnum; - -export const StatusLifecycle12 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle12 = ClosedEnum; - -export type HeartbeatStatus12 = { - collectionIssues: Array; - health: Health12; - lifecycle: StatusLifecycle12; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal3 = { - bindMountCount: number; - containerId?: string | null | undefined; - containerUnit?: ContainerUnit | any | null | undefined; - cpu?: Cpu5 | any | null | undefined; - events: Array; - image?: string | null | undefined; - localUrl?: string | null | undefined; - memory?: Memory5 | any | null | undefined; - name?: string | null | undefined; - portCount: number; - restartCount?: number | null | undefined; - runtimeReachable: boolean; - runtimeStatus?: string | null | undefined; - status: HeartbeatStatus12; - backend: "local"; -}; - -export const CpuUnit4 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit4 = ClosedEnum; - -export type Cpu4 = { - unit: CpuUnit4; - value: number; -}; - -export type CpuUnion4 = Cpu4 | any; - -export type InvolvedObject3 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion3 = InvolvedObject3 | any; - -export type SyncReconcileRequestSource3 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion3 = SyncReconcileRequestSource3 | any; - -export type SyncReconcileRequestEvent4 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject3 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource3 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit4 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit4 = ClosedEnum; - -export type Memory4 = { - unit: MemoryUnit4; - value: number; -}; - -export type MemoryUnion4 = Memory4 | any; - -export const CpuPodUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuPodUnit2 = ClosedEnum; - -export type CpuPod2 = { - unit: CpuPodUnit2; - value: number; -}; - -export type PodCpuUnion2 = CpuPod2 | any; - -export const MemoryPodUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryPodUnit2 = ClosedEnum; - -export type MemoryPod2 = { - unit: MemoryPodUnit2; - value: number; -}; - -export type PodMemoryUnion2 = MemoryPod2 | any; - -export type OwnerReference2 = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; - -export type Pod2 = { - cpu?: CpuPod2 | any | null | undefined; - memory?: MemoryPod2 | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type Replicas3 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -export const Reason11 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason11 = ClosedEnum; - -export const CollectionIssueSeverity11 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity11 = ClosedEnum< - typeof CollectionIssueSeverity11 ->; - -export type CollectionIssue11 = { - message: string; - reason: Reason11; - severity: CollectionIssueSeverity11; - source: string; -}; - -export const Health11 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health11 = ClosedEnum; - -export const StatusLifecycle11 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle11 = ClosedEnum; - -export type HeartbeatStatus11 = { - collectionIssues: Array; - health: Health11; - lifecycle: StatusLifecycle11; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type WorkloadCondition2 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export type Workload2 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; -}; - -export type WorkloadUnion2 = Workload2 | any; - -export const WorkloadKind2 = { - Deployment: "deployment", - StatefulSet: "statefulSet", - DaemonSet: "daemonSet", - ReplicaSet: "replicaSet", - Pod: "pod", -} as const; -export type WorkloadKind2 = ClosedEnum; - -export type DataKubernetes2 = { - cpu?: Cpu4 | any | null | undefined; - events: Array; - memory?: Memory4 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas3; - restarts?: number | null | undefined; - status: HeartbeatStatus11; - workload?: Workload2 | any | null | undefined; - workloadKind: WorkloadKind2; - backend: "kubernetes"; -}; - -export const CpuUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit3 = ClosedEnum; - -export type Cpu3 = { - unit: CpuUnit3; - value: number; -}; - -export type CpuUnion3 = Cpu3 | any; - -export type InvolvedObject2 = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -export type InvolvedObjectUnion2 = InvolvedObject2 | any; - -export type SyncReconcileRequestSource2 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion2 = SyncReconcileRequestSource2 | any; - -export type SyncReconcileRequestEvent3 = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject2 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource2 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit3 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit3 = ClosedEnum; - -export type Memory3 = { - unit: MemoryUnit3; - value: number; -}; - -export type MemoryUnion3 = Memory3 | any; - -export const CpuReplicaUnitUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuReplicaUnitUnit = ClosedEnum; - -export type CpuReplicaUnit = { - unit: CpuReplicaUnitUnit; - value: number; -}; - -export type ReplicaUnitCpuUnion = CpuReplicaUnit | any; - -export const MemoryReplicaUnitUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryReplicaUnitUnit = ClosedEnum; - -export type MemoryReplicaUnit = { - unit: MemoryReplicaUnitUnit; - value: number; -}; - -export type ReplicaUnitMemoryUnion = MemoryReplicaUnit | any; - -export type ReplicaUnit = { - cpu?: CpuReplicaUnit | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryReplicaUnit | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type Replicas2 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -export const SchedulingMode = { - Replicated: "replicated", - Stateful: "stateful", - Daemon: "daemon", -} as const; -export type SchedulingMode = ClosedEnum; - -export const Reason10 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason10 = ClosedEnum; - -export const CollectionIssueSeverity10 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity10 = ClosedEnum< - typeof CollectionIssueSeverity10 ->; - -export type CollectionIssue10 = { - message: string; - reason: Reason10; - severity: CollectionIssueSeverity10; - source: string; -}; - -export const Health10 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health10 = ClosedEnum; - -export const StatusLifecycle10 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle10 = ClosedEnum; - -export type HeartbeatStatus10 = { - collectionIssues: Array; - health: Health10; - lifecycle: StatusLifecycle10; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataHorizonPlatform = { - attentionCount: number; - containerId: string; - cpu?: Cpu3 | any | null | undefined; - events: Array; - image?: string | null | undefined; - memory?: Memory3 | any | null | undefined; - replicaUnits: Array; - replicas: Replicas2; - schedulingMode: SchedulingMode; - status: HeartbeatStatus10; - backend: "horizonPlatform"; -}; - -export type SyncReconcileRequestDataUnion3 = - | DataHorizonPlatform - | DataKubernetes2 - | DataLocal3; - -export type DataContainer = { - data: DataHorizonPlatform | DataKubernetes2 | DataLocal3; - resourceType: "container"; -}; - -export const CpuUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit2 = ClosedEnum; - -export type Cpu2 = { - unit: CpuUnit2; - value: number; -}; - -export type CpuUnion2 = Cpu2 | any; - -export const EventSeverity1 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type EventSeverity1 = ClosedEnum; - -export type SyncReconcileRequestSubject1 = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; -}; - -export type SyncReconcileRequestSubjectUnion1 = - | SyncReconcileRequestSubject1 - | any; - -export type SyncReconcileRequestEvent2 = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: EventSeverity1; - subject?: SyncReconcileRequestSubject1 | any | null | undefined; - timestamp: Date; -}; - -export const MemoryUnit2 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit2 = ClosedEnum; - -export type Memory2 = { - unit: MemoryUnit2; - value: number; -}; - -export type MemoryUnion2 = Memory2 | any; - -export const ProcessCpuUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ProcessCpuUnit = ClosedEnum; - -export type ProcessCpu = { - unit: ProcessCpuUnit; - value: number; -}; - -export type ProcessCpuUnion = ProcessCpu | any; - -export const ProcessKind = { - Container: "container", - Process: "process", - Daemon: "daemon", -} as const; -export type ProcessKind = ClosedEnum; - -export const ProcessMemoryUnit = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type ProcessMemoryUnit = ClosedEnum; - -export type ProcessMemory = { - unit: ProcessMemoryUnit; - value: number; -}; - -export type ProcessMemoryUnion = ProcessMemory | any; - -export type Process = { - cpu?: ProcessCpu | any | null | undefined; - kind: ProcessKind; - memory?: ProcessMemory | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; -}; - -export type ProcessUnion = Process | any; - -export const Reason9 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason9 = ClosedEnum; - -export const CollectionIssueSeverity9 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity9 = ClosedEnum< - typeof CollectionIssueSeverity9 ->; - -export type CollectionIssue9 = { - message: string; - reason: Reason9; - severity: CollectionIssueSeverity9; - source: string; -}; - -export const Health9 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health9 = ClosedEnum; - -export const StatusLifecycle9 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle9 = ClosedEnum; - -export type HeartbeatStatus9 = { - collectionIssues: Array; - health: Health9; - lifecycle: StatusLifecycle9; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal2 = { - commandSupported: boolean; - cpu?: Cpu2 | any | null | undefined; - events: Array; - imagePathPresent: boolean; - memory?: Memory2 | any | null | undefined; - pid?: number | null | undefined; - process?: Process | any | null | undefined; - readinessProbeOk?: boolean | null | undefined; - status: HeartbeatStatus9; - triggerCount: number; - backend: "local"; -}; - -export const CpuUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuUnit1 = ClosedEnum; - -export type Cpu1 = { - unit: CpuUnit1; - value: number; -}; - -export type CpuUnion1 = Cpu1 | any; - -export type InvolvedObject1 = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -export type InvolvedObjectUnion1 = InvolvedObject1 | any; - -export type SyncReconcileRequestSource1 = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -export type SourceUnion1 = SyncReconcileRequestSource1 | any; - -export type SyncReconcileRequestEvent1 = { - count?: number | null | undefined; - eventTime?: Date | null | undefined; - firstTimestamp?: Date | null | undefined; - involvedObject?: InvolvedObject1 | any | null | undefined; - lastTimestamp?: Date | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource1 | any | null | undefined; - type?: string | null | undefined; -}; - -export const MemoryUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryUnit1 = ClosedEnum; - -export type Memory1 = { - unit: MemoryUnit1; - value: number; -}; - -export type MemoryUnion1 = Memory1 | any; - -export const CpuPodUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type CpuPodUnit1 = ClosedEnum; - -export type CpuPod1 = { - unit: CpuPodUnit1; - value: number; -}; - -export type PodCpuUnion1 = CpuPod1 | any; - -export const MemoryPodUnit1 = { - Count: "count", - Percent: "percent", - Bytes: "bytes", - Cores: "cores", - Milliseconds: "milliseconds", - RequestsPerSecond: "requests-per-second", -} as const; -export type MemoryPodUnit1 = ClosedEnum; - -export type MemoryPod1 = { - unit: MemoryPodUnit1; - value: number; -}; - -export type PodMemoryUnion1 = MemoryPod1 | any; - -export type OwnerReference1 = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; - -export type Pod1 = { - cpu?: CpuPod1 | any | null | undefined; - memory?: MemoryPod1 | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -export type Replicas1 = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -export const Reason8 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason8 = ClosedEnum; - -export const CollectionIssueSeverity8 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity8 = ClosedEnum< - typeof CollectionIssueSeverity8 ->; - -export type CollectionIssue8 = { - message: string; - reason: Reason8; - severity: CollectionIssueSeverity8; - source: string; -}; - -export const Health8 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health8 = ClosedEnum; - -export const StatusLifecycle8 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle8 = ClosedEnum; - -export type HeartbeatStatus8 = { - collectionIssues: Array; - health: Health8; - lifecycle: StatusLifecycle8; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type WorkloadCondition1 = { - lastTransitionTime?: Date | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -export type Workload1 = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; -}; - -export type WorkloadUnion1 = Workload1 | any; - -export const WorkloadKind1 = { - Deployment: "deployment", - StatefulSet: "statefulSet", - DaemonSet: "daemonSet", - ReplicaSet: "replicaSet", - Pod: "pod", -} as const; -export type WorkloadKind1 = ClosedEnum; - -export type DataKubernetes1 = { - cpu?: Cpu1 | any | null | undefined; - events: Array; - memory?: Memory1 | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas1; - restarts?: number | null | undefined; - status: HeartbeatStatus8; - triggerCount: number; - workload?: Workload1 | any | null | undefined; - workloadKind: WorkloadKind1; - backend: "kubernetes"; -}; - -export const Reason7 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason7 = ClosedEnum; - -export const CollectionIssueSeverity7 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity7 = ClosedEnum< - typeof CollectionIssueSeverity7 ->; - -export type CollectionIssue7 = { - message: string; - reason: Reason7; - severity: CollectionIssueSeverity7; - source: string; -}; - -export const Health7 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health7 = ClosedEnum; - -export const StatusLifecycle7 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle7 = ClosedEnum; - -export type HeartbeatStatus7 = { - collectionIssues: Array; - health: Health7; - lifecycle: StatusLifecycle7; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureContainerApps1 = { - appName: string; - cpu?: number | null | undefined; - environmentName?: string | null | undefined; - ingressFqdn?: string | null | undefined; - maxReplicas?: number | null | undefined; - memory?: string | null | undefined; - minReplicas?: number | null | undefined; - provisioningState?: string | null | undefined; - revision?: string | null | undefined; - runningStatus?: string | null | undefined; - status: HeartbeatStatus7; - backend: "azureContainerApps"; -}; - -export const Reason6 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason6 = ClosedEnum; - -export const CollectionIssueSeverity6 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity6 = ClosedEnum< - typeof CollectionIssueSeverity6 ->; - -export type CollectionIssue6 = { - message: string; - reason: Reason6; - severity: CollectionIssueSeverity6; - source: string; -}; - -export const Health6 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health6 = ClosedEnum; - -export const StatusLifecycle6 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle6 = ClosedEnum; - -export type HeartbeatStatus6 = { - collectionIssues: Array; - health: Health6; - lifecycle: StatusLifecycle6; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpCloudRun = { - containerImage?: string | null | undefined; - cpuLimit?: string | null | undefined; - generation?: number | null | undefined; - latestCreatedRevision?: string | null | undefined; - latestReadyRevision?: string | null | undefined; - maxInstanceCount?: number | null | undefined; - memoryLimit?: string | null | undefined; - minInstanceCount?: number | null | undefined; - observedGeneration?: number | null | undefined; - region?: string | null | undefined; - service: string; - status: HeartbeatStatus6; - trafficCount: number; - uri?: string | null | undefined; - urls: Array; - backend: "gcpCloudRun"; -}; - -export const Reason5 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason5 = ClosedEnum; - -export const CollectionIssueSeverity5 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity5 = ClosedEnum< - typeof CollectionIssueSeverity5 ->; - -export type CollectionIssue5 = { - message: string; - reason: Reason5; - severity: CollectionIssueSeverity5; - source: string; -}; - -export const Health5 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health5 = ClosedEnum; - -export const StatusLifecycle5 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle5 = ClosedEnum; - -export type HeartbeatStatus5 = { - collectionIssues: Array; - health: Health5; - lifecycle: StatusLifecycle5; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsLambda = { - codeSha256?: string | null | undefined; - functionName: string; - functionUrlAuthType?: string | null | undefined; - functionUrlCorsPresent: boolean; - lastModified?: string | null | undefined; - lastUpdateStatus?: string | null | undefined; - lastUpdateStatusReason?: string | null | undefined; - lastUpdateStatusReasonCode?: string | null | undefined; - layerCount: number; - memorySizeMb?: number | null | undefined; - packageType?: string | null | undefined; - revisionId?: string | null | undefined; - runtime?: string | null | undefined; - state?: string | null | undefined; - stateReason?: string | null | undefined; - stateReasonCode?: string | null | undefined; - status: HeartbeatStatus5; - timeoutSeconds?: number | null | undefined; - triggerCount: number; - version?: string | null | undefined; - backend: "awsLambda"; -}; - -export type SyncReconcileRequestDataUnion2 = - | DataAwsLambda - | DataGcpCloudRun - | DataAzureContainerApps1 - | DataKubernetes1 - | DataLocal2; - -export type DataWorker = { - data: - | DataAwsLambda - | DataGcpCloudRun - | DataAzureContainerApps1 - | DataKubernetes1 - | DataLocal2; - resourceType: "worker"; -}; - -export const Reason4 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason4 = ClosedEnum; - -export const CollectionIssueSeverity4 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity4 = ClosedEnum< - typeof CollectionIssueSeverity4 ->; - -export type CollectionIssue4 = { - message: string; - reason: Reason4; - severity: CollectionIssueSeverity4; - source: string; -}; - -export const Health4 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health4 = ClosedEnum; - -export const StatusLifecycle4 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle4 = ClosedEnum; - -export type HeartbeatStatus4 = { - collectionIssues: Array; - health: Health4; - lifecycle: StatusLifecycle4; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataLocal1 = { - isDirectory?: boolean | null | undefined; - modifiedAt?: Date | null | undefined; - path: string; - pathExists: boolean; - readonly?: boolean | null | undefined; - status: HeartbeatStatus4; - backend: "local"; -}; - -export const Reason3 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason3 = ClosedEnum; - -export const CollectionIssueSeverity3 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity3 = ClosedEnum< - typeof CollectionIssueSeverity3 ->; - -export type CollectionIssue3 = { - message: string; - reason: Reason3; - severity: CollectionIssueSeverity3; - source: string; -}; - -export const Health3 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health3 = ClosedEnum; - -export const StatusLifecycle3 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle3 = ClosedEnum; - -export type HeartbeatStatus3 = { - collectionIssues: Array; - health: Health3; - lifecycle: StatusLifecycle3; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAzureBlob = { - accessTier?: string | null | undefined; - accountKind?: string | null | undefined; - allowBlobPublicAccess?: boolean | null | undefined; - blobDeleteRetentionDays?: number | null | undefined; - blobDeleteRetentionEnabled?: boolean | null | undefined; - blobEncryptionEnabled?: boolean | null | undefined; - blobVersioningEnabled?: boolean | null | undefined; - changeFeedEnabled?: boolean | null | undefined; - changeFeedRetentionDays?: number | null | undefined; - containerDeleteRetentionDays?: number | null | undefined; - containerDeleteRetentionEnabled?: boolean | null | undefined; - containerPublicAccess?: string | null | undefined; - encryptionKeySource?: string | null | undefined; - fileEncryptionEnabled?: boolean | null | undefined; - location?: string | null | undefined; - name: string; - primaryLocation?: string | null | undefined; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - queueEncryptionEnabled?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - secondaryLocation?: string | null | undefined; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: HeartbeatStatus3; - statusOfPrimary?: string | null | undefined; - statusOfSecondary?: string | null | undefined; - storageAccountName?: string | null | undefined; - tableEncryptionEnabled?: boolean | null | undefined; - backend: "azureBlob"; -}; - -export const Reason2 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason2 = ClosedEnum; - -export const CollectionIssueSeverity2 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity2 = ClosedEnum< - typeof CollectionIssueSeverity2 ->; - -export type CollectionIssue2 = { - message: string; - reason: Reason2; - severity: CollectionIssueSeverity2; - source: string; -}; - -export const Health2 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health2 = ClosedEnum; - -export const StatusLifecycle2 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle2 = ClosedEnum; - -export type HeartbeatStatus2 = { - collectionIssues: Array; - health: Health2; - lifecycle: StatusLifecycle2; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataGcpCloudStorage = { - bucketId?: string | null | undefined; - defaultKmsKeyName?: string | null | undefined; - encryptionConfigPresent: boolean; - lifecyclePresent: boolean; - lifecycleRuleCount?: number | null | undefined; - location?: string | null | undefined; - locationType?: string | null | undefined; - name: string; - publicAccessPrevention?: string | null | undefined; - retentionPeriod?: string | null | undefined; - retentionPolicyEffectiveTime?: string | null | undefined; - retentionPolicyIsLocked?: boolean | null | undefined; - softDeleteEffectiveTime?: string | null | undefined; - softDeleteRetentionDurationSeconds?: string | null | undefined; - status: HeartbeatStatus2; - storageClass?: string | null | undefined; - uniformBucketLevelAccessEnabled?: boolean | null | undefined; - uniformBucketLevelAccessLockedTime?: string | null | undefined; - versioningEnabled?: boolean | null | undefined; - backend: "gcpCloudStorage"; -}; - -export const Reason1 = { - Forbidden: "forbidden", - NotInstalled: "not-installed", - ApiUnavailable: "api-unavailable", - CollectionFailed: "collection-failed", - TimedOut: "timed-out", -} as const; -export type Reason1 = ClosedEnum; - -export const CollectionIssueSeverity1 = { - Info: "info", - Warning: "warning", - Error: "error", -} as const; -export type CollectionIssueSeverity1 = ClosedEnum< - typeof CollectionIssueSeverity1 ->; - -export type CollectionIssue1 = { - message: string; - reason: Reason1; - severity: CollectionIssueSeverity1; - source: string; -}; - -export const Health1 = { - Unknown: "unknown", - Healthy: "healthy", - Degraded: "degraded", - Unhealthy: "unhealthy", -} as const; -export type Health1 = ClosedEnum; - -export const StatusLifecycle1 = { - Unknown: "unknown", - Creating: "creating", - Updating: "updating", - Running: "running", - Scaling: "scaling", - Stopping: "stopping", - Stopped: "stopped", - Deleting: "deleting", - Deleted: "deleted", - Failed: "failed", -} as const; -export type StatusLifecycle1 = ClosedEnum; - -export type HeartbeatStatus1 = { - collectionIssues: Array; - health: Health1; - lifecycle: StatusLifecycle1; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -export type DataAwsS3 = { - blockPublicAcls?: boolean | null | undefined; - blockPublicPolicy?: boolean | null | undefined; - bucketAclPresent?: boolean | null | undefined; - bucketLocation?: string | null | undefined; - bucketPolicyPresent?: boolean | null | undefined; - encryptionConfigPresent: boolean; - encryptionEnabled?: boolean | null | undefined; - ignorePublicAcls?: boolean | null | undefined; - lifecyclePresent: boolean; - lifecycleRuleCount?: number | null | undefined; - name: string; - publicAccessBlockPresent: boolean; - region?: string | null | undefined; - restrictPublicBuckets?: boolean | null | undefined; - status: HeartbeatStatus1; - versioningEnabled?: boolean | null | undefined; - versioningStatus?: string | null | undefined; - backend: "awsS3"; -}; - -export type SyncReconcileRequestDataUnion1 = - | DataAwsS3 - | DataGcpCloudStorage - | DataAzureBlob - | DataLocal1; - -export type DataStorage = { - data: DataAwsS3 | DataGcpCloudStorage | DataAzureBlob | DataLocal1; - resourceType: "storage"; -}; - -export type SyncReconcileRequestDataUnion15 = - | DataStorage - | DataWorker - | DataContainer - | DataDaemon - | DataComputeCluster - | DataKubernetesCluster - | DataQueue - | DataKv - | DataVault - | DataServiceAccount - | DataNetwork - | DataRemoteStackManagement - | DataArtifactRegistry - | DataBuild - | DataServiceActivation - | DataAzureResourceGroup - | DataAzureStorageAccount - | DataAzureContainerAppsEnvironment - | DataAzureServiceBusNamespace; - -export const Format = { - Json: "json", - Yaml: "yaml", - Text: "text", -} as const; -export type Format = ClosedEnum; - -export type Raw = { - body: string; - collectedAt: Date; - format: Format; - source: string; - truncated: boolean; -}; - -export type Heartbeat = { - backend: BackendEnum; - /** - * Represents the target cloud platform. - */ - controllerPlatform: HeartbeatControllerPlatform; - data: - | DataStorage - | DataWorker - | DataContainer - | DataDaemon - | DataComputeCluster - | DataKubernetesCluster - | DataQueue - | DataKv - | DataVault - | DataServiceAccount - | DataNetwork - | DataRemoteStackManagement - | DataArtifactRegistry - | DataBuild - | DataServiceActivation - | DataAzureResourceGroup - | DataAzureStorageAccount - | DataAzureContainerAppsEnvironment - | DataAzureServiceBusNamespace; - deploymentId?: string | null | undefined; - observedAt: Date; - raw: Array; - resourceId: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - resourceType: string; -}; - -/** - * Request to reconcile deployment state - */ -export type SyncReconcileRequest = { - /** - * Deployment ID to reconcile state for - */ - deploymentId: string; - /** - * Lock session (push model only) - verifies lock ownership - */ - session?: string | undefined; - /** - * Complete deployment state after step() execution - */ - state: SyncReconcileRequestState; - /** - * Update heartbeat timestamp (for successful health checks) - */ - updateHeartbeat?: boolean | undefined; - /** - * Delay before this deployment should be acquired again. - */ - suggestedDelayMs?: number | undefined; - /** - * Latest typed resource heartbeats collected during this step. - */ - heartbeats?: Array | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeStringList$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseTypeStringList, - ); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound = { - type: string; - value: Array; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound, - SyncReconcileRequestCurrentReleaseDefaultStringList - > = z.object({ - type: SyncReconcileRequestCurrentReleaseTypeStringList$outboundSchema, - value: z.array(z.string()), - }); - -export function syncReconcileRequestCurrentReleaseDefaultStringListToJSON( - syncReconcileRequestCurrentReleaseDefaultStringList: - SyncReconcileRequestCurrentReleaseDefaultStringList, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDefaultStringList, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeBoolean$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseTypeBoolean, - ); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound = { - type: string; - value: boolean; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound, - SyncReconcileRequestCurrentReleaseDefaultBoolean - > = z.object({ - type: SyncReconcileRequestCurrentReleaseTypeBoolean$outboundSchema, - value: z.boolean(), - }); - -export function syncReconcileRequestCurrentReleaseDefaultBooleanToJSON( - syncReconcileRequestCurrentReleaseDefaultBoolean: - SyncReconcileRequestCurrentReleaseDefaultBoolean, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDefaultBoolean, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeNumber$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseTypeNumber, - ); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound = { - type: string; - value: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound, - SyncReconcileRequestCurrentReleaseDefaultNumber - > = z.object({ - type: SyncReconcileRequestCurrentReleaseTypeNumber$outboundSchema, - value: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseDefaultNumberToJSON( - syncReconcileRequestCurrentReleaseDefaultNumber: - SyncReconcileRequestCurrentReleaseDefaultNumber, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDefaultNumber, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeString$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseTypeString, - ); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseDefaultString$Outbound = { - type: string; - value: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseDefaultString$Outbound, - SyncReconcileRequestCurrentReleaseDefaultString - > = z.object({ - type: SyncReconcileRequestCurrentReleaseTypeString$outboundSchema, - value: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseDefaultStringToJSON( - syncReconcileRequestCurrentReleaseDefaultString: - SyncReconcileRequestCurrentReleaseDefaultString, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDefaultString, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseDefaultUnion$Outbound = - | SyncReconcileRequestCurrentReleaseDefaultString$Outbound - | SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound - | SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound - | SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseDefaultUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseDefaultUnion$Outbound, - SyncReconcileRequestCurrentReleaseDefaultUnion - > = z.union([ - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema - ), - z.any(), - ]); - -export function syncReconcileRequestCurrentReleaseDefaultUnionToJSON( - syncReconcileRequestCurrentReleaseDefaultUnion: - SyncReconcileRequestCurrentReleaseDefaultUnion, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseDefaultUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDefaultUnion, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseTypeEnvEnum, - ); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseTypeUnion$Outbound = string | any; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseTypeUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseTypeUnion$Outbound, - SyncReconcileRequestCurrentReleaseTypeUnion - > = z.union([ - SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema, - z.any(), - ]); - -export function syncReconcileRequestCurrentReleaseTypeUnionToJSON( - syncReconcileRequestCurrentReleaseTypeUnion: - SyncReconcileRequestCurrentReleaseTypeUnion, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseTypeUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseTypeUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseEnv$Outbound = { - name: string; - targetResources?: Array | null | undefined; - type?: string | any | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseEnv$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseEnv$Outbound, - SyncReconcileRequestCurrentReleaseEnv -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema, - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileRequestCurrentReleaseEnvToJSON( - syncReconcileRequestCurrentReleaseEnv: SyncReconcileRequestCurrentReleaseEnv, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseEnv$outboundSchema.parse( - syncReconcileRequestCurrentReleaseEnv, - ), - ); -} - -/** @internal */ -export const CurrentReleaseStateKind$outboundSchema: z.ZodEnum< - typeof CurrentReleaseStateKind -> = z.enum(CurrentReleaseStateKind); - -/** @internal */ -export const SyncReconcileRequestCurrentReleasePlatform$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleasePlatform, - ); - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProvidedBy$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseProvidedBy, - ); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseValidation$Outbound = { - format?: string | null | undefined; - max?: string | null | undefined; - maxItems?: number | null | undefined; - maxLength?: number | null | undefined; - min?: string | null | undefined; - minItems?: number | null | undefined; - minLength?: number | null | undefined; - pattern?: string | null | undefined; - values?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseValidation$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseValidation$Outbound, - SyncReconcileRequestCurrentReleaseValidation - > = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestCurrentReleaseValidationToJSON( - syncReconcileRequestCurrentReleaseValidation: - SyncReconcileRequestCurrentReleaseValidation, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseValidation$outboundSchema.parse( - syncReconcileRequestCurrentReleaseValidation, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseValidationUnion$Outbound = - | SyncReconcileRequestCurrentReleaseValidation$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseValidationUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseValidationUnion$Outbound, - SyncReconcileRequestCurrentReleaseValidationUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseValidation$outboundSchema), - z.any(), - ]); - -export function syncReconcileRequestCurrentReleaseValidationUnionToJSON( - syncReconcileRequestCurrentReleaseValidationUnion: - SyncReconcileRequestCurrentReleaseValidationUnion, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseValidationUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseValidationUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseInput$Outbound = { - default?: - | SyncReconcileRequestCurrentReleaseDefaultString$Outbound - | SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound - | SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound - | SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound - | any - | null - | undefined; - description: string; - env?: Array | undefined; - id: string; - kind: string; - label: string; - placeholder?: string | null | undefined; - platforms?: Array | null | undefined; - providedBy: Array; - required: boolean; - validation?: - | SyncReconcileRequestCurrentReleaseValidation$Outbound - | any - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseInput$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseInput$Outbound, - SyncReconcileRequestCurrentReleaseInput -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array( - z.lazy(() => SyncReconcileRequestCurrentReleaseEnv$outboundSchema), - ).optional(), - id: z.string(), - kind: CurrentReleaseStateKind$outboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncReconcileRequestCurrentReleasePlatform$outboundSchema), - ).optional(), - providedBy: z.array( - SyncReconcileRequestCurrentReleaseProvidedBy$outboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseValidation$outboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileRequestCurrentReleaseInputToJSON( - syncReconcileRequestCurrentReleaseInput: - SyncReconcileRequestCurrentReleaseInput, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseInput$outboundSchema.parse( - syncReconcileRequestCurrentReleaseInput, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseManagementEnum, - ); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAwResource$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAwResource$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAwResource - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestCurrentReleaseOverrideAwResourceToJSON( - syncReconcileRequestCurrentReleaseOverrideAwResource: - SyncReconcileRequestCurrentReleaseOverrideAwResource, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAwResource$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAwResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestCurrentReleaseOverrideAwStackToJSON( - syncReconcileRequestCurrentReleaseOverrideAwStack: - SyncReconcileRequestCurrentReleaseOverrideAwStack, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAwStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound = { - resource?: - | SyncReconcileRequestCurrentReleaseOverrideAwResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAwBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAwResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideAwBindingToJSON( - syncReconcileRequestCurrentReleaseOverrideAwBinding: - SyncReconcileRequestCurrentReleaseOverrideAwBinding, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAwBinding, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseOverrideEffect, - ); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideAwGrantToJSON( - syncReconcileRequestCurrentReleaseOverrideAwGrant: - SyncReconcileRequestCurrentReleaseOverrideAwGrant, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAwGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAw$Outbound = { - binding: SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAw$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestCurrentReleaseOverrideEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideAwToJSON( - syncReconcileRequestCurrentReleaseOverrideAw: - SyncReconcileRequestCurrentReleaseOverrideAw, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAw, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAzureResource$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAzureResource$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAzureResource - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideAzureResourceToJSON( - syncReconcileRequestCurrentReleaseOverrideAzureResource: - SyncReconcileRequestCurrentReleaseOverrideAzureResource, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAzureResource$outboundSchema - .parse(syncReconcileRequestCurrentReleaseOverrideAzureResource), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAzureStack - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideAzureStackToJSON( - syncReconcileRequestCurrentReleaseOverrideAzureStack: - SyncReconcileRequestCurrentReleaseOverrideAzureStack, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAzureStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound = { - resource?: - | SyncReconcileRequestCurrentReleaseOverrideAzureResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAzureBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideAzureBindingToJSON( - syncReconcileRequestCurrentReleaseOverrideAzureBinding: - SyncReconcileRequestCurrentReleaseOverrideAzureBinding, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAzureBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideAzureGrantToJSON( - syncReconcileRequestCurrentReleaseOverrideAzureGrant: - SyncReconcileRequestCurrentReleaseOverrideAzureGrant, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAzureGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideAzure$Outbound = { - binding: SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideAzure$Outbound, - SyncReconcileRequestCurrentReleaseOverrideAzure - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideAzureToJSON( - syncReconcileRequestCurrentReleaseOverrideAzure: - SyncReconcileRequestCurrentReleaseOverrideAzure, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideAzure, - ), - ); -} - -/** @internal */ -export type CurrentReleaseOverrideConditionStateResource$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const CurrentReleaseOverrideConditionStateResource$outboundSchema: - z.ZodType< - CurrentReleaseOverrideConditionStateResource$Outbound, - CurrentReleaseOverrideConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function currentReleaseOverrideConditionStateResourceToJSON( - currentReleaseOverrideConditionStateResource: - CurrentReleaseOverrideConditionStateResource, -): string { - return JSON.stringify( - CurrentReleaseOverrideConditionStateResource$outboundSchema.parse( - currentReleaseOverrideConditionStateResource, - ), - ); -} - -/** @internal */ -export type CurrentReleaseOverrideStateResourceConditionUnion$Outbound = - | CurrentReleaseOverrideConditionStateResource$Outbound - | any; - -/** @internal */ -export const CurrentReleaseOverrideStateResourceConditionUnion$outboundSchema: - z.ZodType< - CurrentReleaseOverrideStateResourceConditionUnion$Outbound, - CurrentReleaseOverrideStateResourceConditionUnion - > = z.union([ - z.lazy(() => CurrentReleaseOverrideConditionStateResource$outboundSchema), - z.any(), - ]); - -export function currentReleaseOverrideStateResourceConditionUnionToJSON( - currentReleaseOverrideStateResourceConditionUnion: - CurrentReleaseOverrideStateResourceConditionUnion, -): string { - return JSON.stringify( - CurrentReleaseOverrideStateResourceConditionUnion$outboundSchema.parse( - currentReleaseOverrideStateResourceConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideGcpResource$Outbound = { - condition?: - | CurrentReleaseOverrideConditionStateResource$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideGcpResource$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideGcpResource$Outbound, - SyncReconcileRequestCurrentReleaseOverrideGcpResource - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - CurrentReleaseOverrideConditionStateResource$outboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideGcpResourceToJSON( - syncReconcileRequestCurrentReleaseOverrideGcpResource: - SyncReconcileRequestCurrentReleaseOverrideGcpResource, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideGcpResource$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideGcpResource, - ), - ); -} - -/** @internal */ -export type CurrentReleaseOverrideConditionState$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const CurrentReleaseOverrideConditionState$outboundSchema: z.ZodType< - CurrentReleaseOverrideConditionState$Outbound, - CurrentReleaseOverrideConditionState -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function currentReleaseOverrideConditionStateToJSON( - currentReleaseOverrideConditionState: CurrentReleaseOverrideConditionState, -): string { - return JSON.stringify( - CurrentReleaseOverrideConditionState$outboundSchema.parse( - currentReleaseOverrideConditionState, - ), - ); -} - -/** @internal */ -export type CurrentReleaseOverrideStateConditionUnion$Outbound = - | CurrentReleaseOverrideConditionState$Outbound - | any; - -/** @internal */ -export const CurrentReleaseOverrideStateConditionUnion$outboundSchema: - z.ZodType< - CurrentReleaseOverrideStateConditionUnion$Outbound, - CurrentReleaseOverrideStateConditionUnion - > = z.union([ - z.lazy(() => CurrentReleaseOverrideConditionState$outboundSchema), - z.any(), - ]); - -export function currentReleaseOverrideStateConditionUnionToJSON( - currentReleaseOverrideStateConditionUnion: - CurrentReleaseOverrideStateConditionUnion, -): string { - return JSON.stringify( - CurrentReleaseOverrideStateConditionUnion$outboundSchema.parse( - currentReleaseOverrideStateConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound = { - condition?: - | CurrentReleaseOverrideConditionState$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound, - SyncReconcileRequestCurrentReleaseOverrideGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => CurrentReleaseOverrideConditionState$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideGcpStackToJSON( - syncReconcileRequestCurrentReleaseOverrideGcpStack: - SyncReconcileRequestCurrentReleaseOverrideGcpStack, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideGcpStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound = { - resource?: - | SyncReconcileRequestCurrentReleaseOverrideGcpResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound, - SyncReconcileRequestCurrentReleaseOverrideGcpBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideGcpResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideGcpBindingToJSON( - syncReconcileRequestCurrentReleaseOverrideGcpBinding: - SyncReconcileRequestCurrentReleaseOverrideGcpBinding, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideGcpBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound, - SyncReconcileRequestCurrentReleaseOverrideGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideGcpGrantToJSON( - syncReconcileRequestCurrentReleaseOverrideGcpGrant: - SyncReconcileRequestCurrentReleaseOverrideGcpGrant, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideGcpGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideGcp$Outbound = { - binding: SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideGcp$Outbound, - SyncReconcileRequestCurrentReleaseOverrideGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestCurrentReleaseOverrideGcpToJSON( - syncReconcileRequestCurrentReleaseOverrideGcp: - SyncReconcileRequestCurrentReleaseOverrideGcp, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideGcp, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound, - SyncReconcileRequestCurrentReleaseOverridePlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema - )), - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseOverridePlatformsToJSON( - syncReconcileRequestCurrentReleaseOverridePlatforms: - SyncReconcileRequestCurrentReleaseOverridePlatforms, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverridePlatforms, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverride$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverride$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverride$Outbound, - SyncReconcileRequestCurrentReleaseOverride - > = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema - ), - }); - -export function syncReconcileRequestCurrentReleaseOverrideToJSON( - syncReconcileRequestCurrentReleaseOverride: - SyncReconcileRequestCurrentReleaseOverride, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverride$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverride, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseOverrideUnion$Outbound = - | SyncReconcileRequestCurrentReleaseOverride$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseOverrideUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseOverrideUnion$Outbound, - SyncReconcileRequestCurrentReleaseOverrideUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseOverride$outboundSchema), - z.string(), - ]); - -export function syncReconcileRequestCurrentReleaseOverrideUnionToJSON( - syncReconcileRequestCurrentReleaseOverrideUnion: - SyncReconcileRequestCurrentReleaseOverrideUnion, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseOverrideUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseOverrideUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseManagement2$Outbound = { - override: { - [k: string]: Array< - SyncReconcileRequestCurrentReleaseOverride$Outbound | string - >; - }; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseManagement2$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseManagement2$Outbound, - SyncReconcileRequestCurrentReleaseManagement2 - > = z.object({ - override: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseOverride$outboundSchema), - z.string(), - ])), - ), - }); - -export function syncReconcileRequestCurrentReleaseManagement2ToJSON( - syncReconcileRequestCurrentReleaseManagement2: - SyncReconcileRequestCurrentReleaseManagement2, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseManagement2$outboundSchema.parse( - syncReconcileRequestCurrentReleaseManagement2, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAwResource$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAwResource$Outbound, - SyncReconcileRequestCurrentReleaseExtendAwResource - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestCurrentReleaseExtendAwResourceToJSON( - syncReconcileRequestCurrentReleaseExtendAwResource: - SyncReconcileRequestCurrentReleaseExtendAwResource, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAwResource$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAwResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound, - SyncReconcileRequestCurrentReleaseExtendAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestCurrentReleaseExtendAwStackToJSON( - syncReconcileRequestCurrentReleaseExtendAwStack: - SyncReconcileRequestCurrentReleaseExtendAwStack, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAwStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound = { - resource?: - | SyncReconcileRequestCurrentReleaseExtendAwResource$Outbound - | undefined; - stack?: SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound, - SyncReconcileRequestCurrentReleaseExtendAwBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAwResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseExtendAwBindingToJSON( - syncReconcileRequestCurrentReleaseExtendAwBinding: - SyncReconcileRequestCurrentReleaseExtendAwBinding, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAwBinding, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseExtendEffect, - ); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound, - SyncReconcileRequestCurrentReleaseExtendAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestCurrentReleaseExtendAwGrantToJSON( - syncReconcileRequestCurrentReleaseExtendAwGrant: - SyncReconcileRequestCurrentReleaseExtendAwGrant, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAwGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAw$Outbound = { - binding: SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAw$Outbound, - SyncReconcileRequestCurrentReleaseExtendAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestCurrentReleaseExtendEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestCurrentReleaseExtendAwToJSON( - syncReconcileRequestCurrentReleaseExtendAw: - SyncReconcileRequestCurrentReleaseExtendAw, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAw, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAzureResource$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAzureResource$Outbound, - SyncReconcileRequestCurrentReleaseExtendAzureResource - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseExtendAzureResourceToJSON( - syncReconcileRequestCurrentReleaseExtendAzureResource: - SyncReconcileRequestCurrentReleaseExtendAzureResource, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAzureResource$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAzureResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound, - SyncReconcileRequestCurrentReleaseExtendAzureStack - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseExtendAzureStackToJSON( - syncReconcileRequestCurrentReleaseExtendAzureStack: - SyncReconcileRequestCurrentReleaseExtendAzureStack, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAzureStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound = { - resource?: - | SyncReconcileRequestCurrentReleaseExtendAzureResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound, - SyncReconcileRequestCurrentReleaseExtendAzureBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseExtendAzureBindingToJSON( - syncReconcileRequestCurrentReleaseExtendAzureBinding: - SyncReconcileRequestCurrentReleaseExtendAzureBinding, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAzureBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound, - SyncReconcileRequestCurrentReleaseExtendAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestCurrentReleaseExtendAzureGrantToJSON( - syncReconcileRequestCurrentReleaseExtendAzureGrant: - SyncReconcileRequestCurrentReleaseExtendAzureGrant, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAzureGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendAzure$Outbound = { - binding: SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendAzure$Outbound, - SyncReconcileRequestCurrentReleaseExtendAzure - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestCurrentReleaseExtendAzureToJSON( - syncReconcileRequestCurrentReleaseExtendAzure: - SyncReconcileRequestCurrentReleaseExtendAzure, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendAzure, - ), - ); -} - -/** @internal */ -export type CurrentReleaseExtendConditionStateResource$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const CurrentReleaseExtendConditionStateResource$outboundSchema: - z.ZodType< - CurrentReleaseExtendConditionStateResource$Outbound, - CurrentReleaseExtendConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function currentReleaseExtendConditionStateResourceToJSON( - currentReleaseExtendConditionStateResource: - CurrentReleaseExtendConditionStateResource, -): string { - return JSON.stringify( - CurrentReleaseExtendConditionStateResource$outboundSchema.parse( - currentReleaseExtendConditionStateResource, - ), - ); -} - -/** @internal */ -export type CurrentReleaseExtendStateResourceConditionUnion$Outbound = - | CurrentReleaseExtendConditionStateResource$Outbound - | any; - -/** @internal */ -export const CurrentReleaseExtendStateResourceConditionUnion$outboundSchema: - z.ZodType< - CurrentReleaseExtendStateResourceConditionUnion$Outbound, - CurrentReleaseExtendStateResourceConditionUnion - > = z.union([ - z.lazy(() => CurrentReleaseExtendConditionStateResource$outboundSchema), - z.any(), - ]); - -export function currentReleaseExtendStateResourceConditionUnionToJSON( - currentReleaseExtendStateResourceConditionUnion: - CurrentReleaseExtendStateResourceConditionUnion, -): string { - return JSON.stringify( - CurrentReleaseExtendStateResourceConditionUnion$outboundSchema.parse( - currentReleaseExtendStateResourceConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendGcpResource$Outbound = { - condition?: - | CurrentReleaseExtendConditionStateResource$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendGcpResource$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendGcpResource$Outbound, - SyncReconcileRequestCurrentReleaseExtendGcpResource - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => CurrentReleaseExtendConditionStateResource$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseExtendGcpResourceToJSON( - syncReconcileRequestCurrentReleaseExtendGcpResource: - SyncReconcileRequestCurrentReleaseExtendGcpResource, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendGcpResource$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendGcpResource, - ), - ); -} - -/** @internal */ -export type CurrentReleaseExtendConditionState$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const CurrentReleaseExtendConditionState$outboundSchema: z.ZodType< - CurrentReleaseExtendConditionState$Outbound, - CurrentReleaseExtendConditionState -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function currentReleaseExtendConditionStateToJSON( - currentReleaseExtendConditionState: CurrentReleaseExtendConditionState, -): string { - return JSON.stringify( - CurrentReleaseExtendConditionState$outboundSchema.parse( - currentReleaseExtendConditionState, - ), - ); -} - -/** @internal */ -export type CurrentReleaseExtendStateConditionUnion$Outbound = - | CurrentReleaseExtendConditionState$Outbound - | any; - -/** @internal */ -export const CurrentReleaseExtendStateConditionUnion$outboundSchema: z.ZodType< - CurrentReleaseExtendStateConditionUnion$Outbound, - CurrentReleaseExtendStateConditionUnion -> = z.union([ - z.lazy(() => CurrentReleaseExtendConditionState$outboundSchema), - z.any(), -]); - -export function currentReleaseExtendStateConditionUnionToJSON( - currentReleaseExtendStateConditionUnion: - CurrentReleaseExtendStateConditionUnion, -): string { - return JSON.stringify( - CurrentReleaseExtendStateConditionUnion$outboundSchema.parse( - currentReleaseExtendStateConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound = { - condition?: - | CurrentReleaseExtendConditionState$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound, - SyncReconcileRequestCurrentReleaseExtendGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => CurrentReleaseExtendConditionState$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseExtendGcpStackToJSON( - syncReconcileRequestCurrentReleaseExtendGcpStack: - SyncReconcileRequestCurrentReleaseExtendGcpStack, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendGcpStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound = { - resource?: - | SyncReconcileRequestCurrentReleaseExtendGcpResource$Outbound - | undefined; - stack?: SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound, - SyncReconcileRequestCurrentReleaseExtendGcpBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendGcpResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseExtendGcpBindingToJSON( - syncReconcileRequestCurrentReleaseExtendGcpBinding: - SyncReconcileRequestCurrentReleaseExtendGcpBinding, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendGcpBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound, - SyncReconcileRequestCurrentReleaseExtendGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestCurrentReleaseExtendGcpGrantToJSON( - syncReconcileRequestCurrentReleaseExtendGcpGrant: - SyncReconcileRequestCurrentReleaseExtendGcpGrant, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendGcpGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendGcp$Outbound = { - binding: SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendGcp$Outbound, - SyncReconcileRequestCurrentReleaseExtendGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestCurrentReleaseExtendGcpToJSON( - syncReconcileRequestCurrentReleaseExtendGcp: - SyncReconcileRequestCurrentReleaseExtendGcp, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendGcp, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound, - SyncReconcileRequestCurrentReleaseExtendPlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema - )), - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseExtendPlatformsToJSON( - syncReconcileRequestCurrentReleaseExtendPlatforms: - SyncReconcileRequestCurrentReleaseExtendPlatforms, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendPlatforms, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtend$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtend$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseExtend$Outbound, - SyncReconcileRequestCurrentReleaseExtend -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema - ), -}); - -export function syncReconcileRequestCurrentReleaseExtendToJSON( - syncReconcileRequestCurrentReleaseExtend: - SyncReconcileRequestCurrentReleaseExtend, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtend$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtend, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseExtendUnion$Outbound = - | SyncReconcileRequestCurrentReleaseExtend$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseExtendUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseExtendUnion$Outbound, - SyncReconcileRequestCurrentReleaseExtendUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseExtend$outboundSchema), - z.string(), - ]); - -export function syncReconcileRequestCurrentReleaseExtendUnionToJSON( - syncReconcileRequestCurrentReleaseExtendUnion: - SyncReconcileRequestCurrentReleaseExtendUnion, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseExtendUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseExtendUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseManagement1$Outbound = { - extend: { - [k: string]: Array< - SyncReconcileRequestCurrentReleaseExtend$Outbound | string - >; - }; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseManagement1$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseManagement1$Outbound, - SyncReconcileRequestCurrentReleaseManagement1 - > = z.object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseExtend$outboundSchema), - z.string(), - ])), - ), - }); - -export function syncReconcileRequestCurrentReleaseManagement1ToJSON( - syncReconcileRequestCurrentReleaseManagement1: - SyncReconcileRequestCurrentReleaseManagement1, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseManagement1$outboundSchema.parse( - syncReconcileRequestCurrentReleaseManagement1, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseManagementUnion$Outbound = - | SyncReconcileRequestCurrentReleaseManagement1$Outbound - | SyncReconcileRequestCurrentReleaseManagement2$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseManagementUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseManagementUnion$Outbound, - SyncReconcileRequestCurrentReleaseManagementUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseManagement1$outboundSchema), - z.lazy(() => SyncReconcileRequestCurrentReleaseManagement2$outboundSchema), - SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema, - ]); - -export function syncReconcileRequestCurrentReleaseManagementUnionToJSON( - syncReconcileRequestCurrentReleaseManagementUnion: - SyncReconcileRequestCurrentReleaseManagementUnion, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseManagementUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseManagementUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAwResource$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAwResource$Outbound, - SyncReconcileRequestCurrentReleaseProfileAwResource - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestCurrentReleaseProfileAwResourceToJSON( - syncReconcileRequestCurrentReleaseProfileAwResource: - SyncReconcileRequestCurrentReleaseProfileAwResource, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAwResource$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAwResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound, - SyncReconcileRequestCurrentReleaseProfileAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestCurrentReleaseProfileAwStackToJSON( - syncReconcileRequestCurrentReleaseProfileAwStack: - SyncReconcileRequestCurrentReleaseProfileAwStack, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAwStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound = { - resource?: - | SyncReconcileRequestCurrentReleaseProfileAwResource$Outbound - | undefined; - stack?: SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound, - SyncReconcileRequestCurrentReleaseProfileAwBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAwResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileAwBindingToJSON( - syncReconcileRequestCurrentReleaseProfileAwBinding: - SyncReconcileRequestCurrentReleaseProfileAwBinding, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAwBinding, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestCurrentReleaseProfileEffect, - ); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound, - SyncReconcileRequestCurrentReleaseProfileAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileAwGrantToJSON( - syncReconcileRequestCurrentReleaseProfileAwGrant: - SyncReconcileRequestCurrentReleaseProfileAwGrant, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAwGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAw$Outbound = { - binding: SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAw$Outbound, - SyncReconcileRequestCurrentReleaseProfileAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestCurrentReleaseProfileEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileAwToJSON( - syncReconcileRequestCurrentReleaseProfileAw: - SyncReconcileRequestCurrentReleaseProfileAw, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAw, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAzureResource$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAzureResource$Outbound, - SyncReconcileRequestCurrentReleaseProfileAzureResource - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseProfileAzureResourceToJSON( - syncReconcileRequestCurrentReleaseProfileAzureResource: - SyncReconcileRequestCurrentReleaseProfileAzureResource, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAzureResource$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAzureResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound, - SyncReconcileRequestCurrentReleaseProfileAzureStack - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseProfileAzureStackToJSON( - syncReconcileRequestCurrentReleaseProfileAzureStack: - SyncReconcileRequestCurrentReleaseProfileAzureStack, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAzureStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound = { - resource?: - | SyncReconcileRequestCurrentReleaseProfileAzureResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound, - SyncReconcileRequestCurrentReleaseProfileAzureBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileAzureBindingToJSON( - syncReconcileRequestCurrentReleaseProfileAzureBinding: - SyncReconcileRequestCurrentReleaseProfileAzureBinding, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAzureBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound, - SyncReconcileRequestCurrentReleaseProfileAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileAzureGrantToJSON( - syncReconcileRequestCurrentReleaseProfileAzureGrant: - SyncReconcileRequestCurrentReleaseProfileAzureGrant, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAzureGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileAzure$Outbound = { - binding: SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileAzure$Outbound, - SyncReconcileRequestCurrentReleaseProfileAzure - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileAzureToJSON( - syncReconcileRequestCurrentReleaseProfileAzure: - SyncReconcileRequestCurrentReleaseProfileAzure, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileAzure, - ), - ); -} - -/** @internal */ -export type CurrentReleaseProfileConditionStateResource$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const CurrentReleaseProfileConditionStateResource$outboundSchema: - z.ZodType< - CurrentReleaseProfileConditionStateResource$Outbound, - CurrentReleaseProfileConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function currentReleaseProfileConditionStateResourceToJSON( - currentReleaseProfileConditionStateResource: - CurrentReleaseProfileConditionStateResource, -): string { - return JSON.stringify( - CurrentReleaseProfileConditionStateResource$outboundSchema.parse( - currentReleaseProfileConditionStateResource, - ), - ); -} - -/** @internal */ -export type CurrentReleaseProfileStateResourceConditionUnion$Outbound = - | CurrentReleaseProfileConditionStateResource$Outbound - | any; - -/** @internal */ -export const CurrentReleaseProfileStateResourceConditionUnion$outboundSchema: - z.ZodType< - CurrentReleaseProfileStateResourceConditionUnion$Outbound, - CurrentReleaseProfileStateResourceConditionUnion - > = z.union([ - z.lazy(() => CurrentReleaseProfileConditionStateResource$outboundSchema), - z.any(), - ]); - -export function currentReleaseProfileStateResourceConditionUnionToJSON( - currentReleaseProfileStateResourceConditionUnion: - CurrentReleaseProfileStateResourceConditionUnion, -): string { - return JSON.stringify( - CurrentReleaseProfileStateResourceConditionUnion$outboundSchema.parse( - currentReleaseProfileStateResourceConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileGcpResource$Outbound = { - condition?: - | CurrentReleaseProfileConditionStateResource$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileGcpResource$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileGcpResource$Outbound, - SyncReconcileRequestCurrentReleaseProfileGcpResource - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - CurrentReleaseProfileConditionStateResource$outboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseProfileGcpResourceToJSON( - syncReconcileRequestCurrentReleaseProfileGcpResource: - SyncReconcileRequestCurrentReleaseProfileGcpResource, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileGcpResource$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileGcpResource, - ), - ); -} - -/** @internal */ -export type CurrentReleaseProfileConditionState$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const CurrentReleaseProfileConditionState$outboundSchema: z.ZodType< - CurrentReleaseProfileConditionState$Outbound, - CurrentReleaseProfileConditionState -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function currentReleaseProfileConditionStateToJSON( - currentReleaseProfileConditionState: CurrentReleaseProfileConditionState, -): string { - return JSON.stringify( - CurrentReleaseProfileConditionState$outboundSchema.parse( - currentReleaseProfileConditionState, - ), - ); -} - -/** @internal */ -export type CurrentReleaseProfileStateConditionUnion$Outbound = - | CurrentReleaseProfileConditionState$Outbound - | any; - -/** @internal */ -export const CurrentReleaseProfileStateConditionUnion$outboundSchema: z.ZodType< - CurrentReleaseProfileStateConditionUnion$Outbound, - CurrentReleaseProfileStateConditionUnion -> = z.union([ - z.lazy(() => CurrentReleaseProfileConditionState$outboundSchema), - z.any(), -]); - -export function currentReleaseProfileStateConditionUnionToJSON( - currentReleaseProfileStateConditionUnion: - CurrentReleaseProfileStateConditionUnion, -): string { - return JSON.stringify( - CurrentReleaseProfileStateConditionUnion$outboundSchema.parse( - currentReleaseProfileStateConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound = { - condition?: - | CurrentReleaseProfileConditionState$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound, - SyncReconcileRequestCurrentReleaseProfileGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => CurrentReleaseProfileConditionState$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseProfileGcpStackToJSON( - syncReconcileRequestCurrentReleaseProfileGcpStack: - SyncReconcileRequestCurrentReleaseProfileGcpStack, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileGcpStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound = { - resource?: - | SyncReconcileRequestCurrentReleaseProfileGcpResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound, - SyncReconcileRequestCurrentReleaseProfileGcpBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileGcpResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileGcpBindingToJSON( - syncReconcileRequestCurrentReleaseProfileGcpBinding: - SyncReconcileRequestCurrentReleaseProfileGcpBinding, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileGcpBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound, - SyncReconcileRequestCurrentReleaseProfileGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileGcpGrantToJSON( - syncReconcileRequestCurrentReleaseProfileGcpGrant: - SyncReconcileRequestCurrentReleaseProfileGcpGrant, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileGcpGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileGcp$Outbound = { - binding: SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileGcp$Outbound, - SyncReconcileRequestCurrentReleaseProfileGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfileGcpToJSON( - syncReconcileRequestCurrentReleaseProfileGcp: - SyncReconcileRequestCurrentReleaseProfileGcp, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileGcp, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound, - SyncReconcileRequestCurrentReleaseProfilePlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema - )), - ).optional(), - }); - -export function syncReconcileRequestCurrentReleaseProfilePlatformsToJSON( - syncReconcileRequestCurrentReleaseProfilePlatforms: - SyncReconcileRequestCurrentReleaseProfilePlatforms, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfilePlatforms, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfile$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfile$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfile$Outbound, - SyncReconcileRequestCurrentReleaseProfile - > = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema - ), - }); - -export function syncReconcileRequestCurrentReleaseProfileToJSON( - syncReconcileRequestCurrentReleaseProfile: - SyncReconcileRequestCurrentReleaseProfile, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfile$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfile, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseProfileUnion$Outbound = - | SyncReconcileRequestCurrentReleaseProfile$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseProfileUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseProfileUnion$Outbound, - SyncReconcileRequestCurrentReleaseProfileUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestCurrentReleaseProfile$outboundSchema), - z.string(), - ]); - -export function syncReconcileRequestCurrentReleaseProfileUnionToJSON( - syncReconcileRequestCurrentReleaseProfileUnion: - SyncReconcileRequestCurrentReleaseProfileUnion, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseProfileUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseProfileUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleasePermissions$Outbound = { - management?: - | SyncReconcileRequestCurrentReleaseManagement1$Outbound - | SyncReconcileRequestCurrentReleaseManagement2$Outbound - | string - | undefined; - profiles: { - [k: string]: { - [k: string]: Array< - SyncReconcileRequestCurrentReleaseProfile$Outbound | string - >; - }; - }; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleasePermissions$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleasePermissions$Outbound, - SyncReconcileRequestCurrentReleasePermissions - > = z.object({ - management: z.union([ - z.lazy(() => - SyncReconcileRequestCurrentReleaseManagement1$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestCurrentReleaseManagement2$outboundSchema - ), - SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileRequestCurrentReleaseProfile$outboundSchema - ), - z.string(), - ]), - ), - ), - ), - }); - -export function syncReconcileRequestCurrentReleasePermissionsToJSON( - syncReconcileRequestCurrentReleasePermissions: - SyncReconcileRequestCurrentReleasePermissions, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleasePermissions$outboundSchema.parse( - syncReconcileRequestCurrentReleasePermissions, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseConfig$Outbound = { - id: string; - type: string; - [additionalProperties: string]: unknown; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseConfig$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseConfig$Outbound, - SyncReconcileRequestCurrentReleaseConfig -> = z.object({ - id: z.string(), - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; -}); - -export function syncReconcileRequestCurrentReleaseConfigToJSON( - syncReconcileRequestCurrentReleaseConfig: - SyncReconcileRequestCurrentReleaseConfig, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseConfig$outboundSchema.parse( - syncReconcileRequestCurrentReleaseConfig, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseDependency$Outbound = { - id: string; - type: string; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseDependency$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseDependency$Outbound, - SyncReconcileRequestCurrentReleaseDependency - > = z.object({ - id: z.string(), - type: z.string(), - }); - -export function syncReconcileRequestCurrentReleaseDependencyToJSON( - syncReconcileRequestCurrentReleaseDependency: - SyncReconcileRequestCurrentReleaseDependency, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseDependency$outboundSchema.parse( - syncReconcileRequestCurrentReleaseDependency, - ), - ); -} - -/** @internal */ -export const CurrentReleaseStateLifecycle$outboundSchema: z.ZodEnum< - typeof CurrentReleaseStateLifecycle -> = z.enum(CurrentReleaseStateLifecycle); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseResources$Outbound = { - config: SyncReconcileRequestCurrentReleaseConfig$Outbound; - dependencies: Array; - lifecycle: string; - remoteAccess?: boolean | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseResources$outboundSchema: - z.ZodType< - SyncReconcileRequestCurrentReleaseResources$Outbound, - SyncReconcileRequestCurrentReleaseResources - > = z.object({ - config: z.lazy(() => - SyncReconcileRequestCurrentReleaseConfig$outboundSchema - ), - dependencies: z.array( - z.lazy(() => SyncReconcileRequestCurrentReleaseDependency$outboundSchema), - ), - lifecycle: CurrentReleaseStateLifecycle$outboundSchema, - remoteAccess: z.boolean().optional(), - }); - -export function syncReconcileRequestCurrentReleaseResourcesToJSON( - syncReconcileRequestCurrentReleaseResources: - SyncReconcileRequestCurrentReleaseResources, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseResources$outboundSchema.parse( - syncReconcileRequestCurrentReleaseResources, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseSupportedPlatform$outboundSchema: - z.ZodEnum = z - .enum(SyncReconcileRequestCurrentReleaseSupportedPlatform); - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseStack$Outbound = { - id: string; - inputs?: Array | undefined; - permissions?: - | SyncReconcileRequestCurrentReleasePermissions$Outbound - | undefined; - resources: { - [k: string]: SyncReconcileRequestCurrentReleaseResources$Outbound; - }; - supportedPlatforms?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseStack$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseStack$Outbound, - SyncReconcileRequestCurrentReleaseStack -> = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncReconcileRequestCurrentReleaseInput$outboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncReconcileRequestCurrentReleasePermissions$outboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileRequestCurrentReleaseResources$outboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncReconcileRequestCurrentReleaseSupportedPlatform$outboundSchema), - ).optional(), -}); - -export function syncReconcileRequestCurrentReleaseStackToJSON( - syncReconcileRequestCurrentReleaseStack: - SyncReconcileRequestCurrentReleaseStack, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseStack$outboundSchema.parse( - syncReconcileRequestCurrentReleaseStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentRelease$Outbound = { - description?: string | null | undefined; - releaseId: string; - stack: SyncReconcileRequestCurrentReleaseStack$Outbound; - version?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestCurrentRelease$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentRelease$Outbound, - SyncReconcileRequestCurrentRelease -> = z.object({ - description: z.nullable(z.string()).optional(), - releaseId: z.string(), - stack: z.lazy(() => SyncReconcileRequestCurrentReleaseStack$outboundSchema), - version: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestCurrentReleaseToJSON( - syncReconcileRequestCurrentRelease: SyncReconcileRequestCurrentRelease, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentRelease$outboundSchema.parse( - syncReconcileRequestCurrentRelease, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestCurrentReleaseUnion$Outbound = - | SyncReconcileRequestCurrentRelease$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestCurrentReleaseUnion$outboundSchema: z.ZodType< - SyncReconcileRequestCurrentReleaseUnion$Outbound, - SyncReconcileRequestCurrentReleaseUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestCurrentRelease$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestCurrentReleaseUnionToJSON( - syncReconcileRequestCurrentReleaseUnion: - SyncReconcileRequestCurrentReleaseUnion, -): string { - return JSON.stringify( - SyncReconcileRequestCurrentReleaseUnion$outboundSchema.parse( - syncReconcileRequestCurrentReleaseUnion, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPlatformTest$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatformTest -> = z.enum(SyncReconcileRequestPlatformTest); - -/** @internal */ -export type SyncReconcileRequestEnvironmentInfoTest$Outbound = { - testId: string; - platform: string; -}; - -/** @internal */ -export const SyncReconcileRequestEnvironmentInfoTest$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoTest$Outbound, - SyncReconcileRequestEnvironmentInfoTest -> = z.object({ - testId: z.string(), - platform: SyncReconcileRequestPlatformTest$outboundSchema, -}); - -export function syncReconcileRequestEnvironmentInfoTestToJSON( - syncReconcileRequestEnvironmentInfoTest: - SyncReconcileRequestEnvironmentInfoTest, -): string { - return JSON.stringify( - SyncReconcileRequestEnvironmentInfoTest$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoTest, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPlatformLocal$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatformLocal -> = z.enum(SyncReconcileRequestPlatformLocal); - -/** @internal */ -export type SyncReconcileRequestEnvironmentInfoLocal$Outbound = { - arch: string; - hostname: string; - os: string; - platform: string; -}; - -/** @internal */ -export const SyncReconcileRequestEnvironmentInfoLocal$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoLocal$Outbound, - SyncReconcileRequestEnvironmentInfoLocal -> = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: SyncReconcileRequestPlatformLocal$outboundSchema, -}); - -export function syncReconcileRequestEnvironmentInfoLocalToJSON( - syncReconcileRequestEnvironmentInfoLocal: - SyncReconcileRequestEnvironmentInfoLocal, -): string { - return JSON.stringify( - SyncReconcileRequestEnvironmentInfoLocal$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoLocal, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPlatformAzure$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatformAzure -> = z.enum(SyncReconcileRequestPlatformAzure); - -/** @internal */ -export type SyncReconcileRequestEnvironmentInfoAzure$Outbound = { - location: string; - subscriptionId: string; - tenantId: string; - platform: string; -}; - -/** @internal */ -export const SyncReconcileRequestEnvironmentInfoAzure$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoAzure$Outbound, - SyncReconcileRequestEnvironmentInfoAzure -> = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: SyncReconcileRequestPlatformAzure$outboundSchema, -}); - -export function syncReconcileRequestEnvironmentInfoAzureToJSON( - syncReconcileRequestEnvironmentInfoAzure: - SyncReconcileRequestEnvironmentInfoAzure, -): string { - return JSON.stringify( - SyncReconcileRequestEnvironmentInfoAzure$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoAzure, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPlatformGcp$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatformGcp -> = z.enum(SyncReconcileRequestPlatformGcp); - -/** @internal */ -export type SyncReconcileRequestEnvironmentInfoGcp$Outbound = { - projectId: string; - projectNumber: string; - region: string; - platform: string; -}; - -/** @internal */ -export const SyncReconcileRequestEnvironmentInfoGcp$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoGcp$Outbound, - SyncReconcileRequestEnvironmentInfoGcp -> = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: SyncReconcileRequestPlatformGcp$outboundSchema, -}); - -export function syncReconcileRequestEnvironmentInfoGcpToJSON( - syncReconcileRequestEnvironmentInfoGcp: - SyncReconcileRequestEnvironmentInfoGcp, -): string { - return JSON.stringify( - SyncReconcileRequestEnvironmentInfoGcp$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoGcp, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPlatformAws$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatformAws -> = z.enum(SyncReconcileRequestPlatformAws); - -/** @internal */ -export type SyncReconcileRequestEnvironmentInfoAws$Outbound = { - accountId: string; - region: string; - platform: string; -}; - -/** @internal */ -export const SyncReconcileRequestEnvironmentInfoAws$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoAws$Outbound, - SyncReconcileRequestEnvironmentInfoAws -> = z.object({ - accountId: z.string(), - region: z.string(), - platform: SyncReconcileRequestPlatformAws$outboundSchema, -}); - -export function syncReconcileRequestEnvironmentInfoAwsToJSON( - syncReconcileRequestEnvironmentInfoAws: - SyncReconcileRequestEnvironmentInfoAws, -): string { - return JSON.stringify( - SyncReconcileRequestEnvironmentInfoAws$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoAws, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestEnvironmentInfoUnion$Outbound = - | SyncReconcileRequestEnvironmentInfoGcp$Outbound - | SyncReconcileRequestEnvironmentInfoAzure$Outbound - | SyncReconcileRequestEnvironmentInfoLocal$Outbound - | SyncReconcileRequestEnvironmentInfoAws$Outbound - | SyncReconcileRequestEnvironmentInfoTest$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestEnvironmentInfoUnion$outboundSchema: z.ZodType< - SyncReconcileRequestEnvironmentInfoUnion$Outbound, - SyncReconcileRequestEnvironmentInfoUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestEnvironmentInfoGcp$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoAzure$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoLocal$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoAws$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoTest$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestEnvironmentInfoUnionToJSON( - syncReconcileRequestEnvironmentInfoUnion: - SyncReconcileRequestEnvironmentInfoUnion, -): string { - return JSON.stringify( - SyncReconcileRequestEnvironmentInfoUnion$outboundSchema.parse( - syncReconcileRequestEnvironmentInfoUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestError$Outbound = { - code: string; - context?: any | null | undefined; - hint?: string | null | undefined; - httpStatusCode?: number | null | undefined; - internal: boolean; - message: string; - retryable: boolean; - source?: any | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestError$outboundSchema: z.ZodType< - SyncReconcileRequestError$Outbound, - SyncReconcileRequestError -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); - -export function syncReconcileRequestErrorToJSON( - syncReconcileRequestError: SyncReconcileRequestError, -): string { - return JSON.stringify( - SyncReconcileRequestError$outboundSchema.parse(syncReconcileRequestError), - ); -} - -/** @internal */ -export type SyncReconcileRequestErrorUnion$Outbound = - | SyncReconcileRequestError$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestErrorUnion$outboundSchema: z.ZodType< - SyncReconcileRequestErrorUnion$Outbound, - SyncReconcileRequestErrorUnion -> = z.union([z.lazy(() => SyncReconcileRequestError$outboundSchema), z.any()]); - -export function syncReconcileRequestErrorUnionToJSON( - syncReconcileRequestErrorUnion: SyncReconcileRequestErrorUnion, -): string { - return JSON.stringify( - SyncReconcileRequestErrorUnion$outboundSchema.parse( - syncReconcileRequestErrorUnion, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPlatform$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestPlatform -> = z.enum(SyncReconcileRequestPlatform); - -/** @internal */ -export const SyncReconcileRequestPreparedStackTypeStringList$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackTypeStringList, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackDefaultStringList$Outbound = { - type: string; - value: Array; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackDefaultStringList$Outbound, - SyncReconcileRequestPreparedStackDefaultStringList - > = z.object({ - type: SyncReconcileRequestPreparedStackTypeStringList$outboundSchema, - value: z.array(z.string()), - }); - -export function syncReconcileRequestPreparedStackDefaultStringListToJSON( - syncReconcileRequestPreparedStackDefaultStringList: - SyncReconcileRequestPreparedStackDefaultStringList, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema.parse( - syncReconcileRequestPreparedStackDefaultStringList, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPreparedStackTypeBoolean$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackTypeBoolean, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackDefaultBoolean$Outbound = { - type: string; - value: boolean; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackDefaultBoolean$Outbound, - SyncReconcileRequestPreparedStackDefaultBoolean - > = z.object({ - type: SyncReconcileRequestPreparedStackTypeBoolean$outboundSchema, - value: z.boolean(), - }); - -export function syncReconcileRequestPreparedStackDefaultBooleanToJSON( - syncReconcileRequestPreparedStackDefaultBoolean: - SyncReconcileRequestPreparedStackDefaultBoolean, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema.parse( - syncReconcileRequestPreparedStackDefaultBoolean, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPreparedStackTypeNumber$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackTypeNumber, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackDefaultNumber$Outbound = { - type: string; - value: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackDefaultNumber$Outbound, - SyncReconcileRequestPreparedStackDefaultNumber - > = z.object({ - type: SyncReconcileRequestPreparedStackTypeNumber$outboundSchema, - value: z.string(), - }); - -export function syncReconcileRequestPreparedStackDefaultNumberToJSON( - syncReconcileRequestPreparedStackDefaultNumber: - SyncReconcileRequestPreparedStackDefaultNumber, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema.parse( - syncReconcileRequestPreparedStackDefaultNumber, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPreparedStackTypeString$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackTypeString, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackDefaultString$Outbound = { - type: string; - value: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackDefaultString$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackDefaultString$Outbound, - SyncReconcileRequestPreparedStackDefaultString - > = z.object({ - type: SyncReconcileRequestPreparedStackTypeString$outboundSchema, - value: z.string(), - }); - -export function syncReconcileRequestPreparedStackDefaultStringToJSON( - syncReconcileRequestPreparedStackDefaultString: - SyncReconcileRequestPreparedStackDefaultString, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackDefaultString$outboundSchema.parse( - syncReconcileRequestPreparedStackDefaultString, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackDefaultUnion$Outbound = - | SyncReconcileRequestPreparedStackDefaultString$Outbound - | SyncReconcileRequestPreparedStackDefaultNumber$Outbound - | SyncReconcileRequestPreparedStackDefaultBoolean$Outbound - | SyncReconcileRequestPreparedStackDefaultStringList$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestPreparedStackDefaultUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackDefaultUnion$Outbound, - SyncReconcileRequestPreparedStackDefaultUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackDefaultString$outboundSchema), - z.lazy(() => SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema), - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema - ), - z.any(), - ]); - -export function syncReconcileRequestPreparedStackDefaultUnionToJSON( - syncReconcileRequestPreparedStackDefaultUnion: - SyncReconcileRequestPreparedStackDefaultUnion, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackDefaultUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackDefaultUnion, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackTypeEnvEnum, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackTypeUnion$Outbound = string | any; - -/** @internal */ -export const SyncReconcileRequestPreparedStackTypeUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackTypeUnion$Outbound, - SyncReconcileRequestPreparedStackTypeUnion - > = z.union([ - SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema, - z.any(), - ]); - -export function syncReconcileRequestPreparedStackTypeUnionToJSON( - syncReconcileRequestPreparedStackTypeUnion: - SyncReconcileRequestPreparedStackTypeUnion, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackTypeUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackTypeUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackEnv$Outbound = { - name: string; - targetResources?: Array | null | undefined; - type?: string | any | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackEnv$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackEnv$Outbound, - SyncReconcileRequestPreparedStackEnv -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema, - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileRequestPreparedStackEnvToJSON( - syncReconcileRequestPreparedStackEnv: SyncReconcileRequestPreparedStackEnv, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackEnv$outboundSchema.parse( - syncReconcileRequestPreparedStackEnv, - ), - ); -} - -/** @internal */ -export const PreparedStackStateKind$outboundSchema: z.ZodEnum< - typeof PreparedStackStateKind -> = z.enum(PreparedStackStateKind); - -/** @internal */ -export const SyncReconcileRequestPreparedStackPlatform$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackPlatform, - ); - -/** @internal */ -export const SyncReconcileRequestPreparedStackProvidedBy$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackProvidedBy, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackValidation$Outbound = { - format?: string | null | undefined; - max?: string | null | undefined; - maxItems?: number | null | undefined; - maxLength?: number | null | undefined; - min?: string | null | undefined; - minItems?: number | null | undefined; - minLength?: number | null | undefined; - pattern?: string | null | undefined; - values?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackValidation$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackValidation$Outbound, - SyncReconcileRequestPreparedStackValidation - > = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestPreparedStackValidationToJSON( - syncReconcileRequestPreparedStackValidation: - SyncReconcileRequestPreparedStackValidation, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackValidation$outboundSchema.parse( - syncReconcileRequestPreparedStackValidation, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackValidationUnion$Outbound = - | SyncReconcileRequestPreparedStackValidation$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestPreparedStackValidationUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackValidationUnion$Outbound, - SyncReconcileRequestPreparedStackValidationUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackValidation$outboundSchema), - z.any(), - ]); - -export function syncReconcileRequestPreparedStackValidationUnionToJSON( - syncReconcileRequestPreparedStackValidationUnion: - SyncReconcileRequestPreparedStackValidationUnion, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackValidationUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackValidationUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackInput$Outbound = { - default?: - | SyncReconcileRequestPreparedStackDefaultString$Outbound - | SyncReconcileRequestPreparedStackDefaultNumber$Outbound - | SyncReconcileRequestPreparedStackDefaultBoolean$Outbound - | SyncReconcileRequestPreparedStackDefaultStringList$Outbound - | any - | null - | undefined; - description: string; - env?: Array | undefined; - id: string; - kind: string; - label: string; - placeholder?: string | null | undefined; - platforms?: Array | null | undefined; - providedBy: Array; - required: boolean; - validation?: - | SyncReconcileRequestPreparedStackValidation$Outbound - | any - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackInput$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackInput$Outbound, - SyncReconcileRequestPreparedStackInput -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultString$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array( - z.lazy(() => SyncReconcileRequestPreparedStackEnv$outboundSchema), - ).optional(), - id: z.string(), - kind: PreparedStackStateKind$outboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncReconcileRequestPreparedStackPlatform$outboundSchema), - ).optional(), - providedBy: z.array( - SyncReconcileRequestPreparedStackProvidedBy$outboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackValidation$outboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileRequestPreparedStackInputToJSON( - syncReconcileRequestPreparedStackInput: - SyncReconcileRequestPreparedStackInput, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackInput$outboundSchema.parse( - syncReconcileRequestPreparedStackInput, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPreparedStackManagementEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackManagementEnum, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAwResource$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideAwResource$Outbound, - SyncReconcileRequestPreparedStackOverrideAwResource - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestPreparedStackOverrideAwResourceToJSON( - syncReconcileRequestPreparedStackOverrideAwResource: - SyncReconcileRequestPreparedStackOverrideAwResource, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAwResource$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAwResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideAwStack$Outbound, - SyncReconcileRequestPreparedStackOverrideAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestPreparedStackOverrideAwStackToJSON( - syncReconcileRequestPreparedStackOverrideAwStack: - SyncReconcileRequestPreparedStackOverrideAwStack, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAwStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound = { - resource?: - | SyncReconcileRequestPreparedStackOverrideAwResource$Outbound - | undefined; - stack?: SyncReconcileRequestPreparedStackOverrideAwStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound, - SyncReconcileRequestPreparedStackOverrideAwBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAwResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestPreparedStackOverrideAwBindingToJSON( - syncReconcileRequestPreparedStackOverrideAwBinding: - SyncReconcileRequestPreparedStackOverrideAwBinding, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAwBinding, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackOverrideEffect, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound, - SyncReconcileRequestPreparedStackOverrideAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestPreparedStackOverrideAwGrantToJSON( - syncReconcileRequestPreparedStackOverrideAwGrant: - SyncReconcileRequestPreparedStackOverrideAwGrant, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAwGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAw$Outbound = { - binding: SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAw$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideAw$Outbound, - SyncReconcileRequestPreparedStackOverrideAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestPreparedStackOverrideEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestPreparedStackOverrideAwToJSON( - syncReconcileRequestPreparedStackOverrideAw: - SyncReconcileRequestPreparedStackOverrideAw, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAw$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAw, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAzureResource$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideAzureResource$Outbound, - SyncReconcileRequestPreparedStackOverrideAzureResource - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackOverrideAzureResourceToJSON( - syncReconcileRequestPreparedStackOverrideAzureResource: - SyncReconcileRequestPreparedStackOverrideAzureResource, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAzureResource$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAzureResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound, - SyncReconcileRequestPreparedStackOverrideAzureStack - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackOverrideAzureStackToJSON( - syncReconcileRequestPreparedStackOverrideAzureStack: - SyncReconcileRequestPreparedStackOverrideAzureStack, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAzureStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound = { - resource?: - | SyncReconcileRequestPreparedStackOverrideAzureResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound, - SyncReconcileRequestPreparedStackOverrideAzureBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestPreparedStackOverrideAzureBindingToJSON( - syncReconcileRequestPreparedStackOverrideAzureBinding: - SyncReconcileRequestPreparedStackOverrideAzureBinding, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAzureBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound, - SyncReconcileRequestPreparedStackOverrideAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestPreparedStackOverrideAzureGrantToJSON( - syncReconcileRequestPreparedStackOverrideAzureGrant: - SyncReconcileRequestPreparedStackOverrideAzureGrant, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAzureGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideAzure$Outbound = { - binding: SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideAzure$Outbound, - SyncReconcileRequestPreparedStackOverrideAzure - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestPreparedStackOverrideAzureToJSON( - syncReconcileRequestPreparedStackOverrideAzure: - SyncReconcileRequestPreparedStackOverrideAzure, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideAzure, - ), - ); -} - -/** @internal */ -export type PreparedStackOverrideConditionStateResource$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const PreparedStackOverrideConditionStateResource$outboundSchema: - z.ZodType< - PreparedStackOverrideConditionStateResource$Outbound, - PreparedStackOverrideConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function preparedStackOverrideConditionStateResourceToJSON( - preparedStackOverrideConditionStateResource: - PreparedStackOverrideConditionStateResource, -): string { - return JSON.stringify( - PreparedStackOverrideConditionStateResource$outboundSchema.parse( - preparedStackOverrideConditionStateResource, - ), - ); -} - -/** @internal */ -export type PreparedStackOverrideStateResourceConditionUnion$Outbound = - | PreparedStackOverrideConditionStateResource$Outbound - | any; - -/** @internal */ -export const PreparedStackOverrideStateResourceConditionUnion$outboundSchema: - z.ZodType< - PreparedStackOverrideStateResourceConditionUnion$Outbound, - PreparedStackOverrideStateResourceConditionUnion - > = z.union([ - z.lazy(() => PreparedStackOverrideConditionStateResource$outboundSchema), - z.any(), - ]); - -export function preparedStackOverrideStateResourceConditionUnionToJSON( - preparedStackOverrideStateResourceConditionUnion: - PreparedStackOverrideStateResourceConditionUnion, -): string { - return JSON.stringify( - PreparedStackOverrideStateResourceConditionUnion$outboundSchema.parse( - preparedStackOverrideStateResourceConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideGcpResource$Outbound = { - condition?: - | PreparedStackOverrideConditionStateResource$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideGcpResource$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideGcpResource$Outbound, - SyncReconcileRequestPreparedStackOverrideGcpResource - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - PreparedStackOverrideConditionStateResource$outboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackOverrideGcpResourceToJSON( - syncReconcileRequestPreparedStackOverrideGcpResource: - SyncReconcileRequestPreparedStackOverrideGcpResource, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideGcpResource$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideGcpResource, - ), - ); -} - -/** @internal */ -export type PreparedStackOverrideConditionStateStack$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const PreparedStackOverrideConditionStateStack$outboundSchema: z.ZodType< - PreparedStackOverrideConditionStateStack$Outbound, - PreparedStackOverrideConditionStateStack -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function preparedStackOverrideConditionStateStackToJSON( - preparedStackOverrideConditionStateStack: - PreparedStackOverrideConditionStateStack, -): string { - return JSON.stringify( - PreparedStackOverrideConditionStateStack$outboundSchema.parse( - preparedStackOverrideConditionStateStack, - ), - ); -} - -/** @internal */ -export type PreparedStackOverrideStateStackConditionUnion$Outbound = - | PreparedStackOverrideConditionStateStack$Outbound - | any; - -/** @internal */ -export const PreparedStackOverrideStateStackConditionUnion$outboundSchema: - z.ZodType< - PreparedStackOverrideStateStackConditionUnion$Outbound, - PreparedStackOverrideStateStackConditionUnion - > = z.union([ - z.lazy(() => PreparedStackOverrideConditionStateStack$outboundSchema), - z.any(), - ]); - -export function preparedStackOverrideStateStackConditionUnionToJSON( - preparedStackOverrideStateStackConditionUnion: - PreparedStackOverrideStateStackConditionUnion, -): string { - return JSON.stringify( - PreparedStackOverrideStateStackConditionUnion$outboundSchema.parse( - preparedStackOverrideStateStackConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound = { - condition?: - | PreparedStackOverrideConditionStateStack$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound, - SyncReconcileRequestPreparedStackOverrideGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => PreparedStackOverrideConditionStateStack$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackOverrideGcpStackToJSON( - syncReconcileRequestPreparedStackOverrideGcpStack: - SyncReconcileRequestPreparedStackOverrideGcpStack, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideGcpStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound = { - resource?: - | SyncReconcileRequestPreparedStackOverrideGcpResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound, - SyncReconcileRequestPreparedStackOverrideGcpBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideGcpResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestPreparedStackOverrideGcpBindingToJSON( - syncReconcileRequestPreparedStackOverrideGcpBinding: - SyncReconcileRequestPreparedStackOverrideGcpBinding, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideGcpBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound, - SyncReconcileRequestPreparedStackOverrideGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestPreparedStackOverrideGcpGrantToJSON( - syncReconcileRequestPreparedStackOverrideGcpGrant: - SyncReconcileRequestPreparedStackOverrideGcpGrant, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideGcpGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideGcp$Outbound = { - binding: SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideGcp$Outbound, - SyncReconcileRequestPreparedStackOverrideGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestPreparedStackOverrideGcpToJSON( - syncReconcileRequestPreparedStackOverrideGcp: - SyncReconcileRequestPreparedStackOverrideGcp, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideGcp, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverridePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverridePlatforms$Outbound, - SyncReconcileRequestPreparedStackOverridePlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema - )), - ).optional(), - }); - -export function syncReconcileRequestPreparedStackOverridePlatformsToJSON( - syncReconcileRequestPreparedStackOverridePlatforms: - SyncReconcileRequestPreparedStackOverridePlatforms, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema.parse( - syncReconcileRequestPreparedStackOverridePlatforms, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverride$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestPreparedStackOverridePlatforms$Outbound; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverride$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverride$Outbound, - SyncReconcileRequestPreparedStackOverride - > = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema - ), - }); - -export function syncReconcileRequestPreparedStackOverrideToJSON( - syncReconcileRequestPreparedStackOverride: - SyncReconcileRequestPreparedStackOverride, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverride$outboundSchema.parse( - syncReconcileRequestPreparedStackOverride, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackOverrideUnion$Outbound = - | SyncReconcileRequestPreparedStackOverride$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestPreparedStackOverrideUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackOverrideUnion$Outbound, - SyncReconcileRequestPreparedStackOverrideUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackOverride$outboundSchema), - z.string(), - ]); - -export function syncReconcileRequestPreparedStackOverrideUnionToJSON( - syncReconcileRequestPreparedStackOverrideUnion: - SyncReconcileRequestPreparedStackOverrideUnion, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackOverrideUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackOverrideUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackManagement2$Outbound = { - override: { - [k: string]: Array< - SyncReconcileRequestPreparedStackOverride$Outbound | string - >; - }; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackManagement2$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackManagement2$Outbound, - SyncReconcileRequestPreparedStackManagement2 - > = z.object({ - override: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackOverride$outboundSchema), - z.string(), - ])), - ), - }); - -export function syncReconcileRequestPreparedStackManagement2ToJSON( - syncReconcileRequestPreparedStackManagement2: - SyncReconcileRequestPreparedStackManagement2, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackManagement2$outboundSchema.parse( - syncReconcileRequestPreparedStackManagement2, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendAwResource$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendAwResource$Outbound, - SyncReconcileRequestPreparedStackExtendAwResource - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestPreparedStackExtendAwResourceToJSON( - syncReconcileRequestPreparedStackExtendAwResource: - SyncReconcileRequestPreparedStackExtendAwResource, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAwResource$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAwResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendAwStack$Outbound, - SyncReconcileRequestPreparedStackExtendAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestPreparedStackExtendAwStackToJSON( - syncReconcileRequestPreparedStackExtendAwStack: - SyncReconcileRequestPreparedStackExtendAwStack, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAwStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendAwBinding$Outbound = { - resource?: - | SyncReconcileRequestPreparedStackExtendAwResource$Outbound - | undefined; - stack?: SyncReconcileRequestPreparedStackExtendAwStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendAwBinding$Outbound, - SyncReconcileRequestPreparedStackExtendAwBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAwResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestPreparedStackExtendAwBindingToJSON( - syncReconcileRequestPreparedStackExtendAwBinding: - SyncReconcileRequestPreparedStackExtendAwBinding, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAwBinding, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackExtendEffect, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendAwGrant$Outbound, - SyncReconcileRequestPreparedStackExtendAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestPreparedStackExtendAwGrantToJSON( - syncReconcileRequestPreparedStackExtendAwGrant: - SyncReconcileRequestPreparedStackExtendAwGrant, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAwGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendAw$Outbound = { - binding: SyncReconcileRequestPreparedStackExtendAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestPreparedStackExtendAwGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendAw$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendAw$Outbound, - SyncReconcileRequestPreparedStackExtendAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestPreparedStackExtendEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestPreparedStackExtendAwToJSON( - syncReconcileRequestPreparedStackExtendAw: - SyncReconcileRequestPreparedStackExtendAw, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAw$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAw, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendAzureResource$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendAzureResource$Outbound, - SyncReconcileRequestPreparedStackExtendAzureResource - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackExtendAzureResourceToJSON( - syncReconcileRequestPreparedStackExtendAzureResource: - SyncReconcileRequestPreparedStackExtendAzureResource, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAzureResource$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAzureResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendAzureStack$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendAzureStack$Outbound, - SyncReconcileRequestPreparedStackExtendAzureStack - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackExtendAzureStackToJSON( - syncReconcileRequestPreparedStackExtendAzureStack: - SyncReconcileRequestPreparedStackExtendAzureStack, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAzureStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound = { - resource?: - | SyncReconcileRequestPreparedStackExtendAzureResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestPreparedStackExtendAzureStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound, - SyncReconcileRequestPreparedStackExtendAzureBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestPreparedStackExtendAzureBindingToJSON( - syncReconcileRequestPreparedStackExtendAzureBinding: - SyncReconcileRequestPreparedStackExtendAzureBinding, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAzureBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound, - SyncReconcileRequestPreparedStackExtendAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestPreparedStackExtendAzureGrantToJSON( - syncReconcileRequestPreparedStackExtendAzureGrant: - SyncReconcileRequestPreparedStackExtendAzureGrant, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAzureGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendAzure$Outbound = { - binding: SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendAzure$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendAzure$Outbound, - SyncReconcileRequestPreparedStackExtendAzure - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestPreparedStackExtendAzureToJSON( - syncReconcileRequestPreparedStackExtendAzure: - SyncReconcileRequestPreparedStackExtendAzure, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendAzure$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendAzure, - ), - ); -} - -/** @internal */ -export type PreparedStackExtendConditionStateResource$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const PreparedStackExtendConditionStateResource$outboundSchema: - z.ZodType< - PreparedStackExtendConditionStateResource$Outbound, - PreparedStackExtendConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function preparedStackExtendConditionStateResourceToJSON( - preparedStackExtendConditionStateResource: - PreparedStackExtendConditionStateResource, -): string { - return JSON.stringify( - PreparedStackExtendConditionStateResource$outboundSchema.parse( - preparedStackExtendConditionStateResource, - ), - ); -} - -/** @internal */ -export type PreparedStackExtendStateResourceConditionUnion$Outbound = - | PreparedStackExtendConditionStateResource$Outbound - | any; - -/** @internal */ -export const PreparedStackExtendStateResourceConditionUnion$outboundSchema: - z.ZodType< - PreparedStackExtendStateResourceConditionUnion$Outbound, - PreparedStackExtendStateResourceConditionUnion - > = z.union([ - z.lazy(() => PreparedStackExtendConditionStateResource$outboundSchema), - z.any(), - ]); - -export function preparedStackExtendStateResourceConditionUnionToJSON( - preparedStackExtendStateResourceConditionUnion: - PreparedStackExtendStateResourceConditionUnion, -): string { - return JSON.stringify( - PreparedStackExtendStateResourceConditionUnion$outboundSchema.parse( - preparedStackExtendStateResourceConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendGcpResource$Outbound = { - condition?: - | PreparedStackExtendConditionStateResource$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendGcpResource$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendGcpResource$Outbound, - SyncReconcileRequestPreparedStackExtendGcpResource - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => PreparedStackExtendConditionStateResource$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackExtendGcpResourceToJSON( - syncReconcileRequestPreparedStackExtendGcpResource: - SyncReconcileRequestPreparedStackExtendGcpResource, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendGcpResource$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendGcpResource, - ), - ); -} - -/** @internal */ -export type PreparedStackExtendConditionStateStack$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const PreparedStackExtendConditionStateStack$outboundSchema: z.ZodType< - PreparedStackExtendConditionStateStack$Outbound, - PreparedStackExtendConditionStateStack -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function preparedStackExtendConditionStateStackToJSON( - preparedStackExtendConditionStateStack: - PreparedStackExtendConditionStateStack, -): string { - return JSON.stringify( - PreparedStackExtendConditionStateStack$outboundSchema.parse( - preparedStackExtendConditionStateStack, - ), - ); -} - -/** @internal */ -export type PreparedStackExtendStateStackConditionUnion$Outbound = - | PreparedStackExtendConditionStateStack$Outbound - | any; - -/** @internal */ -export const PreparedStackExtendStateStackConditionUnion$outboundSchema: - z.ZodType< - PreparedStackExtendStateStackConditionUnion$Outbound, - PreparedStackExtendStateStackConditionUnion - > = z.union([ - z.lazy(() => PreparedStackExtendConditionStateStack$outboundSchema), - z.any(), - ]); - -export function preparedStackExtendStateStackConditionUnionToJSON( - preparedStackExtendStateStackConditionUnion: - PreparedStackExtendStateStackConditionUnion, -): string { - return JSON.stringify( - PreparedStackExtendStateStackConditionUnion$outboundSchema.parse( - preparedStackExtendStateStackConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendGcpStack$Outbound = { - condition?: - | PreparedStackExtendConditionStateStack$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendGcpStack$Outbound, - SyncReconcileRequestPreparedStackExtendGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => PreparedStackExtendConditionStateStack$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackExtendGcpStackToJSON( - syncReconcileRequestPreparedStackExtendGcpStack: - SyncReconcileRequestPreparedStackExtendGcpStack, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendGcpStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound = { - resource?: - | SyncReconcileRequestPreparedStackExtendGcpResource$Outbound - | undefined; - stack?: SyncReconcileRequestPreparedStackExtendGcpStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound, - SyncReconcileRequestPreparedStackExtendGcpBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestPreparedStackExtendGcpResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestPreparedStackExtendGcpBindingToJSON( - syncReconcileRequestPreparedStackExtendGcpBinding: - SyncReconcileRequestPreparedStackExtendGcpBinding, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendGcpBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound, - SyncReconcileRequestPreparedStackExtendGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestPreparedStackExtendGcpGrantToJSON( - syncReconcileRequestPreparedStackExtendGcpGrant: - SyncReconcileRequestPreparedStackExtendGcpGrant, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendGcpGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendGcp$Outbound = { - binding: SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendGcp$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendGcp$Outbound, - SyncReconcileRequestPreparedStackExtendGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestPreparedStackExtendGcpToJSON( - syncReconcileRequestPreparedStackExtendGcp: - SyncReconcileRequestPreparedStackExtendGcp, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendGcp$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendGcp, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendPlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendPlatforms$Outbound, - SyncReconcileRequestPreparedStackExtendPlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackExtendAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackExtendAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackExtendGcp$outboundSchema - )), - ).optional(), - }); - -export function syncReconcileRequestPreparedStackExtendPlatformsToJSON( - syncReconcileRequestPreparedStackExtendPlatforms: - SyncReconcileRequestPreparedStackExtendPlatforms, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendPlatforms, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtend$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestPreparedStackExtendPlatforms$Outbound; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtend$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackExtend$Outbound, - SyncReconcileRequestPreparedStackExtend -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema - ), -}); - -export function syncReconcileRequestPreparedStackExtendToJSON( - syncReconcileRequestPreparedStackExtend: - SyncReconcileRequestPreparedStackExtend, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtend$outboundSchema.parse( - syncReconcileRequestPreparedStackExtend, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackExtendUnion$Outbound = - | SyncReconcileRequestPreparedStackExtend$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestPreparedStackExtendUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackExtendUnion$Outbound, - SyncReconcileRequestPreparedStackExtendUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackExtend$outboundSchema), - z.string(), - ]); - -export function syncReconcileRequestPreparedStackExtendUnionToJSON( - syncReconcileRequestPreparedStackExtendUnion: - SyncReconcileRequestPreparedStackExtendUnion, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackExtendUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackExtendUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackManagement1$Outbound = { - extend: { - [k: string]: Array< - SyncReconcileRequestPreparedStackExtend$Outbound | string - >; - }; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackManagement1$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackManagement1$Outbound, - SyncReconcileRequestPreparedStackManagement1 - > = z.object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackExtend$outboundSchema), - z.string(), - ])), - ), - }); - -export function syncReconcileRequestPreparedStackManagement1ToJSON( - syncReconcileRequestPreparedStackManagement1: - SyncReconcileRequestPreparedStackManagement1, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackManagement1$outboundSchema.parse( - syncReconcileRequestPreparedStackManagement1, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackManagementUnion$Outbound = - | SyncReconcileRequestPreparedStackManagement1$Outbound - | SyncReconcileRequestPreparedStackManagement2$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestPreparedStackManagementUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackManagementUnion$Outbound, - SyncReconcileRequestPreparedStackManagementUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackManagement1$outboundSchema), - z.lazy(() => SyncReconcileRequestPreparedStackManagement2$outboundSchema), - SyncReconcileRequestPreparedStackManagementEnum$outboundSchema, - ]); - -export function syncReconcileRequestPreparedStackManagementUnionToJSON( - syncReconcileRequestPreparedStackManagementUnion: - SyncReconcileRequestPreparedStackManagementUnion, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackManagementUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackManagementUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileAwResource$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAwResource$Outbound, - SyncReconcileRequestPreparedStackProfileAwResource - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestPreparedStackProfileAwResourceToJSON( - syncReconcileRequestPreparedStackProfileAwResource: - SyncReconcileRequestPreparedStackProfileAwResource, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAwResource$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAwResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAwStack$Outbound, - SyncReconcileRequestPreparedStackProfileAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestPreparedStackProfileAwStackToJSON( - syncReconcileRequestPreparedStackProfileAwStack: - SyncReconcileRequestPreparedStackProfileAwStack, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAwStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileAwBinding$Outbound = { - resource?: - | SyncReconcileRequestPreparedStackProfileAwResource$Outbound - | undefined; - stack?: SyncReconcileRequestPreparedStackProfileAwStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAwBinding$Outbound, - SyncReconcileRequestPreparedStackProfileAwBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAwResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestPreparedStackProfileAwBindingToJSON( - syncReconcileRequestPreparedStackProfileAwBinding: - SyncReconcileRequestPreparedStackProfileAwBinding, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAwBinding, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackProfileEffect, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAwGrant$Outbound, - SyncReconcileRequestPreparedStackProfileAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestPreparedStackProfileAwGrantToJSON( - syncReconcileRequestPreparedStackProfileAwGrant: - SyncReconcileRequestPreparedStackProfileAwGrant, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAwGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileAw$Outbound = { - binding: SyncReconcileRequestPreparedStackProfileAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestPreparedStackProfileAwGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileAw$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAw$Outbound, - SyncReconcileRequestPreparedStackProfileAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestPreparedStackProfileEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestPreparedStackProfileAwToJSON( - syncReconcileRequestPreparedStackProfileAw: - SyncReconcileRequestPreparedStackProfileAw, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAw$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAw, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileAzureResource$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAzureResource$Outbound, - SyncReconcileRequestPreparedStackProfileAzureResource - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackProfileAzureResourceToJSON( - syncReconcileRequestPreparedStackProfileAzureResource: - SyncReconcileRequestPreparedStackProfileAzureResource, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAzureResource$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAzureResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileAzureStack$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAzureStack$Outbound, - SyncReconcileRequestPreparedStackProfileAzureStack - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackProfileAzureStackToJSON( - syncReconcileRequestPreparedStackProfileAzureStack: - SyncReconcileRequestPreparedStackProfileAzureStack, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAzureStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound = { - resource?: - | SyncReconcileRequestPreparedStackProfileAzureResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestPreparedStackProfileAzureStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound, - SyncReconcileRequestPreparedStackProfileAzureBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestPreparedStackProfileAzureBindingToJSON( - syncReconcileRequestPreparedStackProfileAzureBinding: - SyncReconcileRequestPreparedStackProfileAzureBinding, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAzureBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound, - SyncReconcileRequestPreparedStackProfileAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestPreparedStackProfileAzureGrantToJSON( - syncReconcileRequestPreparedStackProfileAzureGrant: - SyncReconcileRequestPreparedStackProfileAzureGrant, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAzureGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileAzure$Outbound = { - binding: SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileAzure$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileAzure$Outbound, - SyncReconcileRequestPreparedStackProfileAzure - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestPreparedStackProfileAzureToJSON( - syncReconcileRequestPreparedStackProfileAzure: - SyncReconcileRequestPreparedStackProfileAzure, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileAzure$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileAzure, - ), - ); -} - -/** @internal */ -export type PreparedStackProfileConditionStateResource$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const PreparedStackProfileConditionStateResource$outboundSchema: - z.ZodType< - PreparedStackProfileConditionStateResource$Outbound, - PreparedStackProfileConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function preparedStackProfileConditionStateResourceToJSON( - preparedStackProfileConditionStateResource: - PreparedStackProfileConditionStateResource, -): string { - return JSON.stringify( - PreparedStackProfileConditionStateResource$outboundSchema.parse( - preparedStackProfileConditionStateResource, - ), - ); -} - -/** @internal */ -export type PreparedStackProfileStateResourceConditionUnion$Outbound = - | PreparedStackProfileConditionStateResource$Outbound - | any; - -/** @internal */ -export const PreparedStackProfileStateResourceConditionUnion$outboundSchema: - z.ZodType< - PreparedStackProfileStateResourceConditionUnion$Outbound, - PreparedStackProfileStateResourceConditionUnion - > = z.union([ - z.lazy(() => PreparedStackProfileConditionStateResource$outboundSchema), - z.any(), - ]); - -export function preparedStackProfileStateResourceConditionUnionToJSON( - preparedStackProfileStateResourceConditionUnion: - PreparedStackProfileStateResourceConditionUnion, -): string { - return JSON.stringify( - PreparedStackProfileStateResourceConditionUnion$outboundSchema.parse( - preparedStackProfileStateResourceConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileGcpResource$Outbound = { - condition?: - | PreparedStackProfileConditionStateResource$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileGcpResource$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileGcpResource$Outbound, - SyncReconcileRequestPreparedStackProfileGcpResource - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => PreparedStackProfileConditionStateResource$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackProfileGcpResourceToJSON( - syncReconcileRequestPreparedStackProfileGcpResource: - SyncReconcileRequestPreparedStackProfileGcpResource, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileGcpResource$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileGcpResource, - ), - ); -} - -/** @internal */ -export type PreparedStackProfileConditionStateStack$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const PreparedStackProfileConditionStateStack$outboundSchema: z.ZodType< - PreparedStackProfileConditionStateStack$Outbound, - PreparedStackProfileConditionStateStack -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function preparedStackProfileConditionStateStackToJSON( - preparedStackProfileConditionStateStack: - PreparedStackProfileConditionStateStack, -): string { - return JSON.stringify( - PreparedStackProfileConditionStateStack$outboundSchema.parse( - preparedStackProfileConditionStateStack, - ), - ); -} - -/** @internal */ -export type PreparedStackProfileStateStackConditionUnion$Outbound = - | PreparedStackProfileConditionStateStack$Outbound - | any; - -/** @internal */ -export const PreparedStackProfileStateStackConditionUnion$outboundSchema: - z.ZodType< - PreparedStackProfileStateStackConditionUnion$Outbound, - PreparedStackProfileStateStackConditionUnion - > = z.union([ - z.lazy(() => PreparedStackProfileConditionStateStack$outboundSchema), - z.any(), - ]); - -export function preparedStackProfileStateStackConditionUnionToJSON( - preparedStackProfileStateStackConditionUnion: - PreparedStackProfileStateStackConditionUnion, -): string { - return JSON.stringify( - PreparedStackProfileStateStackConditionUnion$outboundSchema.parse( - preparedStackProfileStateStackConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileGcpStack$Outbound = { - condition?: - | PreparedStackProfileConditionStateStack$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileGcpStack$Outbound, - SyncReconcileRequestPreparedStackProfileGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => PreparedStackProfileConditionStateStack$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestPreparedStackProfileGcpStackToJSON( - syncReconcileRequestPreparedStackProfileGcpStack: - SyncReconcileRequestPreparedStackProfileGcpStack, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileGcpStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound = { - resource?: - | SyncReconcileRequestPreparedStackProfileGcpResource$Outbound - | undefined; - stack?: SyncReconcileRequestPreparedStackProfileGcpStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound, - SyncReconcileRequestPreparedStackProfileGcpBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestPreparedStackProfileGcpResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestPreparedStackProfileGcpBindingToJSON( - syncReconcileRequestPreparedStackProfileGcpBinding: - SyncReconcileRequestPreparedStackProfileGcpBinding, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileGcpBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound, - SyncReconcileRequestPreparedStackProfileGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestPreparedStackProfileGcpGrantToJSON( - syncReconcileRequestPreparedStackProfileGcpGrant: - SyncReconcileRequestPreparedStackProfileGcpGrant, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileGcpGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileGcp$Outbound = { - binding: SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileGcp$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileGcp$Outbound, - SyncReconcileRequestPreparedStackProfileGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestPreparedStackProfileGcpToJSON( - syncReconcileRequestPreparedStackProfileGcp: - SyncReconcileRequestPreparedStackProfileGcp, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileGcp$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileGcp, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfilePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfilePlatforms$Outbound, - SyncReconcileRequestPreparedStackProfilePlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackProfileAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackProfileAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestPreparedStackProfileGcp$outboundSchema - )), - ).optional(), - }); - -export function syncReconcileRequestPreparedStackProfilePlatformsToJSON( - syncReconcileRequestPreparedStackProfilePlatforms: - SyncReconcileRequestPreparedStackProfilePlatforms, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema.parse( - syncReconcileRequestPreparedStackProfilePlatforms, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfile$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestPreparedStackProfilePlatforms$Outbound; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfile$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackProfile$Outbound, - SyncReconcileRequestPreparedStackProfile -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema - ), -}); - -export function syncReconcileRequestPreparedStackProfileToJSON( - syncReconcileRequestPreparedStackProfile: - SyncReconcileRequestPreparedStackProfile, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfile$outboundSchema.parse( - syncReconcileRequestPreparedStackProfile, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackProfileUnion$Outbound = - | SyncReconcileRequestPreparedStackProfile$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestPreparedStackProfileUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackProfileUnion$Outbound, - SyncReconcileRequestPreparedStackProfileUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackProfile$outboundSchema), - z.string(), - ]); - -export function syncReconcileRequestPreparedStackProfileUnionToJSON( - syncReconcileRequestPreparedStackProfileUnion: - SyncReconcileRequestPreparedStackProfileUnion, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackProfileUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackProfileUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackPermissions$Outbound = { - management?: - | SyncReconcileRequestPreparedStackManagement1$Outbound - | SyncReconcileRequestPreparedStackManagement2$Outbound - | string - | undefined; - profiles: { - [k: string]: { - [k: string]: Array< - SyncReconcileRequestPreparedStackProfile$Outbound | string - >; - }; - }; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackPermissions$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackPermissions$Outbound, - SyncReconcileRequestPreparedStackPermissions - > = z.object({ - management: z.union([ - z.lazy(() => SyncReconcileRequestPreparedStackManagement1$outboundSchema), - z.lazy(() => SyncReconcileRequestPreparedStackManagement2$outboundSchema), - SyncReconcileRequestPreparedStackManagementEnum$outboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileRequestPreparedStackProfile$outboundSchema - ), - z.string(), - ]), - ), - ), - ), - }); - -export function syncReconcileRequestPreparedStackPermissionsToJSON( - syncReconcileRequestPreparedStackPermissions: - SyncReconcileRequestPreparedStackPermissions, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackPermissions$outboundSchema.parse( - syncReconcileRequestPreparedStackPermissions, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackConfig$Outbound = { - id: string; - type: string; - [additionalProperties: string]: unknown; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackConfig$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackConfig$Outbound, - SyncReconcileRequestPreparedStackConfig -> = z.object({ - id: z.string(), - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; -}); - -export function syncReconcileRequestPreparedStackConfigToJSON( - syncReconcileRequestPreparedStackConfig: - SyncReconcileRequestPreparedStackConfig, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackConfig$outboundSchema.parse( - syncReconcileRequestPreparedStackConfig, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackDependency$Outbound = { - id: string; - type: string; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackDependency$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackDependency$Outbound, - SyncReconcileRequestPreparedStackDependency - > = z.object({ - id: z.string(), - type: z.string(), - }); - -export function syncReconcileRequestPreparedStackDependencyToJSON( - syncReconcileRequestPreparedStackDependency: - SyncReconcileRequestPreparedStackDependency, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackDependency$outboundSchema.parse( - syncReconcileRequestPreparedStackDependency, - ), - ); -} - -/** @internal */ -export const PreparedStackStateLifecycle$outboundSchema: z.ZodEnum< - typeof PreparedStackStateLifecycle -> = z.enum(PreparedStackStateLifecycle); - -/** @internal */ -export type SyncReconcileRequestPreparedStackResources$Outbound = { - config: SyncReconcileRequestPreparedStackConfig$Outbound; - dependencies: Array; - lifecycle: string; - remoteAccess?: boolean | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStackResources$outboundSchema: - z.ZodType< - SyncReconcileRequestPreparedStackResources$Outbound, - SyncReconcileRequestPreparedStackResources - > = z.object({ - config: z.lazy(() => - SyncReconcileRequestPreparedStackConfig$outboundSchema - ), - dependencies: z.array( - z.lazy(() => SyncReconcileRequestPreparedStackDependency$outboundSchema), - ), - lifecycle: PreparedStackStateLifecycle$outboundSchema, - remoteAccess: z.boolean().optional(), - }); - -export function syncReconcileRequestPreparedStackResourcesToJSON( - syncReconcileRequestPreparedStackResources: - SyncReconcileRequestPreparedStackResources, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackResources$outboundSchema.parse( - syncReconcileRequestPreparedStackResources, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestPreparedStackSupportedPlatform$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestPreparedStackSupportedPlatform, - ); - -/** @internal */ -export type SyncReconcileRequestPreparedStack$Outbound = { - id: string; - inputs?: Array | undefined; - permissions?: - | SyncReconcileRequestPreparedStackPermissions$Outbound - | undefined; - resources: { - [k: string]: SyncReconcileRequestPreparedStackResources$Outbound; - }; - supportedPlatforms?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestPreparedStack$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStack$Outbound, - SyncReconcileRequestPreparedStack -> = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncReconcileRequestPreparedStackInput$outboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncReconcileRequestPreparedStackPermissions$outboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileRequestPreparedStackResources$outboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncReconcileRequestPreparedStackSupportedPlatform$outboundSchema), - ).optional(), -}); - -export function syncReconcileRequestPreparedStackToJSON( - syncReconcileRequestPreparedStack: SyncReconcileRequestPreparedStack, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStack$outboundSchema.parse( - syncReconcileRequestPreparedStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreparedStackUnion$Outbound = - | SyncReconcileRequestPreparedStack$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestPreparedStackUnion$outboundSchema: z.ZodType< - SyncReconcileRequestPreparedStackUnion$Outbound, - SyncReconcileRequestPreparedStackUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestPreparedStack$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestPreparedStackUnionToJSON( - syncReconcileRequestPreparedStackUnion: - SyncReconcileRequestPreparedStackUnion, -): string { - return JSON.stringify( - SyncReconcileRequestPreparedStackUnion$outboundSchema.parse( - syncReconcileRequestPreparedStackUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestRuntimeMetadata$Outbound = { - lastSyncedEnvVarsHash?: string | null | undefined; - preparedStack?: - | SyncReconcileRequestPreparedStack$Outbound - | any - | null - | undefined; - registryAccessGranted?: boolean | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestRuntimeMetadata$outboundSchema: z.ZodType< - SyncReconcileRequestRuntimeMetadata$Outbound, - SyncReconcileRequestRuntimeMetadata -> = z.object({ - lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), - preparedStack: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestPreparedStack$outboundSchema), - z.any(), - ]), - ).optional(), - registryAccessGranted: z.boolean().optional(), -}); - -export function syncReconcileRequestRuntimeMetadataToJSON( - syncReconcileRequestRuntimeMetadata: SyncReconcileRequestRuntimeMetadata, -): string { - return JSON.stringify( - SyncReconcileRequestRuntimeMetadata$outboundSchema.parse( - syncReconcileRequestRuntimeMetadata, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestRuntimeMetadataUnion$Outbound = - | SyncReconcileRequestRuntimeMetadata$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestRuntimeMetadataUnion$outboundSchema: z.ZodType< - SyncReconcileRequestRuntimeMetadataUnion$Outbound, - SyncReconcileRequestRuntimeMetadataUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestRuntimeMetadata$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestRuntimeMetadataUnionToJSON( - syncReconcileRequestRuntimeMetadataUnion: - SyncReconcileRequestRuntimeMetadataUnion, -): string { - return JSON.stringify( - SyncReconcileRequestRuntimeMetadataUnion$outboundSchema.parse( - syncReconcileRequestRuntimeMetadataUnion, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestStackStatePlatform$outboundSchema: z.ZodEnum< - typeof SyncReconcileRequestStackStatePlatform -> = z.enum(SyncReconcileRequestStackStatePlatform); - -/** @internal */ -export type SyncReconcileRequestStackStateConfig$Outbound = { - id: string; - type: string; - [additionalProperties: string]: unknown; -}; - -/** @internal */ -export const SyncReconcileRequestStackStateConfig$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateConfig$Outbound, - SyncReconcileRequestStackStateConfig -> = z.object({ - id: z.string(), - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; -}); - -export function syncReconcileRequestStackStateConfigToJSON( - syncReconcileRequestStackStateConfig: SyncReconcileRequestStackStateConfig, -): string { - return JSON.stringify( - SyncReconcileRequestStackStateConfig$outboundSchema.parse( - syncReconcileRequestStackStateConfig, - ), - ); -} - -/** @internal */ -export const ControllerPlatformStateEnum$outboundSchema: z.ZodEnum< - typeof ControllerPlatformStateEnum -> = z.enum(ControllerPlatformStateEnum); - -/** @internal */ -export type StateControllerPlatformUnion$Outbound = string | any; - -/** @internal */ -export const StateControllerPlatformUnion$outboundSchema: z.ZodType< - StateControllerPlatformUnion$Outbound, - StateControllerPlatformUnion -> = z.union([ControllerPlatformStateEnum$outboundSchema, z.any()]); - -export function stateControllerPlatformUnionToJSON( - stateControllerPlatformUnion: StateControllerPlatformUnion, -): string { - return JSON.stringify( - StateControllerPlatformUnion$outboundSchema.parse( - stateControllerPlatformUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestStackStateDependency$Outbound = { - id: string; - type: string; -}; - -/** @internal */ -export const SyncReconcileRequestStackStateDependency$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateDependency$Outbound, - SyncReconcileRequestStackStateDependency -> = z.object({ - id: z.string(), - type: z.string(), -}); - -export function syncReconcileRequestStackStateDependencyToJSON( - syncReconcileRequestStackStateDependency: - SyncReconcileRequestStackStateDependency, -): string { - return JSON.stringify( - SyncReconcileRequestStackStateDependency$outboundSchema.parse( - syncReconcileRequestStackStateDependency, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestStackStateError$Outbound = { - code: string; - context?: any | null | undefined; - hint?: string | null | undefined; - httpStatusCode?: number | null | undefined; - internal: boolean; - message: string; - retryable: boolean; - source?: any | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestStackStateError$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateError$Outbound, - SyncReconcileRequestStackStateError -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); - -export function syncReconcileRequestStackStateErrorToJSON( - syncReconcileRequestStackStateError: SyncReconcileRequestStackStateError, -): string { - return JSON.stringify( - SyncReconcileRequestStackStateError$outboundSchema.parse( - syncReconcileRequestStackStateError, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestStackStateErrorUnion$Outbound = - | SyncReconcileRequestStackStateError$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestStackStateErrorUnion$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateErrorUnion$Outbound, - SyncReconcileRequestStackStateErrorUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestStackStateError$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestStackStateErrorUnionToJSON( - syncReconcileRequestStackStateErrorUnion: - SyncReconcileRequestStackStateErrorUnion, -): string { - return JSON.stringify( - SyncReconcileRequestStackStateErrorUnion$outboundSchema.parse( - syncReconcileRequestStackStateErrorUnion, - ), - ); -} - -/** @internal */ -export const StackStateLifecycleStateEnum$outboundSchema: z.ZodEnum< - typeof StackStateLifecycleStateEnum -> = z.enum(StackStateLifecycleStateEnum); - -/** @internal */ -export type StateLifecycleUnion$Outbound = string | any; - -/** @internal */ -export const StateLifecycleUnion$outboundSchema: z.ZodType< - StateLifecycleUnion$Outbound, - StateLifecycleUnion -> = z.union([StackStateLifecycleStateEnum$outboundSchema, z.any()]); - -export function stateLifecycleUnionToJSON( - stateLifecycleUnion: StateLifecycleUnion, -): string { - return JSON.stringify( - StateLifecycleUnion$outboundSchema.parse(stateLifecycleUnion), - ); -} - -/** @internal */ -export type SyncReconcileRequestOutputs$Outbound = { - type: string; - [additionalProperties: string]: unknown; -}; - -/** @internal */ -export const SyncReconcileRequestOutputs$outboundSchema: z.ZodType< - SyncReconcileRequestOutputs$Outbound, - SyncReconcileRequestOutputs -> = z.object({ - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; -}); - -export function syncReconcileRequestOutputsToJSON( - syncReconcileRequestOutputs: SyncReconcileRequestOutputs, -): string { - return JSON.stringify( - SyncReconcileRequestOutputs$outboundSchema.parse( - syncReconcileRequestOutputs, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestOutputsUnion$Outbound = - | SyncReconcileRequestOutputs$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestOutputsUnion$outboundSchema: z.ZodType< - SyncReconcileRequestOutputsUnion$Outbound, - SyncReconcileRequestOutputsUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestOutputs$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestOutputsUnionToJSON( - syncReconcileRequestOutputsUnion: SyncReconcileRequestOutputsUnion, -): string { - return JSON.stringify( - SyncReconcileRequestOutputsUnion$outboundSchema.parse( - syncReconcileRequestOutputsUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreviousConfig$Outbound = { - id: string; - type: string; - [additionalProperties: string]: unknown; -}; - -/** @internal */ -export const SyncReconcileRequestPreviousConfig$outboundSchema: z.ZodType< - SyncReconcileRequestPreviousConfig$Outbound, - SyncReconcileRequestPreviousConfig -> = z.object({ - id: z.string(), - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; -}); - -export function syncReconcileRequestPreviousConfigToJSON( - syncReconcileRequestPreviousConfig: SyncReconcileRequestPreviousConfig, -): string { - return JSON.stringify( - SyncReconcileRequestPreviousConfig$outboundSchema.parse( - syncReconcileRequestPreviousConfig, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestPreviousConfigUnion$Outbound = - | SyncReconcileRequestPreviousConfig$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestPreviousConfigUnion$outboundSchema: z.ZodType< - SyncReconcileRequestPreviousConfigUnion$Outbound, - SyncReconcileRequestPreviousConfigUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestPreviousConfig$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestPreviousConfigUnionToJSON( - syncReconcileRequestPreviousConfigUnion: - SyncReconcileRequestPreviousConfigUnion, -): string { - return JSON.stringify( - SyncReconcileRequestPreviousConfigUnion$outboundSchema.parse( - syncReconcileRequestPreviousConfigUnion, - ), - ); -} - -/** @internal */ -export const StackStateStateStatus$outboundSchema: z.ZodEnum< - typeof StackStateStateStatus -> = z.enum(StackStateStateStatus); - -/** @internal */ -export type SyncReconcileRequestStackStateResources$Outbound = { - _internal?: any | null | undefined; - config: SyncReconcileRequestStackStateConfig$Outbound; - controllerPlatform?: string | any | null | undefined; - dependencies?: - | Array - | undefined; - error?: SyncReconcileRequestStackStateError$Outbound | any | null | undefined; - lastFailedState?: any | null | undefined; - lifecycle?: string | any | null | undefined; - outputs?: SyncReconcileRequestOutputs$Outbound | any | null | undefined; - previousConfig?: - | SyncReconcileRequestPreviousConfig$Outbound - | any - | null - | undefined; - remoteBindingParams?: any | null | undefined; - retryAttempt?: number | undefined; - status: string; - type: string; -}; - -/** @internal */ -export const SyncReconcileRequestStackStateResources$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateResources$Outbound, - SyncReconcileRequestStackStateResources -> = z.object({ - internal: z.nullable(z.any()).optional(), - config: z.lazy(() => SyncReconcileRequestStackStateConfig$outboundSchema), - controllerPlatform: z.nullable( - z.union([ControllerPlatformStateEnum$outboundSchema, z.any()]), - ).optional(), - dependencies: z.array( - z.lazy(() => SyncReconcileRequestStackStateDependency$outboundSchema), - ).optional(), - error: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestStackStateError$outboundSchema), - z.any(), - ]), - ).optional(), - lastFailedState: z.nullable(z.any()).optional(), - lifecycle: z.nullable( - z.union([StackStateLifecycleStateEnum$outboundSchema, z.any()]), - ).optional(), - outputs: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestOutputs$outboundSchema), - z.any(), - ]), - ).optional(), - previousConfig: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestPreviousConfig$outboundSchema), - z.any(), - ]), - ).optional(), - remoteBindingParams: z.nullable(z.any()).optional(), - retryAttempt: z.int().optional(), - status: StackStateStateStatus$outboundSchema, - type: z.string(), -}).transform((v) => { - return remap$(v, { - internal: "_internal", - }); -}); - -export function syncReconcileRequestStackStateResourcesToJSON( - syncReconcileRequestStackStateResources: - SyncReconcileRequestStackStateResources, -): string { - return JSON.stringify( - SyncReconcileRequestStackStateResources$outboundSchema.parse( - syncReconcileRequestStackStateResources, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestStackState$Outbound = { - platform: string; - resourcePrefix: string; - resources: { [k: string]: SyncReconcileRequestStackStateResources$Outbound }; -}; - -/** @internal */ -export const SyncReconcileRequestStackState$outboundSchema: z.ZodType< - SyncReconcileRequestStackState$Outbound, - SyncReconcileRequestStackState -> = z.object({ - platform: SyncReconcileRequestStackStatePlatform$outboundSchema, - resourcePrefix: z.string(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileRequestStackStateResources$outboundSchema), - ), -}); - -export function syncReconcileRequestStackStateToJSON( - syncReconcileRequestStackState: SyncReconcileRequestStackState, -): string { - return JSON.stringify( - SyncReconcileRequestStackState$outboundSchema.parse( - syncReconcileRequestStackState, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestStackStateUnion$Outbound = - | SyncReconcileRequestStackState$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestStackStateUnion$outboundSchema: z.ZodType< - SyncReconcileRequestStackStateUnion$Outbound, - SyncReconcileRequestStackStateUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestStackState$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestStackStateUnionToJSON( - syncReconcileRequestStackStateUnion: SyncReconcileRequestStackStateUnion, -): string { - return JSON.stringify( - SyncReconcileRequestStackStateUnion$outboundSchema.parse( - syncReconcileRequestStackStateUnion, - ), - ); -} - -/** @internal */ -export const StateStatus$outboundSchema: z.ZodEnum = z.enum( - StateStatus, -); - -/** @internal */ -export const SyncReconcileRequestTargetReleaseTypeStringList$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseTypeStringList, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseDefaultStringList$Outbound = { - type: string; - value: Array; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseDefaultStringList$Outbound, - SyncReconcileRequestTargetReleaseDefaultStringList - > = z.object({ - type: SyncReconcileRequestTargetReleaseTypeStringList$outboundSchema, - value: z.array(z.string()), - }); - -export function syncReconcileRequestTargetReleaseDefaultStringListToJSON( - syncReconcileRequestTargetReleaseDefaultStringList: - SyncReconcileRequestTargetReleaseDefaultStringList, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema.parse( - syncReconcileRequestTargetReleaseDefaultStringList, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestTargetReleaseTypeBoolean$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseTypeBoolean, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound = { - type: string; - value: boolean; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound, - SyncReconcileRequestTargetReleaseDefaultBoolean - > = z.object({ - type: SyncReconcileRequestTargetReleaseTypeBoolean$outboundSchema, - value: z.boolean(), - }); - -export function syncReconcileRequestTargetReleaseDefaultBooleanToJSON( - syncReconcileRequestTargetReleaseDefaultBoolean: - SyncReconcileRequestTargetReleaseDefaultBoolean, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema.parse( - syncReconcileRequestTargetReleaseDefaultBoolean, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestTargetReleaseTypeNumber$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseTypeNumber, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseDefaultNumber$Outbound = { - type: string; - value: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseDefaultNumber$Outbound, - SyncReconcileRequestTargetReleaseDefaultNumber - > = z.object({ - type: SyncReconcileRequestTargetReleaseTypeNumber$outboundSchema, - value: z.string(), - }); - -export function syncReconcileRequestTargetReleaseDefaultNumberToJSON( - syncReconcileRequestTargetReleaseDefaultNumber: - SyncReconcileRequestTargetReleaseDefaultNumber, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema.parse( - syncReconcileRequestTargetReleaseDefaultNumber, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestTargetReleaseTypeString$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseTypeString, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseDefaultString$Outbound = { - type: string; - value: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseDefaultString$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseDefaultString$Outbound, - SyncReconcileRequestTargetReleaseDefaultString - > = z.object({ - type: SyncReconcileRequestTargetReleaseTypeString$outboundSchema, - value: z.string(), - }); - -export function syncReconcileRequestTargetReleaseDefaultStringToJSON( - syncReconcileRequestTargetReleaseDefaultString: - SyncReconcileRequestTargetReleaseDefaultString, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseDefaultString$outboundSchema.parse( - syncReconcileRequestTargetReleaseDefaultString, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseDefaultUnion$Outbound = - | SyncReconcileRequestTargetReleaseDefaultString$Outbound - | SyncReconcileRequestTargetReleaseDefaultNumber$Outbound - | SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound - | SyncReconcileRequestTargetReleaseDefaultStringList$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseDefaultUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseDefaultUnion$Outbound, - SyncReconcileRequestTargetReleaseDefaultUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseDefaultString$outboundSchema), - z.lazy(() => SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema), - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema - ), - z.any(), - ]); - -export function syncReconcileRequestTargetReleaseDefaultUnionToJSON( - syncReconcileRequestTargetReleaseDefaultUnion: - SyncReconcileRequestTargetReleaseDefaultUnion, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseDefaultUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseDefaultUnion, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseTypeEnvEnum, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseTypeUnion$Outbound = string | any; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseTypeUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseTypeUnion$Outbound, - SyncReconcileRequestTargetReleaseTypeUnion - > = z.union([ - SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema, - z.any(), - ]); - -export function syncReconcileRequestTargetReleaseTypeUnionToJSON( - syncReconcileRequestTargetReleaseTypeUnion: - SyncReconcileRequestTargetReleaseTypeUnion, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseTypeUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseTypeUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseEnv$Outbound = { - name: string; - targetResources?: Array | null | undefined; - type?: string | any | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseEnv$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseEnv$Outbound, - SyncReconcileRequestTargetReleaseEnv -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema, - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileRequestTargetReleaseEnvToJSON( - syncReconcileRequestTargetReleaseEnv: SyncReconcileRequestTargetReleaseEnv, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseEnv$outboundSchema.parse( - syncReconcileRequestTargetReleaseEnv, - ), - ); -} - -/** @internal */ -export const TargetReleaseStateKind$outboundSchema: z.ZodEnum< - typeof TargetReleaseStateKind -> = z.enum(TargetReleaseStateKind); - -/** @internal */ -export const SyncReconcileRequestTargetReleasePlatform$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleasePlatform, - ); - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProvidedBy$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseProvidedBy, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseValidation$Outbound = { - format?: string | null | undefined; - max?: string | null | undefined; - maxItems?: number | null | undefined; - maxLength?: number | null | undefined; - min?: string | null | undefined; - minItems?: number | null | undefined; - minLength?: number | null | undefined; - pattern?: string | null | undefined; - values?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseValidation$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseValidation$Outbound, - SyncReconcileRequestTargetReleaseValidation - > = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestTargetReleaseValidationToJSON( - syncReconcileRequestTargetReleaseValidation: - SyncReconcileRequestTargetReleaseValidation, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseValidation$outboundSchema.parse( - syncReconcileRequestTargetReleaseValidation, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseValidationUnion$Outbound = - | SyncReconcileRequestTargetReleaseValidation$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseValidationUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseValidationUnion$Outbound, - SyncReconcileRequestTargetReleaseValidationUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseValidation$outboundSchema), - z.any(), - ]); - -export function syncReconcileRequestTargetReleaseValidationUnionToJSON( - syncReconcileRequestTargetReleaseValidationUnion: - SyncReconcileRequestTargetReleaseValidationUnion, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseValidationUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseValidationUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseInput$Outbound = { - default?: - | SyncReconcileRequestTargetReleaseDefaultString$Outbound - | SyncReconcileRequestTargetReleaseDefaultNumber$Outbound - | SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound - | SyncReconcileRequestTargetReleaseDefaultStringList$Outbound - | any - | null - | undefined; - description: string; - env?: Array | undefined; - id: string; - kind: string; - label: string; - placeholder?: string | null | undefined; - platforms?: Array | null | undefined; - providedBy: Array; - required: boolean; - validation?: - | SyncReconcileRequestTargetReleaseValidation$Outbound - | any - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseInput$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseInput$Outbound, - SyncReconcileRequestTargetReleaseInput -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultString$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema - ), - z.lazy(() => - SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array( - z.lazy(() => SyncReconcileRequestTargetReleaseEnv$outboundSchema), - ).optional(), - id: z.string(), - kind: TargetReleaseStateKind$outboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncReconcileRequestTargetReleasePlatform$outboundSchema), - ).optional(), - providedBy: z.array( - SyncReconcileRequestTargetReleaseProvidedBy$outboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseValidation$outboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileRequestTargetReleaseInputToJSON( - syncReconcileRequestTargetReleaseInput: - SyncReconcileRequestTargetReleaseInput, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseInput$outboundSchema.parse( - syncReconcileRequestTargetReleaseInput, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseManagementEnum, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAwResource$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAwResource$Outbound, - SyncReconcileRequestTargetReleaseOverrideAwResource - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestTargetReleaseOverrideAwResourceToJSON( - syncReconcileRequestTargetReleaseOverrideAwResource: - SyncReconcileRequestTargetReleaseOverrideAwResource, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAwResource$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAwResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound, - SyncReconcileRequestTargetReleaseOverrideAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestTargetReleaseOverrideAwStackToJSON( - syncReconcileRequestTargetReleaseOverrideAwStack: - SyncReconcileRequestTargetReleaseOverrideAwStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAwStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound = { - resource?: - | SyncReconcileRequestTargetReleaseOverrideAwResource$Outbound - | undefined; - stack?: SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound, - SyncReconcileRequestTargetReleaseOverrideAwBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAwResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseOverrideAwBindingToJSON( - syncReconcileRequestTargetReleaseOverrideAwBinding: - SyncReconcileRequestTargetReleaseOverrideAwBinding, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAwBinding, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseOverrideEffect, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound, - SyncReconcileRequestTargetReleaseOverrideAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestTargetReleaseOverrideAwGrantToJSON( - syncReconcileRequestTargetReleaseOverrideAwGrant: - SyncReconcileRequestTargetReleaseOverrideAwGrant, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAwGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAw$Outbound = { - binding: SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAw$Outbound, - SyncReconcileRequestTargetReleaseOverrideAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestTargetReleaseOverrideEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestTargetReleaseOverrideAwToJSON( - syncReconcileRequestTargetReleaseOverrideAw: - SyncReconcileRequestTargetReleaseOverrideAw, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAw, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAzureResource$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAzureResource$Outbound, - SyncReconcileRequestTargetReleaseOverrideAzureResource - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseOverrideAzureResourceToJSON( - syncReconcileRequestTargetReleaseOverrideAzureResource: - SyncReconcileRequestTargetReleaseOverrideAzureResource, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAzureResource$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAzureResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound, - SyncReconcileRequestTargetReleaseOverrideAzureStack - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseOverrideAzureStackToJSON( - syncReconcileRequestTargetReleaseOverrideAzureStack: - SyncReconcileRequestTargetReleaseOverrideAzureStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAzureStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound = { - resource?: - | SyncReconcileRequestTargetReleaseOverrideAzureResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound, - SyncReconcileRequestTargetReleaseOverrideAzureBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseOverrideAzureBindingToJSON( - syncReconcileRequestTargetReleaseOverrideAzureBinding: - SyncReconcileRequestTargetReleaseOverrideAzureBinding, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAzureBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound, - SyncReconcileRequestTargetReleaseOverrideAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestTargetReleaseOverrideAzureGrantToJSON( - syncReconcileRequestTargetReleaseOverrideAzureGrant: - SyncReconcileRequestTargetReleaseOverrideAzureGrant, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAzureGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideAzure$Outbound = { - binding: SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideAzure$Outbound, - SyncReconcileRequestTargetReleaseOverrideAzure - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestTargetReleaseOverrideAzureToJSON( - syncReconcileRequestTargetReleaseOverrideAzure: - SyncReconcileRequestTargetReleaseOverrideAzure, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideAzure, - ), - ); -} - -/** @internal */ -export type TargetReleaseOverrideConditionStateResource$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const TargetReleaseOverrideConditionStateResource$outboundSchema: - z.ZodType< - TargetReleaseOverrideConditionStateResource$Outbound, - TargetReleaseOverrideConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function targetReleaseOverrideConditionStateResourceToJSON( - targetReleaseOverrideConditionStateResource: - TargetReleaseOverrideConditionStateResource, -): string { - return JSON.stringify( - TargetReleaseOverrideConditionStateResource$outboundSchema.parse( - targetReleaseOverrideConditionStateResource, - ), - ); -} - -/** @internal */ -export type TargetReleaseOverrideStateResourceConditionUnion$Outbound = - | TargetReleaseOverrideConditionStateResource$Outbound - | any; - -/** @internal */ -export const TargetReleaseOverrideStateResourceConditionUnion$outboundSchema: - z.ZodType< - TargetReleaseOverrideStateResourceConditionUnion$Outbound, - TargetReleaseOverrideStateResourceConditionUnion - > = z.union([ - z.lazy(() => TargetReleaseOverrideConditionStateResource$outboundSchema), - z.any(), - ]); - -export function targetReleaseOverrideStateResourceConditionUnionToJSON( - targetReleaseOverrideStateResourceConditionUnion: - TargetReleaseOverrideStateResourceConditionUnion, -): string { - return JSON.stringify( - TargetReleaseOverrideStateResourceConditionUnion$outboundSchema.parse( - targetReleaseOverrideStateResourceConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideGcpResource$Outbound = { - condition?: - | TargetReleaseOverrideConditionStateResource$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideGcpResource$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideGcpResource$Outbound, - SyncReconcileRequestTargetReleaseOverrideGcpResource - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => - TargetReleaseOverrideConditionStateResource$outboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseOverrideGcpResourceToJSON( - syncReconcileRequestTargetReleaseOverrideGcpResource: - SyncReconcileRequestTargetReleaseOverrideGcpResource, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideGcpResource$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideGcpResource, - ), - ); -} - -/** @internal */ -export type TargetReleaseOverrideConditionState$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const TargetReleaseOverrideConditionState$outboundSchema: z.ZodType< - TargetReleaseOverrideConditionState$Outbound, - TargetReleaseOverrideConditionState -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function targetReleaseOverrideConditionStateToJSON( - targetReleaseOverrideConditionState: TargetReleaseOverrideConditionState, -): string { - return JSON.stringify( - TargetReleaseOverrideConditionState$outboundSchema.parse( - targetReleaseOverrideConditionState, - ), - ); -} - -/** @internal */ -export type TargetReleaseOverrideStateConditionUnion$Outbound = - | TargetReleaseOverrideConditionState$Outbound - | any; - -/** @internal */ -export const TargetReleaseOverrideStateConditionUnion$outboundSchema: z.ZodType< - TargetReleaseOverrideStateConditionUnion$Outbound, - TargetReleaseOverrideStateConditionUnion -> = z.union([ - z.lazy(() => TargetReleaseOverrideConditionState$outboundSchema), - z.any(), -]); - -export function targetReleaseOverrideStateConditionUnionToJSON( - targetReleaseOverrideStateConditionUnion: - TargetReleaseOverrideStateConditionUnion, -): string { - return JSON.stringify( - TargetReleaseOverrideStateConditionUnion$outboundSchema.parse( - targetReleaseOverrideStateConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound = { - condition?: - | TargetReleaseOverrideConditionState$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound, - SyncReconcileRequestTargetReleaseOverrideGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => TargetReleaseOverrideConditionState$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseOverrideGcpStackToJSON( - syncReconcileRequestTargetReleaseOverrideGcpStack: - SyncReconcileRequestTargetReleaseOverrideGcpStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideGcpStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound = { - resource?: - | SyncReconcileRequestTargetReleaseOverrideGcpResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound, - SyncReconcileRequestTargetReleaseOverrideGcpBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideGcpResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseOverrideGcpBindingToJSON( - syncReconcileRequestTargetReleaseOverrideGcpBinding: - SyncReconcileRequestTargetReleaseOverrideGcpBinding, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideGcpBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound, - SyncReconcileRequestTargetReleaseOverrideGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestTargetReleaseOverrideGcpGrantToJSON( - syncReconcileRequestTargetReleaseOverrideGcpGrant: - SyncReconcileRequestTargetReleaseOverrideGcpGrant, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideGcpGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideGcp$Outbound = { - binding: SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideGcp$Outbound, - SyncReconcileRequestTargetReleaseOverrideGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestTargetReleaseOverrideGcpToJSON( - syncReconcileRequestTargetReleaseOverrideGcp: - SyncReconcileRequestTargetReleaseOverrideGcp, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideGcp, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound, - SyncReconcileRequestTargetReleaseOverridePlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema - )), - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseOverridePlatformsToJSON( - syncReconcileRequestTargetReleaseOverridePlatforms: - SyncReconcileRequestTargetReleaseOverridePlatforms, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverridePlatforms, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverride$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverride$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverride$Outbound, - SyncReconcileRequestTargetReleaseOverride - > = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema - ), - }); - -export function syncReconcileRequestTargetReleaseOverrideToJSON( - syncReconcileRequestTargetReleaseOverride: - SyncReconcileRequestTargetReleaseOverride, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverride$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverride, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseOverrideUnion$Outbound = - | SyncReconcileRequestTargetReleaseOverride$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseOverrideUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseOverrideUnion$Outbound, - SyncReconcileRequestTargetReleaseOverrideUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseOverride$outboundSchema), - z.string(), - ]); - -export function syncReconcileRequestTargetReleaseOverrideUnionToJSON( - syncReconcileRequestTargetReleaseOverrideUnion: - SyncReconcileRequestTargetReleaseOverrideUnion, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseOverrideUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseOverrideUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseManagement2$Outbound = { - override: { - [k: string]: Array< - SyncReconcileRequestTargetReleaseOverride$Outbound | string - >; - }; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseManagement2$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseManagement2$Outbound, - SyncReconcileRequestTargetReleaseManagement2 - > = z.object({ - override: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseOverride$outboundSchema), - z.string(), - ])), - ), - }); - -export function syncReconcileRequestTargetReleaseManagement2ToJSON( - syncReconcileRequestTargetReleaseManagement2: - SyncReconcileRequestTargetReleaseManagement2, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseManagement2$outboundSchema.parse( - syncReconcileRequestTargetReleaseManagement2, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAwResource$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendAwResource$Outbound, - SyncReconcileRequestTargetReleaseExtendAwResource - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestTargetReleaseExtendAwResourceToJSON( - syncReconcileRequestTargetReleaseExtendAwResource: - SyncReconcileRequestTargetReleaseExtendAwResource, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAwResource$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAwResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendAwStack$Outbound, - SyncReconcileRequestTargetReleaseExtendAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestTargetReleaseExtendAwStackToJSON( - syncReconcileRequestTargetReleaseExtendAwStack: - SyncReconcileRequestTargetReleaseExtendAwStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAwStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound = { - resource?: - | SyncReconcileRequestTargetReleaseExtendAwResource$Outbound - | undefined; - stack?: SyncReconcileRequestTargetReleaseExtendAwStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound, - SyncReconcileRequestTargetReleaseExtendAwBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAwResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseExtendAwBindingToJSON( - syncReconcileRequestTargetReleaseExtendAwBinding: - SyncReconcileRequestTargetReleaseExtendAwBinding, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAwBinding, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseExtendEffect, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound, - SyncReconcileRequestTargetReleaseExtendAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestTargetReleaseExtendAwGrantToJSON( - syncReconcileRequestTargetReleaseExtendAwGrant: - SyncReconcileRequestTargetReleaseExtendAwGrant, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAwGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAw$Outbound = { - binding: SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAw$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendAw$Outbound, - SyncReconcileRequestTargetReleaseExtendAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestTargetReleaseExtendEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestTargetReleaseExtendAwToJSON( - syncReconcileRequestTargetReleaseExtendAw: - SyncReconcileRequestTargetReleaseExtendAw, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAw$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAw, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAzureResource$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendAzureResource$Outbound, - SyncReconcileRequestTargetReleaseExtendAzureResource - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseExtendAzureResourceToJSON( - syncReconcileRequestTargetReleaseExtendAzureResource: - SyncReconcileRequestTargetReleaseExtendAzureResource, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAzureResource$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAzureResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound, - SyncReconcileRequestTargetReleaseExtendAzureStack - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseExtendAzureStackToJSON( - syncReconcileRequestTargetReleaseExtendAzureStack: - SyncReconcileRequestTargetReleaseExtendAzureStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAzureStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound = { - resource?: - | SyncReconcileRequestTargetReleaseExtendAzureResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound, - SyncReconcileRequestTargetReleaseExtendAzureBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseExtendAzureBindingToJSON( - syncReconcileRequestTargetReleaseExtendAzureBinding: - SyncReconcileRequestTargetReleaseExtendAzureBinding, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAzureBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound, - SyncReconcileRequestTargetReleaseExtendAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestTargetReleaseExtendAzureGrantToJSON( - syncReconcileRequestTargetReleaseExtendAzureGrant: - SyncReconcileRequestTargetReleaseExtendAzureGrant, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAzureGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendAzure$Outbound = { - binding: SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendAzure$Outbound, - SyncReconcileRequestTargetReleaseExtendAzure - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestTargetReleaseExtendAzureToJSON( - syncReconcileRequestTargetReleaseExtendAzure: - SyncReconcileRequestTargetReleaseExtendAzure, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendAzure, - ), - ); -} - -/** @internal */ -export type TargetReleaseExtendConditionStateResource$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const TargetReleaseExtendConditionStateResource$outboundSchema: - z.ZodType< - TargetReleaseExtendConditionStateResource$Outbound, - TargetReleaseExtendConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function targetReleaseExtendConditionStateResourceToJSON( - targetReleaseExtendConditionStateResource: - TargetReleaseExtendConditionStateResource, -): string { - return JSON.stringify( - TargetReleaseExtendConditionStateResource$outboundSchema.parse( - targetReleaseExtendConditionStateResource, - ), - ); -} - -/** @internal */ -export type TargetReleaseExtendStateResourceConditionUnion$Outbound = - | TargetReleaseExtendConditionStateResource$Outbound - | any; - -/** @internal */ -export const TargetReleaseExtendStateResourceConditionUnion$outboundSchema: - z.ZodType< - TargetReleaseExtendStateResourceConditionUnion$Outbound, - TargetReleaseExtendStateResourceConditionUnion - > = z.union([ - z.lazy(() => TargetReleaseExtendConditionStateResource$outboundSchema), - z.any(), - ]); - -export function targetReleaseExtendStateResourceConditionUnionToJSON( - targetReleaseExtendStateResourceConditionUnion: - TargetReleaseExtendStateResourceConditionUnion, -): string { - return JSON.stringify( - TargetReleaseExtendStateResourceConditionUnion$outboundSchema.parse( - targetReleaseExtendStateResourceConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendGcpResource$Outbound = { - condition?: - | TargetReleaseExtendConditionStateResource$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendGcpResource$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendGcpResource$Outbound, - SyncReconcileRequestTargetReleaseExtendGcpResource - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => TargetReleaseExtendConditionStateResource$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseExtendGcpResourceToJSON( - syncReconcileRequestTargetReleaseExtendGcpResource: - SyncReconcileRequestTargetReleaseExtendGcpResource, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendGcpResource$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendGcpResource, - ), - ); -} - -/** @internal */ -export type TargetReleaseExtendConditionState$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const TargetReleaseExtendConditionState$outboundSchema: z.ZodType< - TargetReleaseExtendConditionState$Outbound, - TargetReleaseExtendConditionState -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function targetReleaseExtendConditionStateToJSON( - targetReleaseExtendConditionState: TargetReleaseExtendConditionState, -): string { - return JSON.stringify( - TargetReleaseExtendConditionState$outboundSchema.parse( - targetReleaseExtendConditionState, - ), - ); -} - -/** @internal */ -export type TargetReleaseExtendStateConditionUnion$Outbound = - | TargetReleaseExtendConditionState$Outbound - | any; - -/** @internal */ -export const TargetReleaseExtendStateConditionUnion$outboundSchema: z.ZodType< - TargetReleaseExtendStateConditionUnion$Outbound, - TargetReleaseExtendStateConditionUnion -> = z.union([ - z.lazy(() => TargetReleaseExtendConditionState$outboundSchema), - z.any(), -]); - -export function targetReleaseExtendStateConditionUnionToJSON( - targetReleaseExtendStateConditionUnion: - TargetReleaseExtendStateConditionUnion, -): string { - return JSON.stringify( - TargetReleaseExtendStateConditionUnion$outboundSchema.parse( - targetReleaseExtendStateConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound = { - condition?: - | TargetReleaseExtendConditionState$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound, - SyncReconcileRequestTargetReleaseExtendGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => TargetReleaseExtendConditionState$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseExtendGcpStackToJSON( - syncReconcileRequestTargetReleaseExtendGcpStack: - SyncReconcileRequestTargetReleaseExtendGcpStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendGcpStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound = { - resource?: - | SyncReconcileRequestTargetReleaseExtendGcpResource$Outbound - | undefined; - stack?: SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound, - SyncReconcileRequestTargetReleaseExtendGcpBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendGcpResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseExtendGcpBindingToJSON( - syncReconcileRequestTargetReleaseExtendGcpBinding: - SyncReconcileRequestTargetReleaseExtendGcpBinding, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendGcpBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound, - SyncReconcileRequestTargetReleaseExtendGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestTargetReleaseExtendGcpGrantToJSON( - syncReconcileRequestTargetReleaseExtendGcpGrant: - SyncReconcileRequestTargetReleaseExtendGcpGrant, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendGcpGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendGcp$Outbound = { - binding: SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendGcp$Outbound, - SyncReconcileRequestTargetReleaseExtendGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestTargetReleaseExtendGcpToJSON( - syncReconcileRequestTargetReleaseExtendGcp: - SyncReconcileRequestTargetReleaseExtendGcp, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendGcp, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound, - SyncReconcileRequestTargetReleaseExtendPlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema - )), - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseExtendPlatformsToJSON( - syncReconcileRequestTargetReleaseExtendPlatforms: - SyncReconcileRequestTargetReleaseExtendPlatforms, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendPlatforms, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtend$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtend$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseExtend$Outbound, - SyncReconcileRequestTargetReleaseExtend -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema - ), -}); - -export function syncReconcileRequestTargetReleaseExtendToJSON( - syncReconcileRequestTargetReleaseExtend: - SyncReconcileRequestTargetReleaseExtend, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtend$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtend, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseExtendUnion$Outbound = - | SyncReconcileRequestTargetReleaseExtend$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseExtendUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseExtendUnion$Outbound, - SyncReconcileRequestTargetReleaseExtendUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseExtend$outboundSchema), - z.string(), - ]); - -export function syncReconcileRequestTargetReleaseExtendUnionToJSON( - syncReconcileRequestTargetReleaseExtendUnion: - SyncReconcileRequestTargetReleaseExtendUnion, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseExtendUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseExtendUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseManagement1$Outbound = { - extend: { - [k: string]: Array< - SyncReconcileRequestTargetReleaseExtend$Outbound | string - >; - }; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseManagement1$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseManagement1$Outbound, - SyncReconcileRequestTargetReleaseManagement1 - > = z.object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseExtend$outboundSchema), - z.string(), - ])), - ), - }); - -export function syncReconcileRequestTargetReleaseManagement1ToJSON( - syncReconcileRequestTargetReleaseManagement1: - SyncReconcileRequestTargetReleaseManagement1, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseManagement1$outboundSchema.parse( - syncReconcileRequestTargetReleaseManagement1, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseManagementUnion$Outbound = - | SyncReconcileRequestTargetReleaseManagement1$Outbound - | SyncReconcileRequestTargetReleaseManagement2$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseManagementUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseManagementUnion$Outbound, - SyncReconcileRequestTargetReleaseManagementUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseManagement1$outboundSchema), - z.lazy(() => SyncReconcileRequestTargetReleaseManagement2$outboundSchema), - SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema, - ]); - -export function syncReconcileRequestTargetReleaseManagementUnionToJSON( - syncReconcileRequestTargetReleaseManagementUnion: - SyncReconcileRequestTargetReleaseManagementUnion, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseManagementUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseManagementUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAwResource$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAwResource$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAwResource$Outbound, - SyncReconcileRequestTargetReleaseProfileAwResource - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestTargetReleaseProfileAwResourceToJSON( - syncReconcileRequestTargetReleaseProfileAwResource: - SyncReconcileRequestTargetReleaseProfileAwResource, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAwResource$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAwResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAwStack$Outbound = { - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - resources: Array; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAwStack$Outbound, - SyncReconcileRequestTargetReleaseProfileAwStack - > = z.object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileRequestTargetReleaseProfileAwStackToJSON( - syncReconcileRequestTargetReleaseProfileAwStack: - SyncReconcileRequestTargetReleaseProfileAwStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAwStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound = { - resource?: - | SyncReconcileRequestTargetReleaseProfileAwResource$Outbound - | undefined; - stack?: SyncReconcileRequestTargetReleaseProfileAwStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound, - SyncReconcileRequestTargetReleaseProfileAwBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAwResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAwStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseProfileAwBindingToJSON( - syncReconcileRequestTargetReleaseProfileAwBinding: - SyncReconcileRequestTargetReleaseProfileAwBinding, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAwBinding, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileEffect$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseProfileEffect, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound, - SyncReconcileRequestTargetReleaseProfileAwGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestTargetReleaseProfileAwGrantToJSON( - syncReconcileRequestTargetReleaseProfileAwGrant: - SyncReconcileRequestTargetReleaseProfileAwGrant, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAwGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAw$Outbound = { - binding: SyncReconcileRequestTargetReleaseProfileAwBinding$Outbound; - description?: string | null | undefined; - effect?: string | undefined; - grant: SyncReconcileRequestTargetReleaseProfileAwGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAw$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAw$Outbound, - SyncReconcileRequestTargetReleaseProfileAw - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAwBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileRequestTargetReleaseProfileEffect$outboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAwGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestTargetReleaseProfileAwToJSON( - syncReconcileRequestTargetReleaseProfileAw: - SyncReconcileRequestTargetReleaseProfileAw, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAw$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAw, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAzureResource$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAzureResource$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAzureResource$Outbound, - SyncReconcileRequestTargetReleaseProfileAzureResource - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseProfileAzureResourceToJSON( - syncReconcileRequestTargetReleaseProfileAzureResource: - SyncReconcileRequestTargetReleaseProfileAzureResource, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAzureResource$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAzureResource, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound = { - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound, - SyncReconcileRequestTargetReleaseProfileAzureStack - > = z.object({ - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseProfileAzureStackToJSON( - syncReconcileRequestTargetReleaseProfileAzureStack: - SyncReconcileRequestTargetReleaseProfileAzureStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAzureStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound = { - resource?: - | SyncReconcileRequestTargetReleaseProfileAzureResource$Outbound - | undefined; - stack?: - | SyncReconcileRequestTargetReleaseProfileAzureStack$Outbound - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound, - SyncReconcileRequestTargetReleaseProfileAzureBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAzureResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAzureStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseProfileAzureBindingToJSON( - syncReconcileRequestTargetReleaseProfileAzureBinding: - SyncReconcileRequestTargetReleaseProfileAzureBinding, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAzureBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound, - SyncReconcileRequestTargetReleaseProfileAzureGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestTargetReleaseProfileAzureGrantToJSON( - syncReconcileRequestTargetReleaseProfileAzureGrant: - SyncReconcileRequestTargetReleaseProfileAzureGrant, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAzureGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileAzure$Outbound = { - binding: SyncReconcileRequestTargetReleaseProfileAzureBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseProfileAzureGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileAzure$Outbound, - SyncReconcileRequestTargetReleaseProfileAzure - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAzureBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAzureGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestTargetReleaseProfileAzureToJSON( - syncReconcileRequestTargetReleaseProfileAzure: - SyncReconcileRequestTargetReleaseProfileAzure, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileAzure, - ), - ); -} - -/** @internal */ -export type TargetReleaseProfileConditionStateResource$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const TargetReleaseProfileConditionStateResource$outboundSchema: - z.ZodType< - TargetReleaseProfileConditionStateResource$Outbound, - TargetReleaseProfileConditionStateResource - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function targetReleaseProfileConditionStateResourceToJSON( - targetReleaseProfileConditionStateResource: - TargetReleaseProfileConditionStateResource, -): string { - return JSON.stringify( - TargetReleaseProfileConditionStateResource$outboundSchema.parse( - targetReleaseProfileConditionStateResource, - ), - ); -} - -/** @internal */ -export type TargetReleaseProfileStateResourceConditionUnion$Outbound = - | TargetReleaseProfileConditionStateResource$Outbound - | any; - -/** @internal */ -export const TargetReleaseProfileStateResourceConditionUnion$outboundSchema: - z.ZodType< - TargetReleaseProfileStateResourceConditionUnion$Outbound, - TargetReleaseProfileStateResourceConditionUnion - > = z.union([ - z.lazy(() => TargetReleaseProfileConditionStateResource$outboundSchema), - z.any(), - ]); - -export function targetReleaseProfileStateResourceConditionUnionToJSON( - targetReleaseProfileStateResourceConditionUnion: - TargetReleaseProfileStateResourceConditionUnion, -): string { - return JSON.stringify( - TargetReleaseProfileStateResourceConditionUnion$outboundSchema.parse( - targetReleaseProfileStateResourceConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileGcpResource$Outbound = { - condition?: - | TargetReleaseProfileConditionStateResource$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileGcpResource$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileGcpResource$Outbound, - SyncReconcileRequestTargetReleaseProfileGcpResource - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => TargetReleaseProfileConditionStateResource$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseProfileGcpResourceToJSON( - syncReconcileRequestTargetReleaseProfileGcpResource: - SyncReconcileRequestTargetReleaseProfileGcpResource, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileGcpResource$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileGcpResource, - ), - ); -} - -/** @internal */ -export type TargetReleaseProfileConditionState$Outbound = { - expression: string; - title: string; -}; - -/** @internal */ -export const TargetReleaseProfileConditionState$outboundSchema: z.ZodType< - TargetReleaseProfileConditionState$Outbound, - TargetReleaseProfileConditionState -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function targetReleaseProfileConditionStateToJSON( - targetReleaseProfileConditionState: TargetReleaseProfileConditionState, -): string { - return JSON.stringify( - TargetReleaseProfileConditionState$outboundSchema.parse( - targetReleaseProfileConditionState, - ), - ); -} - -/** @internal */ -export type TargetReleaseProfileStateConditionUnion$Outbound = - | TargetReleaseProfileConditionState$Outbound - | any; - -/** @internal */ -export const TargetReleaseProfileStateConditionUnion$outboundSchema: z.ZodType< - TargetReleaseProfileStateConditionUnion$Outbound, - TargetReleaseProfileStateConditionUnion -> = z.union([ - z.lazy(() => TargetReleaseProfileConditionState$outboundSchema), - z.any(), -]); - -export function targetReleaseProfileStateConditionUnionToJSON( - targetReleaseProfileStateConditionUnion: - TargetReleaseProfileStateConditionUnion, -): string { - return JSON.stringify( - TargetReleaseProfileStateConditionUnion$outboundSchema.parse( - targetReleaseProfileStateConditionUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound = { - condition?: - | TargetReleaseProfileConditionState$Outbound - | any - | null - | undefined; - scope: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound, - SyncReconcileRequestTargetReleaseProfileGcpStack - > = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => TargetReleaseProfileConditionState$outboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileRequestTargetReleaseProfileGcpStackToJSON( - syncReconcileRequestTargetReleaseProfileGcpStack: - SyncReconcileRequestTargetReleaseProfileGcpStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileGcpStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound = { - resource?: - | SyncReconcileRequestTargetReleaseProfileGcpResource$Outbound - | undefined; - stack?: SyncReconcileRequestTargetReleaseProfileGcpStack$Outbound | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound, - SyncReconcileRequestTargetReleaseProfileGcpBinding - > = z.object({ - resource: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileGcpResource$outboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileGcpStack$outboundSchema - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseProfileGcpBindingToJSON( - syncReconcileRequestTargetReleaseProfileGcpBinding: - SyncReconcileRequestTargetReleaseProfileGcpBinding, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileGcpBinding, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound = { - actions?: Array | null | undefined; - dataActions?: Array | null | undefined; - permissions?: Array | null | undefined; - predefinedRoles?: Array | null | undefined; - residualPermissions?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound, - SyncReconcileRequestTargetReleaseProfileGcpGrant - > = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileRequestTargetReleaseProfileGcpGrantToJSON( - syncReconcileRequestTargetReleaseProfileGcpGrant: - SyncReconcileRequestTargetReleaseProfileGcpGrant, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileGcpGrant, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileGcp$Outbound = { - binding: SyncReconcileRequestTargetReleaseProfileGcpBinding$Outbound; - description?: string | null | undefined; - grant: SyncReconcileRequestTargetReleaseProfileGcpGrant$Outbound; - label?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileGcp$Outbound, - SyncReconcileRequestTargetReleaseProfileGcp - > = z.object({ - binding: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileGcpBinding$outboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileRequestTargetReleaseProfileGcpGrant$outboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileRequestTargetReleaseProfileGcpToJSON( - syncReconcileRequestTargetReleaseProfileGcp: - SyncReconcileRequestTargetReleaseProfileGcp, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileGcp, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound = { - aws?: - | Array - | null - | undefined; - azure?: - | Array - | null - | undefined; - gcp?: - | Array - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound, - SyncReconcileRequestTargetReleaseProfilePlatforms - > = z.object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAw$outboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseProfileAzure$outboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileRequestTargetReleaseProfileGcp$outboundSchema - )), - ).optional(), - }); - -export function syncReconcileRequestTargetReleaseProfilePlatformsToJSON( - syncReconcileRequestTargetReleaseProfilePlatforms: - SyncReconcileRequestTargetReleaseProfilePlatforms, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfilePlatforms, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfile$Outbound = { - description: string; - id: string; - platforms: SyncReconcileRequestTargetReleaseProfilePlatforms$Outbound; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfile$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseProfile$Outbound, - SyncReconcileRequestTargetReleaseProfile -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileRequestTargetReleaseProfilePlatforms$outboundSchema - ), -}); - -export function syncReconcileRequestTargetReleaseProfileToJSON( - syncReconcileRequestTargetReleaseProfile: - SyncReconcileRequestTargetReleaseProfile, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfile$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfile, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseProfileUnion$Outbound = - | SyncReconcileRequestTargetReleaseProfile$Outbound - | string; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseProfileUnion$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseProfileUnion$Outbound, - SyncReconcileRequestTargetReleaseProfileUnion - > = z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseProfile$outboundSchema), - z.string(), - ]); - -export function syncReconcileRequestTargetReleaseProfileUnionToJSON( - syncReconcileRequestTargetReleaseProfileUnion: - SyncReconcileRequestTargetReleaseProfileUnion, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseProfileUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseProfileUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleasePermissions$Outbound = { - management?: - | SyncReconcileRequestTargetReleaseManagement1$Outbound - | SyncReconcileRequestTargetReleaseManagement2$Outbound - | string - | undefined; - profiles: { - [k: string]: { - [k: string]: Array< - SyncReconcileRequestTargetReleaseProfile$Outbound | string - >; - }; - }; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleasePermissions$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleasePermissions$Outbound, - SyncReconcileRequestTargetReleasePermissions - > = z.object({ - management: z.union([ - z.lazy(() => SyncReconcileRequestTargetReleaseManagement1$outboundSchema), - z.lazy(() => SyncReconcileRequestTargetReleaseManagement2$outboundSchema), - SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileRequestTargetReleaseProfile$outboundSchema - ), - z.string(), - ]), - ), - ), - ), - }); - -export function syncReconcileRequestTargetReleasePermissionsToJSON( - syncReconcileRequestTargetReleasePermissions: - SyncReconcileRequestTargetReleasePermissions, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleasePermissions$outboundSchema.parse( - syncReconcileRequestTargetReleasePermissions, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseConfig$Outbound = { - id: string; - type: string; - [additionalProperties: string]: unknown; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseConfig$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseConfig$Outbound, - SyncReconcileRequestTargetReleaseConfig -> = z.object({ - id: z.string(), - type: z.string(), - additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), -}).transform((v) => { - return { - ...v.additionalProperties, - ...remap$(v, { - additionalProperties: null, - }), - }; -}); - -export function syncReconcileRequestTargetReleaseConfigToJSON( - syncReconcileRequestTargetReleaseConfig: - SyncReconcileRequestTargetReleaseConfig, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseConfig$outboundSchema.parse( - syncReconcileRequestTargetReleaseConfig, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseDependency$Outbound = { - id: string; - type: string; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseDependency$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseDependency$Outbound, - SyncReconcileRequestTargetReleaseDependency - > = z.object({ - id: z.string(), - type: z.string(), - }); - -export function syncReconcileRequestTargetReleaseDependencyToJSON( - syncReconcileRequestTargetReleaseDependency: - SyncReconcileRequestTargetReleaseDependency, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseDependency$outboundSchema.parse( - syncReconcileRequestTargetReleaseDependency, - ), - ); -} - -/** @internal */ -export const TargetReleaseStateLifecycle$outboundSchema: z.ZodEnum< - typeof TargetReleaseStateLifecycle -> = z.enum(TargetReleaseStateLifecycle); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseResources$Outbound = { - config: SyncReconcileRequestTargetReleaseConfig$Outbound; - dependencies: Array; - lifecycle: string; - remoteAccess?: boolean | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseResources$outboundSchema: - z.ZodType< - SyncReconcileRequestTargetReleaseResources$Outbound, - SyncReconcileRequestTargetReleaseResources - > = z.object({ - config: z.lazy(() => - SyncReconcileRequestTargetReleaseConfig$outboundSchema - ), - dependencies: z.array( - z.lazy(() => SyncReconcileRequestTargetReleaseDependency$outboundSchema), - ), - lifecycle: TargetReleaseStateLifecycle$outboundSchema, - remoteAccess: z.boolean().optional(), - }); - -export function syncReconcileRequestTargetReleaseResourcesToJSON( - syncReconcileRequestTargetReleaseResources: - SyncReconcileRequestTargetReleaseResources, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseResources$outboundSchema.parse( - syncReconcileRequestTargetReleaseResources, - ), - ); -} - -/** @internal */ -export const SyncReconcileRequestTargetReleaseSupportedPlatform$outboundSchema: - z.ZodEnum = z.enum( - SyncReconcileRequestTargetReleaseSupportedPlatform, - ); - -/** @internal */ -export type SyncReconcileRequestTargetReleaseStack$Outbound = { - id: string; - inputs?: Array | undefined; - permissions?: - | SyncReconcileRequestTargetReleasePermissions$Outbound - | undefined; - resources: { - [k: string]: SyncReconcileRequestTargetReleaseResources$Outbound; - }; - supportedPlatforms?: Array | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseStack$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseStack$Outbound, - SyncReconcileRequestTargetReleaseStack -> = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncReconcileRequestTargetReleaseInput$outboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncReconcileRequestTargetReleasePermissions$outboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileRequestTargetReleaseResources$outboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncReconcileRequestTargetReleaseSupportedPlatform$outboundSchema), - ).optional(), -}); - -export function syncReconcileRequestTargetReleaseStackToJSON( - syncReconcileRequestTargetReleaseStack: - SyncReconcileRequestTargetReleaseStack, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseStack$outboundSchema.parse( - syncReconcileRequestTargetReleaseStack, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetRelease$Outbound = { - description?: string | null | undefined; - releaseId: string; - stack: SyncReconcileRequestTargetReleaseStack$Outbound; - version?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestTargetRelease$outboundSchema: z.ZodType< - SyncReconcileRequestTargetRelease$Outbound, - SyncReconcileRequestTargetRelease -> = z.object({ - description: z.nullable(z.string()).optional(), - releaseId: z.string(), - stack: z.lazy(() => SyncReconcileRequestTargetReleaseStack$outboundSchema), - version: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestTargetReleaseToJSON( - syncReconcileRequestTargetRelease: SyncReconcileRequestTargetRelease, -): string { - return JSON.stringify( - SyncReconcileRequestTargetRelease$outboundSchema.parse( - syncReconcileRequestTargetRelease, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestTargetReleaseUnion$Outbound = - | SyncReconcileRequestTargetRelease$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestTargetReleaseUnion$outboundSchema: z.ZodType< - SyncReconcileRequestTargetReleaseUnion$Outbound, - SyncReconcileRequestTargetReleaseUnion -> = z.union([ - z.lazy(() => SyncReconcileRequestTargetRelease$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestTargetReleaseUnionToJSON( - syncReconcileRequestTargetReleaseUnion: - SyncReconcileRequestTargetReleaseUnion, -): string { - return JSON.stringify( - SyncReconcileRequestTargetReleaseUnion$outboundSchema.parse( - syncReconcileRequestTargetReleaseUnion, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestState$Outbound = { - currentRelease?: - | SyncReconcileRequestCurrentRelease$Outbound - | any - | null - | undefined; - environmentInfo?: - | SyncReconcileRequestEnvironmentInfoGcp$Outbound - | SyncReconcileRequestEnvironmentInfoAzure$Outbound - | SyncReconcileRequestEnvironmentInfoLocal$Outbound - | SyncReconcileRequestEnvironmentInfoAws$Outbound - | SyncReconcileRequestEnvironmentInfoTest$Outbound - | any - | null - | undefined; - error?: SyncReconcileRequestError$Outbound | any | null | undefined; - platform: string; - protocolVersion: number; - retryRequested?: boolean | undefined; - runtimeMetadata?: - | SyncReconcileRequestRuntimeMetadata$Outbound - | any - | null - | undefined; - stackState?: SyncReconcileRequestStackState$Outbound | any | null | undefined; - status: string; - targetRelease?: - | SyncReconcileRequestTargetRelease$Outbound - | any - | null - | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestState$outboundSchema: z.ZodType< - SyncReconcileRequestState$Outbound, - SyncReconcileRequestState -> = z.object({ - currentRelease: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestCurrentRelease$outboundSchema), - z.any(), - ]), - ).optional(), - environmentInfo: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestEnvironmentInfoGcp$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoAzure$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoLocal$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoAws$outboundSchema), - z.lazy(() => SyncReconcileRequestEnvironmentInfoTest$outboundSchema), - z.any(), - ]), - ).optional(), - error: z.nullable( - z.union([z.lazy(() => SyncReconcileRequestError$outboundSchema), z.any()]), - ).optional(), - platform: SyncReconcileRequestPlatform$outboundSchema, - protocolVersion: z.int(), - retryRequested: z.boolean().optional(), - runtimeMetadata: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestRuntimeMetadata$outboundSchema), - z.any(), - ]), - ).optional(), - stackState: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestStackState$outboundSchema), - z.any(), - ]), - ).optional(), - status: StateStatus$outboundSchema, - targetRelease: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestTargetRelease$outboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileRequestStateToJSON( - syncReconcileRequestState: SyncReconcileRequestState, -): string { - return JSON.stringify( - SyncReconcileRequestState$outboundSchema.parse(syncReconcileRequestState), - ); -} - -/** @internal */ -export const BackendEnum$outboundSchema: z.ZodEnum = z.enum( - BackendEnum, -); - -/** @internal */ -export const HeartbeatControllerPlatform$outboundSchema: z.ZodEnum< - typeof HeartbeatControllerPlatform -> = z.enum(HeartbeatControllerPlatform); - -/** @internal */ -export const Reason59$outboundSchema: z.ZodEnum = z.enum( - Reason59, -); - -/** @internal */ -export const CollectionIssueSeverity59$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity59 -> = z.enum(CollectionIssueSeverity59); - -/** @internal */ -export type CollectionIssue59$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue59$outboundSchema: z.ZodType< - CollectionIssue59$Outbound, - CollectionIssue59 -> = z.object({ - message: z.string(), - reason: Reason59$outboundSchema, - severity: CollectionIssueSeverity59$outboundSchema, - source: z.string(), -}); - -export function collectionIssue59ToJSON( - collectionIssue59: CollectionIssue59, -): string { - return JSON.stringify( - CollectionIssue59$outboundSchema.parse(collectionIssue59), - ); -} - -/** @internal */ -export const Health59$outboundSchema: z.ZodEnum = z.enum( - Health59, -); - -/** @internal */ -export const StatusLifecycle59$outboundSchema: z.ZodEnum< - typeof StatusLifecycle59 -> = z.enum(StatusLifecycle59); - -/** @internal */ -export type HeartbeatStatus59$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus59$outboundSchema: z.ZodType< - HeartbeatStatus59$Outbound, - HeartbeatStatus59 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue59$outboundSchema)), - health: Health59$outboundSchema, - lifecycle: StatusLifecycle59$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus59ToJSON( - heartbeatStatus59: HeartbeatStatus59, -): string { - return JSON.stringify( - HeartbeatStatus59$outboundSchema.parse(heartbeatStatus59), - ); -} - -/** @internal */ -export type SyncReconcileRequestData5$Outbound = { - createdAt?: string | null | undefined; - disableLocalAuth?: boolean | null | undefined; - location?: string | null | undefined; - metricId?: string | null | undefined; - minimumTlsVersion?: string | null | undefined; - name: string; - namespaceStatus?: string | null | undefined; - premiumMessagingPartitions?: number | null | undefined; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - serviceBusEndpoint?: string | null | undefined; - skuCapacity?: number | null | undefined; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: HeartbeatStatus59$Outbound; - updatedAt?: string | null | undefined; - zoneRedundant?: boolean | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestData5$outboundSchema: z.ZodType< - SyncReconcileRequestData5$Outbound, - SyncReconcileRequestData5 -> = z.object({ - createdAt: z.nullable(z.string()).optional(), - disableLocalAuth: z.nullable(z.boolean()).optional(), - location: z.nullable(z.string()).optional(), - metricId: z.nullable(z.string()).optional(), - minimumTlsVersion: z.nullable(z.string()).optional(), - name: z.string(), - namespaceStatus: z.nullable(z.string()).optional(), - premiumMessagingPartitions: z.nullable(z.int()).optional(), - privateEndpointConnectionCount: z.int(), - provisioningState: z.nullable(z.string()).optional(), - publicNetworkAccess: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - serviceBusEndpoint: z.nullable(z.string()).optional(), - skuCapacity: z.nullable(z.int()).optional(), - skuName: z.nullable(z.string()).optional(), - skuTier: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus59$outboundSchema), - updatedAt: z.nullable(z.string()).optional(), - zoneRedundant: z.nullable(z.boolean()).optional(), -}); - -export function syncReconcileRequestData5ToJSON( - syncReconcileRequestData5: SyncReconcileRequestData5, -): string { - return JSON.stringify( - SyncReconcileRequestData5$outboundSchema.parse(syncReconcileRequestData5), - ); -} - -/** @internal */ -export type DataAzureServiceBusNamespace$Outbound = { - data: SyncReconcileRequestData5$Outbound; - resourceType: "azure_service_bus_namespace"; -}; - -/** @internal */ -export const DataAzureServiceBusNamespace$outboundSchema: z.ZodType< - DataAzureServiceBusNamespace$Outbound, - DataAzureServiceBusNamespace -> = z.object({ - data: z.lazy(() => SyncReconcileRequestData5$outboundSchema), - resourceType: z.literal("azure_service_bus_namespace"), -}); - -export function dataAzureServiceBusNamespaceToJSON( - dataAzureServiceBusNamespace: DataAzureServiceBusNamespace, -): string { - return JSON.stringify( - DataAzureServiceBusNamespace$outboundSchema.parse( - dataAzureServiceBusNamespace, - ), - ); -} - -/** @internal */ -export const Reason58$outboundSchema: z.ZodEnum = z.enum( - Reason58, -); - -/** @internal */ -export const CollectionIssueSeverity58$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity58 -> = z.enum(CollectionIssueSeverity58); - -/** @internal */ -export type CollectionIssue58$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue58$outboundSchema: z.ZodType< - CollectionIssue58$Outbound, - CollectionIssue58 -> = z.object({ - message: z.string(), - reason: Reason58$outboundSchema, - severity: CollectionIssueSeverity58$outboundSchema, - source: z.string(), -}); - -export function collectionIssue58ToJSON( - collectionIssue58: CollectionIssue58, -): string { - return JSON.stringify( - CollectionIssue58$outboundSchema.parse(collectionIssue58), - ); -} - -/** @internal */ -export const Health58$outboundSchema: z.ZodEnum = z.enum( - Health58, -); - -/** @internal */ -export const StatusLifecycle58$outboundSchema: z.ZodEnum< - typeof StatusLifecycle58 -> = z.enum(StatusLifecycle58); - -/** @internal */ -export type HeartbeatStatus58$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus58$outboundSchema: z.ZodType< - HeartbeatStatus58$Outbound, - HeartbeatStatus58 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue58$outboundSchema)), - health: Health58$outboundSchema, - lifecycle: StatusLifecycle58$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus58ToJSON( - heartbeatStatus58: HeartbeatStatus58, -): string { - return JSON.stringify( - HeartbeatStatus58$outboundSchema.parse(heartbeatStatus58), - ); -} - -/** @internal */ -export type WorkloadProfile$Outbound = { - maximumCount?: number | null | undefined; - minimumCount?: number | null | undefined; - name: string; - workloadProfileType: string; -}; - -/** @internal */ -export const WorkloadProfile$outboundSchema: z.ZodType< - WorkloadProfile$Outbound, - WorkloadProfile -> = z.object({ - maximumCount: z.nullable(z.int()).optional(), - minimumCount: z.nullable(z.int()).optional(), - name: z.string(), - workloadProfileType: z.string(), -}); - -export function workloadProfileToJSON( - workloadProfile: WorkloadProfile, -): string { - return JSON.stringify(WorkloadProfile$outboundSchema.parse(workloadProfile)); -} - -/** @internal */ -export type SyncReconcileRequestData4$Outbound = { - customDomainVerificationId?: string | null | undefined; - defaultDomain?: string | null | undefined; - eventStreamEndpoint?: string | null | undefined; - infrastructureResourceGroup?: string | null | undefined; - kind?: string | null | undefined; - location?: string | null | undefined; - name: string; - provisioningState?: string | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - staticIp?: string | null | undefined; - status: HeartbeatStatus58$Outbound; - workloadProfileCount: number; - workloadProfiles: Array; - zoneRedundant?: boolean | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestData4$outboundSchema: z.ZodType< - SyncReconcileRequestData4$Outbound, - SyncReconcileRequestData4 -> = z.object({ - customDomainVerificationId: z.nullable(z.string()).optional(), - defaultDomain: z.nullable(z.string()).optional(), - eventStreamEndpoint: z.nullable(z.string()).optional(), - infrastructureResourceGroup: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - location: z.nullable(z.string()).optional(), - name: z.string(), - provisioningState: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - staticIp: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus58$outboundSchema), - workloadProfileCount: z.int(), - workloadProfiles: z.array(z.lazy(() => WorkloadProfile$outboundSchema)), - zoneRedundant: z.nullable(z.boolean()).optional(), -}); - -export function syncReconcileRequestData4ToJSON( - syncReconcileRequestData4: SyncReconcileRequestData4, -): string { - return JSON.stringify( - SyncReconcileRequestData4$outboundSchema.parse(syncReconcileRequestData4), - ); -} - -/** @internal */ -export type DataAzureContainerAppsEnvironment$Outbound = { - data: SyncReconcileRequestData4$Outbound; - resourceType: "azure_container_apps_environment"; -}; - -/** @internal */ -export const DataAzureContainerAppsEnvironment$outboundSchema: z.ZodType< - DataAzureContainerAppsEnvironment$Outbound, - DataAzureContainerAppsEnvironment -> = z.object({ - data: z.lazy(() => SyncReconcileRequestData4$outboundSchema), - resourceType: z.literal("azure_container_apps_environment"), -}); - -export function dataAzureContainerAppsEnvironmentToJSON( - dataAzureContainerAppsEnvironment: DataAzureContainerAppsEnvironment, -): string { - return JSON.stringify( - DataAzureContainerAppsEnvironment$outboundSchema.parse( - dataAzureContainerAppsEnvironment, - ), - ); -} - -/** @internal */ -export type PrimaryEndpoints$Outbound = { - blob?: string | null | undefined; - dfs?: string | null | undefined; - file?: string | null | undefined; - queue?: string | null | undefined; - table?: string | null | undefined; - web?: string | null | undefined; -}; - -/** @internal */ -export const PrimaryEndpoints$outboundSchema: z.ZodType< - PrimaryEndpoints$Outbound, - PrimaryEndpoints -> = z.object({ - blob: z.nullable(z.string()).optional(), - dfs: z.nullable(z.string()).optional(), - file: z.nullable(z.string()).optional(), - queue: z.nullable(z.string()).optional(), - table: z.nullable(z.string()).optional(), - web: z.nullable(z.string()).optional(), -}); - -export function primaryEndpointsToJSON( - primaryEndpoints: PrimaryEndpoints, -): string { - return JSON.stringify( - PrimaryEndpoints$outboundSchema.parse(primaryEndpoints), - ); -} - -/** @internal */ -export type SecondaryEndpoints$Outbound = { - blob?: string | null | undefined; - dfs?: string | null | undefined; - file?: string | null | undefined; - queue?: string | null | undefined; - table?: string | null | undefined; - web?: string | null | undefined; -}; - -/** @internal */ -export const SecondaryEndpoints$outboundSchema: z.ZodType< - SecondaryEndpoints$Outbound, - SecondaryEndpoints -> = z.object({ - blob: z.nullable(z.string()).optional(), - dfs: z.nullable(z.string()).optional(), - file: z.nullable(z.string()).optional(), - queue: z.nullable(z.string()).optional(), - table: z.nullable(z.string()).optional(), - web: z.nullable(z.string()).optional(), -}); - -export function secondaryEndpointsToJSON( - secondaryEndpoints: SecondaryEndpoints, -): string { - return JSON.stringify( - SecondaryEndpoints$outboundSchema.parse(secondaryEndpoints), - ); -} - -/** @internal */ -export const Reason57$outboundSchema: z.ZodEnum = z.enum( - Reason57, -); - -/** @internal */ -export const CollectionIssueSeverity57$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity57 -> = z.enum(CollectionIssueSeverity57); - -/** @internal */ -export type CollectionIssue57$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue57$outboundSchema: z.ZodType< - CollectionIssue57$Outbound, - CollectionIssue57 -> = z.object({ - message: z.string(), - reason: Reason57$outboundSchema, - severity: CollectionIssueSeverity57$outboundSchema, - source: z.string(), -}); - -export function collectionIssue57ToJSON( - collectionIssue57: CollectionIssue57, -): string { - return JSON.stringify( - CollectionIssue57$outboundSchema.parse(collectionIssue57), - ); -} - -/** @internal */ -export const Health57$outboundSchema: z.ZodEnum = z.enum( - Health57, -); - -/** @internal */ -export const StatusLifecycle57$outboundSchema: z.ZodEnum< - typeof StatusLifecycle57 -> = z.enum(StatusLifecycle57); - -/** @internal */ -export type HeartbeatStatus57$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus57$outboundSchema: z.ZodType< - HeartbeatStatus57$Outbound, - HeartbeatStatus57 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue57$outboundSchema)), - health: Health57$outboundSchema, - lifecycle: StatusLifecycle57$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus57ToJSON( - heartbeatStatus57: HeartbeatStatus57, -): string { - return JSON.stringify( - HeartbeatStatus57$outboundSchema.parse(heartbeatStatus57), - ); -} - -/** @internal */ -export type SyncReconcileRequestData3$Outbound = { - allowBlobPublicAccess?: boolean | null | undefined; - allowSharedKeyAccess?: boolean | null | undefined; - encryptionKeySource?: string | null | undefined; - kind?: string | null | undefined; - location?: string | null | undefined; - minimumTlsVersion?: string | null | undefined; - name: string; - networkBypass?: string | null | undefined; - networkDefaultAction?: string | null | undefined; - networkIpRuleCount?: number | null | undefined; - networkResourceAccessRuleCount?: number | null | undefined; - networkVirtualNetworkRuleCount?: number | null | undefined; - primaryEndpoints: PrimaryEndpoints$Outbound; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - requireInfrastructureEncryption?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - secondaryEndpoints: SecondaryEndpoints$Outbound; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: HeartbeatStatus57$Outbound; - supportsHttpsTrafficOnly?: boolean | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestData3$outboundSchema: z.ZodType< - SyncReconcileRequestData3$Outbound, - SyncReconcileRequestData3 -> = z.object({ - allowBlobPublicAccess: z.nullable(z.boolean()).optional(), - allowSharedKeyAccess: z.nullable(z.boolean()).optional(), - encryptionKeySource: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - location: z.nullable(z.string()).optional(), - minimumTlsVersion: z.nullable(z.string()).optional(), - name: z.string(), - networkBypass: z.nullable(z.string()).optional(), - networkDefaultAction: z.nullable(z.string()).optional(), - networkIpRuleCount: z.nullable(z.int()).optional(), - networkResourceAccessRuleCount: z.nullable(z.int()).optional(), - networkVirtualNetworkRuleCount: z.nullable(z.int()).optional(), - primaryEndpoints: z.lazy(() => PrimaryEndpoints$outboundSchema), - provisioningState: z.nullable(z.string()).optional(), - publicNetworkAccess: z.nullable(z.string()).optional(), - requireInfrastructureEncryption: z.nullable(z.boolean()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - secondaryEndpoints: z.lazy(() => SecondaryEndpoints$outboundSchema), - skuName: z.nullable(z.string()).optional(), - skuTier: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus57$outboundSchema), - supportsHttpsTrafficOnly: z.nullable(z.boolean()).optional(), -}); - -export function syncReconcileRequestData3ToJSON( - syncReconcileRequestData3: SyncReconcileRequestData3, -): string { - return JSON.stringify( - SyncReconcileRequestData3$outboundSchema.parse(syncReconcileRequestData3), - ); -} - -/** @internal */ -export type DataAzureStorageAccount$Outbound = { - data: SyncReconcileRequestData3$Outbound; - resourceType: "azure_storage_account"; -}; - -/** @internal */ -export const DataAzureStorageAccount$outboundSchema: z.ZodType< - DataAzureStorageAccount$Outbound, - DataAzureStorageAccount -> = z.object({ - data: z.lazy(() => SyncReconcileRequestData3$outboundSchema), - resourceType: z.literal("azure_storage_account"), -}); - -export function dataAzureStorageAccountToJSON( - dataAzureStorageAccount: DataAzureStorageAccount, -): string { - return JSON.stringify( - DataAzureStorageAccount$outboundSchema.parse(dataAzureStorageAccount), - ); -} - -/** @internal */ -export const Reason56$outboundSchema: z.ZodEnum = z.enum( - Reason56, -); - -/** @internal */ -export const CollectionIssueSeverity56$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity56 -> = z.enum(CollectionIssueSeverity56); - -/** @internal */ -export type CollectionIssue56$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue56$outboundSchema: z.ZodType< - CollectionIssue56$Outbound, - CollectionIssue56 -> = z.object({ - message: z.string(), - reason: Reason56$outboundSchema, - severity: CollectionIssueSeverity56$outboundSchema, - source: z.string(), -}); - -export function collectionIssue56ToJSON( - collectionIssue56: CollectionIssue56, -): string { - return JSON.stringify( - CollectionIssue56$outboundSchema.parse(collectionIssue56), - ); -} - -/** @internal */ -export const Health56$outboundSchema: z.ZodEnum = z.enum( - Health56, -); - -/** @internal */ -export const StatusLifecycle56$outboundSchema: z.ZodEnum< - typeof StatusLifecycle56 -> = z.enum(StatusLifecycle56); - -/** @internal */ -export type HeartbeatStatus56$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus56$outboundSchema: z.ZodType< - HeartbeatStatus56$Outbound, - HeartbeatStatus56 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue56$outboundSchema)), - health: Health56$outboundSchema, - lifecycle: StatusLifecycle56$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus56ToJSON( - heartbeatStatus56: HeartbeatStatus56, -): string { - return JSON.stringify( - HeartbeatStatus56$outboundSchema.parse(heartbeatStatus56), - ); -} - -/** @internal */ -export type SyncReconcileRequestData2$Outbound = { - location?: string | null | undefined; - managedTags: { [k: string]: string }; - name: string; - provisioningState?: string | null | undefined; - resourceId?: string | null | undefined; - status: HeartbeatStatus56$Outbound; -}; - -/** @internal */ -export const SyncReconcileRequestData2$outboundSchema: z.ZodType< - SyncReconcileRequestData2$Outbound, - SyncReconcileRequestData2 -> = z.object({ - location: z.nullable(z.string()).optional(), - managedTags: z.record(z.string(), z.string()), - name: z.string(), - provisioningState: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus56$outboundSchema), -}); - -export function syncReconcileRequestData2ToJSON( - syncReconcileRequestData2: SyncReconcileRequestData2, -): string { - return JSON.stringify( - SyncReconcileRequestData2$outboundSchema.parse(syncReconcileRequestData2), - ); -} - -/** @internal */ -export type DataAzureResourceGroup$Outbound = { - data: SyncReconcileRequestData2$Outbound; - resourceType: "azure_resource_group"; -}; - -/** @internal */ -export const DataAzureResourceGroup$outboundSchema: z.ZodType< - DataAzureResourceGroup$Outbound, - DataAzureResourceGroup -> = z.object({ - data: z.lazy(() => SyncReconcileRequestData2$outboundSchema), - resourceType: z.literal("azure_resource_group"), -}); - -export function dataAzureResourceGroupToJSON( - dataAzureResourceGroup: DataAzureResourceGroup, -): string { - return JSON.stringify( - DataAzureResourceGroup$outboundSchema.parse(dataAzureResourceGroup), - ); -} - -/** @internal */ -export const Reason55$outboundSchema: z.ZodEnum = z.enum( - Reason55, -); - -/** @internal */ -export const CollectionIssueSeverity55$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity55 -> = z.enum(CollectionIssueSeverity55); - -/** @internal */ -export type CollectionIssue55$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue55$outboundSchema: z.ZodType< - CollectionIssue55$Outbound, - CollectionIssue55 -> = z.object({ - message: z.string(), - reason: Reason55$outboundSchema, - severity: CollectionIssueSeverity55$outboundSchema, - source: z.string(), -}); - -export function collectionIssue55ToJSON( - collectionIssue55: CollectionIssue55, -): string { - return JSON.stringify( - CollectionIssue55$outboundSchema.parse(collectionIssue55), - ); -} - -/** @internal */ -export const Health55$outboundSchema: z.ZodEnum = z.enum( - Health55, -); - -/** @internal */ -export const StatusLifecycle55$outboundSchema: z.ZodEnum< - typeof StatusLifecycle55 -> = z.enum(StatusLifecycle55); - -/** @internal */ -export type HeartbeatStatus55$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus55$outboundSchema: z.ZodType< - HeartbeatStatus55$Outbound, - HeartbeatStatus55 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue55$outboundSchema)), - health: Health55$outboundSchema, - lifecycle: StatusLifecycle55$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus55ToJSON( - heartbeatStatus55: HeartbeatStatus55, -): string { - return JSON.stringify( - HeartbeatStatus55$outboundSchema.parse(heartbeatStatus55), - ); -} - -/** @internal */ -export type DataAzureResourceProvider$Outbound = { - namespace: string; - providerId?: string | null | undefined; - registered: boolean; - registrationPolicy?: string | null | undefined; - registrationState?: string | null | undefined; - resourceTypeCount: number; - status: HeartbeatStatus55$Outbound; - backend: "azureResourceProvider"; -}; - -/** @internal */ -export const DataAzureResourceProvider$outboundSchema: z.ZodType< - DataAzureResourceProvider$Outbound, - DataAzureResourceProvider -> = z.object({ - namespace: z.string(), - providerId: z.nullable(z.string()).optional(), - registered: z.boolean(), - registrationPolicy: z.nullable(z.string()).optional(), - registrationState: z.nullable(z.string()).optional(), - resourceTypeCount: z.int(), - status: z.lazy(() => HeartbeatStatus55$outboundSchema), - backend: z.literal("azureResourceProvider"), -}); - -export function dataAzureResourceProviderToJSON( - dataAzureResourceProvider: DataAzureResourceProvider, -): string { - return JSON.stringify( - DataAzureResourceProvider$outboundSchema.parse(dataAzureResourceProvider), - ); -} - -/** @internal */ -export const Reason54$outboundSchema: z.ZodEnum = z.enum( - Reason54, -); - -/** @internal */ -export const CollectionIssueSeverity54$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity54 -> = z.enum(CollectionIssueSeverity54); - -/** @internal */ -export type CollectionIssue54$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue54$outboundSchema: z.ZodType< - CollectionIssue54$Outbound, - CollectionIssue54 -> = z.object({ - message: z.string(), - reason: Reason54$outboundSchema, - severity: CollectionIssueSeverity54$outboundSchema, - source: z.string(), -}); - -export function collectionIssue54ToJSON( - collectionIssue54: CollectionIssue54, -): string { - return JSON.stringify( - CollectionIssue54$outboundSchema.parse(collectionIssue54), - ); -} - -/** @internal */ -export const Health54$outboundSchema: z.ZodEnum = z.enum( - Health54, -); - -/** @internal */ -export const StatusLifecycle54$outboundSchema: z.ZodEnum< - typeof StatusLifecycle54 -> = z.enum(StatusLifecycle54); - -/** @internal */ -export type HeartbeatStatus54$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus54$outboundSchema: z.ZodType< - HeartbeatStatus54$Outbound, - HeartbeatStatus54 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue54$outboundSchema)), - health: Health54$outboundSchema, - lifecycle: StatusLifecycle54$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus54ToJSON( - heartbeatStatus54: HeartbeatStatus54, -): string { - return JSON.stringify( - HeartbeatStatus54$outboundSchema.parse(heartbeatStatus54), - ); -} - -/** @internal */ -export type DataGcpServiceUsage$Outbound = { - enabled: boolean; - lastOperationName?: string | null | undefined; - projectId: string; - serviceName: string; - serviceResourceName?: string | null | undefined; - state?: string | null | undefined; - status: HeartbeatStatus54$Outbound; - title?: string | null | undefined; - backend: "gcpServiceUsage"; -}; - -/** @internal */ -export const DataGcpServiceUsage$outboundSchema: z.ZodType< - DataGcpServiceUsage$Outbound, - DataGcpServiceUsage -> = z.object({ - enabled: z.boolean(), - lastOperationName: z.nullable(z.string()).optional(), - projectId: z.string(), - serviceName: z.string(), - serviceResourceName: z.nullable(z.string()).optional(), - state: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus54$outboundSchema), - title: z.nullable(z.string()).optional(), - backend: z.literal("gcpServiceUsage"), -}); - -export function dataGcpServiceUsageToJSON( - dataGcpServiceUsage: DataGcpServiceUsage, -): string { - return JSON.stringify( - DataGcpServiceUsage$outboundSchema.parse(dataGcpServiceUsage), - ); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion14$Outbound = - | DataGcpServiceUsage$Outbound - | DataAzureResourceProvider$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion14$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion14$Outbound, - SyncReconcileRequestDataUnion14 -> = z.union([ - z.lazy(() => DataGcpServiceUsage$outboundSchema), - z.lazy(() => DataAzureResourceProvider$outboundSchema), -]); - -export function syncReconcileRequestDataUnion14ToJSON( - syncReconcileRequestDataUnion14: SyncReconcileRequestDataUnion14, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion14$outboundSchema.parse( - syncReconcileRequestDataUnion14, - ), - ); -} - -/** @internal */ -export type DataServiceActivation$Outbound = { - data: DataGcpServiceUsage$Outbound | DataAzureResourceProvider$Outbound; - resourceType: "service_activation"; -}; - -/** @internal */ -export const DataServiceActivation$outboundSchema: z.ZodType< - DataServiceActivation$Outbound, - DataServiceActivation -> = z.object({ - data: z.union([ - z.lazy(() => DataGcpServiceUsage$outboundSchema), - z.lazy(() => DataAzureResourceProvider$outboundSchema), - ]), - resourceType: z.literal("service_activation"), -}); - -export function dataServiceActivationToJSON( - dataServiceActivation: DataServiceActivation, -): string { - return JSON.stringify( - DataServiceActivation$outboundSchema.parse(dataServiceActivation), - ); -} - -/** @internal */ -export type InvolvedObject9$Outbound = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -/** @internal */ -export const InvolvedObject9$outboundSchema: z.ZodType< - InvolvedObject9$Outbound, - InvolvedObject9 -> = z.object({ - apiVersion: z.nullable(z.string()).optional(), - fieldPath: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - namespace: z.nullable(z.string()).optional(), - resourceVersion: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), -}); - -export function involvedObject9ToJSON( - involvedObject9: InvolvedObject9, -): string { - return JSON.stringify(InvolvedObject9$outboundSchema.parse(involvedObject9)); -} - -/** @internal */ -export type InvolvedObjectUnion9$Outbound = InvolvedObject9$Outbound | any; - -/** @internal */ -export const InvolvedObjectUnion9$outboundSchema: z.ZodType< - InvolvedObjectUnion9$Outbound, - InvolvedObjectUnion9 -> = z.union([z.lazy(() => InvolvedObject9$outboundSchema), z.any()]); - -export function involvedObjectUnion9ToJSON( - involvedObjectUnion9: InvolvedObjectUnion9, -): string { - return JSON.stringify( - InvolvedObjectUnion9$outboundSchema.parse(involvedObjectUnion9), - ); -} - -/** @internal */ -export type SyncReconcileRequestSource9$Outbound = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSource9$outboundSchema: z.ZodType< - SyncReconcileRequestSource9$Outbound, - SyncReconcileRequestSource9 -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSource9ToJSON( - syncReconcileRequestSource9: SyncReconcileRequestSource9, -): string { - return JSON.stringify( - SyncReconcileRequestSource9$outboundSchema.parse( - syncReconcileRequestSource9, - ), - ); -} - -/** @internal */ -export type SourceUnion9$Outbound = SyncReconcileRequestSource9$Outbound | any; - -/** @internal */ -export const SourceUnion9$outboundSchema: z.ZodType< - SourceUnion9$Outbound, - SourceUnion9 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource9$outboundSchema), - z.any(), -]); - -export function sourceUnion9ToJSON(sourceUnion9: SourceUnion9): string { - return JSON.stringify(SourceUnion9$outboundSchema.parse(sourceUnion9)); -} - -/** @internal */ -export type SyncReconcileRequestEvent12$Outbound = { - count?: number | null | undefined; - eventTime?: string | null | undefined; - firstTimestamp?: string | null | undefined; - involvedObject?: InvolvedObject9$Outbound | any | null | undefined; - lastTimestamp?: string | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource9$Outbound | any | null | undefined; - type?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestEvent12$outboundSchema: z.ZodType< - SyncReconcileRequestEvent12$Outbound, - SyncReconcileRequestEvent12 -> = z.object({ - count: z.nullable(z.int()).optional(), - eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), - firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject9$outboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource9$outboundSchema), - z.any(), - ]), - ).optional(), - type: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestEvent12ToJSON( - syncReconcileRequestEvent12: SyncReconcileRequestEvent12, -): string { - return JSON.stringify( - SyncReconcileRequestEvent12$outboundSchema.parse( - syncReconcileRequestEvent12, - ), - ); -} - -/** @internal */ -export const Reason53$outboundSchema: z.ZodEnum = z.enum( - Reason53, -); - -/** @internal */ -export const CollectionIssueSeverity53$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity53 -> = z.enum(CollectionIssueSeverity53); - -/** @internal */ -export type CollectionIssue53$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue53$outboundSchema: z.ZodType< - CollectionIssue53$Outbound, - CollectionIssue53 -> = z.object({ - message: z.string(), - reason: Reason53$outboundSchema, - severity: CollectionIssueSeverity53$outboundSchema, - source: z.string(), -}); - -export function collectionIssue53ToJSON( - collectionIssue53: CollectionIssue53, -): string { - return JSON.stringify( - CollectionIssue53$outboundSchema.parse(collectionIssue53), - ); -} - -/** @internal */ -export const Health53$outboundSchema: z.ZodEnum = z.enum( - Health53, -); - -/** @internal */ -export const StatusLifecycle53$outboundSchema: z.ZodEnum< - typeof StatusLifecycle53 -> = z.enum(StatusLifecycle53); - -/** @internal */ -export type HeartbeatStatus53$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus53$outboundSchema: z.ZodType< - HeartbeatStatus53$Outbound, - HeartbeatStatus53 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue53$outboundSchema)), - health: Health53$outboundSchema, - lifecycle: StatusLifecycle53$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus53ToJSON( - heartbeatStatus53: HeartbeatStatus53, -): string { - return JSON.stringify( - HeartbeatStatus53$outboundSchema.parse(heartbeatStatus53), - ); -} - -/** @internal */ -export type DataKubernetesJob$Outbound = { - active?: number | null | undefined; - completionTime?: string | null | undefined; - conditionCount: number; - events: Array; - failed?: number | null | undefined; - imageDigest?: string | null | undefined; - jobName: string; - namespace: string; - startTime?: string | null | undefined; - status: HeartbeatStatus53$Outbound; - succeeded?: number | null | undefined; - backend: "kubernetesJob"; -}; - -/** @internal */ -export const DataKubernetesJob$outboundSchema: z.ZodType< - DataKubernetesJob$Outbound, - DataKubernetesJob -> = z.object({ - active: z.nullable(z.int()).optional(), - completionTime: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - conditionCount: z.int(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent12$outboundSchema)), - failed: z.nullable(z.int()).optional(), - imageDigest: z.nullable(z.string()).optional(), - jobName: z.string(), - namespace: z.string(), - startTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), - status: z.lazy(() => HeartbeatStatus53$outboundSchema), - succeeded: z.nullable(z.int()).optional(), - backend: z.literal("kubernetesJob"), -}); - -export function dataKubernetesJobToJSON( - dataKubernetesJob: DataKubernetesJob, -): string { - return JSON.stringify( - DataKubernetesJob$outboundSchema.parse(dataKubernetesJob), - ); -} - -/** @internal */ -export const Reason52$outboundSchema: z.ZodEnum = z.enum( - Reason52, -); - -/** @internal */ -export const CollectionIssueSeverity52$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity52 -> = z.enum(CollectionIssueSeverity52); - -/** @internal */ -export type CollectionIssue52$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue52$outboundSchema: z.ZodType< - CollectionIssue52$Outbound, - CollectionIssue52 -> = z.object({ - message: z.string(), - reason: Reason52$outboundSchema, - severity: CollectionIssueSeverity52$outboundSchema, - source: z.string(), -}); - -export function collectionIssue52ToJSON( - collectionIssue52: CollectionIssue52, -): string { - return JSON.stringify( - CollectionIssue52$outboundSchema.parse(collectionIssue52), - ); -} - -/** @internal */ -export const Health52$outboundSchema: z.ZodEnum = z.enum( - Health52, -); - -/** @internal */ -export const StatusLifecycle52$outboundSchema: z.ZodEnum< - typeof StatusLifecycle52 -> = z.enum(StatusLifecycle52); - -/** @internal */ -export type HeartbeatStatus52$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus52$outboundSchema: z.ZodType< - HeartbeatStatus52$Outbound, - HeartbeatStatus52 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue52$outboundSchema)), - health: Health52$outboundSchema, - lifecycle: StatusLifecycle52$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus52ToJSON( - heartbeatStatus52: HeartbeatStatus52, -): string { - return JSON.stringify( - HeartbeatStatus52$outboundSchema.parse(heartbeatStatus52), - ); -} - -/** @internal */ -export type DataAzureContainerApps2$Outbound = { - environmentVariableCount: number; - managedEnvironmentId: string; - managedIdentityId?: string | null | undefined; - resourceGroupName: string; - resourcePrefix?: string | null | undefined; - status: HeartbeatStatus52$Outbound; - backend: "azureContainerApps"; -}; - -/** @internal */ -export const DataAzureContainerApps2$outboundSchema: z.ZodType< - DataAzureContainerApps2$Outbound, - DataAzureContainerApps2 -> = z.object({ - environmentVariableCount: z.int(), - managedEnvironmentId: z.string(), - managedIdentityId: z.nullable(z.string()).optional(), - resourceGroupName: z.string(), - resourcePrefix: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus52$outboundSchema), - backend: z.literal("azureContainerApps"), -}); - -export function dataAzureContainerApps2ToJSON( - dataAzureContainerApps2: DataAzureContainerApps2, -): string { - return JSON.stringify( - DataAzureContainerApps2$outboundSchema.parse(dataAzureContainerApps2), - ); -} - -/** @internal */ -export const Reason51$outboundSchema: z.ZodEnum = z.enum( - Reason51, -); - -/** @internal */ -export const CollectionIssueSeverity51$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity51 -> = z.enum(CollectionIssueSeverity51); - -/** @internal */ -export type CollectionIssue51$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue51$outboundSchema: z.ZodType< - CollectionIssue51$Outbound, - CollectionIssue51 -> = z.object({ - message: z.string(), - reason: Reason51$outboundSchema, - severity: CollectionIssueSeverity51$outboundSchema, - source: z.string(), -}); - -export function collectionIssue51ToJSON( - collectionIssue51: CollectionIssue51, -): string { - return JSON.stringify( - CollectionIssue51$outboundSchema.parse(collectionIssue51), - ); -} - -/** @internal */ -export const Health51$outboundSchema: z.ZodEnum = z.enum( - Health51, -); - -/** @internal */ -export const StatusLifecycle51$outboundSchema: z.ZodEnum< - typeof StatusLifecycle51 -> = z.enum(StatusLifecycle51); - -/** @internal */ -export type HeartbeatStatus51$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus51$outboundSchema: z.ZodType< - HeartbeatStatus51$Outbound, - HeartbeatStatus51 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue51$outboundSchema)), - health: Health51$outboundSchema, - lifecycle: StatusLifecycle51$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus51ToJSON( - heartbeatStatus51: HeartbeatStatus51, -): string { - return JSON.stringify( - HeartbeatStatus51$outboundSchema.parse(heartbeatStatus51), - ); -} - -/** @internal */ -export type DataGcpCloudBuild$Outbound = { - buildConfigId: string; - environmentVariableCount: number; - location: string; - projectId: string; - serviceAccount?: string | null | undefined; - status: HeartbeatStatus51$Outbound; - backend: "gcpCloudBuild"; -}; - -/** @internal */ -export const DataGcpCloudBuild$outboundSchema: z.ZodType< - DataGcpCloudBuild$Outbound, - DataGcpCloudBuild -> = z.object({ - buildConfigId: z.string(), - environmentVariableCount: z.int(), - location: z.string(), - projectId: z.string(), - serviceAccount: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus51$outboundSchema), - backend: z.literal("gcpCloudBuild"), -}); - -export function dataGcpCloudBuildToJSON( - dataGcpCloudBuild: DataGcpCloudBuild, -): string { - return JSON.stringify( - DataGcpCloudBuild$outboundSchema.parse(dataGcpCloudBuild), - ); -} - -/** @internal */ -export const Reason50$outboundSchema: z.ZodEnum = z.enum( - Reason50, -); - -/** @internal */ -export const CollectionIssueSeverity50$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity50 -> = z.enum(CollectionIssueSeverity50); - -/** @internal */ -export type CollectionIssue50$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue50$outboundSchema: z.ZodType< - CollectionIssue50$Outbound, - CollectionIssue50 -> = z.object({ - message: z.string(), - reason: Reason50$outboundSchema, - severity: CollectionIssueSeverity50$outboundSchema, - source: z.string(), -}); - -export function collectionIssue50ToJSON( - collectionIssue50: CollectionIssue50, -): string { - return JSON.stringify( - CollectionIssue50$outboundSchema.parse(collectionIssue50), - ); -} - -/** @internal */ -export const Health50$outboundSchema: z.ZodEnum = z.enum( - Health50, -); - -/** @internal */ -export const StatusLifecycle50$outboundSchema: z.ZodEnum< - typeof StatusLifecycle50 -> = z.enum(StatusLifecycle50); - -/** @internal */ -export type HeartbeatStatus50$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus50$outboundSchema: z.ZodType< - HeartbeatStatus50$Outbound, - HeartbeatStatus50 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue50$outboundSchema)), - health: Health50$outboundSchema, - lifecycle: StatusLifecycle50$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus50ToJSON( - heartbeatStatus50: HeartbeatStatus50, -): string { - return JSON.stringify( - HeartbeatStatus50$outboundSchema.parse(heartbeatStatus50), - ); -} - -/** @internal */ -export type DataAwsCodeBuild$Outbound = { - artifactsEncryptionDisabled?: boolean | null | undefined; - artifactsType?: string | null | undefined; - cloudWatchLogsStatus?: string | null | undefined; - computeType?: string | null | undefined; - created?: number | null | undefined; - description?: string | null | undefined; - encryptionKeyPresent: boolean; - environmentImage?: string | null | undefined; - environmentType?: string | null | undefined; - environmentVariableCount: number; - imagePullCredentialsType?: string | null | undefined; - lastModified?: number | null | undefined; - privilegedMode?: boolean | null | undefined; - projectArn?: string | null | undefined; - projectName: string; - queuedTimeoutInMinutes?: number | null | undefined; - s3LogsStatus?: string | null | undefined; - serviceRolePresent: boolean; - sourceType?: string | null | undefined; - status: HeartbeatStatus50$Outbound; - timeoutInMinutes?: number | null | undefined; - backend: "awsCodeBuild"; -}; - -/** @internal */ -export const DataAwsCodeBuild$outboundSchema: z.ZodType< - DataAwsCodeBuild$Outbound, - DataAwsCodeBuild -> = z.object({ - artifactsEncryptionDisabled: z.nullable(z.boolean()).optional(), - artifactsType: z.nullable(z.string()).optional(), - cloudWatchLogsStatus: z.nullable(z.string()).optional(), - computeType: z.nullable(z.string()).optional(), - created: z.nullable(z.number()).optional(), - description: z.nullable(z.string()).optional(), - encryptionKeyPresent: z.boolean(), - environmentImage: z.nullable(z.string()).optional(), - environmentType: z.nullable(z.string()).optional(), - environmentVariableCount: z.int(), - imagePullCredentialsType: z.nullable(z.string()).optional(), - lastModified: z.nullable(z.number()).optional(), - privilegedMode: z.nullable(z.boolean()).optional(), - projectArn: z.nullable(z.string()).optional(), - projectName: z.string(), - queuedTimeoutInMinutes: z.nullable(z.int()).optional(), - s3LogsStatus: z.nullable(z.string()).optional(), - serviceRolePresent: z.boolean(), - sourceType: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus50$outboundSchema), - timeoutInMinutes: z.nullable(z.int()).optional(), - backend: z.literal("awsCodeBuild"), -}); - -export function dataAwsCodeBuildToJSON( - dataAwsCodeBuild: DataAwsCodeBuild, -): string { - return JSON.stringify( - DataAwsCodeBuild$outboundSchema.parse(dataAwsCodeBuild), - ); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion13$Outbound = - | DataAwsCodeBuild$Outbound - | DataGcpCloudBuild$Outbound - | DataAzureContainerApps2$Outbound - | DataKubernetesJob$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion13$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion13$Outbound, - SyncReconcileRequestDataUnion13 -> = z.union([ - z.lazy(() => DataAwsCodeBuild$outboundSchema), - z.lazy(() => DataGcpCloudBuild$outboundSchema), - z.lazy(() => DataAzureContainerApps2$outboundSchema), - z.lazy(() => DataKubernetesJob$outboundSchema), -]); - -export function syncReconcileRequestDataUnion13ToJSON( - syncReconcileRequestDataUnion13: SyncReconcileRequestDataUnion13, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion13$outboundSchema.parse( - syncReconcileRequestDataUnion13, - ), - ); -} - -/** @internal */ -export type DataBuild$Outbound = { - data: - | DataAwsCodeBuild$Outbound - | DataGcpCloudBuild$Outbound - | DataAzureContainerApps2$Outbound - | DataKubernetesJob$Outbound; - resourceType: "build"; -}; - -/** @internal */ -export const DataBuild$outboundSchema: z.ZodType< - DataBuild$Outbound, - DataBuild -> = z.object({ - data: z.union([ - z.lazy(() => DataAwsCodeBuild$outboundSchema), - z.lazy(() => DataGcpCloudBuild$outboundSchema), - z.lazy(() => DataAzureContainerApps2$outboundSchema), - z.lazy(() => DataKubernetesJob$outboundSchema), - ]), - resourceType: z.literal("build"), -}); - -export function dataBuildToJSON(dataBuild: DataBuild): string { - return JSON.stringify(DataBuild$outboundSchema.parse(dataBuild)); -} - -/** @internal */ -export const Reason49$outboundSchema: z.ZodEnum = z.enum( - Reason49, -); - -/** @internal */ -export const CollectionIssueSeverity49$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity49 -> = z.enum(CollectionIssueSeverity49); - -/** @internal */ -export type CollectionIssue49$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue49$outboundSchema: z.ZodType< - CollectionIssue49$Outbound, - CollectionIssue49 -> = z.object({ - message: z.string(), - reason: Reason49$outboundSchema, - severity: CollectionIssueSeverity49$outboundSchema, - source: z.string(), -}); - -export function collectionIssue49ToJSON( - collectionIssue49: CollectionIssue49, -): string { - return JSON.stringify( - CollectionIssue49$outboundSchema.parse(collectionIssue49), - ); -} - -/** @internal */ -export const Health49$outboundSchema: z.ZodEnum = z.enum( - Health49, -); - -/** @internal */ -export const StatusLifecycle49$outboundSchema: z.ZodEnum< - typeof StatusLifecycle49 -> = z.enum(StatusLifecycle49); - -/** @internal */ -export type HeartbeatStatus49$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus49$outboundSchema: z.ZodType< - HeartbeatStatus49$Outbound, - HeartbeatStatus49 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue49$outboundSchema)), - health: Health49$outboundSchema, - lifecycle: StatusLifecycle49$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus49ToJSON( - heartbeatStatus49: HeartbeatStatus49, -): string { - return JSON.stringify( - HeartbeatStatus49$outboundSchema.parse(heartbeatStatus49), - ); -} - -/** @internal */ -export type DataLocal10$Outbound = { - reachable: boolean; - registryUrl: string; - status: HeartbeatStatus49$Outbound; - backend: "local"; -}; - -/** @internal */ -export const DataLocal10$outboundSchema: z.ZodType< - DataLocal10$Outbound, - DataLocal10 -> = z.object({ - reachable: z.boolean(), - registryUrl: z.string(), - status: z.lazy(() => HeartbeatStatus49$outboundSchema), - backend: z.literal("local"), -}); - -export function dataLocal10ToJSON(dataLocal10: DataLocal10): string { - return JSON.stringify(DataLocal10$outboundSchema.parse(dataLocal10)); -} - -/** @internal */ -export const Reason48$outboundSchema: z.ZodEnum = z.enum( - Reason48, -); - -/** @internal */ -export const CollectionIssueSeverity48$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity48 -> = z.enum(CollectionIssueSeverity48); - -/** @internal */ -export type CollectionIssue48$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue48$outboundSchema: z.ZodType< - CollectionIssue48$Outbound, - CollectionIssue48 -> = z.object({ - message: z.string(), - reason: Reason48$outboundSchema, - severity: CollectionIssueSeverity48$outboundSchema, - source: z.string(), -}); - -export function collectionIssue48ToJSON( - collectionIssue48: CollectionIssue48, -): string { - return JSON.stringify( - CollectionIssue48$outboundSchema.parse(collectionIssue48), - ); -} - -/** @internal */ -export const Health48$outboundSchema: z.ZodEnum = z.enum( - Health48, -); - -/** @internal */ -export const StatusLifecycle48$outboundSchema: z.ZodEnum< - typeof StatusLifecycle48 -> = z.enum(StatusLifecycle48); - -/** @internal */ -export type HeartbeatStatus48$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus48$outboundSchema: z.ZodType< - HeartbeatStatus48$Outbound, - HeartbeatStatus48 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue48$outboundSchema)), - health: Health48$outboundSchema, - lifecycle: StatusLifecycle48$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus48ToJSON( - heartbeatStatus48: HeartbeatStatus48, -): string { - return JSON.stringify( - HeartbeatStatus48$outboundSchema.parse(heartbeatStatus48), - ); -} - -/** @internal */ -export type DataAzureContainerRegistry$Outbound = { - adminUserEnabled: boolean; - anonymousPullEnabled: boolean; - creationDate?: string | null | undefined; - dataEndpointEnabled?: boolean | null | undefined; - dataEndpointHostNames: Array; - encryptionKeyIdentifierPresent: boolean; - encryptionKeyVaultUriPresent: boolean; - encryptionStatus?: string | null | undefined; - ipRuleCount: number; - location: string; - loginServer?: string | null | undefined; - managedTagCount: number; - name: string; - networkRuleBypassOptions: string; - networkRuleDefaultAction?: string | null | undefined; - policiesPresent: boolean; - policyCount: number; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess: string; - resourceGroup: string; - resourceId?: string | null | undefined; - skuName: string; - skuTier?: string | null | undefined; - status: HeartbeatStatus48$Outbound; - type?: string | null | undefined; - zoneRedundancy: string; - backend: "azureContainerRegistry"; -}; - -/** @internal */ -export const DataAzureContainerRegistry$outboundSchema: z.ZodType< - DataAzureContainerRegistry$Outbound, - DataAzureContainerRegistry -> = z.object({ - adminUserEnabled: z.boolean(), - anonymousPullEnabled: z.boolean(), - creationDate: z.nullable(z.string()).optional(), - dataEndpointEnabled: z.nullable(z.boolean()).optional(), - dataEndpointHostNames: z.array(z.string()), - encryptionKeyIdentifierPresent: z.boolean(), - encryptionKeyVaultUriPresent: z.boolean(), - encryptionStatus: z.nullable(z.string()).optional(), - ipRuleCount: z.int(), - location: z.string(), - loginServer: z.nullable(z.string()).optional(), - managedTagCount: z.int(), - name: z.string(), - networkRuleBypassOptions: z.string(), - networkRuleDefaultAction: z.nullable(z.string()).optional(), - policiesPresent: z.boolean(), - policyCount: z.int(), - privateEndpointConnectionCount: z.int(), - provisioningState: z.nullable(z.string()).optional(), - publicNetworkAccess: z.string(), - resourceGroup: z.string(), - resourceId: z.nullable(z.string()).optional(), - skuName: z.string(), - skuTier: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus48$outboundSchema), - type: z.nullable(z.string()).optional(), - zoneRedundancy: z.string(), - backend: z.literal("azureContainerRegistry"), -}); - -export function dataAzureContainerRegistryToJSON( - dataAzureContainerRegistry: DataAzureContainerRegistry, -): string { - return JSON.stringify( - DataAzureContainerRegistry$outboundSchema.parse(dataAzureContainerRegistry), - ); -} - -/** @internal */ -export const Reason47$outboundSchema: z.ZodEnum = z.enum( - Reason47, -); - -/** @internal */ -export const CollectionIssueSeverity47$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity47 -> = z.enum(CollectionIssueSeverity47); - -/** @internal */ -export type CollectionIssue47$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue47$outboundSchema: z.ZodType< - CollectionIssue47$Outbound, - CollectionIssue47 -> = z.object({ - message: z.string(), - reason: Reason47$outboundSchema, - severity: CollectionIssueSeverity47$outboundSchema, - source: z.string(), -}); - -export function collectionIssue47ToJSON( - collectionIssue47: CollectionIssue47, -): string { - return JSON.stringify( - CollectionIssue47$outboundSchema.parse(collectionIssue47), - ); -} - -/** @internal */ -export const Health47$outboundSchema: z.ZodEnum = z.enum( - Health47, -); - -/** @internal */ -export const StatusLifecycle47$outboundSchema: z.ZodEnum< - typeof StatusLifecycle47 -> = z.enum(StatusLifecycle47); - -/** @internal */ -export type HeartbeatStatus47$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus47$outboundSchema: z.ZodType< - HeartbeatStatus47$Outbound, - HeartbeatStatus47 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue47$outboundSchema)), - health: Health47$outboundSchema, - lifecycle: StatusLifecycle47$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus47ToJSON( - heartbeatStatus47: HeartbeatStatus47, -): string { - return JSON.stringify( - HeartbeatStatus47$outboundSchema.parse(heartbeatStatus47), - ); -} - -/** @internal */ -export type DataGcpArtifactRegistry$Outbound = { - cleanupPolicyCount: number; - cleanupPolicyDryRun?: boolean | null | undefined; - createTime?: string | null | undefined; - description?: string | null | undefined; - format?: string | null | undefined; - iamBindingCount: number; - iamPolicyEtagPresent: boolean; - iamRoles: Array; - kmsKeyNamePresent: boolean; - labelCount: number; - location: string; - mode?: string | null | undefined; - name?: string | null | undefined; - projectId: string; - pullServiceAccountEmail?: string | null | undefined; - pushServiceAccountEmail?: string | null | undefined; - repositoryId: string; - satisfiesPzs?: boolean | null | undefined; - sizeBytes?: string | null | undefined; - status: HeartbeatStatus47$Outbound; - updateTime?: string | null | undefined; - backend: "gcpArtifactRegistry"; -}; - -/** @internal */ -export const DataGcpArtifactRegistry$outboundSchema: z.ZodType< - DataGcpArtifactRegistry$Outbound, - DataGcpArtifactRegistry -> = z.object({ - cleanupPolicyCount: z.int(), - cleanupPolicyDryRun: z.nullable(z.boolean()).optional(), - createTime: z.nullable(z.string()).optional(), - description: z.nullable(z.string()).optional(), - format: z.nullable(z.string()).optional(), - iamBindingCount: z.int(), - iamPolicyEtagPresent: z.boolean(), - iamRoles: z.array(z.string()), - kmsKeyNamePresent: z.boolean(), - labelCount: z.int(), - location: z.string(), - mode: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - projectId: z.string(), - pullServiceAccountEmail: z.nullable(z.string()).optional(), - pushServiceAccountEmail: z.nullable(z.string()).optional(), - repositoryId: z.string(), - satisfiesPzs: z.nullable(z.boolean()).optional(), - sizeBytes: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus47$outboundSchema), - updateTime: z.nullable(z.string()).optional(), - backend: z.literal("gcpArtifactRegistry"), -}); - -export function dataGcpArtifactRegistryToJSON( - dataGcpArtifactRegistry: DataGcpArtifactRegistry, -): string { - return JSON.stringify( - DataGcpArtifactRegistry$outboundSchema.parse(dataGcpArtifactRegistry), - ); -} - -/** @internal */ -export type Repository$Outbound = { - createdAt: number; - encryptionType?: string | null | undefined; - imageTagMutability?: string | null | undefined; - kmsKeyPresent: boolean; - registryId: string; - repositoryArn: string; - repositoryName: string; - repositoryUri: string; - scanOnPush?: boolean | null | undefined; -}; - -/** @internal */ -export const Repository$outboundSchema: z.ZodType< - Repository$Outbound, - Repository -> = z.object({ - createdAt: z.number(), - encryptionType: z.nullable(z.string()).optional(), - imageTagMutability: z.nullable(z.string()).optional(), - kmsKeyPresent: z.boolean(), - registryId: z.string(), - repositoryArn: z.string(), - repositoryName: z.string(), - repositoryUri: z.string(), - scanOnPush: z.nullable(z.boolean()).optional(), -}); - -export function repositoryToJSON(repository: Repository): string { - return JSON.stringify(Repository$outboundSchema.parse(repository)); -} - -/** @internal */ -export const Reason46$outboundSchema: z.ZodEnum = z.enum( - Reason46, -); - -/** @internal */ -export const CollectionIssueSeverity46$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity46 -> = z.enum(CollectionIssueSeverity46); - -/** @internal */ -export type CollectionIssue46$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue46$outboundSchema: z.ZodType< - CollectionIssue46$Outbound, - CollectionIssue46 -> = z.object({ - message: z.string(), - reason: Reason46$outboundSchema, - severity: CollectionIssueSeverity46$outboundSchema, - source: z.string(), -}); - -export function collectionIssue46ToJSON( - collectionIssue46: CollectionIssue46, -): string { - return JSON.stringify( - CollectionIssue46$outboundSchema.parse(collectionIssue46), - ); -} - -/** @internal */ -export const Health46$outboundSchema: z.ZodEnum = z.enum( - Health46, -); - -/** @internal */ -export const StatusLifecycle46$outboundSchema: z.ZodEnum< - typeof StatusLifecycle46 -> = z.enum(StatusLifecycle46); - -/** @internal */ -export type HeartbeatStatus46$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus46$outboundSchema: z.ZodType< - HeartbeatStatus46$Outbound, - HeartbeatStatus46 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue46$outboundSchema)), - health: Health46$outboundSchema, - lifecycle: StatusLifecycle46$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus46ToJSON( - heartbeatStatus46: HeartbeatStatus46, -): string { - return JSON.stringify( - HeartbeatStatus46$outboundSchema.parse(heartbeatStatus46), - ); -} - -/** @internal */ -export type DataAwsEcr$Outbound = { - pullRoleArn?: string | null | undefined; - pushRoleArn?: string | null | undefined; - region: string; - registryId: string; - registryUri: string; - repositories: Array; - repositoriesTruncated: boolean; - repositoryCount: number; - repositoryPrefix: string; - status: HeartbeatStatus46$Outbound; - backend: "awsEcr"; -}; - -/** @internal */ -export const DataAwsEcr$outboundSchema: z.ZodType< - DataAwsEcr$Outbound, - DataAwsEcr -> = z.object({ - pullRoleArn: z.nullable(z.string()).optional(), - pushRoleArn: z.nullable(z.string()).optional(), - region: z.string(), - registryId: z.string(), - registryUri: z.string(), - repositories: z.array(z.lazy(() => Repository$outboundSchema)), - repositoriesTruncated: z.boolean(), - repositoryCount: z.int(), - repositoryPrefix: z.string(), - status: z.lazy(() => HeartbeatStatus46$outboundSchema), - backend: z.literal("awsEcr"), -}); - -export function dataAwsEcrToJSON(dataAwsEcr: DataAwsEcr): string { - return JSON.stringify(DataAwsEcr$outboundSchema.parse(dataAwsEcr)); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion12$Outbound = - | DataAwsEcr$Outbound - | DataGcpArtifactRegistry$Outbound - | DataAzureContainerRegistry$Outbound - | DataLocal10$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion12$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion12$Outbound, - SyncReconcileRequestDataUnion12 -> = z.union([ - z.lazy(() => DataAwsEcr$outboundSchema), - z.lazy(() => DataGcpArtifactRegistry$outboundSchema), - z.lazy(() => DataAzureContainerRegistry$outboundSchema), - z.lazy(() => DataLocal10$outboundSchema), -]); - -export function syncReconcileRequestDataUnion12ToJSON( - syncReconcileRequestDataUnion12: SyncReconcileRequestDataUnion12, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion12$outboundSchema.parse( - syncReconcileRequestDataUnion12, - ), - ); -} - -/** @internal */ -export type DataArtifactRegistry$Outbound = { - data: - | DataAwsEcr$Outbound - | DataGcpArtifactRegistry$Outbound - | DataAzureContainerRegistry$Outbound - | DataLocal10$Outbound; - resourceType: "artifact-registry"; -}; - -/** @internal */ -export const DataArtifactRegistry$outboundSchema: z.ZodType< - DataArtifactRegistry$Outbound, - DataArtifactRegistry -> = z.object({ - data: z.union([ - z.lazy(() => DataAwsEcr$outboundSchema), - z.lazy(() => DataGcpArtifactRegistry$outboundSchema), - z.lazy(() => DataAzureContainerRegistry$outboundSchema), - z.lazy(() => DataLocal10$outboundSchema), - ]), - resourceType: z.literal("artifact-registry"), -}); - -export function dataArtifactRegistryToJSON( - dataArtifactRegistry: DataArtifactRegistry, -): string { - return JSON.stringify( - DataArtifactRegistry$outboundSchema.parse(dataArtifactRegistry), - ); -} - -/** @internal */ -export const Reason45$outboundSchema: z.ZodEnum = z.enum( - Reason45, -); - -/** @internal */ -export const CollectionIssueSeverity45$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity45 -> = z.enum(CollectionIssueSeverity45); - -/** @internal */ -export type CollectionIssue45$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue45$outboundSchema: z.ZodType< - CollectionIssue45$Outbound, - CollectionIssue45 -> = z.object({ - message: z.string(), - reason: Reason45$outboundSchema, - severity: CollectionIssueSeverity45$outboundSchema, - source: z.string(), -}); - -export function collectionIssue45ToJSON( - collectionIssue45: CollectionIssue45, -): string { - return JSON.stringify( - CollectionIssue45$outboundSchema.parse(collectionIssue45), - ); -} - -/** @internal */ -export const Health45$outboundSchema: z.ZodEnum = z.enum( - Health45, -); - -/** @internal */ -export const StatusLifecycle45$outboundSchema: z.ZodEnum< - typeof StatusLifecycle45 -> = z.enum(StatusLifecycle45); - -/** @internal */ -export type HeartbeatStatus45$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus45$outboundSchema: z.ZodType< - HeartbeatStatus45$Outbound, - HeartbeatStatus45 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue45$outboundSchema)), - health: Health45$outboundSchema, - lifecycle: StatusLifecycle45$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus45ToJSON( - heartbeatStatus45: HeartbeatStatus45, -): string { - return JSON.stringify( - HeartbeatStatus45$outboundSchema.parse(heartbeatStatus45), - ); -} - -/** @internal */ -export type DataAzureManagedIdentity2$Outbound = { - ficName?: string | null | undefined; - roleAssignmentIds: Array; - roleDefinitionId?: string | null | undefined; - status: HeartbeatStatus45$Outbound; - tenantId?: string | null | undefined; - uamiClientId?: string | null | undefined; - uamiPrincipalId?: string | null | undefined; - uamiResourceId?: string | null | undefined; - backend: "azureManagedIdentity"; -}; - -/** @internal */ -export const DataAzureManagedIdentity2$outboundSchema: z.ZodType< - DataAzureManagedIdentity2$Outbound, - DataAzureManagedIdentity2 -> = z.object({ - ficName: z.nullable(z.string()).optional(), - roleAssignmentIds: z.array(z.string()), - roleDefinitionId: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus45$outboundSchema), - tenantId: z.nullable(z.string()).optional(), - uamiClientId: z.nullable(z.string()).optional(), - uamiPrincipalId: z.nullable(z.string()).optional(), - uamiResourceId: z.nullable(z.string()).optional(), - backend: z.literal("azureManagedIdentity"), -}); - -export function dataAzureManagedIdentity2ToJSON( - dataAzureManagedIdentity2: DataAzureManagedIdentity2, -): string { - return JSON.stringify( - DataAzureManagedIdentity2$outboundSchema.parse(dataAzureManagedIdentity2), - ); -} - -/** @internal */ -export const Reason44$outboundSchema: z.ZodEnum = z.enum( - Reason44, -); - -/** @internal */ -export const CollectionIssueSeverity44$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity44 -> = z.enum(CollectionIssueSeverity44); - -/** @internal */ -export type CollectionIssue44$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue44$outboundSchema: z.ZodType< - CollectionIssue44$Outbound, - CollectionIssue44 -> = z.object({ - message: z.string(), - reason: Reason44$outboundSchema, - severity: CollectionIssueSeverity44$outboundSchema, - source: z.string(), -}); - -export function collectionIssue44ToJSON( - collectionIssue44: CollectionIssue44, -): string { - return JSON.stringify( - CollectionIssue44$outboundSchema.parse(collectionIssue44), - ); -} - -/** @internal */ -export const Health44$outboundSchema: z.ZodEnum = z.enum( - Health44, -); - -/** @internal */ -export const StatusLifecycle44$outboundSchema: z.ZodEnum< - typeof StatusLifecycle44 -> = z.enum(StatusLifecycle44); - -/** @internal */ -export type HeartbeatStatus44$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus44$outboundSchema: z.ZodType< - HeartbeatStatus44$Outbound, - HeartbeatStatus44 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue44$outboundSchema)), - health: Health44$outboundSchema, - lifecycle: StatusLifecycle44$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus44ToJSON( - heartbeatStatus44: HeartbeatStatus44, -): string { - return JSON.stringify( - HeartbeatStatus44$outboundSchema.parse(heartbeatStatus44), - ); -} - -/** @internal */ -export type DataGcpServiceAccount2$Outbound = { - impersonationGranted: boolean; - roleBound: boolean; - serviceAccountEmail?: string | null | undefined; - serviceAccountUniqueId?: string | null | undefined; - status: HeartbeatStatus44$Outbound; - backend: "gcpServiceAccount"; -}; - -/** @internal */ -export const DataGcpServiceAccount2$outboundSchema: z.ZodType< - DataGcpServiceAccount2$Outbound, - DataGcpServiceAccount2 -> = z.object({ - impersonationGranted: z.boolean(), - roleBound: z.boolean(), - serviceAccountEmail: z.nullable(z.string()).optional(), - serviceAccountUniqueId: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus44$outboundSchema), - backend: z.literal("gcpServiceAccount"), -}); - -export function dataGcpServiceAccount2ToJSON( - dataGcpServiceAccount2: DataGcpServiceAccount2, -): string { - return JSON.stringify( - DataGcpServiceAccount2$outboundSchema.parse(dataGcpServiceAccount2), - ); -} - -/** @internal */ -export const Reason43$outboundSchema: z.ZodEnum = z.enum( - Reason43, -); - -/** @internal */ -export const CollectionIssueSeverity43$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity43 -> = z.enum(CollectionIssueSeverity43); - -/** @internal */ -export type CollectionIssue43$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue43$outboundSchema: z.ZodType< - CollectionIssue43$Outbound, - CollectionIssue43 -> = z.object({ - message: z.string(), - reason: Reason43$outboundSchema, - severity: CollectionIssueSeverity43$outboundSchema, - source: z.string(), -}); - -export function collectionIssue43ToJSON( - collectionIssue43: CollectionIssue43, -): string { - return JSON.stringify( - CollectionIssue43$outboundSchema.parse(collectionIssue43), - ); -} - -/** @internal */ -export const Health43$outboundSchema: z.ZodEnum = z.enum( - Health43, -); - -/** @internal */ -export const StatusLifecycle43$outboundSchema: z.ZodEnum< - typeof StatusLifecycle43 -> = z.enum(StatusLifecycle43); - -/** @internal */ -export type HeartbeatStatus43$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus43$outboundSchema: z.ZodType< - HeartbeatStatus43$Outbound, - HeartbeatStatus43 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue43$outboundSchema)), - health: Health43$outboundSchema, - lifecycle: StatusLifecycle43$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus43ToJSON( - heartbeatStatus43: HeartbeatStatus43, -): string { - return JSON.stringify( - HeartbeatStatus43$outboundSchema.parse(heartbeatStatus43), - ); -} - -/** @internal */ -export type DataAwsIamRole2$Outbound = { - managementPermissionsApplied: boolean; - roleArn?: string | null | undefined; - roleName?: string | null | undefined; - status: HeartbeatStatus43$Outbound; - backend: "awsIamRole"; -}; - -/** @internal */ -export const DataAwsIamRole2$outboundSchema: z.ZodType< - DataAwsIamRole2$Outbound, - DataAwsIamRole2 -> = z.object({ - managementPermissionsApplied: z.boolean(), - roleArn: z.nullable(z.string()).optional(), - roleName: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus43$outboundSchema), - backend: z.literal("awsIamRole"), -}); - -export function dataAwsIamRole2ToJSON( - dataAwsIamRole2: DataAwsIamRole2, -): string { - return JSON.stringify(DataAwsIamRole2$outboundSchema.parse(dataAwsIamRole2)); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion11$Outbound = - | DataAwsIamRole2$Outbound - | DataGcpServiceAccount2$Outbound - | DataAzureManagedIdentity2$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion11$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion11$Outbound, - SyncReconcileRequestDataUnion11 -> = z.union([ - z.lazy(() => DataAwsIamRole2$outboundSchema), - z.lazy(() => DataGcpServiceAccount2$outboundSchema), - z.lazy(() => DataAzureManagedIdentity2$outboundSchema), -]); - -export function syncReconcileRequestDataUnion11ToJSON( - syncReconcileRequestDataUnion11: SyncReconcileRequestDataUnion11, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion11$outboundSchema.parse( - syncReconcileRequestDataUnion11, - ), - ); -} - -/** @internal */ -export type DataRemoteStackManagement$Outbound = { - data: - | DataAwsIamRole2$Outbound - | DataGcpServiceAccount2$Outbound - | DataAzureManagedIdentity2$Outbound; - resourceType: "remote-stack-management"; -}; - -/** @internal */ -export const DataRemoteStackManagement$outboundSchema: z.ZodType< - DataRemoteStackManagement$Outbound, - DataRemoteStackManagement -> = z.object({ - data: z.union([ - z.lazy(() => DataAwsIamRole2$outboundSchema), - z.lazy(() => DataGcpServiceAccount2$outboundSchema), - z.lazy(() => DataAzureManagedIdentity2$outboundSchema), - ]), - resourceType: z.literal("remote-stack-management"), -}); - -export function dataRemoteStackManagementToJSON( - dataRemoteStackManagement: DataRemoteStackManagement, -): string { - return JSON.stringify( - DataRemoteStackManagement$outboundSchema.parse(dataRemoteStackManagement), - ); -} - -/** @internal */ -export const Reason42$outboundSchema: z.ZodEnum = z.enum( - Reason42, -); - -/** @internal */ -export const CollectionIssueSeverity42$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity42 -> = z.enum(CollectionIssueSeverity42); - -/** @internal */ -export type CollectionIssue42$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue42$outboundSchema: z.ZodType< - CollectionIssue42$Outbound, - CollectionIssue42 -> = z.object({ - message: z.string(), - reason: Reason42$outboundSchema, - severity: CollectionIssueSeverity42$outboundSchema, - source: z.string(), -}); - -export function collectionIssue42ToJSON( - collectionIssue42: CollectionIssue42, -): string { - return JSON.stringify( - CollectionIssue42$outboundSchema.parse(collectionIssue42), - ); -} - -/** @internal */ -export const Health42$outboundSchema: z.ZodEnum = z.enum( - Health42, -); - -/** @internal */ -export const StatusLifecycle42$outboundSchema: z.ZodEnum< - typeof StatusLifecycle42 -> = z.enum(StatusLifecycle42); - -/** @internal */ -export type HeartbeatStatus42$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus42$outboundSchema: z.ZodType< - HeartbeatStatus42$Outbound, - HeartbeatStatus42 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue42$outboundSchema)), - health: Health42$outboundSchema, - lifecycle: StatusLifecycle42$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus42ToJSON( - heartbeatStatus42: HeartbeatStatus42, -): string { - return JSON.stringify( - HeartbeatStatus42$outboundSchema.parse(heartbeatStatus42), - ); -} - -/** @internal */ -export type DataAzureVnet$Outbound = { - applicationGatewaySubnetName?: string | null | undefined; - cidrBlock?: string | null | undefined; - isByoVnet: boolean; - lastByoVnetVerificationErrorCode?: string | null | undefined; - location?: string | null | undefined; - natGatewayId?: string | null | undefined; - nsgId?: string | null | undefined; - privateSubnetName?: string | null | undefined; - publicIpId?: string | null | undefined; - publicSubnetName?: string | null | undefined; - resourceGroup?: string | null | undefined; - status: HeartbeatStatus42$Outbound; - vnetName?: string | null | undefined; - vnetResourceId?: string | null | undefined; - backend: "azureVnet"; -}; - -/** @internal */ -export const DataAzureVnet$outboundSchema: z.ZodType< - DataAzureVnet$Outbound, - DataAzureVnet -> = z.object({ - applicationGatewaySubnetName: z.nullable(z.string()).optional(), - cidrBlock: z.nullable(z.string()).optional(), - isByoVnet: z.boolean(), - lastByoVnetVerificationErrorCode: z.nullable(z.string()).optional(), - location: z.nullable(z.string()).optional(), - natGatewayId: z.nullable(z.string()).optional(), - nsgId: z.nullable(z.string()).optional(), - privateSubnetName: z.nullable(z.string()).optional(), - publicIpId: z.nullable(z.string()).optional(), - publicSubnetName: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus42$outboundSchema), - vnetName: z.nullable(z.string()).optional(), - vnetResourceId: z.nullable(z.string()).optional(), - backend: z.literal("azureVnet"), -}); - -export function dataAzureVnetToJSON(dataAzureVnet: DataAzureVnet): string { - return JSON.stringify(DataAzureVnet$outboundSchema.parse(dataAzureVnet)); -} - -/** @internal */ -export const Reason41$outboundSchema: z.ZodEnum = z.enum( - Reason41, -); - -/** @internal */ -export const CollectionIssueSeverity41$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity41 -> = z.enum(CollectionIssueSeverity41); - -/** @internal */ -export type CollectionIssue41$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue41$outboundSchema: z.ZodType< - CollectionIssue41$Outbound, - CollectionIssue41 -> = z.object({ - message: z.string(), - reason: Reason41$outboundSchema, - severity: CollectionIssueSeverity41$outboundSchema, - source: z.string(), -}); - -export function collectionIssue41ToJSON( - collectionIssue41: CollectionIssue41, -): string { - return JSON.stringify( - CollectionIssue41$outboundSchema.parse(collectionIssue41), - ); -} - -/** @internal */ -export const Health41$outboundSchema: z.ZodEnum = z.enum( - Health41, -); - -/** @internal */ -export const StatusLifecycle41$outboundSchema: z.ZodEnum< - typeof StatusLifecycle41 -> = z.enum(StatusLifecycle41); - -/** @internal */ -export type HeartbeatStatus41$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus41$outboundSchema: z.ZodType< - HeartbeatStatus41$Outbound, - HeartbeatStatus41 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue41$outboundSchema)), - health: Health41$outboundSchema, - lifecycle: StatusLifecycle41$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus41ToJSON( - heartbeatStatus41: HeartbeatStatus41, -): string { - return JSON.stringify( - HeartbeatStatus41$outboundSchema.parse(heartbeatStatus41), - ); -} - -/** @internal */ -export type DataGcpVpc$Outbound = { - cidrBlock?: string | null | undefined; - cloudNatName?: string | null | undefined; - firewallName?: string | null | undefined; - isByoVpc: boolean; - networkName?: string | null | undefined; - networkSelfLink?: string | null | undefined; - region?: string | null | undefined; - routerName?: string | null | undefined; - status: HeartbeatStatus41$Outbound; - subnetworkName?: string | null | undefined; - subnetworkSelfLink?: string | null | undefined; - backend: "gcpVpc"; -}; - -/** @internal */ -export const DataGcpVpc$outboundSchema: z.ZodType< - DataGcpVpc$Outbound, - DataGcpVpc -> = z.object({ - cidrBlock: z.nullable(z.string()).optional(), - cloudNatName: z.nullable(z.string()).optional(), - firewallName: z.nullable(z.string()).optional(), - isByoVpc: z.boolean(), - networkName: z.nullable(z.string()).optional(), - networkSelfLink: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - routerName: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus41$outboundSchema), - subnetworkName: z.nullable(z.string()).optional(), - subnetworkSelfLink: z.nullable(z.string()).optional(), - backend: z.literal("gcpVpc"), -}); - -export function dataGcpVpcToJSON(dataGcpVpc: DataGcpVpc): string { - return JSON.stringify(DataGcpVpc$outboundSchema.parse(dataGcpVpc)); -} - -/** @internal */ -export const Reason40$outboundSchema: z.ZodEnum = z.enum( - Reason40, -); - -/** @internal */ -export const CollectionIssueSeverity40$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity40 -> = z.enum(CollectionIssueSeverity40); - -/** @internal */ -export type CollectionIssue40$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue40$outboundSchema: z.ZodType< - CollectionIssue40$Outbound, - CollectionIssue40 -> = z.object({ - message: z.string(), - reason: Reason40$outboundSchema, - severity: CollectionIssueSeverity40$outboundSchema, - source: z.string(), -}); - -export function collectionIssue40ToJSON( - collectionIssue40: CollectionIssue40, -): string { - return JSON.stringify( - CollectionIssue40$outboundSchema.parse(collectionIssue40), - ); -} - -/** @internal */ -export const Health40$outboundSchema: z.ZodEnum = z.enum( - Health40, -); - -/** @internal */ -export const StatusLifecycle40$outboundSchema: z.ZodEnum< - typeof StatusLifecycle40 -> = z.enum(StatusLifecycle40); - -/** @internal */ -export type HeartbeatStatus40$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus40$outboundSchema: z.ZodType< - HeartbeatStatus40$Outbound, - HeartbeatStatus40 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue40$outboundSchema)), - health: Health40$outboundSchema, - lifecycle: StatusLifecycle40$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus40ToJSON( - heartbeatStatus40: HeartbeatStatus40, -): string { - return JSON.stringify( - HeartbeatStatus40$outboundSchema.parse(heartbeatStatus40), - ); -} - -/** @internal */ -export type DataAwsVpc$Outbound = { - availabilityZones: Array; - cidrBlock?: string | null | undefined; - internetGatewayId?: string | null | undefined; - isByoVpc: boolean; - natGatewayId?: string | null | undefined; - privateSubnetIds: Array; - publicSubnetIds: Array; - routeTableCount: number; - securityGroupId?: string | null | undefined; - status: HeartbeatStatus40$Outbound; - vpcId?: string | null | undefined; - vpcState?: string | null | undefined; - backend: "awsVpc"; -}; - -/** @internal */ -export const DataAwsVpc$outboundSchema: z.ZodType< - DataAwsVpc$Outbound, - DataAwsVpc -> = z.object({ - availabilityZones: z.array(z.string()), - cidrBlock: z.nullable(z.string()).optional(), - internetGatewayId: z.nullable(z.string()).optional(), - isByoVpc: z.boolean(), - natGatewayId: z.nullable(z.string()).optional(), - privateSubnetIds: z.array(z.string()), - publicSubnetIds: z.array(z.string()), - routeTableCount: z.int(), - securityGroupId: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus40$outboundSchema), - vpcId: z.nullable(z.string()).optional(), - vpcState: z.nullable(z.string()).optional(), - backend: z.literal("awsVpc"), -}); - -export function dataAwsVpcToJSON(dataAwsVpc: DataAwsVpc): string { - return JSON.stringify(DataAwsVpc$outboundSchema.parse(dataAwsVpc)); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion10$Outbound = - | DataAwsVpc$Outbound - | DataGcpVpc$Outbound - | DataAzureVnet$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion10$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion10$Outbound, - SyncReconcileRequestDataUnion10 -> = z.union([ - z.lazy(() => DataAwsVpc$outboundSchema), - z.lazy(() => DataGcpVpc$outboundSchema), - z.lazy(() => DataAzureVnet$outboundSchema), -]); - -export function syncReconcileRequestDataUnion10ToJSON( - syncReconcileRequestDataUnion10: SyncReconcileRequestDataUnion10, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion10$outboundSchema.parse( - syncReconcileRequestDataUnion10, - ), - ); -} - -/** @internal */ -export type DataNetwork$Outbound = { - data: DataAwsVpc$Outbound | DataGcpVpc$Outbound | DataAzureVnet$Outbound; - resourceType: "network"; -}; - -/** @internal */ -export const DataNetwork$outboundSchema: z.ZodType< - DataNetwork$Outbound, - DataNetwork -> = z.object({ - data: z.union([ - z.lazy(() => DataAwsVpc$outboundSchema), - z.lazy(() => DataGcpVpc$outboundSchema), - z.lazy(() => DataAzureVnet$outboundSchema), - ]), - resourceType: z.literal("network"), -}); - -export function dataNetworkToJSON(dataNetwork: DataNetwork): string { - return JSON.stringify(DataNetwork$outboundSchema.parse(dataNetwork)); -} - -/** @internal */ -export const Reason39$outboundSchema: z.ZodEnum = z.enum( - Reason39, -); - -/** @internal */ -export const CollectionIssueSeverity39$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity39 -> = z.enum(CollectionIssueSeverity39); - -/** @internal */ -export type CollectionIssue39$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue39$outboundSchema: z.ZodType< - CollectionIssue39$Outbound, - CollectionIssue39 -> = z.object({ - message: z.string(), - reason: Reason39$outboundSchema, - severity: CollectionIssueSeverity39$outboundSchema, - source: z.string(), -}); - -export function collectionIssue39ToJSON( - collectionIssue39: CollectionIssue39, -): string { - return JSON.stringify( - CollectionIssue39$outboundSchema.parse(collectionIssue39), - ); -} - -/** @internal */ -export const Health39$outboundSchema: z.ZodEnum = z.enum( - Health39, -); - -/** @internal */ -export const StatusLifecycle39$outboundSchema: z.ZodEnum< - typeof StatusLifecycle39 -> = z.enum(StatusLifecycle39); - -/** @internal */ -export type HeartbeatStatus39$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus39$outboundSchema: z.ZodType< - HeartbeatStatus39$Outbound, - HeartbeatStatus39 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue39$outboundSchema)), - health: Health39$outboundSchema, - lifecycle: StatusLifecycle39$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus39ToJSON( - heartbeatStatus39: HeartbeatStatus39, -): string { - return JSON.stringify( - HeartbeatStatus39$outboundSchema.parse(heartbeatStatus39), - ); -} - -/** @internal */ -export type DataLocal9$Outbound = { - configured: boolean; - identity: string; - status: HeartbeatStatus39$Outbound; - backend: "local"; -}; - -/** @internal */ -export const DataLocal9$outboundSchema: z.ZodType< - DataLocal9$Outbound, - DataLocal9 -> = z.object({ - configured: z.boolean(), - identity: z.string(), - status: z.lazy(() => HeartbeatStatus39$outboundSchema), - backend: z.literal("local"), -}); - -export function dataLocal9ToJSON(dataLocal9: DataLocal9): string { - return JSON.stringify(DataLocal9$outboundSchema.parse(dataLocal9)); -} - -/** @internal */ -export const Reason38$outboundSchema: z.ZodEnum = z.enum( - Reason38, -); - -/** @internal */ -export const CollectionIssueSeverity38$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity38 -> = z.enum(CollectionIssueSeverity38); - -/** @internal */ -export type CollectionIssue38$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue38$outboundSchema: z.ZodType< - CollectionIssue38$Outbound, - CollectionIssue38 -> = z.object({ - message: z.string(), - reason: Reason38$outboundSchema, - severity: CollectionIssueSeverity38$outboundSchema, - source: z.string(), -}); - -export function collectionIssue38ToJSON( - collectionIssue38: CollectionIssue38, -): string { - return JSON.stringify( - CollectionIssue38$outboundSchema.parse(collectionIssue38), - ); -} - -/** @internal */ -export const Health38$outboundSchema: z.ZodEnum = z.enum( - Health38, -); - -/** @internal */ -export const StatusLifecycle38$outboundSchema: z.ZodEnum< - typeof StatusLifecycle38 -> = z.enum(StatusLifecycle38); - -/** @internal */ -export type HeartbeatStatus38$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus38$outboundSchema: z.ZodType< - HeartbeatStatus38$Outbound, - HeartbeatStatus38 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue38$outboundSchema)), - health: Health38$outboundSchema, - lifecycle: StatusLifecycle38$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus38ToJSON( - heartbeatStatus38: HeartbeatStatus38, -): string { - return JSON.stringify( - HeartbeatStatus38$outboundSchema.parse(heartbeatStatus38), - ); -} - -/** @internal */ -export type DataAzureManagedIdentity1$Outbound = { - clientId?: string | null | undefined; - customRoleDefinitionCount: number; - customRoleDefinitionIds: Array; - isolationScope?: string | null | undefined; - location: string; - managedTagCount: number; - name: string; - principalId?: string | null | undefined; - resourceGroup: string; - resourceId: string; - roleAssignmentCount: number; - roleAssignmentIds: Array; - stackPermissionsApplied: boolean; - status: HeartbeatStatus38$Outbound; - tenantId?: string | null | undefined; - type?: string | null | undefined; - backend: "azureManagedIdentity"; -}; - -/** @internal */ -export const DataAzureManagedIdentity1$outboundSchema: z.ZodType< - DataAzureManagedIdentity1$Outbound, - DataAzureManagedIdentity1 -> = z.object({ - clientId: z.nullable(z.string()).optional(), - customRoleDefinitionCount: z.int(), - customRoleDefinitionIds: z.array(z.string()), - isolationScope: z.nullable(z.string()).optional(), - location: z.string(), - managedTagCount: z.int(), - name: z.string(), - principalId: z.nullable(z.string()).optional(), - resourceGroup: z.string(), - resourceId: z.string(), - roleAssignmentCount: z.int(), - roleAssignmentIds: z.array(z.string()), - stackPermissionsApplied: z.boolean(), - status: z.lazy(() => HeartbeatStatus38$outboundSchema), - tenantId: z.nullable(z.string()).optional(), - type: z.nullable(z.string()).optional(), - backend: z.literal("azureManagedIdentity"), -}); - -export function dataAzureManagedIdentity1ToJSON( - dataAzureManagedIdentity1: DataAzureManagedIdentity1, -): string { - return JSON.stringify( - DataAzureManagedIdentity1$outboundSchema.parse(dataAzureManagedIdentity1), - ); -} - -/** @internal */ -export const Reason37$outboundSchema: z.ZodEnum = z.enum( - Reason37, -); - -/** @internal */ -export const CollectionIssueSeverity37$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity37 -> = z.enum(CollectionIssueSeverity37); - -/** @internal */ -export type CollectionIssue37$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue37$outboundSchema: z.ZodType< - CollectionIssue37$Outbound, - CollectionIssue37 -> = z.object({ - message: z.string(), - reason: Reason37$outboundSchema, - severity: CollectionIssueSeverity37$outboundSchema, - source: z.string(), -}); - -export function collectionIssue37ToJSON( - collectionIssue37: CollectionIssue37, -): string { - return JSON.stringify( - CollectionIssue37$outboundSchema.parse(collectionIssue37), - ); -} - -/** @internal */ -export const Health37$outboundSchema: z.ZodEnum = z.enum( - Health37, -); - -/** @internal */ -export const StatusLifecycle37$outboundSchema: z.ZodEnum< - typeof StatusLifecycle37 -> = z.enum(StatusLifecycle37); - -/** @internal */ -export type HeartbeatStatus37$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus37$outboundSchema: z.ZodType< - HeartbeatStatus37$Outbound, - HeartbeatStatus37 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue37$outboundSchema)), - health: Health37$outboundSchema, - lifecycle: StatusLifecycle37$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus37ToJSON( - heartbeatStatus37: HeartbeatStatus37, -): string { - return JSON.stringify( - HeartbeatStatus37$outboundSchema.parse(heartbeatStatus37), - ); -} - -/** @internal */ -export type DataGcpServiceAccount1$Outbound = { - description?: string | null | undefined; - disabled?: boolean | null | undefined; - displayName?: string | null | undefined; - email: string; - etag?: string | null | undefined; - name?: string | null | undefined; - oauth2ClientId?: string | null | undefined; - projectBindingCount: number; - projectId?: string | null | undefined; - projectRoles: Array; - serviceAccountBindingCount: number; - serviceAccountRoles: Array; - status: HeartbeatStatus37$Outbound; - uniqueId?: string | null | undefined; - backend: "gcpServiceAccount"; -}; - -/** @internal */ -export const DataGcpServiceAccount1$outboundSchema: z.ZodType< - DataGcpServiceAccount1$Outbound, - DataGcpServiceAccount1 -> = z.object({ - description: z.nullable(z.string()).optional(), - disabled: z.nullable(z.boolean()).optional(), - displayName: z.nullable(z.string()).optional(), - email: z.string(), - etag: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - oauth2ClientId: z.nullable(z.string()).optional(), - projectBindingCount: z.int(), - projectId: z.nullable(z.string()).optional(), - projectRoles: z.array(z.string()), - serviceAccountBindingCount: z.int(), - serviceAccountRoles: z.array(z.string()), - status: z.lazy(() => HeartbeatStatus37$outboundSchema), - uniqueId: z.nullable(z.string()).optional(), - backend: z.literal("gcpServiceAccount"), -}); - -export function dataGcpServiceAccount1ToJSON( - dataGcpServiceAccount1: DataGcpServiceAccount1, -): string { - return JSON.stringify( - DataGcpServiceAccount1$outboundSchema.parse(dataGcpServiceAccount1), - ); -} - -/** @internal */ -export const Reason36$outboundSchema: z.ZodEnum = z.enum( - Reason36, -); - -/** @internal */ -export const CollectionIssueSeverity36$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity36 -> = z.enum(CollectionIssueSeverity36); - -/** @internal */ -export type CollectionIssue36$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue36$outboundSchema: z.ZodType< - CollectionIssue36$Outbound, - CollectionIssue36 -> = z.object({ - message: z.string(), - reason: Reason36$outboundSchema, - severity: CollectionIssueSeverity36$outboundSchema, - source: z.string(), -}); - -export function collectionIssue36ToJSON( - collectionIssue36: CollectionIssue36, -): string { - return JSON.stringify( - CollectionIssue36$outboundSchema.parse(collectionIssue36), - ); -} - -/** @internal */ -export const Health36$outboundSchema: z.ZodEnum = z.enum( - Health36, -); - -/** @internal */ -export const StatusLifecycle36$outboundSchema: z.ZodEnum< - typeof StatusLifecycle36 -> = z.enum(StatusLifecycle36); - -/** @internal */ -export type HeartbeatStatus36$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus36$outboundSchema: z.ZodType< - HeartbeatStatus36$Outbound, - HeartbeatStatus36 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue36$outboundSchema)), - health: Health36$outboundSchema, - lifecycle: StatusLifecycle36$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus36ToJSON( - heartbeatStatus36: HeartbeatStatus36, -): string { - return JSON.stringify( - HeartbeatStatus36$outboundSchema.parse(heartbeatStatus36), - ); -} - -/** @internal */ -export type DataAwsIamRole1$Outbound = { - assumeRolePolicyPresent: boolean; - attachedPolicyCount: number; - attachedPolicyNames: Array; - createDate: string; - description?: string | null | undefined; - inlinePolicyCount: number; - inlinePolicyNames: Array; - lastUsedDate?: string | null | undefined; - lastUsedRegion?: string | null | undefined; - managedTagCount: number; - maxSessionDuration?: number | null | undefined; - path: string; - permissionsBoundaryArn?: string | null | undefined; - permissionsBoundaryType?: string | null | undefined; - roleArn: string; - roleId: string; - roleName: string; - stackPermissionsApplied: boolean; - status: HeartbeatStatus36$Outbound; - tagCount: number; - backend: "awsIamRole"; -}; - -/** @internal */ -export const DataAwsIamRole1$outboundSchema: z.ZodType< - DataAwsIamRole1$Outbound, - DataAwsIamRole1 -> = z.object({ - assumeRolePolicyPresent: z.boolean(), - attachedPolicyCount: z.int(), - attachedPolicyNames: z.array(z.string()), - createDate: z.string(), - description: z.nullable(z.string()).optional(), - inlinePolicyCount: z.int(), - inlinePolicyNames: z.array(z.string()), - lastUsedDate: z.nullable(z.string()).optional(), - lastUsedRegion: z.nullable(z.string()).optional(), - managedTagCount: z.int(), - maxSessionDuration: z.nullable(z.int()).optional(), - path: z.string(), - permissionsBoundaryArn: z.nullable(z.string()).optional(), - permissionsBoundaryType: z.nullable(z.string()).optional(), - roleArn: z.string(), - roleId: z.string(), - roleName: z.string(), - stackPermissionsApplied: z.boolean(), - status: z.lazy(() => HeartbeatStatus36$outboundSchema), - tagCount: z.int(), - backend: z.literal("awsIamRole"), -}); - -export function dataAwsIamRole1ToJSON( - dataAwsIamRole1: DataAwsIamRole1, -): string { - return JSON.stringify(DataAwsIamRole1$outboundSchema.parse(dataAwsIamRole1)); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion9$Outbound = - | DataAwsIamRole1$Outbound - | DataGcpServiceAccount1$Outbound - | DataAzureManagedIdentity1$Outbound - | DataLocal9$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion9$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion9$Outbound, - SyncReconcileRequestDataUnion9 -> = z.union([ - z.lazy(() => DataAwsIamRole1$outboundSchema), - z.lazy(() => DataGcpServiceAccount1$outboundSchema), - z.lazy(() => DataAzureManagedIdentity1$outboundSchema), - z.lazy(() => DataLocal9$outboundSchema), -]); - -export function syncReconcileRequestDataUnion9ToJSON( - syncReconcileRequestDataUnion9: SyncReconcileRequestDataUnion9, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion9$outboundSchema.parse( - syncReconcileRequestDataUnion9, - ), - ); -} - -/** @internal */ -export type DataServiceAccount$Outbound = { - data: - | DataAwsIamRole1$Outbound - | DataGcpServiceAccount1$Outbound - | DataAzureManagedIdentity1$Outbound - | DataLocal9$Outbound; - resourceType: "service-account"; -}; - -/** @internal */ -export const DataServiceAccount$outboundSchema: z.ZodType< - DataServiceAccount$Outbound, - DataServiceAccount -> = z.object({ - data: z.union([ - z.lazy(() => DataAwsIamRole1$outboundSchema), - z.lazy(() => DataGcpServiceAccount1$outboundSchema), - z.lazy(() => DataAzureManagedIdentity1$outboundSchema), - z.lazy(() => DataLocal9$outboundSchema), - ]), - resourceType: z.literal("service-account"), -}); - -export function dataServiceAccountToJSON( - dataServiceAccount: DataServiceAccount, -): string { - return JSON.stringify( - DataServiceAccount$outboundSchema.parse(dataServiceAccount), - ); -} - -/** @internal */ -export const Reason35$outboundSchema: z.ZodEnum = z.enum( - Reason35, -); - -/** @internal */ -export const CollectionIssueSeverity35$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity35 -> = z.enum(CollectionIssueSeverity35); - -/** @internal */ -export type CollectionIssue35$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue35$outboundSchema: z.ZodType< - CollectionIssue35$Outbound, - CollectionIssue35 -> = z.object({ - message: z.string(), - reason: Reason35$outboundSchema, - severity: CollectionIssueSeverity35$outboundSchema, - source: z.string(), -}); - -export function collectionIssue35ToJSON( - collectionIssue35: CollectionIssue35, -): string { - return JSON.stringify( - CollectionIssue35$outboundSchema.parse(collectionIssue35), - ); -} - -/** @internal */ -export const Health35$outboundSchema: z.ZodEnum = z.enum( - Health35, -); - -/** @internal */ -export const StatusLifecycle35$outboundSchema: z.ZodEnum< - typeof StatusLifecycle35 -> = z.enum(StatusLifecycle35); - -/** @internal */ -export type HeartbeatStatus35$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus35$outboundSchema: z.ZodType< - HeartbeatStatus35$Outbound, - HeartbeatStatus35 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue35$outboundSchema)), - health: Health35$outboundSchema, - lifecycle: StatusLifecycle35$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus35ToJSON( - heartbeatStatus35: HeartbeatStatus35, -): string { - return JSON.stringify( - HeartbeatStatus35$outboundSchema.parse(heartbeatStatus35), - ); -} - -/** @internal */ -export type DataLocal8$Outbound = { - isDirectory?: boolean | null | undefined; - modifiedAt?: string | null | undefined; - path: string; - pathExists: boolean; - readonly?: boolean | null | undefined; - secretMetadataListed: boolean; - status: HeartbeatStatus35$Outbound; - backend: "local"; -}; - -/** @internal */ -export const DataLocal8$outboundSchema: z.ZodType< - DataLocal8$Outbound, - DataLocal8 -> = z.object({ - isDirectory: z.nullable(z.boolean()).optional(), - modifiedAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), - path: z.string(), - pathExists: z.boolean(), - readonly: z.nullable(z.boolean()).optional(), - secretMetadataListed: z.boolean(), - status: z.lazy(() => HeartbeatStatus35$outboundSchema), - backend: z.literal("local"), -}); - -export function dataLocal8ToJSON(dataLocal8: DataLocal8): string { - return JSON.stringify(DataLocal8$outboundSchema.parse(dataLocal8)); -} - -/** @internal */ -export const Reason34$outboundSchema: z.ZodEnum = z.enum( - Reason34, -); - -/** @internal */ -export const CollectionIssueSeverity34$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity34 -> = z.enum(CollectionIssueSeverity34); - -/** @internal */ -export type CollectionIssue34$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue34$outboundSchema: z.ZodType< - CollectionIssue34$Outbound, - CollectionIssue34 -> = z.object({ - message: z.string(), - reason: Reason34$outboundSchema, - severity: CollectionIssueSeverity34$outboundSchema, - source: z.string(), -}); - -export function collectionIssue34ToJSON( - collectionIssue34: CollectionIssue34, -): string { - return JSON.stringify( - CollectionIssue34$outboundSchema.parse(collectionIssue34), - ); -} - -/** @internal */ -export const Health34$outboundSchema: z.ZodEnum = z.enum( - Health34, -); - -/** @internal */ -export const StatusLifecycle34$outboundSchema: z.ZodEnum< - typeof StatusLifecycle34 -> = z.enum(StatusLifecycle34); - -/** @internal */ -export type HeartbeatStatus34$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus34$outboundSchema: z.ZodType< - HeartbeatStatus34$Outbound, - HeartbeatStatus34 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue34$outboundSchema)), - health: Health34$outboundSchema, - lifecycle: StatusLifecycle34$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus34ToJSON( - heartbeatStatus34: HeartbeatStatus34, -): string { - return JSON.stringify( - HeartbeatStatus34$outboundSchema.parse(heartbeatStatus34), - ); -} - -/** @internal */ -export type DataKubernetesSecret$Outbound = { - namespace: string; - prefix: string; - secretMetadataListed: boolean; - status: HeartbeatStatus34$Outbound; - backend: "kubernetesSecret"; -}; - -/** @internal */ -export const DataKubernetesSecret$outboundSchema: z.ZodType< - DataKubernetesSecret$Outbound, - DataKubernetesSecret -> = z.object({ - namespace: z.string(), - prefix: z.string(), - secretMetadataListed: z.boolean(), - status: z.lazy(() => HeartbeatStatus34$outboundSchema), - backend: z.literal("kubernetesSecret"), -}); - -export function dataKubernetesSecretToJSON( - dataKubernetesSecret: DataKubernetesSecret, -): string { - return JSON.stringify( - DataKubernetesSecret$outboundSchema.parse(dataKubernetesSecret), - ); -} - -/** @internal */ -export const Reason33$outboundSchema: z.ZodEnum = z.enum( - Reason33, -); - -/** @internal */ -export const CollectionIssueSeverity33$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity33 -> = z.enum(CollectionIssueSeverity33); - -/** @internal */ -export type CollectionIssue33$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue33$outboundSchema: z.ZodType< - CollectionIssue33$Outbound, - CollectionIssue33 -> = z.object({ - message: z.string(), - reason: Reason33$outboundSchema, - severity: CollectionIssueSeverity33$outboundSchema, - source: z.string(), -}); - -export function collectionIssue33ToJSON( - collectionIssue33: CollectionIssue33, -): string { - return JSON.stringify( - CollectionIssue33$outboundSchema.parse(collectionIssue33), - ); -} - -/** @internal */ -export const Health33$outboundSchema: z.ZodEnum = z.enum( - Health33, -); - -/** @internal */ -export const StatusLifecycle33$outboundSchema: z.ZodEnum< - typeof StatusLifecycle33 -> = z.enum(StatusLifecycle33); - -/** @internal */ -export type HeartbeatStatus33$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus33$outboundSchema: z.ZodType< - HeartbeatStatus33$Outbound, - HeartbeatStatus33 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue33$outboundSchema)), - health: Health33$outboundSchema, - lifecycle: StatusLifecycle33$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus33ToJSON( - heartbeatStatus33: HeartbeatStatus33, -): string { - return JSON.stringify( - HeartbeatStatus33$outboundSchema.parse(heartbeatStatus33), - ); -} - -/** @internal */ -export type DataAzureKeyVault$Outbound = { - accessPolicyCount: number; - location?: string | null | undefined; - name: string; - privateEndpointConnectionCount: number; - provisioningState?: string | null | undefined; - publicNetworkAccess: string; - purgeProtectionEnabled?: boolean | null | undefined; - rbacAuthorizationEnabled: boolean; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - secretMetadataListed: boolean; - skuFamily?: string | null | undefined; - skuName?: string | null | undefined; - softDeleteEnabled: boolean; - softDeleteRetentionDays: number; - status: HeartbeatStatus33$Outbound; - vaultUri?: string | null | undefined; - backend: "azureKeyVault"; -}; - -/** @internal */ -export const DataAzureKeyVault$outboundSchema: z.ZodType< - DataAzureKeyVault$Outbound, - DataAzureKeyVault -> = z.object({ - accessPolicyCount: z.int(), - location: z.nullable(z.string()).optional(), - name: z.string(), - privateEndpointConnectionCount: z.int(), - provisioningState: z.nullable(z.string()).optional(), - publicNetworkAccess: z.string(), - purgeProtectionEnabled: z.nullable(z.boolean()).optional(), - rbacAuthorizationEnabled: z.boolean(), - resourceGroup: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - secretMetadataListed: z.boolean(), - skuFamily: z.nullable(z.string()).optional(), - skuName: z.nullable(z.string()).optional(), - softDeleteEnabled: z.boolean(), - softDeleteRetentionDays: z.int(), - status: z.lazy(() => HeartbeatStatus33$outboundSchema), - vaultUri: z.nullable(z.string()).optional(), - backend: z.literal("azureKeyVault"), -}); - -export function dataAzureKeyVaultToJSON( - dataAzureKeyVault: DataAzureKeyVault, -): string { - return JSON.stringify( - DataAzureKeyVault$outboundSchema.parse(dataAzureKeyVault), - ); -} - -/** @internal */ -export const Reason32$outboundSchema: z.ZodEnum = z.enum( - Reason32, -); - -/** @internal */ -export const CollectionIssueSeverity32$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity32 -> = z.enum(CollectionIssueSeverity32); - -/** @internal */ -export type CollectionIssue32$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue32$outboundSchema: z.ZodType< - CollectionIssue32$Outbound, - CollectionIssue32 -> = z.object({ - message: z.string(), - reason: Reason32$outboundSchema, - severity: CollectionIssueSeverity32$outboundSchema, - source: z.string(), -}); - -export function collectionIssue32ToJSON( - collectionIssue32: CollectionIssue32, -): string { - return JSON.stringify( - CollectionIssue32$outboundSchema.parse(collectionIssue32), - ); -} - -/** @internal */ -export const Health32$outboundSchema: z.ZodEnum = z.enum( - Health32, -); - -/** @internal */ -export const StatusLifecycle32$outboundSchema: z.ZodEnum< - typeof StatusLifecycle32 -> = z.enum(StatusLifecycle32); - -/** @internal */ -export type HeartbeatStatus32$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus32$outboundSchema: z.ZodType< - HeartbeatStatus32$Outbound, - HeartbeatStatus32 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue32$outboundSchema)), - health: Health32$outboundSchema, - lifecycle: StatusLifecycle32$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus32ToJSON( - heartbeatStatus32: HeartbeatStatus32, -): string { - return JSON.stringify( - HeartbeatStatus32$outboundSchema.parse(heartbeatStatus32), - ); -} - -/** @internal */ -export type DataGcpSecretManager$Outbound = { - location: string; - prefix: string; - projectId: string; - secretMetadataListed: boolean; - status: HeartbeatStatus32$Outbound; - backend: "gcpSecretManager"; -}; - -/** @internal */ -export const DataGcpSecretManager$outboundSchema: z.ZodType< - DataGcpSecretManager$Outbound, - DataGcpSecretManager -> = z.object({ - location: z.string(), - prefix: z.string(), - projectId: z.string(), - secretMetadataListed: z.boolean(), - status: z.lazy(() => HeartbeatStatus32$outboundSchema), - backend: z.literal("gcpSecretManager"), -}); - -export function dataGcpSecretManagerToJSON( - dataGcpSecretManager: DataGcpSecretManager, -): string { - return JSON.stringify( - DataGcpSecretManager$outboundSchema.parse(dataGcpSecretManager), - ); -} - -/** @internal */ -export const Reason31$outboundSchema: z.ZodEnum = z.enum( - Reason31, -); - -/** @internal */ -export const CollectionIssueSeverity31$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity31 -> = z.enum(CollectionIssueSeverity31); - -/** @internal */ -export type CollectionIssue31$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue31$outboundSchema: z.ZodType< - CollectionIssue31$Outbound, - CollectionIssue31 -> = z.object({ - message: z.string(), - reason: Reason31$outboundSchema, - severity: CollectionIssueSeverity31$outboundSchema, - source: z.string(), -}); - -export function collectionIssue31ToJSON( - collectionIssue31: CollectionIssue31, -): string { - return JSON.stringify( - CollectionIssue31$outboundSchema.parse(collectionIssue31), - ); -} - -/** @internal */ -export const Health31$outboundSchema: z.ZodEnum = z.enum( - Health31, -); - -/** @internal */ -export const StatusLifecycle31$outboundSchema: z.ZodEnum< - typeof StatusLifecycle31 -> = z.enum(StatusLifecycle31); - -/** @internal */ -export type HeartbeatStatus31$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus31$outboundSchema: z.ZodType< - HeartbeatStatus31$Outbound, - HeartbeatStatus31 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue31$outboundSchema)), - health: Health31$outboundSchema, - lifecycle: StatusLifecycle31$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus31ToJSON( - heartbeatStatus31: HeartbeatStatus31, -): string { - return JSON.stringify( - HeartbeatStatus31$outboundSchema.parse(heartbeatStatus31), - ); -} - -/** @internal */ -export type DataAwsParameterStore$Outbound = { - accountId: string; - hasMoreParameters?: boolean | null | undefined; - latestModifiedAt?: string | null | undefined; - parameterMetadataSampled: boolean; - prefix: string; - region: string; - sampledAdvancedTierCount?: number | null | undefined; - sampledKmsKeyMetadataPresentCount?: number | null | undefined; - sampledParameterCount?: number | null | undefined; - sampledSecureStringCount?: number | null | undefined; - sampledStringCount?: number | null | undefined; - sampledStringListCount?: number | null | undefined; - status: HeartbeatStatus31$Outbound; - backend: "awsParameterStore"; -}; - -/** @internal */ -export const DataAwsParameterStore$outboundSchema: z.ZodType< - DataAwsParameterStore$Outbound, - DataAwsParameterStore -> = z.object({ - accountId: z.string(), - hasMoreParameters: z.nullable(z.boolean()).optional(), - latestModifiedAt: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - parameterMetadataSampled: z.boolean(), - prefix: z.string(), - region: z.string(), - sampledAdvancedTierCount: z.nullable(z.int()).optional(), - sampledKmsKeyMetadataPresentCount: z.nullable(z.int()).optional(), - sampledParameterCount: z.nullable(z.int()).optional(), - sampledSecureStringCount: z.nullable(z.int()).optional(), - sampledStringCount: z.nullable(z.int()).optional(), - sampledStringListCount: z.nullable(z.int()).optional(), - status: z.lazy(() => HeartbeatStatus31$outboundSchema), - backend: z.literal("awsParameterStore"), -}); - -export function dataAwsParameterStoreToJSON( - dataAwsParameterStore: DataAwsParameterStore, -): string { - return JSON.stringify( - DataAwsParameterStore$outboundSchema.parse(dataAwsParameterStore), - ); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion8$Outbound = - | DataAwsParameterStore$Outbound - | DataGcpSecretManager$Outbound - | DataAzureKeyVault$Outbound - | DataKubernetesSecret$Outbound - | DataLocal8$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion8$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion8$Outbound, - SyncReconcileRequestDataUnion8 -> = z.union([ - z.lazy(() => DataAwsParameterStore$outboundSchema), - z.lazy(() => DataGcpSecretManager$outboundSchema), - z.lazy(() => DataAzureKeyVault$outboundSchema), - z.lazy(() => DataKubernetesSecret$outboundSchema), - z.lazy(() => DataLocal8$outboundSchema), -]); - -export function syncReconcileRequestDataUnion8ToJSON( - syncReconcileRequestDataUnion8: SyncReconcileRequestDataUnion8, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion8$outboundSchema.parse( - syncReconcileRequestDataUnion8, - ), - ); -} - -/** @internal */ -export type DataVault$Outbound = { - data: - | DataAwsParameterStore$Outbound - | DataGcpSecretManager$Outbound - | DataAzureKeyVault$Outbound - | DataKubernetesSecret$Outbound - | DataLocal8$Outbound; - resourceType: "vault"; -}; - -/** @internal */ -export const DataVault$outboundSchema: z.ZodType< - DataVault$Outbound, - DataVault -> = z.object({ - data: z.union([ - z.lazy(() => DataAwsParameterStore$outboundSchema), - z.lazy(() => DataGcpSecretManager$outboundSchema), - z.lazy(() => DataAzureKeyVault$outboundSchema), - z.lazy(() => DataKubernetesSecret$outboundSchema), - z.lazy(() => DataLocal8$outboundSchema), - ]), - resourceType: z.literal("vault"), -}); - -export function dataVaultToJSON(dataVault: DataVault): string { - return JSON.stringify(DataVault$outboundSchema.parse(dataVault)); -} - -/** @internal */ -export const Reason30$outboundSchema: z.ZodEnum = z.enum( - Reason30, -); - -/** @internal */ -export const CollectionIssueSeverity30$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity30 -> = z.enum(CollectionIssueSeverity30); - -/** @internal */ -export type CollectionIssue30$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue30$outboundSchema: z.ZodType< - CollectionIssue30$Outbound, - CollectionIssue30 -> = z.object({ - message: z.string(), - reason: Reason30$outboundSchema, - severity: CollectionIssueSeverity30$outboundSchema, - source: z.string(), -}); - -export function collectionIssue30ToJSON( - collectionIssue30: CollectionIssue30, -): string { - return JSON.stringify( - CollectionIssue30$outboundSchema.parse(collectionIssue30), - ); -} - -/** @internal */ -export const Health30$outboundSchema: z.ZodEnum = z.enum( - Health30, -); - -/** @internal */ -export const StatusLifecycle30$outboundSchema: z.ZodEnum< - typeof StatusLifecycle30 -> = z.enum(StatusLifecycle30); - -/** @internal */ -export type HeartbeatStatus30$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus30$outboundSchema: z.ZodType< - HeartbeatStatus30$Outbound, - HeartbeatStatus30 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue30$outboundSchema)), - health: Health30$outboundSchema, - lifecycle: StatusLifecycle30$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus30ToJSON( - heartbeatStatus30: HeartbeatStatus30, -): string { - return JSON.stringify( - HeartbeatStatus30$outboundSchema.parse(heartbeatStatus30), - ); -} - -/** @internal */ -export type DataLocal7$Outbound = { - cloudMetadataSupported: boolean; - isDirectory?: boolean | null | undefined; - name: string; - path: string; - pathExists: boolean; - status: HeartbeatStatus30$Outbound; - backend: "local"; -}; - -/** @internal */ -export const DataLocal7$outboundSchema: z.ZodType< - DataLocal7$Outbound, - DataLocal7 -> = z.object({ - cloudMetadataSupported: z.boolean(), - isDirectory: z.nullable(z.boolean()).optional(), - name: z.string(), - path: z.string(), - pathExists: z.boolean(), - status: z.lazy(() => HeartbeatStatus30$outboundSchema), - backend: z.literal("local"), -}); - -export function dataLocal7ToJSON(dataLocal7: DataLocal7): string { - return JSON.stringify(DataLocal7$outboundSchema.parse(dataLocal7)); -} - -/** @internal */ -export const Reason29$outboundSchema: z.ZodEnum = z.enum( - Reason29, -); - -/** @internal */ -export const CollectionIssueSeverity29$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity29 -> = z.enum(CollectionIssueSeverity29); - -/** @internal */ -export type CollectionIssue29$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue29$outboundSchema: z.ZodType< - CollectionIssue29$Outbound, - CollectionIssue29 -> = z.object({ - message: z.string(), - reason: Reason29$outboundSchema, - severity: CollectionIssueSeverity29$outboundSchema, - source: z.string(), -}); - -export function collectionIssue29ToJSON( - collectionIssue29: CollectionIssue29, -): string { - return JSON.stringify( - CollectionIssue29$outboundSchema.parse(collectionIssue29), - ); -} - -/** @internal */ -export const Health29$outboundSchema: z.ZodEnum = z.enum( - Health29, -); - -/** @internal */ -export const StatusLifecycle29$outboundSchema: z.ZodEnum< - typeof StatusLifecycle29 -> = z.enum(StatusLifecycle29); - -/** @internal */ -export type HeartbeatStatus29$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus29$outboundSchema: z.ZodType< - HeartbeatStatus29$Outbound, - HeartbeatStatus29 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue29$outboundSchema)), - health: Health29$outboundSchema, - lifecycle: StatusLifecycle29$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus29ToJSON( - heartbeatStatus29: HeartbeatStatus29, -): string { - return JSON.stringify( - HeartbeatStatus29$outboundSchema.parse(heartbeatStatus29), - ); -} - -/** @internal */ -export type DataAzureTable$Outbound = { - endpoint?: string | null | undefined; - resourceGroup?: string | null | undefined; - signedIdentifierCount?: number | null | undefined; - status: HeartbeatStatus29$Outbound; - storageAccountKind?: string | null | undefined; - storageAccountLocation?: string | null | undefined; - storageAccountName: string; - storageAccountPrimaryStatus?: string | null | undefined; - storageAccountProvisioningState?: string | null | undefined; - storageAccountResourceId?: string | null | undefined; - tableExists: boolean; - tableName: string; - backend: "azureTable"; -}; - -/** @internal */ -export const DataAzureTable$outboundSchema: z.ZodType< - DataAzureTable$Outbound, - DataAzureTable -> = z.object({ - endpoint: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - signedIdentifierCount: z.nullable(z.int()).optional(), - status: z.lazy(() => HeartbeatStatus29$outboundSchema), - storageAccountKind: z.nullable(z.string()).optional(), - storageAccountLocation: z.nullable(z.string()).optional(), - storageAccountName: z.string(), - storageAccountPrimaryStatus: z.nullable(z.string()).optional(), - storageAccountProvisioningState: z.nullable(z.string()).optional(), - storageAccountResourceId: z.nullable(z.string()).optional(), - tableExists: z.boolean(), - tableName: z.string(), - backend: z.literal("azureTable"), -}); - -export function dataAzureTableToJSON(dataAzureTable: DataAzureTable): string { - return JSON.stringify(DataAzureTable$outboundSchema.parse(dataAzureTable)); -} - -/** @internal */ -export const Reason28$outboundSchema: z.ZodEnum = z.enum( - Reason28, -); - -/** @internal */ -export const CollectionIssueSeverity28$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity28 -> = z.enum(CollectionIssueSeverity28); - -/** @internal */ -export type CollectionIssue28$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue28$outboundSchema: z.ZodType< - CollectionIssue28$Outbound, - CollectionIssue28 -> = z.object({ - message: z.string(), - reason: Reason28$outboundSchema, - severity: CollectionIssueSeverity28$outboundSchema, - source: z.string(), -}); - -export function collectionIssue28ToJSON( - collectionIssue28: CollectionIssue28, -): string { - return JSON.stringify( - CollectionIssue28$outboundSchema.parse(collectionIssue28), - ); -} - -/** @internal */ -export const Health28$outboundSchema: z.ZodEnum = z.enum( - Health28, -); - -/** @internal */ -export const StatusLifecycle28$outboundSchema: z.ZodEnum< - typeof StatusLifecycle28 -> = z.enum(StatusLifecycle28); - -/** @internal */ -export type HeartbeatStatus28$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus28$outboundSchema: z.ZodType< - HeartbeatStatus28$Outbound, - HeartbeatStatus28 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue28$outboundSchema)), - health: Health28$outboundSchema, - lifecycle: StatusLifecycle28$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus28ToJSON( - heartbeatStatus28: HeartbeatStatus28, -): string { - return JSON.stringify( - HeartbeatStatus28$outboundSchema.parse(heartbeatStatus28), - ); -} - -/** @internal */ -export type DataGcpFirestore$Outbound = { - appEngineIntegrationMode?: string | null | undefined; - cmekEnabled: boolean; - concurrencyMode?: string | null | undefined; - createTime?: string | null | undefined; - databaseEdition?: string | null | undefined; - databaseName: string; - databaseType?: string | null | undefined; - deleteProtectionState?: string | null | undefined; - deleteTime?: string | null | undefined; - earliestVersionTime?: string | null | undefined; - endpoint?: string | null | undefined; - locationId?: string | null | undefined; - pointInTimeRecoveryEnablement?: string | null | undefined; - projectId?: string | null | undefined; - sourceInfoPresent: boolean; - status: HeartbeatStatus28$Outbound; - updateTime?: string | null | undefined; - versionRetentionPeriod?: string | null | undefined; - backend: "gcpFirestore"; -}; - -/** @internal */ -export const DataGcpFirestore$outboundSchema: z.ZodType< - DataGcpFirestore$Outbound, - DataGcpFirestore -> = z.object({ - appEngineIntegrationMode: z.nullable(z.string()).optional(), - cmekEnabled: z.boolean(), - concurrencyMode: z.nullable(z.string()).optional(), - createTime: z.nullable(z.string()).optional(), - databaseEdition: z.nullable(z.string()).optional(), - databaseName: z.string(), - databaseType: z.nullable(z.string()).optional(), - deleteProtectionState: z.nullable(z.string()).optional(), - deleteTime: z.nullable(z.string()).optional(), - earliestVersionTime: z.nullable(z.string()).optional(), - endpoint: z.nullable(z.string()).optional(), - locationId: z.nullable(z.string()).optional(), - pointInTimeRecoveryEnablement: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - sourceInfoPresent: z.boolean(), - status: z.lazy(() => HeartbeatStatus28$outboundSchema), - updateTime: z.nullable(z.string()).optional(), - versionRetentionPeriod: z.nullable(z.string()).optional(), - backend: z.literal("gcpFirestore"), -}); - -export function dataGcpFirestoreToJSON( - dataGcpFirestore: DataGcpFirestore, -): string { - return JSON.stringify( - DataGcpFirestore$outboundSchema.parse(dataGcpFirestore), - ); -} - -/** @internal */ -export type KeySchema$Outbound = { - attributeName: string; - keyType: string; -}; - -/** @internal */ -export const KeySchema$outboundSchema: z.ZodType< - KeySchema$Outbound, - KeySchema -> = z.object({ - attributeName: z.string(), - keyType: z.string(), -}); - -export function keySchemaToJSON(keySchema: KeySchema): string { - return JSON.stringify(KeySchema$outboundSchema.parse(keySchema)); -} - -/** @internal */ -export const Reason27$outboundSchema: z.ZodEnum = z.enum( - Reason27, -); - -/** @internal */ -export const CollectionIssueSeverity27$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity27 -> = z.enum(CollectionIssueSeverity27); - -/** @internal */ -export type CollectionIssue27$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue27$outboundSchema: z.ZodType< - CollectionIssue27$Outbound, - CollectionIssue27 -> = z.object({ - message: z.string(), - reason: Reason27$outboundSchema, - severity: CollectionIssueSeverity27$outboundSchema, - source: z.string(), -}); - -export function collectionIssue27ToJSON( - collectionIssue27: CollectionIssue27, -): string { - return JSON.stringify( - CollectionIssue27$outboundSchema.parse(collectionIssue27), - ); -} - -/** @internal */ -export const Health27$outboundSchema: z.ZodEnum = z.enum( - Health27, -); - -/** @internal */ -export const StatusLifecycle27$outboundSchema: z.ZodEnum< - typeof StatusLifecycle27 -> = z.enum(StatusLifecycle27); - -/** @internal */ -export type HeartbeatStatus27$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus27$outboundSchema: z.ZodType< - HeartbeatStatus27$Outbound, - HeartbeatStatus27 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue27$outboundSchema)), - health: Health27$outboundSchema, - lifecycle: StatusLifecycle27$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus27ToJSON( - heartbeatStatus27: HeartbeatStatus27, -): string { - return JSON.stringify( - HeartbeatStatus27$outboundSchema.parse(heartbeatStatus27), - ); -} - -/** @internal */ -export type DataAwsDynamoDb$Outbound = { - billingMode?: string | null | undefined; - deletionProtectionEnabled?: boolean | null | undefined; - globalSecondaryIndexCount?: number | null | undefined; - itemCount?: number | null | undefined; - keySchema: Array; - localSecondaryIndexCount?: number | null | undefined; - name: string; - region?: string | null | undefined; - replicaCount?: number | null | undefined; - restoreInProgress?: boolean | null | undefined; - sseStatus?: string | null | undefined; - sseType?: string | null | undefined; - status: HeartbeatStatus27$Outbound; - streamEnabled?: boolean | null | undefined; - streamViewType?: string | null | undefined; - tableArn?: string | null | undefined; - tableClass?: string | null | undefined; - tableSizeBytes?: number | null | undefined; - tableStatus?: string | null | undefined; - ttlAttributeName?: string | null | undefined; - ttlStatus?: string | null | undefined; - backend: "awsDynamoDb"; -}; - -/** @internal */ -export const DataAwsDynamoDb$outboundSchema: z.ZodType< - DataAwsDynamoDb$Outbound, - DataAwsDynamoDb -> = z.object({ - billingMode: z.nullable(z.string()).optional(), - deletionProtectionEnabled: z.nullable(z.boolean()).optional(), - globalSecondaryIndexCount: z.nullable(z.int()).optional(), - itemCount: z.nullable(z.int()).optional(), - keySchema: z.array(z.lazy(() => KeySchema$outboundSchema)), - localSecondaryIndexCount: z.nullable(z.int()).optional(), - name: z.string(), - region: z.nullable(z.string()).optional(), - replicaCount: z.nullable(z.int()).optional(), - restoreInProgress: z.nullable(z.boolean()).optional(), - sseStatus: z.nullable(z.string()).optional(), - sseType: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus27$outboundSchema), - streamEnabled: z.nullable(z.boolean()).optional(), - streamViewType: z.nullable(z.string()).optional(), - tableArn: z.nullable(z.string()).optional(), - tableClass: z.nullable(z.string()).optional(), - tableSizeBytes: z.nullable(z.int()).optional(), - tableStatus: z.nullable(z.string()).optional(), - ttlAttributeName: z.nullable(z.string()).optional(), - ttlStatus: z.nullable(z.string()).optional(), - backend: z.literal("awsDynamoDb"), -}); - -export function dataAwsDynamoDbToJSON( - dataAwsDynamoDb: DataAwsDynamoDb, -): string { - return JSON.stringify(DataAwsDynamoDb$outboundSchema.parse(dataAwsDynamoDb)); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion7$Outbound = - | DataAwsDynamoDb$Outbound - | DataGcpFirestore$Outbound - | DataAzureTable$Outbound - | DataLocal7$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion7$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion7$Outbound, - SyncReconcileRequestDataUnion7 -> = z.union([ - z.lazy(() => DataAwsDynamoDb$outboundSchema), - z.lazy(() => DataGcpFirestore$outboundSchema), - z.lazy(() => DataAzureTable$outboundSchema), - z.lazy(() => DataLocal7$outboundSchema), -]); - -export function syncReconcileRequestDataUnion7ToJSON( - syncReconcileRequestDataUnion7: SyncReconcileRequestDataUnion7, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion7$outboundSchema.parse( - syncReconcileRequestDataUnion7, - ), - ); -} - -/** @internal */ -export type DataKv$Outbound = { - data: - | DataAwsDynamoDb$Outbound - | DataGcpFirestore$Outbound - | DataAzureTable$Outbound - | DataLocal7$Outbound; - resourceType: "kv"; -}; - -/** @internal */ -export const DataKv$outboundSchema: z.ZodType = z - .object({ - data: z.union([ - z.lazy(() => DataAwsDynamoDb$outboundSchema), - z.lazy(() => DataGcpFirestore$outboundSchema), - z.lazy(() => DataAzureTable$outboundSchema), - z.lazy(() => DataLocal7$outboundSchema), - ]), - resourceType: z.literal("kv"), - }); - -export function dataKvToJSON(dataKv: DataKv): string { - return JSON.stringify(DataKv$outboundSchema.parse(dataKv)); -} - -/** @internal */ -export const Reason26$outboundSchema: z.ZodEnum = z.enum( - Reason26, -); - -/** @internal */ -export const CollectionIssueSeverity26$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity26 -> = z.enum(CollectionIssueSeverity26); - -/** @internal */ -export type CollectionIssue26$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue26$outboundSchema: z.ZodType< - CollectionIssue26$Outbound, - CollectionIssue26 -> = z.object({ - message: z.string(), - reason: Reason26$outboundSchema, - severity: CollectionIssueSeverity26$outboundSchema, - source: z.string(), -}); - -export function collectionIssue26ToJSON( - collectionIssue26: CollectionIssue26, -): string { - return JSON.stringify( - CollectionIssue26$outboundSchema.parse(collectionIssue26), - ); -} - -/** @internal */ -export const Health26$outboundSchema: z.ZodEnum = z.enum( - Health26, -); - -/** @internal */ -export const StatusLifecycle26$outboundSchema: z.ZodEnum< - typeof StatusLifecycle26 -> = z.enum(StatusLifecycle26); - -/** @internal */ -export type HeartbeatStatus26$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus26$outboundSchema: z.ZodType< - HeartbeatStatus26$Outbound, - HeartbeatStatus26 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue26$outboundSchema)), - health: Health26$outboundSchema, - lifecycle: StatusLifecycle26$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus26ToJSON( - heartbeatStatus26: HeartbeatStatus26, -): string { - return JSON.stringify( - HeartbeatStatus26$outboundSchema.parse(heartbeatStatus26), - ); -} - -/** @internal */ -export type DataLocal6$Outbound = { - name: string; - path?: string | null | undefined; - serviceStatus?: string | null | undefined; - status: HeartbeatStatus26$Outbound; - backend: "local"; -}; - -/** @internal */ -export const DataLocal6$outboundSchema: z.ZodType< - DataLocal6$Outbound, - DataLocal6 -> = z.object({ - name: z.string(), - path: z.nullable(z.string()).optional(), - serviceStatus: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus26$outboundSchema), - backend: z.literal("local"), -}); - -export function dataLocal6ToJSON(dataLocal6: DataLocal6): string { - return JSON.stringify(DataLocal6$outboundSchema.parse(dataLocal6)); -} - -/** @internal */ -export const Reason25$outboundSchema: z.ZodEnum = z.enum( - Reason25, -); - -/** @internal */ -export const CollectionIssueSeverity25$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity25 -> = z.enum(CollectionIssueSeverity25); - -/** @internal */ -export type CollectionIssue25$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue25$outboundSchema: z.ZodType< - CollectionIssue25$Outbound, - CollectionIssue25 -> = z.object({ - message: z.string(), - reason: Reason25$outboundSchema, - severity: CollectionIssueSeverity25$outboundSchema, - source: z.string(), -}); - -export function collectionIssue25ToJSON( - collectionIssue25: CollectionIssue25, -): string { - return JSON.stringify( - CollectionIssue25$outboundSchema.parse(collectionIssue25), - ); -} - -/** @internal */ -export const Health25$outboundSchema: z.ZodEnum = z.enum( - Health25, -); - -/** @internal */ -export const StatusLifecycle25$outboundSchema: z.ZodEnum< - typeof StatusLifecycle25 -> = z.enum(StatusLifecycle25); - -/** @internal */ -export type HeartbeatStatus25$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus25$outboundSchema: z.ZodType< - HeartbeatStatus25$Outbound, - HeartbeatStatus25 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue25$outboundSchema)), - health: Health25$outboundSchema, - lifecycle: StatusLifecycle25$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus25ToJSON( - heartbeatStatus25: HeartbeatStatus25, -): string { - return JSON.stringify( - HeartbeatStatus25$outboundSchema.parse(heartbeatStatus25), - ); -} - -/** @internal */ -export type DataAzureServiceBus$Outbound = { - accessedAt?: string | null | undefined; - activeMessageCount?: number | null | undefined; - autoDeleteOnIdle?: string | null | undefined; - createdAt?: string | null | undefined; - deadLetterMessageCount?: number | null | undefined; - deadLetteringOnMessageExpiration?: boolean | null | undefined; - defaultMessageTimeToLive?: string | null | undefined; - duplicateDetectionHistoryTimeWindow?: string | null | undefined; - enableBatchedOperations?: boolean | null | undefined; - enableExpress?: boolean | null | undefined; - enablePartitioning?: boolean | null | undefined; - endpoint?: string | null | undefined; - forwardDeadLetteredMessagesTo?: string | null | undefined; - forwardTo?: string | null | undefined; - lockDuration?: string | null | undefined; - maxDeliveryCount?: number | null | undefined; - maxMessageSizeInKilobytes?: number | null | undefined; - maxSizeInMegabytes?: number | null | undefined; - messageCount?: number | null | undefined; - name: string; - namespaceName: string; - queueStatus?: string | null | undefined; - requiresDuplicateDetection?: boolean | null | undefined; - requiresSession?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - resourceId?: string | null | undefined; - scheduledMessageCount?: number | null | undefined; - sizeInBytes?: number | null | undefined; - status: HeartbeatStatus25$Outbound; - transferDeadLetterMessageCount?: number | null | undefined; - transferMessageCount?: number | null | undefined; - updatedAt?: string | null | undefined; - backend: "azureServiceBus"; -}; - -/** @internal */ -export const DataAzureServiceBus$outboundSchema: z.ZodType< - DataAzureServiceBus$Outbound, - DataAzureServiceBus -> = z.object({ - accessedAt: z.nullable(z.string()).optional(), - activeMessageCount: z.nullable(z.int()).optional(), - autoDeleteOnIdle: z.nullable(z.string()).optional(), - createdAt: z.nullable(z.string()).optional(), - deadLetterMessageCount: z.nullable(z.int()).optional(), - deadLetteringOnMessageExpiration: z.nullable(z.boolean()).optional(), - defaultMessageTimeToLive: z.nullable(z.string()).optional(), - duplicateDetectionHistoryTimeWindow: z.nullable(z.string()).optional(), - enableBatchedOperations: z.nullable(z.boolean()).optional(), - enableExpress: z.nullable(z.boolean()).optional(), - enablePartitioning: z.nullable(z.boolean()).optional(), - endpoint: z.nullable(z.string()).optional(), - forwardDeadLetteredMessagesTo: z.nullable(z.string()).optional(), - forwardTo: z.nullable(z.string()).optional(), - lockDuration: z.nullable(z.string()).optional(), - maxDeliveryCount: z.nullable(z.int()).optional(), - maxMessageSizeInKilobytes: z.nullable(z.int()).optional(), - maxSizeInMegabytes: z.nullable(z.int()).optional(), - messageCount: z.nullable(z.int()).optional(), - name: z.string(), - namespaceName: z.string(), - queueStatus: z.nullable(z.string()).optional(), - requiresDuplicateDetection: z.nullable(z.boolean()).optional(), - requiresSession: z.nullable(z.boolean()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - resourceId: z.nullable(z.string()).optional(), - scheduledMessageCount: z.nullable(z.int()).optional(), - sizeInBytes: z.nullable(z.int()).optional(), - status: z.lazy(() => HeartbeatStatus25$outboundSchema), - transferDeadLetterMessageCount: z.nullable(z.int()).optional(), - transferMessageCount: z.nullable(z.int()).optional(), - updatedAt: z.nullable(z.string()).optional(), - backend: z.literal("azureServiceBus"), -}); - -export function dataAzureServiceBusToJSON( - dataAzureServiceBus: DataAzureServiceBus, -): string { - return JSON.stringify( - DataAzureServiceBus$outboundSchema.parse(dataAzureServiceBus), - ); -} - -/** @internal */ -export const Reason24$outboundSchema: z.ZodEnum = z.enum( - Reason24, -); - -/** @internal */ -export const CollectionIssueSeverity24$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity24 -> = z.enum(CollectionIssueSeverity24); - -/** @internal */ -export type CollectionIssue24$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue24$outboundSchema: z.ZodType< - CollectionIssue24$Outbound, - CollectionIssue24 -> = z.object({ - message: z.string(), - reason: Reason24$outboundSchema, - severity: CollectionIssueSeverity24$outboundSchema, - source: z.string(), -}); - -export function collectionIssue24ToJSON( - collectionIssue24: CollectionIssue24, -): string { - return JSON.stringify( - CollectionIssue24$outboundSchema.parse(collectionIssue24), - ); -} - -/** @internal */ -export const Health24$outboundSchema: z.ZodEnum = z.enum( - Health24, -); - -/** @internal */ -export const StatusLifecycle24$outboundSchema: z.ZodEnum< - typeof StatusLifecycle24 -> = z.enum(StatusLifecycle24); - -/** @internal */ -export type HeartbeatStatus24$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus24$outboundSchema: z.ZodType< - HeartbeatStatus24$Outbound, - HeartbeatStatus24 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue24$outboundSchema)), - health: Health24$outboundSchema, - lifecycle: StatusLifecycle24$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus24ToJSON( - heartbeatStatus24: HeartbeatStatus24, -): string { - return JSON.stringify( - HeartbeatStatus24$outboundSchema.parse(heartbeatStatus24), - ); -} - -/** @internal */ -export type DataGcpPubSub$Outbound = { - endpoint?: string | null | undefined; - kmsKeyName?: string | null | undefined; - messageStorageAllowedPersistenceRegions: Array; - messageStorageEnforceInTransit?: boolean | null | undefined; - projectId?: string | null | undefined; - schemaEncoding?: string | null | undefined; - schemaFirstRevisionId?: string | null | undefined; - schemaLastRevisionId?: string | null | undefined; - schemaName?: string | null | undefined; - status: HeartbeatStatus24$Outbound; - subscriptionAckDeadlineSeconds?: number | null | undefined; - subscriptionDeadLetterMaxDeliveryAttempts?: number | null | undefined; - subscriptionDeadLetterTopic?: string | null | undefined; - subscriptionDetached?: boolean | null | undefined; - subscriptionEnableMessageOrdering?: boolean | null | undefined; - subscriptionFilter?: string | null | undefined; - subscriptionFullName?: string | null | undefined; - subscriptionLabels: { [k: string]: string }; - subscriptionMessageRetentionDuration?: string | null | undefined; - subscriptionName?: string | null | undefined; - subscriptionPushAttributes: { [k: string]: string }; - subscriptionPushConfigPresent?: boolean | null | undefined; - subscriptionPushEndpoint?: string | null | undefined; - subscriptionPushNoWrapperWriteMetadata?: boolean | null | undefined; - subscriptionPushOidcAudience?: string | null | undefined; - subscriptionPushOidcServiceAccountEmail?: string | null | undefined; - subscriptionPushPubsubWrapperWriteMetadata?: boolean | null | undefined; - subscriptionRetainAckedMessages?: boolean | null | undefined; - subscriptionState?: string | null | undefined; - topicFullName?: string | null | undefined; - topicLabels: { [k: string]: string }; - topicMessageRetentionDuration?: string | null | undefined; - topicName: string; - topicState?: string | null | undefined; - backend: "gcpPubSub"; -}; - -/** @internal */ -export const DataGcpPubSub$outboundSchema: z.ZodType< - DataGcpPubSub$Outbound, - DataGcpPubSub -> = z.object({ - endpoint: z.nullable(z.string()).optional(), - kmsKeyName: z.nullable(z.string()).optional(), - messageStorageAllowedPersistenceRegions: z.array(z.string()), - messageStorageEnforceInTransit: z.nullable(z.boolean()).optional(), - projectId: z.nullable(z.string()).optional(), - schemaEncoding: z.nullable(z.string()).optional(), - schemaFirstRevisionId: z.nullable(z.string()).optional(), - schemaLastRevisionId: z.nullable(z.string()).optional(), - schemaName: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus24$outboundSchema), - subscriptionAckDeadlineSeconds: z.nullable(z.int()).optional(), - subscriptionDeadLetterMaxDeliveryAttempts: z.nullable(z.int()).optional(), - subscriptionDeadLetterTopic: z.nullable(z.string()).optional(), - subscriptionDetached: z.nullable(z.boolean()).optional(), - subscriptionEnableMessageOrdering: z.nullable(z.boolean()).optional(), - subscriptionFilter: z.nullable(z.string()).optional(), - subscriptionFullName: z.nullable(z.string()).optional(), - subscriptionLabels: z.record(z.string(), z.string()), - subscriptionMessageRetentionDuration: z.nullable(z.string()).optional(), - subscriptionName: z.nullable(z.string()).optional(), - subscriptionPushAttributes: z.record(z.string(), z.string()), - subscriptionPushConfigPresent: z.nullable(z.boolean()).optional(), - subscriptionPushEndpoint: z.nullable(z.string()).optional(), - subscriptionPushNoWrapperWriteMetadata: z.nullable(z.boolean()).optional(), - subscriptionPushOidcAudience: z.nullable(z.string()).optional(), - subscriptionPushOidcServiceAccountEmail: z.nullable(z.string()).optional(), - subscriptionPushPubsubWrapperWriteMetadata: z.nullable(z.boolean()) - .optional(), - subscriptionRetainAckedMessages: z.nullable(z.boolean()).optional(), - subscriptionState: z.nullable(z.string()).optional(), - topicFullName: z.nullable(z.string()).optional(), - topicLabels: z.record(z.string(), z.string()), - topicMessageRetentionDuration: z.nullable(z.string()).optional(), - topicName: z.string(), - topicState: z.nullable(z.string()).optional(), - backend: z.literal("gcpPubSub"), -}); - -export function dataGcpPubSubToJSON(dataGcpPubSub: DataGcpPubSub): string { - return JSON.stringify(DataGcpPubSub$outboundSchema.parse(dataGcpPubSub)); -} - -/** @internal */ -export const Reason23$outboundSchema: z.ZodEnum = z.enum( - Reason23, -); - -/** @internal */ -export const CollectionIssueSeverity23$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity23 -> = z.enum(CollectionIssueSeverity23); - -/** @internal */ -export type CollectionIssue23$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue23$outboundSchema: z.ZodType< - CollectionIssue23$Outbound, - CollectionIssue23 -> = z.object({ - message: z.string(), - reason: Reason23$outboundSchema, - severity: CollectionIssueSeverity23$outboundSchema, - source: z.string(), -}); - -export function collectionIssue23ToJSON( - collectionIssue23: CollectionIssue23, -): string { - return JSON.stringify( - CollectionIssue23$outboundSchema.parse(collectionIssue23), - ); -} - -/** @internal */ -export const Health23$outboundSchema: z.ZodEnum = z.enum( - Health23, -); - -/** @internal */ -export const StatusLifecycle23$outboundSchema: z.ZodEnum< - typeof StatusLifecycle23 -> = z.enum(StatusLifecycle23); - -/** @internal */ -export type HeartbeatStatus23$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus23$outboundSchema: z.ZodType< - HeartbeatStatus23$Outbound, - HeartbeatStatus23 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue23$outboundSchema)), - health: Health23$outboundSchema, - lifecycle: StatusLifecycle23$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus23ToJSON( - heartbeatStatus23: HeartbeatStatus23, -): string { - return JSON.stringify( - HeartbeatStatus23$outboundSchema.parse(heartbeatStatus23), - ); -} - -/** @internal */ -export type DataAwsSqs$Outbound = { - approximateCounts: boolean; - approximateDelayedMessages?: number | null | undefined; - approximateInFlightMessages?: number | null | undefined; - approximateVisibleMessages?: number | null | undefined; - contentBasedDeduplication?: boolean | null | undefined; - deduplicationScope?: string | null | undefined; - delaySeconds?: number | null | undefined; - fifoQueue?: boolean | null | undefined; - fifoThroughputLimit?: string | null | undefined; - kmsDataKeyReusePeriodSeconds?: number | null | undefined; - kmsMasterKeyId?: string | null | undefined; - maximumMessageSize?: number | null | undefined; - messageRetentionPeriodSeconds?: number | null | undefined; - name: string; - queueArn?: string | null | undefined; - queueUrl?: string | null | undefined; - receiveMessageWaitTimeSeconds?: number | null | undefined; - redriveAllowPolicy?: string | null | undefined; - redrivePolicy?: string | null | undefined; - region?: string | null | undefined; - sqsManagedSseEnabled?: boolean | null | undefined; - sseEnabled?: boolean | null | undefined; - status: HeartbeatStatus23$Outbound; - visibilityTimeoutSeconds?: number | null | undefined; - backend: "awsSqs"; -}; - -/** @internal */ -export const DataAwsSqs$outboundSchema: z.ZodType< - DataAwsSqs$Outbound, - DataAwsSqs -> = z.object({ - approximateCounts: z.boolean(), - approximateDelayedMessages: z.nullable(z.int()).optional(), - approximateInFlightMessages: z.nullable(z.int()).optional(), - approximateVisibleMessages: z.nullable(z.int()).optional(), - contentBasedDeduplication: z.nullable(z.boolean()).optional(), - deduplicationScope: z.nullable(z.string()).optional(), - delaySeconds: z.nullable(z.int()).optional(), - fifoQueue: z.nullable(z.boolean()).optional(), - fifoThroughputLimit: z.nullable(z.string()).optional(), - kmsDataKeyReusePeriodSeconds: z.nullable(z.int()).optional(), - kmsMasterKeyId: z.nullable(z.string()).optional(), - maximumMessageSize: z.nullable(z.int()).optional(), - messageRetentionPeriodSeconds: z.nullable(z.int()).optional(), - name: z.string(), - queueArn: z.nullable(z.string()).optional(), - queueUrl: z.nullable(z.string()).optional(), - receiveMessageWaitTimeSeconds: z.nullable(z.int()).optional(), - redriveAllowPolicy: z.nullable(z.string()).optional(), - redrivePolicy: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - sqsManagedSseEnabled: z.nullable(z.boolean()).optional(), - sseEnabled: z.nullable(z.boolean()).optional(), - status: z.lazy(() => HeartbeatStatus23$outboundSchema), - visibilityTimeoutSeconds: z.nullable(z.int()).optional(), - backend: z.literal("awsSqs"), -}); - -export function dataAwsSqsToJSON(dataAwsSqs: DataAwsSqs): string { - return JSON.stringify(DataAwsSqs$outboundSchema.parse(dataAwsSqs)); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion6$Outbound = - | DataAwsSqs$Outbound - | DataGcpPubSub$Outbound - | DataAzureServiceBus$Outbound - | DataLocal6$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion6$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion6$Outbound, - SyncReconcileRequestDataUnion6 -> = z.union([ - z.lazy(() => DataAwsSqs$outboundSchema), - z.lazy(() => DataGcpPubSub$outboundSchema), - z.lazy(() => DataAzureServiceBus$outboundSchema), - z.lazy(() => DataLocal6$outboundSchema), -]); - -export function syncReconcileRequestDataUnion6ToJSON( - syncReconcileRequestDataUnion6: SyncReconcileRequestDataUnion6, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion6$outboundSchema.parse( - syncReconcileRequestDataUnion6, - ), - ); -} - -/** @internal */ -export type DataQueue$Outbound = { - data: - | DataAwsSqs$Outbound - | DataGcpPubSub$Outbound - | DataAzureServiceBus$Outbound - | DataLocal6$Outbound; - resourceType: "queue"; -}; - -/** @internal */ -export const DataQueue$outboundSchema: z.ZodType< - DataQueue$Outbound, - DataQueue -> = z.object({ - data: z.union([ - z.lazy(() => DataAwsSqs$outboundSchema), - z.lazy(() => DataGcpPubSub$outboundSchema), - z.lazy(() => DataAzureServiceBus$outboundSchema), - z.lazy(() => DataLocal6$outboundSchema), - ]), - resourceType: z.literal("queue"), -}); - -export function dataQueueToJSON(dataQueue: DataQueue): string { - return JSON.stringify(DataQueue$outboundSchema.parse(dataQueue)); -} - -/** @internal */ -export const CpuUnit10$outboundSchema: z.ZodEnum = z.enum( - CpuUnit10, -); - -/** @internal */ -export type Cpu10$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Cpu10$outboundSchema: z.ZodType = z.object({ - unit: CpuUnit10$outboundSchema, - value: z.number(), -}); - -export function cpu10ToJSON(cpu10: Cpu10): string { - return JSON.stringify(Cpu10$outboundSchema.parse(cpu10)); -} - -/** @internal */ -export type CpuUnion10$Outbound = Cpu10$Outbound | any; - -/** @internal */ -export const CpuUnion10$outboundSchema: z.ZodType< - CpuUnion10$Outbound, - CpuUnion10 -> = z.union([z.lazy(() => Cpu10$outboundSchema), z.any()]); - -export function cpuUnion10ToJSON(cpuUnion10: CpuUnion10): string { - return JSON.stringify(CpuUnion10$outboundSchema.parse(cpuUnion10)); -} - -/** @internal */ -export type InvolvedObject8$Outbound = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -/** @internal */ -export const InvolvedObject8$outboundSchema: z.ZodType< - InvolvedObject8$Outbound, - InvolvedObject8 -> = z.object({ - apiVersion: z.nullable(z.string()).optional(), - fieldPath: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - namespace: z.nullable(z.string()).optional(), - resourceVersion: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), -}); - -export function involvedObject8ToJSON( - involvedObject8: InvolvedObject8, -): string { - return JSON.stringify(InvolvedObject8$outboundSchema.parse(involvedObject8)); -} - -/** @internal */ -export type InvolvedObjectUnion8$Outbound = InvolvedObject8$Outbound | any; - -/** @internal */ -export const InvolvedObjectUnion8$outboundSchema: z.ZodType< - InvolvedObjectUnion8$Outbound, - InvolvedObjectUnion8 -> = z.union([z.lazy(() => InvolvedObject8$outboundSchema), z.any()]); - -export function involvedObjectUnion8ToJSON( - involvedObjectUnion8: InvolvedObjectUnion8, -): string { - return JSON.stringify( - InvolvedObjectUnion8$outboundSchema.parse(involvedObjectUnion8), - ); -} - -/** @internal */ -export type SyncReconcileRequestSource8$Outbound = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSource8$outboundSchema: z.ZodType< - SyncReconcileRequestSource8$Outbound, - SyncReconcileRequestSource8 -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSource8ToJSON( - syncReconcileRequestSource8: SyncReconcileRequestSource8, -): string { - return JSON.stringify( - SyncReconcileRequestSource8$outboundSchema.parse( - syncReconcileRequestSource8, - ), - ); -} - -/** @internal */ -export type SourceUnion8$Outbound = SyncReconcileRequestSource8$Outbound | any; - -/** @internal */ -export const SourceUnion8$outboundSchema: z.ZodType< - SourceUnion8$Outbound, - SourceUnion8 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource8$outboundSchema), - z.any(), -]); - -export function sourceUnion8ToJSON(sourceUnion8: SourceUnion8): string { - return JSON.stringify(SourceUnion8$outboundSchema.parse(sourceUnion8)); -} - -/** @internal */ -export type SyncReconcileRequestEvent11$Outbound = { - count?: number | null | undefined; - eventTime?: string | null | undefined; - firstTimestamp?: string | null | undefined; - involvedObject?: InvolvedObject8$Outbound | any | null | undefined; - lastTimestamp?: string | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource8$Outbound | any | null | undefined; - type?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestEvent11$outboundSchema: z.ZodType< - SyncReconcileRequestEvent11$Outbound, - SyncReconcileRequestEvent11 -> = z.object({ - count: z.nullable(z.int()).optional(), - eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), - firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject8$outboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource8$outboundSchema), - z.any(), - ]), - ).optional(), - type: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestEvent11ToJSON( - syncReconcileRequestEvent11: SyncReconcileRequestEvent11, -): string { - return JSON.stringify( - SyncReconcileRequestEvent11$outboundSchema.parse( - syncReconcileRequestEvent11, - ), - ); -} - -/** @internal */ -export const MemoryUnit10$outboundSchema: z.ZodEnum = z - .enum(MemoryUnit10); - -/** @internal */ -export type Memory10$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Memory10$outboundSchema: z.ZodType = z - .object({ - unit: MemoryUnit10$outboundSchema, - value: z.number(), - }); - -export function memory10ToJSON(memory10: Memory10): string { - return JSON.stringify(Memory10$outboundSchema.parse(memory10)); -} - -/** @internal */ -export type MemoryUnion10$Outbound = Memory10$Outbound | any; - -/** @internal */ -export const MemoryUnion10$outboundSchema: z.ZodType< - MemoryUnion10$Outbound, - MemoryUnion10 -> = z.union([z.lazy(() => Memory10$outboundSchema), z.any()]); - -export function memoryUnion10ToJSON(memoryUnion10: MemoryUnion10): string { - return JSON.stringify(MemoryUnion10$outboundSchema.parse(memoryUnion10)); -} - -/** @internal */ -export type NodeCounts$Outbound = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -/** @internal */ -export const NodeCounts$outboundSchema: z.ZodType< - NodeCounts$Outbound, - NodeCounts -> = z.object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), -}); - -export function nodeCountsToJSON(nodeCounts: NodeCounts): string { - return JSON.stringify(NodeCounts$outboundSchema.parse(nodeCounts)); -} - -/** @internal */ -export const CpuAllocatableUnit$outboundSchema: z.ZodEnum< - typeof CpuAllocatableUnit -> = z.enum(CpuAllocatableUnit); - -/** @internal */ -export type CpuAllocatable$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const CpuAllocatable$outboundSchema: z.ZodType< - CpuAllocatable$Outbound, - CpuAllocatable -> = z.object({ - unit: CpuAllocatableUnit$outboundSchema, - value: z.number(), -}); - -export function cpuAllocatableToJSON(cpuAllocatable: CpuAllocatable): string { - return JSON.stringify(CpuAllocatable$outboundSchema.parse(cpuAllocatable)); -} - -/** @internal */ -export type AllocatableCpuUnion$Outbound = CpuAllocatable$Outbound | any; - -/** @internal */ -export const AllocatableCpuUnion$outboundSchema: z.ZodType< - AllocatableCpuUnion$Outbound, - AllocatableCpuUnion -> = z.union([z.lazy(() => CpuAllocatable$outboundSchema), z.any()]); - -export function allocatableCpuUnionToJSON( - allocatableCpuUnion: AllocatableCpuUnion, -): string { - return JSON.stringify( - AllocatableCpuUnion$outboundSchema.parse(allocatableCpuUnion), - ); -} - -/** @internal */ -export const MemoryAllocatableUnit$outboundSchema: z.ZodEnum< - typeof MemoryAllocatableUnit -> = z.enum(MemoryAllocatableUnit); - -/** @internal */ -export type MemoryAllocatable$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const MemoryAllocatable$outboundSchema: z.ZodType< - MemoryAllocatable$Outbound, - MemoryAllocatable -> = z.object({ - unit: MemoryAllocatableUnit$outboundSchema, - value: z.number(), -}); - -export function memoryAllocatableToJSON( - memoryAllocatable: MemoryAllocatable, -): string { - return JSON.stringify( - MemoryAllocatable$outboundSchema.parse(memoryAllocatable), - ); -} - -/** @internal */ -export type AllocatableMemoryUnion$Outbound = MemoryAllocatable$Outbound | any; - -/** @internal */ -export const AllocatableMemoryUnion$outboundSchema: z.ZodType< - AllocatableMemoryUnion$Outbound, - AllocatableMemoryUnion -> = z.union([z.lazy(() => MemoryAllocatable$outboundSchema), z.any()]); - -export function allocatableMemoryUnionToJSON( - allocatableMemoryUnion: AllocatableMemoryUnion, -): string { - return JSON.stringify( - AllocatableMemoryUnion$outboundSchema.parse(allocatableMemoryUnion), - ); -} - -/** @internal */ -export type Allocatable$Outbound = { - cpu?: CpuAllocatable$Outbound | any | null | undefined; - memory?: MemoryAllocatable$Outbound | any | null | undefined; - pods?: number | null | undefined; -}; - -/** @internal */ -export const Allocatable$outboundSchema: z.ZodType< - Allocatable$Outbound, - Allocatable -> = z.object({ - cpu: z.nullable( - z.union([z.lazy(() => CpuAllocatable$outboundSchema), z.any()]), - ).optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryAllocatable$outboundSchema), z.any()]), - ).optional(), - pods: z.nullable(z.int()).optional(), -}); - -export function allocatableToJSON(allocatable: Allocatable): string { - return JSON.stringify(Allocatable$outboundSchema.parse(allocatable)); -} - -/** @internal */ -export const CpuCapacityUnit$outboundSchema: z.ZodEnum = - z.enum(CpuCapacityUnit); - -/** @internal */ -export type CpuCapacity$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const CpuCapacity$outboundSchema: z.ZodType< - CpuCapacity$Outbound, - CpuCapacity -> = z.object({ - unit: CpuCapacityUnit$outboundSchema, - value: z.number(), -}); - -export function cpuCapacityToJSON(cpuCapacity: CpuCapacity): string { - return JSON.stringify(CpuCapacity$outboundSchema.parse(cpuCapacity)); -} - -/** @internal */ -export type CapacityCpuUnion$Outbound = CpuCapacity$Outbound | any; - -/** @internal */ -export const CapacityCpuUnion$outboundSchema: z.ZodType< - CapacityCpuUnion$Outbound, - CapacityCpuUnion -> = z.union([z.lazy(() => CpuCapacity$outboundSchema), z.any()]); - -export function capacityCpuUnionToJSON( - capacityCpuUnion: CapacityCpuUnion, -): string { - return JSON.stringify( - CapacityCpuUnion$outboundSchema.parse(capacityCpuUnion), - ); -} - -/** @internal */ -export const MemoryCapacityUnit$outboundSchema: z.ZodEnum< - typeof MemoryCapacityUnit -> = z.enum(MemoryCapacityUnit); - -/** @internal */ -export type MemoryCapacity$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const MemoryCapacity$outboundSchema: z.ZodType< - MemoryCapacity$Outbound, - MemoryCapacity -> = z.object({ - unit: MemoryCapacityUnit$outboundSchema, - value: z.number(), -}); - -export function memoryCapacityToJSON(memoryCapacity: MemoryCapacity): string { - return JSON.stringify(MemoryCapacity$outboundSchema.parse(memoryCapacity)); -} - -/** @internal */ -export type CapacityMemoryUnion$Outbound = MemoryCapacity$Outbound | any; - -/** @internal */ -export const CapacityMemoryUnion$outboundSchema: z.ZodType< - CapacityMemoryUnion$Outbound, - CapacityMemoryUnion -> = z.union([z.lazy(() => MemoryCapacity$outboundSchema), z.any()]); - -export function capacityMemoryUnionToJSON( - capacityMemoryUnion: CapacityMemoryUnion, -): string { - return JSON.stringify( - CapacityMemoryUnion$outboundSchema.parse(capacityMemoryUnion), - ); -} - -/** @internal */ -export type Capacity$Outbound = { - cpu?: CpuCapacity$Outbound | any | null | undefined; - memory?: MemoryCapacity$Outbound | any | null | undefined; - pods?: number | null | undefined; -}; - -/** @internal */ -export const Capacity$outboundSchema: z.ZodType = z - .object({ - cpu: z.nullable( - z.union([z.lazy(() => CpuCapacity$outboundSchema), z.any()]), - ).optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryCapacity$outboundSchema), z.any()]), - ).optional(), - pods: z.nullable(z.int()).optional(), - }); - -export function capacityToJSON(capacity: Capacity): string { - return JSON.stringify(Capacity$outboundSchema.parse(capacity)); -} - -/** @internal */ -export type NodeStatusCondition$Outbound = { - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -/** @internal */ -export const NodeStatusCondition$outboundSchema: z.ZodType< - NodeStatusCondition$Outbound, - NodeStatusCondition -> = z.object({ - message: z.nullable(z.string()).optional(), - reason: z.nullable(z.string()).optional(), - status: z.string(), - type: z.string(), -}); - -export function nodeStatusConditionToJSON( - nodeStatusCondition: NodeStatusCondition, -): string { - return JSON.stringify( - NodeStatusCondition$outboundSchema.parse(nodeStatusCondition), - ); -} - -/** @internal */ -export const UsageCpuUnit$outboundSchema: z.ZodEnum = z - .enum(UsageCpuUnit); - -/** @internal */ -export type UsageCpu$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const UsageCpu$outboundSchema: z.ZodType = z - .object({ - unit: UsageCpuUnit$outboundSchema, - value: z.number(), - }); - -export function usageCpuToJSON(usageCpu: UsageCpu): string { - return JSON.stringify(UsageCpu$outboundSchema.parse(usageCpu)); -} - -/** @internal */ -export type UsageCpuUnion$Outbound = UsageCpu$Outbound | any; - -/** @internal */ -export const UsageCpuUnion$outboundSchema: z.ZodType< - UsageCpuUnion$Outbound, - UsageCpuUnion -> = z.union([z.lazy(() => UsageCpu$outboundSchema), z.any()]); - -export function usageCpuUnionToJSON(usageCpuUnion: UsageCpuUnion): string { - return JSON.stringify(UsageCpuUnion$outboundSchema.parse(usageCpuUnion)); -} - -/** @internal */ -export const UsageMemoryUnit$outboundSchema: z.ZodEnum = - z.enum(UsageMemoryUnit); - -/** @internal */ -export type UsageMemory$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const UsageMemory$outboundSchema: z.ZodType< - UsageMemory$Outbound, - UsageMemory -> = z.object({ - unit: UsageMemoryUnit$outboundSchema, - value: z.number(), -}); - -export function usageMemoryToJSON(usageMemory: UsageMemory): string { - return JSON.stringify(UsageMemory$outboundSchema.parse(usageMemory)); -} - -/** @internal */ -export type UsageMemoryUnion$Outbound = UsageMemory$Outbound | any; - -/** @internal */ -export const UsageMemoryUnion$outboundSchema: z.ZodType< - UsageMemoryUnion$Outbound, - UsageMemoryUnion -> = z.union([z.lazy(() => UsageMemory$outboundSchema), z.any()]); - -export function usageMemoryUnionToJSON( - usageMemoryUnion: UsageMemoryUnion, -): string { - return JSON.stringify( - UsageMemoryUnion$outboundSchema.parse(usageMemoryUnion), - ); -} - -/** @internal */ -export type SyncReconcileRequestUsage$Outbound = { - cpu?: UsageCpu$Outbound | any | null | undefined; - memory?: UsageMemory$Outbound | any | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestUsage$outboundSchema: z.ZodType< - SyncReconcileRequestUsage$Outbound, - SyncReconcileRequestUsage -> = z.object({ - cpu: z.nullable(z.union([z.lazy(() => UsageCpu$outboundSchema), z.any()])) - .optional(), - memory: z.nullable( - z.union([z.lazy(() => UsageMemory$outboundSchema), z.any()]), - ).optional(), -}); - -export function syncReconcileRequestUsageToJSON( - syncReconcileRequestUsage: SyncReconcileRequestUsage, -): string { - return JSON.stringify( - SyncReconcileRequestUsage$outboundSchema.parse(syncReconcileRequestUsage), - ); -} - -/** @internal */ -export type Usage$Outbound = SyncReconcileRequestUsage$Outbound | any; - -/** @internal */ -export const Usage$outboundSchema: z.ZodType = z.union([ - z.lazy(() => SyncReconcileRequestUsage$outboundSchema), - z.any(), -]); - -export function usageToJSON(usage: Usage): string { - return JSON.stringify(Usage$outboundSchema.parse(usage)); -} - -/** @internal */ -export type NodeStatus$Outbound = { - allocatable: Allocatable$Outbound; - capacity: Capacity$Outbound; - conditions?: Array | undefined; - containerRuntimeVersion?: string | null | undefined; - kubeletVersion?: string | null | undefined; - labels: { [k: string]: string }; - name: string; - ready: boolean; - roles: Array; - uid?: string | null | undefined; - usage?: SyncReconcileRequestUsage$Outbound | any | null | undefined; -}; - -/** @internal */ -export const NodeStatus$outboundSchema: z.ZodType< - NodeStatus$Outbound, - NodeStatus -> = z.object({ - allocatable: z.lazy(() => Allocatable$outboundSchema), - capacity: z.lazy(() => Capacity$outboundSchema), - conditions: z.array(z.lazy(() => NodeStatusCondition$outboundSchema)) - .optional(), - containerRuntimeVersion: z.nullable(z.string()).optional(), - kubeletVersion: z.nullable(z.string()).optional(), - labels: z.record(z.string(), z.string()), - name: z.string(), - ready: z.boolean(), - roles: z.array(z.string()), - uid: z.nullable(z.string()).optional(), - usage: z.nullable( - z.union([z.lazy(() => SyncReconcileRequestUsage$outboundSchema), z.any()]), - ).optional(), -}); - -export function nodeStatusToJSON(nodeStatus: NodeStatus): string { - return JSON.stringify(NodeStatus$outboundSchema.parse(nodeStatus)); -} - -/** @internal */ -export type PodCounts$Outbound = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -/** @internal */ -export const PodCounts$outboundSchema: z.ZodType< - PodCounts$Outbound, - PodCounts -> = z.object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), -}); - -export function podCountsToJSON(podCounts: PodCounts): string { - return JSON.stringify(PodCounts$outboundSchema.parse(podCounts)); -} - -/** @internal */ -export const Reason22$outboundSchema: z.ZodEnum = z.enum( - Reason22, -); - -/** @internal */ -export const CollectionIssueSeverity22$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity22 -> = z.enum(CollectionIssueSeverity22); - -/** @internal */ -export type CollectionIssue22$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue22$outboundSchema: z.ZodType< - CollectionIssue22$Outbound, - CollectionIssue22 -> = z.object({ - message: z.string(), - reason: Reason22$outboundSchema, - severity: CollectionIssueSeverity22$outboundSchema, - source: z.string(), -}); - -export function collectionIssue22ToJSON( - collectionIssue22: CollectionIssue22, -): string { - return JSON.stringify( - CollectionIssue22$outboundSchema.parse(collectionIssue22), - ); -} - -/** @internal */ -export const Health22$outboundSchema: z.ZodEnum = z.enum( - Health22, -); - -/** @internal */ -export const StatusLifecycle22$outboundSchema: z.ZodEnum< - typeof StatusLifecycle22 -> = z.enum(StatusLifecycle22); - -/** @internal */ -export type HeartbeatStatus22$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus22$outboundSchema: z.ZodType< - HeartbeatStatus22$Outbound, - HeartbeatStatus22 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue22$outboundSchema)), - health: Health22$outboundSchema, - lifecycle: StatusLifecycle22$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus22ToJSON( - heartbeatStatus22: HeartbeatStatus22, -): string { - return JSON.stringify( - HeartbeatStatus22$outboundSchema.parse(heartbeatStatus22), - ); -} - -/** @internal */ -export type SyncReconcileRequestData1$Outbound = { - cpu?: Cpu10$Outbound | any | null | undefined; - events: Array; - memory?: Memory10$Outbound | any | null | undefined; - name: string; - namespace?: string | null | undefined; - nodeCounts: NodeCounts$Outbound; - nodeStatuses?: Array | undefined; - podCounts: PodCounts$Outbound; - region?: string | null | undefined; - status: HeartbeatStatus22$Outbound; - version?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestData1$outboundSchema: z.ZodType< - SyncReconcileRequestData1$Outbound, - SyncReconcileRequestData1 -> = z.object({ - cpu: z.nullable(z.union([z.lazy(() => Cpu10$outboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent11$outboundSchema)), - memory: z.nullable(z.union([z.lazy(() => Memory10$outboundSchema), z.any()])) - .optional(), - name: z.string(), - namespace: z.nullable(z.string()).optional(), - nodeCounts: z.lazy(() => NodeCounts$outboundSchema), - nodeStatuses: z.array(z.lazy(() => NodeStatus$outboundSchema)).optional(), - podCounts: z.lazy(() => PodCounts$outboundSchema), - region: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus22$outboundSchema), - version: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestData1ToJSON( - syncReconcileRequestData1: SyncReconcileRequestData1, -): string { - return JSON.stringify( - SyncReconcileRequestData1$outboundSchema.parse(syncReconcileRequestData1), - ); -} - -/** @internal */ -export type DataKubernetesCluster$Outbound = { - data: SyncReconcileRequestData1$Outbound; - resourceType: "kubernetes-cluster"; -}; - -/** @internal */ -export const DataKubernetesCluster$outboundSchema: z.ZodType< - DataKubernetesCluster$Outbound, - DataKubernetesCluster -> = z.object({ - data: z.lazy(() => SyncReconcileRequestData1$outboundSchema), - resourceType: z.literal("kubernetes-cluster"), -}); - -export function dataKubernetesClusterToJSON( - dataKubernetesCluster: DataKubernetesCluster, -): string { - return JSON.stringify( - DataKubernetesCluster$outboundSchema.parse(dataKubernetesCluster), - ); -} - -/** @internal */ -export type Nodes4$Outbound = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -/** @internal */ -export const Nodes4$outboundSchema: z.ZodType = z - .object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - }); - -export function nodes4ToJSON(nodes4: Nodes4): string { - return JSON.stringify(Nodes4$outboundSchema.parse(nodes4)); -} - -/** @internal */ -export const Reason21$outboundSchema: z.ZodEnum = z.enum( - Reason21, -); - -/** @internal */ -export const CollectionIssueSeverity21$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity21 -> = z.enum(CollectionIssueSeverity21); - -/** @internal */ -export type CollectionIssue21$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue21$outboundSchema: z.ZodType< - CollectionIssue21$Outbound, - CollectionIssue21 -> = z.object({ - message: z.string(), - reason: Reason21$outboundSchema, - severity: CollectionIssueSeverity21$outboundSchema, - source: z.string(), -}); - -export function collectionIssue21ToJSON( - collectionIssue21: CollectionIssue21, -): string { - return JSON.stringify( - CollectionIssue21$outboundSchema.parse(collectionIssue21), - ); -} - -/** @internal */ -export const Health21$outboundSchema: z.ZodEnum = z.enum( - Health21, -); - -/** @internal */ -export const StatusLifecycle21$outboundSchema: z.ZodEnum< - typeof StatusLifecycle21 -> = z.enum(StatusLifecycle21); - -/** @internal */ -export type HeartbeatStatus21$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus21$outboundSchema: z.ZodType< - HeartbeatStatus21$Outbound, - HeartbeatStatus21 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue21$outboundSchema)), - health: Health21$outboundSchema, - lifecycle: StatusLifecycle21$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus21ToJSON( - heartbeatStatus21: HeartbeatStatus21, -): string { - return JSON.stringify( - HeartbeatStatus21$outboundSchema.parse(heartbeatStatus21), - ); -} - -/** @internal */ -export type DataLocal5$Outbound = { - dockerApiVersion?: string | null | undefined; - dockerArch?: string | null | undefined; - dockerAvailable: boolean; - dockerOs?: string | null | undefined; - dockerVersion?: string | null | undefined; - hostIdentifier?: string | null | undefined; - name: string; - networkAvailable: boolean; - networkName?: string | null | undefined; - nodes: Nodes4$Outbound; - runningContainers?: number | null | undefined; - status: HeartbeatStatus21$Outbound; - trackedContainers?: number | null | undefined; - backend: "local"; -}; - -/** @internal */ -export const DataLocal5$outboundSchema: z.ZodType< - DataLocal5$Outbound, - DataLocal5 -> = z.object({ - dockerApiVersion: z.nullable(z.string()).optional(), - dockerArch: z.nullable(z.string()).optional(), - dockerAvailable: z.boolean(), - dockerOs: z.nullable(z.string()).optional(), - dockerVersion: z.nullable(z.string()).optional(), - hostIdentifier: z.nullable(z.string()).optional(), - name: z.string(), - networkAvailable: z.boolean(), - networkName: z.nullable(z.string()).optional(), - nodes: z.lazy(() => Nodes4$outboundSchema), - runningContainers: z.nullable(z.int()).optional(), - status: z.lazy(() => HeartbeatStatus21$outboundSchema), - trackedContainers: z.nullable(z.int()).optional(), - backend: z.literal("local"), -}); - -export function dataLocal5ToJSON(dataLocal5: DataLocal5): string { - return JSON.stringify(DataLocal5$outboundSchema.parse(dataLocal5)); -} - -/** @internal */ -export const Category3$outboundSchema: z.ZodEnum = z.enum( - Category3, -); - -/** @internal */ -export type CapacityBlocker3$Outbound = { - category: string; - message: string; - observedAt: string; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -/** @internal */ -export const CapacityBlocker3$outboundSchema: z.ZodType< - CapacityBlocker3$Outbound, - CapacityBlocker3 -> = z.object({ - category: Category3$outboundSchema, - message: z.string(), - observedAt: z.date().transform(v => v.toISOString()), - providerCode: z.nullable(z.string()).optional(), - providerReference: z.nullable(z.string()).optional(), -}); - -export function capacityBlocker3ToJSON( - capacityBlocker3: CapacityBlocker3, -): string { - return JSON.stringify( - CapacityBlocker3$outboundSchema.parse(capacityBlocker3), - ); -} - -/** @internal */ -export type CapacityBlockerUnion3$Outbound = CapacityBlocker3$Outbound | any; - -/** @internal */ -export const CapacityBlockerUnion3$outboundSchema: z.ZodType< - CapacityBlockerUnion3$Outbound, - CapacityBlockerUnion3 -> = z.union([z.lazy(() => CapacityBlocker3$outboundSchema), z.any()]); - -export function capacityBlockerUnion3ToJSON( - capacityBlockerUnion3: CapacityBlockerUnion3, -): string { - return JSON.stringify( - CapacityBlockerUnion3$outboundSchema.parse(capacityBlockerUnion3), - ); -} - -/** @internal */ -export const UtilizationUnit3$outboundSchema: z.ZodEnum< - typeof UtilizationUnit3 -> = z.enum(UtilizationUnit3); - -/** @internal */ -export type Utilization3$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Utilization3$outboundSchema: z.ZodType< - Utilization3$Outbound, - Utilization3 -> = z.object({ - unit: UtilizationUnit3$outboundSchema, - value: z.number(), -}); - -export function utilization3ToJSON(utilization3: Utilization3): string { - return JSON.stringify(Utilization3$outboundSchema.parse(utilization3)); -} - -/** @internal */ -export type UtilizationUnion3$Outbound = Utilization3$Outbound | any; - -/** @internal */ -export const UtilizationUnion3$outboundSchema: z.ZodType< - UtilizationUnion3$Outbound, - UtilizationUnion3 -> = z.union([z.lazy(() => Utilization3$outboundSchema), z.any()]); - -export function utilizationUnion3ToJSON( - utilizationUnion3: UtilizationUnion3, -): string { - return JSON.stringify( - UtilizationUnion3$outboundSchema.parse(utilizationUnion3), - ); -} - -/** @internal */ -export type Recommendation3$Outbound = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization3$Outbound | any | null | undefined; -}; - -/** @internal */ -export const Recommendation3$outboundSchema: z.ZodType< - Recommendation3$Outbound, - Recommendation3 -> = z.object({ - desiredMachines: z.int(), - reason: z.nullable(z.string()).optional(), - unschedulableReplicas: z.nullable(z.int()).optional(), - utilization: z.nullable( - z.union([z.lazy(() => Utilization3$outboundSchema), z.any()]), - ).optional(), -}); - -export function recommendation3ToJSON( - recommendation3: Recommendation3, -): string { - return JSON.stringify(Recommendation3$outboundSchema.parse(recommendation3)); -} - -/** @internal */ -export type RecommendationUnion3$Outbound = Recommendation3$Outbound | any; - -/** @internal */ -export const RecommendationUnion3$outboundSchema: z.ZodType< - RecommendationUnion3$Outbound, - RecommendationUnion3 -> = z.union([z.lazy(() => Recommendation3$outboundSchema), z.any()]); - -export function recommendationUnion3ToJSON( - recommendationUnion3: RecommendationUnion3, -): string { - return JSON.stringify( - RecommendationUnion3$outboundSchema.parse(recommendationUnion3), - ); -} - -/** @internal */ -export type CapacityGroup3$Outbound = { - capacityBlocker?: CapacityBlocker3$Outbound | any | null | undefined; - currentMachines: number; - desiredMachines: number; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation3$Outbound | any | null | undefined; -}; - -/** @internal */ -export const CapacityGroup3$outboundSchema: z.ZodType< - CapacityGroup3$Outbound, - CapacityGroup3 -> = z.object({ - capacityBlocker: z.nullable( - z.union([z.lazy(() => CapacityBlocker3$outboundSchema), z.any()]), - ).optional(), - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - instanceType: z.nullable(z.string()).optional(), - maxMachines: z.nullable(z.int()).optional(), - minMachines: z.nullable(z.int()).optional(), - recommendation: z.nullable( - z.union([z.lazy(() => Recommendation3$outboundSchema), z.any()]), - ).optional(), -}); - -export function capacityGroup3ToJSON(capacityGroup3: CapacityGroup3): string { - return JSON.stringify(CapacityGroup3$outboundSchema.parse(capacityGroup3)); -} - -/** @internal */ -export const CpuUnit9$outboundSchema: z.ZodEnum = z.enum( - CpuUnit9, -); - -/** @internal */ -export type Cpu9$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Cpu9$outboundSchema: z.ZodType = z.object({ - unit: CpuUnit9$outboundSchema, - value: z.number(), -}); - -export function cpu9ToJSON(cpu9: Cpu9): string { - return JSON.stringify(Cpu9$outboundSchema.parse(cpu9)); -} - -/** @internal */ -export type CpuUnion9$Outbound = Cpu9$Outbound | any; - -/** @internal */ -export const CpuUnion9$outboundSchema: z.ZodType< - CpuUnion9$Outbound, - CpuUnion9 -> = z.union([z.lazy(() => Cpu9$outboundSchema), z.any()]); - -export function cpuUnion9ToJSON(cpuUnion9: CpuUnion9): string { - return JSON.stringify(CpuUnion9$outboundSchema.parse(cpuUnion9)); -} - -/** @internal */ -export const MemoryUnit9$outboundSchema: z.ZodEnum = z.enum( - MemoryUnit9, -); - -/** @internal */ -export type Memory9$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Memory9$outboundSchema: z.ZodType = z - .object({ - unit: MemoryUnit9$outboundSchema, - value: z.number(), - }); - -export function memory9ToJSON(memory9: Memory9): string { - return JSON.stringify(Memory9$outboundSchema.parse(memory9)); -} - -/** @internal */ -export type MemoryUnion9$Outbound = Memory9$Outbound | any; - -/** @internal */ -export const MemoryUnion9$outboundSchema: z.ZodType< - MemoryUnion9$Outbound, - MemoryUnion9 -> = z.union([z.lazy(() => Memory9$outboundSchema), z.any()]); - -export function memoryUnion9ToJSON(memoryUnion9: MemoryUnion9): string { - return JSON.stringify(MemoryUnion9$outboundSchema.parse(memoryUnion9)); -} - -/** @internal */ -export type Nodes3$Outbound = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -/** @internal */ -export const Nodes3$outboundSchema: z.ZodType = z - .object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - }); - -export function nodes3ToJSON(nodes3: Nodes3): string { - return JSON.stringify(Nodes3$outboundSchema.parse(nodes3)); -} - -/** @internal */ -export type ProviderFleet3$Outbound = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; -}; - -/** @internal */ -export const ProviderFleet3$outboundSchema: z.ZodType< - ProviderFleet3$Outbound, - ProviderFleet3 -> = z.object({ - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - location: z.nullable(z.string()).optional(), - providerId: z.string(), -}); - -export function providerFleet3ToJSON(providerFleet3: ProviderFleet3): string { - return JSON.stringify(ProviderFleet3$outboundSchema.parse(providerFleet3)); -} - -/** @internal */ -export const Reason20$outboundSchema: z.ZodEnum = z.enum( - Reason20, -); - -/** @internal */ -export const CollectionIssueSeverity20$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity20 -> = z.enum(CollectionIssueSeverity20); - -/** @internal */ -export type CollectionIssue20$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue20$outboundSchema: z.ZodType< - CollectionIssue20$Outbound, - CollectionIssue20 -> = z.object({ - message: z.string(), - reason: Reason20$outboundSchema, - severity: CollectionIssueSeverity20$outboundSchema, - source: z.string(), -}); - -export function collectionIssue20ToJSON( - collectionIssue20: CollectionIssue20, -): string { - return JSON.stringify( - CollectionIssue20$outboundSchema.parse(collectionIssue20), - ); -} - -/** @internal */ -export const Health20$outboundSchema: z.ZodEnum = z.enum( - Health20, -); - -/** @internal */ -export const StatusLifecycle20$outboundSchema: z.ZodEnum< - typeof StatusLifecycle20 -> = z.enum(StatusLifecycle20); - -/** @internal */ -export type HeartbeatStatus20$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus20$outboundSchema: z.ZodType< - HeartbeatStatus20$Outbound, - HeartbeatStatus20 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue20$outboundSchema)), - health: Health20$outboundSchema, - lifecycle: StatusLifecycle20$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus20ToJSON( - heartbeatStatus20: HeartbeatStatus20, -): string { - return JSON.stringify( - HeartbeatStatus20$outboundSchema.parse(heartbeatStatus20), - ); -} - -/** @internal */ -export type DataAzure2$Outbound = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu9$Outbound | any | null | undefined; - memory?: Memory9$Outbound | any | null | undefined; - name: string; - nodes: Nodes3$Outbound; - providerFleets: Array; - region?: string | null | undefined; - status: HeartbeatStatus20$Outbound; - backend: "azure"; -}; - -/** @internal */ -export const DataAzure2$outboundSchema: z.ZodType< - DataAzure2$Outbound, - DataAzure2 -> = z.object({ - backendClusterId: z.nullable(z.string()).optional(), - capacityGroups: z.array(z.lazy(() => CapacityGroup3$outboundSchema)), - cpu: z.nullable(z.union([z.lazy(() => Cpu9$outboundSchema), z.any()])) - .optional(), - memory: z.nullable(z.union([z.lazy(() => Memory9$outboundSchema), z.any()])) - .optional(), - name: z.string(), - nodes: z.lazy(() => Nodes3$outboundSchema), - providerFleets: z.array(z.lazy(() => ProviderFleet3$outboundSchema)), - region: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus20$outboundSchema), - backend: z.literal("azure"), -}); - -export function dataAzure2ToJSON(dataAzure2: DataAzure2): string { - return JSON.stringify(DataAzure2$outboundSchema.parse(dataAzure2)); -} - -/** @internal */ -export const Category2$outboundSchema: z.ZodEnum = z.enum( - Category2, -); - -/** @internal */ -export type CapacityBlocker2$Outbound = { - category: string; - message: string; - observedAt: string; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -/** @internal */ -export const CapacityBlocker2$outboundSchema: z.ZodType< - CapacityBlocker2$Outbound, - CapacityBlocker2 -> = z.object({ - category: Category2$outboundSchema, - message: z.string(), - observedAt: z.date().transform(v => v.toISOString()), - providerCode: z.nullable(z.string()).optional(), - providerReference: z.nullable(z.string()).optional(), -}); - -export function capacityBlocker2ToJSON( - capacityBlocker2: CapacityBlocker2, -): string { - return JSON.stringify( - CapacityBlocker2$outboundSchema.parse(capacityBlocker2), - ); -} - -/** @internal */ -export type CapacityBlockerUnion2$Outbound = CapacityBlocker2$Outbound | any; - -/** @internal */ -export const CapacityBlockerUnion2$outboundSchema: z.ZodType< - CapacityBlockerUnion2$Outbound, - CapacityBlockerUnion2 -> = z.union([z.lazy(() => CapacityBlocker2$outboundSchema), z.any()]); - -export function capacityBlockerUnion2ToJSON( - capacityBlockerUnion2: CapacityBlockerUnion2, -): string { - return JSON.stringify( - CapacityBlockerUnion2$outboundSchema.parse(capacityBlockerUnion2), - ); -} - -/** @internal */ -export const UtilizationUnit2$outboundSchema: z.ZodEnum< - typeof UtilizationUnit2 -> = z.enum(UtilizationUnit2); - -/** @internal */ -export type Utilization2$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Utilization2$outboundSchema: z.ZodType< - Utilization2$Outbound, - Utilization2 -> = z.object({ - unit: UtilizationUnit2$outboundSchema, - value: z.number(), -}); - -export function utilization2ToJSON(utilization2: Utilization2): string { - return JSON.stringify(Utilization2$outboundSchema.parse(utilization2)); -} - -/** @internal */ -export type UtilizationUnion2$Outbound = Utilization2$Outbound | any; - -/** @internal */ -export const UtilizationUnion2$outboundSchema: z.ZodType< - UtilizationUnion2$Outbound, - UtilizationUnion2 -> = z.union([z.lazy(() => Utilization2$outboundSchema), z.any()]); - -export function utilizationUnion2ToJSON( - utilizationUnion2: UtilizationUnion2, -): string { - return JSON.stringify( - UtilizationUnion2$outboundSchema.parse(utilizationUnion2), - ); -} - -/** @internal */ -export type Recommendation2$Outbound = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization2$Outbound | any | null | undefined; -}; - -/** @internal */ -export const Recommendation2$outboundSchema: z.ZodType< - Recommendation2$Outbound, - Recommendation2 -> = z.object({ - desiredMachines: z.int(), - reason: z.nullable(z.string()).optional(), - unschedulableReplicas: z.nullable(z.int()).optional(), - utilization: z.nullable( - z.union([z.lazy(() => Utilization2$outboundSchema), z.any()]), - ).optional(), -}); - -export function recommendation2ToJSON( - recommendation2: Recommendation2, -): string { - return JSON.stringify(Recommendation2$outboundSchema.parse(recommendation2)); -} - -/** @internal */ -export type RecommendationUnion2$Outbound = Recommendation2$Outbound | any; - -/** @internal */ -export const RecommendationUnion2$outboundSchema: z.ZodType< - RecommendationUnion2$Outbound, - RecommendationUnion2 -> = z.union([z.lazy(() => Recommendation2$outboundSchema), z.any()]); - -export function recommendationUnion2ToJSON( - recommendationUnion2: RecommendationUnion2, -): string { - return JSON.stringify( - RecommendationUnion2$outboundSchema.parse(recommendationUnion2), - ); -} - -/** @internal */ -export type CapacityGroup2$Outbound = { - capacityBlocker?: CapacityBlocker2$Outbound | any | null | undefined; - currentMachines: number; - desiredMachines: number; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation2$Outbound | any | null | undefined; -}; - -/** @internal */ -export const CapacityGroup2$outboundSchema: z.ZodType< - CapacityGroup2$Outbound, - CapacityGroup2 -> = z.object({ - capacityBlocker: z.nullable( - z.union([z.lazy(() => CapacityBlocker2$outboundSchema), z.any()]), - ).optional(), - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - instanceType: z.nullable(z.string()).optional(), - maxMachines: z.nullable(z.int()).optional(), - minMachines: z.nullable(z.int()).optional(), - recommendation: z.nullable( - z.union([z.lazy(() => Recommendation2$outboundSchema), z.any()]), - ).optional(), -}); - -export function capacityGroup2ToJSON(capacityGroup2: CapacityGroup2): string { - return JSON.stringify(CapacityGroup2$outboundSchema.parse(capacityGroup2)); -} - -/** @internal */ -export const CpuUnit8$outboundSchema: z.ZodEnum = z.enum( - CpuUnit8, -); - -/** @internal */ -export type Cpu8$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Cpu8$outboundSchema: z.ZodType = z.object({ - unit: CpuUnit8$outboundSchema, - value: z.number(), -}); - -export function cpu8ToJSON(cpu8: Cpu8): string { - return JSON.stringify(Cpu8$outboundSchema.parse(cpu8)); -} - -/** @internal */ -export type CpuUnion8$Outbound = Cpu8$Outbound | any; - -/** @internal */ -export const CpuUnion8$outboundSchema: z.ZodType< - CpuUnion8$Outbound, - CpuUnion8 -> = z.union([z.lazy(() => Cpu8$outboundSchema), z.any()]); - -export function cpuUnion8ToJSON(cpuUnion8: CpuUnion8): string { - return JSON.stringify(CpuUnion8$outboundSchema.parse(cpuUnion8)); -} - -/** @internal */ -export const MemoryUnit8$outboundSchema: z.ZodEnum = z.enum( - MemoryUnit8, -); - -/** @internal */ -export type Memory8$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Memory8$outboundSchema: z.ZodType = z - .object({ - unit: MemoryUnit8$outboundSchema, - value: z.number(), - }); - -export function memory8ToJSON(memory8: Memory8): string { - return JSON.stringify(Memory8$outboundSchema.parse(memory8)); -} - -/** @internal */ -export type MemoryUnion8$Outbound = Memory8$Outbound | any; - -/** @internal */ -export const MemoryUnion8$outboundSchema: z.ZodType< - MemoryUnion8$Outbound, - MemoryUnion8 -> = z.union([z.lazy(() => Memory8$outboundSchema), z.any()]); - -export function memoryUnion8ToJSON(memoryUnion8: MemoryUnion8): string { - return JSON.stringify(MemoryUnion8$outboundSchema.parse(memoryUnion8)); -} - -/** @internal */ -export type Nodes2$Outbound = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -/** @internal */ -export const Nodes2$outboundSchema: z.ZodType = z - .object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - }); - -export function nodes2ToJSON(nodes2: Nodes2): string { - return JSON.stringify(Nodes2$outboundSchema.parse(nodes2)); -} - -/** @internal */ -export type ProviderFleet2$Outbound = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; -}; - -/** @internal */ -export const ProviderFleet2$outboundSchema: z.ZodType< - ProviderFleet2$Outbound, - ProviderFleet2 -> = z.object({ - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - location: z.nullable(z.string()).optional(), - providerId: z.string(), -}); - -export function providerFleet2ToJSON(providerFleet2: ProviderFleet2): string { - return JSON.stringify(ProviderFleet2$outboundSchema.parse(providerFleet2)); -} - -/** @internal */ -export const Reason19$outboundSchema: z.ZodEnum = z.enum( - Reason19, -); - -/** @internal */ -export const CollectionIssueSeverity19$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity19 -> = z.enum(CollectionIssueSeverity19); - -/** @internal */ -export type CollectionIssue19$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue19$outboundSchema: z.ZodType< - CollectionIssue19$Outbound, - CollectionIssue19 -> = z.object({ - message: z.string(), - reason: Reason19$outboundSchema, - severity: CollectionIssueSeverity19$outboundSchema, - source: z.string(), -}); - -export function collectionIssue19ToJSON( - collectionIssue19: CollectionIssue19, -): string { - return JSON.stringify( - CollectionIssue19$outboundSchema.parse(collectionIssue19), - ); -} - -/** @internal */ -export const Health19$outboundSchema: z.ZodEnum = z.enum( - Health19, -); - -/** @internal */ -export const StatusLifecycle19$outboundSchema: z.ZodEnum< - typeof StatusLifecycle19 -> = z.enum(StatusLifecycle19); - -/** @internal */ -export type HeartbeatStatus19$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus19$outboundSchema: z.ZodType< - HeartbeatStatus19$Outbound, - HeartbeatStatus19 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue19$outboundSchema)), - health: Health19$outboundSchema, - lifecycle: StatusLifecycle19$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus19ToJSON( - heartbeatStatus19: HeartbeatStatus19, -): string { - return JSON.stringify( - HeartbeatStatus19$outboundSchema.parse(heartbeatStatus19), - ); -} - -/** @internal */ -export type DataGcp2$Outbound = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu8$Outbound | any | null | undefined; - memory?: Memory8$Outbound | any | null | undefined; - name: string; - nodes: Nodes2$Outbound; - providerFleets: Array; - region?: string | null | undefined; - status: HeartbeatStatus19$Outbound; - backend: "gcp"; -}; - -/** @internal */ -export const DataGcp2$outboundSchema: z.ZodType = z - .object({ - backendClusterId: z.nullable(z.string()).optional(), - capacityGroups: z.array(z.lazy(() => CapacityGroup2$outboundSchema)), - cpu: z.nullable(z.union([z.lazy(() => Cpu8$outboundSchema), z.any()])) - .optional(), - memory: z.nullable(z.union([z.lazy(() => Memory8$outboundSchema), z.any()])) - .optional(), - name: z.string(), - nodes: z.lazy(() => Nodes2$outboundSchema), - providerFleets: z.array(z.lazy(() => ProviderFleet2$outboundSchema)), - region: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus19$outboundSchema), - backend: z.literal("gcp"), - }); - -export function dataGcp2ToJSON(dataGcp2: DataGcp2): string { - return JSON.stringify(DataGcp2$outboundSchema.parse(dataGcp2)); -} - -/** @internal */ -export const Category1$outboundSchema: z.ZodEnum = z.enum( - Category1, -); - -/** @internal */ -export type CapacityBlocker1$Outbound = { - category: string; - message: string; - observedAt: string; - providerCode?: string | null | undefined; - providerReference?: string | null | undefined; -}; - -/** @internal */ -export const CapacityBlocker1$outboundSchema: z.ZodType< - CapacityBlocker1$Outbound, - CapacityBlocker1 -> = z.object({ - category: Category1$outboundSchema, - message: z.string(), - observedAt: z.date().transform(v => v.toISOString()), - providerCode: z.nullable(z.string()).optional(), - providerReference: z.nullable(z.string()).optional(), -}); - -export function capacityBlocker1ToJSON( - capacityBlocker1: CapacityBlocker1, -): string { - return JSON.stringify( - CapacityBlocker1$outboundSchema.parse(capacityBlocker1), - ); -} - -/** @internal */ -export type CapacityBlockerUnion1$Outbound = CapacityBlocker1$Outbound | any; - -/** @internal */ -export const CapacityBlockerUnion1$outboundSchema: z.ZodType< - CapacityBlockerUnion1$Outbound, - CapacityBlockerUnion1 -> = z.union([z.lazy(() => CapacityBlocker1$outboundSchema), z.any()]); - -export function capacityBlockerUnion1ToJSON( - capacityBlockerUnion1: CapacityBlockerUnion1, -): string { - return JSON.stringify( - CapacityBlockerUnion1$outboundSchema.parse(capacityBlockerUnion1), - ); -} - -/** @internal */ -export const UtilizationUnit1$outboundSchema: z.ZodEnum< - typeof UtilizationUnit1 -> = z.enum(UtilizationUnit1); - -/** @internal */ -export type Utilization1$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Utilization1$outboundSchema: z.ZodType< - Utilization1$Outbound, - Utilization1 -> = z.object({ - unit: UtilizationUnit1$outboundSchema, - value: z.number(), -}); - -export function utilization1ToJSON(utilization1: Utilization1): string { - return JSON.stringify(Utilization1$outboundSchema.parse(utilization1)); -} - -/** @internal */ -export type UtilizationUnion1$Outbound = Utilization1$Outbound | any; - -/** @internal */ -export const UtilizationUnion1$outboundSchema: z.ZodType< - UtilizationUnion1$Outbound, - UtilizationUnion1 -> = z.union([z.lazy(() => Utilization1$outboundSchema), z.any()]); - -export function utilizationUnion1ToJSON( - utilizationUnion1: UtilizationUnion1, -): string { - return JSON.stringify( - UtilizationUnion1$outboundSchema.parse(utilizationUnion1), - ); -} - -/** @internal */ -export type Recommendation1$Outbound = { - desiredMachines: number; - reason?: string | null | undefined; - unschedulableReplicas?: number | null | undefined; - utilization?: Utilization1$Outbound | any | null | undefined; -}; - -/** @internal */ -export const Recommendation1$outboundSchema: z.ZodType< - Recommendation1$Outbound, - Recommendation1 -> = z.object({ - desiredMachines: z.int(), - reason: z.nullable(z.string()).optional(), - unschedulableReplicas: z.nullable(z.int()).optional(), - utilization: z.nullable( - z.union([z.lazy(() => Utilization1$outboundSchema), z.any()]), - ).optional(), -}); - -export function recommendation1ToJSON( - recommendation1: Recommendation1, -): string { - return JSON.stringify(Recommendation1$outboundSchema.parse(recommendation1)); -} - -/** @internal */ -export type RecommendationUnion1$Outbound = Recommendation1$Outbound | any; - -/** @internal */ -export const RecommendationUnion1$outboundSchema: z.ZodType< - RecommendationUnion1$Outbound, - RecommendationUnion1 -> = z.union([z.lazy(() => Recommendation1$outboundSchema), z.any()]); - -export function recommendationUnion1ToJSON( - recommendationUnion1: RecommendationUnion1, -): string { - return JSON.stringify( - RecommendationUnion1$outboundSchema.parse(recommendationUnion1), - ); -} - -/** @internal */ -export type CapacityGroup1$Outbound = { - capacityBlocker?: CapacityBlocker1$Outbound | any | null | undefined; - currentMachines: number; - desiredMachines: number; - groupId: string; - instanceType?: string | null | undefined; - maxMachines?: number | null | undefined; - minMachines?: number | null | undefined; - recommendation?: Recommendation1$Outbound | any | null | undefined; -}; - -/** @internal */ -export const CapacityGroup1$outboundSchema: z.ZodType< - CapacityGroup1$Outbound, - CapacityGroup1 -> = z.object({ - capacityBlocker: z.nullable( - z.union([z.lazy(() => CapacityBlocker1$outboundSchema), z.any()]), - ).optional(), - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - instanceType: z.nullable(z.string()).optional(), - maxMachines: z.nullable(z.int()).optional(), - minMachines: z.nullable(z.int()).optional(), - recommendation: z.nullable( - z.union([z.lazy(() => Recommendation1$outboundSchema), z.any()]), - ).optional(), -}); - -export function capacityGroup1ToJSON(capacityGroup1: CapacityGroup1): string { - return JSON.stringify(CapacityGroup1$outboundSchema.parse(capacityGroup1)); -} - -/** @internal */ -export const CpuUnit7$outboundSchema: z.ZodEnum = z.enum( - CpuUnit7, -); - -/** @internal */ -export type Cpu7$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Cpu7$outboundSchema: z.ZodType = z.object({ - unit: CpuUnit7$outboundSchema, - value: z.number(), -}); - -export function cpu7ToJSON(cpu7: Cpu7): string { - return JSON.stringify(Cpu7$outboundSchema.parse(cpu7)); -} - -/** @internal */ -export type CpuUnion7$Outbound = Cpu7$Outbound | any; - -/** @internal */ -export const CpuUnion7$outboundSchema: z.ZodType< - CpuUnion7$Outbound, - CpuUnion7 -> = z.union([z.lazy(() => Cpu7$outboundSchema), z.any()]); - -export function cpuUnion7ToJSON(cpuUnion7: CpuUnion7): string { - return JSON.stringify(CpuUnion7$outboundSchema.parse(cpuUnion7)); -} - -/** @internal */ -export const MemoryUnit7$outboundSchema: z.ZodEnum = z.enum( - MemoryUnit7, -); - -/** @internal */ -export type Memory7$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Memory7$outboundSchema: z.ZodType = z - .object({ - unit: MemoryUnit7$outboundSchema, - value: z.number(), - }); - -export function memory7ToJSON(memory7: Memory7): string { - return JSON.stringify(Memory7$outboundSchema.parse(memory7)); -} - -/** @internal */ -export type MemoryUnion7$Outbound = Memory7$Outbound | any; - -/** @internal */ -export const MemoryUnion7$outboundSchema: z.ZodType< - MemoryUnion7$Outbound, - MemoryUnion7 -> = z.union([z.lazy(() => Memory7$outboundSchema), z.any()]); - -export function memoryUnion7ToJSON(memoryUnion7: MemoryUnion7): string { - return JSON.stringify(MemoryUnion7$outboundSchema.parse(memoryUnion7)); -} - -/** @internal */ -export type Nodes1$Outbound = { - current?: number | null | undefined; - desired?: number | null | undefined; - ready?: number | null | undefined; -}; - -/** @internal */ -export const Nodes1$outboundSchema: z.ZodType = z - .object({ - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - }); - -export function nodes1ToJSON(nodes1: Nodes1): string { - return JSON.stringify(Nodes1$outboundSchema.parse(nodes1)); -} - -/** @internal */ -export type ProviderFleet1$Outbound = { - currentMachines: number; - desiredMachines: number; - groupId: string; - location?: string | null | undefined; - providerId: string; -}; - -/** @internal */ -export const ProviderFleet1$outboundSchema: z.ZodType< - ProviderFleet1$Outbound, - ProviderFleet1 -> = z.object({ - currentMachines: z.int(), - desiredMachines: z.int(), - groupId: z.string(), - location: z.nullable(z.string()).optional(), - providerId: z.string(), -}); - -export function providerFleet1ToJSON(providerFleet1: ProviderFleet1): string { - return JSON.stringify(ProviderFleet1$outboundSchema.parse(providerFleet1)); -} - -/** @internal */ -export const Reason18$outboundSchema: z.ZodEnum = z.enum( - Reason18, -); - -/** @internal */ -export const CollectionIssueSeverity18$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity18 -> = z.enum(CollectionIssueSeverity18); - -/** @internal */ -export type CollectionIssue18$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue18$outboundSchema: z.ZodType< - CollectionIssue18$Outbound, - CollectionIssue18 -> = z.object({ - message: z.string(), - reason: Reason18$outboundSchema, - severity: CollectionIssueSeverity18$outboundSchema, - source: z.string(), -}); - -export function collectionIssue18ToJSON( - collectionIssue18: CollectionIssue18, -): string { - return JSON.stringify( - CollectionIssue18$outboundSchema.parse(collectionIssue18), - ); -} - -/** @internal */ -export const Health18$outboundSchema: z.ZodEnum = z.enum( - Health18, -); - -/** @internal */ -export const StatusLifecycle18$outboundSchema: z.ZodEnum< - typeof StatusLifecycle18 -> = z.enum(StatusLifecycle18); - -/** @internal */ -export type HeartbeatStatus18$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus18$outboundSchema: z.ZodType< - HeartbeatStatus18$Outbound, - HeartbeatStatus18 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue18$outboundSchema)), - health: Health18$outboundSchema, - lifecycle: StatusLifecycle18$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus18ToJSON( - heartbeatStatus18: HeartbeatStatus18, -): string { - return JSON.stringify( - HeartbeatStatus18$outboundSchema.parse(heartbeatStatus18), - ); -} - -/** @internal */ -export type DataAws2$Outbound = { - backendClusterId?: string | null | undefined; - capacityGroups: Array; - cpu?: Cpu7$Outbound | any | null | undefined; - memory?: Memory7$Outbound | any | null | undefined; - name: string; - nodes: Nodes1$Outbound; - providerFleets: Array; - region?: string | null | undefined; - status: HeartbeatStatus18$Outbound; - backend: "aws"; -}; - -/** @internal */ -export const DataAws2$outboundSchema: z.ZodType = z - .object({ - backendClusterId: z.nullable(z.string()).optional(), - capacityGroups: z.array(z.lazy(() => CapacityGroup1$outboundSchema)), - cpu: z.nullable(z.union([z.lazy(() => Cpu7$outboundSchema), z.any()])) - .optional(), - memory: z.nullable(z.union([z.lazy(() => Memory7$outboundSchema), z.any()])) - .optional(), - name: z.string(), - nodes: z.lazy(() => Nodes1$outboundSchema), - providerFleets: z.array(z.lazy(() => ProviderFleet1$outboundSchema)), - region: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus18$outboundSchema), - backend: z.literal("aws"), - }); - -export function dataAws2ToJSON(dataAws2: DataAws2): string { - return JSON.stringify(DataAws2$outboundSchema.parse(dataAws2)); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion5$Outbound = - | DataAws2$Outbound - | DataGcp2$Outbound - | DataAzure2$Outbound - | DataLocal5$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion5$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion5$Outbound, - SyncReconcileRequestDataUnion5 -> = z.union([ - z.lazy(() => DataAws2$outboundSchema), - z.lazy(() => DataGcp2$outboundSchema), - z.lazy(() => DataAzure2$outboundSchema), - z.lazy(() => DataLocal5$outboundSchema), -]); - -export function syncReconcileRequestDataUnion5ToJSON( - syncReconcileRequestDataUnion5: SyncReconcileRequestDataUnion5, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion5$outboundSchema.parse( - syncReconcileRequestDataUnion5, - ), - ); -} - -/** @internal */ -export type DataComputeCluster$Outbound = { - data: - | DataAws2$Outbound - | DataGcp2$Outbound - | DataAzure2$Outbound - | DataLocal5$Outbound; - resourceType: "compute-cluster"; -}; - -/** @internal */ -export const DataComputeCluster$outboundSchema: z.ZodType< - DataComputeCluster$Outbound, - DataComputeCluster -> = z.object({ - data: z.union([ - z.lazy(() => DataAws2$outboundSchema), - z.lazy(() => DataGcp2$outboundSchema), - z.lazy(() => DataAzure2$outboundSchema), - z.lazy(() => DataLocal5$outboundSchema), - ]), - resourceType: z.literal("compute-cluster"), -}); - -export function dataComputeClusterToJSON( - dataComputeCluster: DataComputeCluster, -): string { - return JSON.stringify( - DataComputeCluster$outboundSchema.parse(dataComputeCluster), - ); -} - -/** @internal */ -export const DaemonInstanceCpuUnit$outboundSchema: z.ZodEnum< - typeof DaemonInstanceCpuUnit -> = z.enum(DaemonInstanceCpuUnit); - -/** @internal */ -export type DaemonInstanceCpu$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const DaemonInstanceCpu$outboundSchema: z.ZodType< - DaemonInstanceCpu$Outbound, - DaemonInstanceCpu -> = z.object({ - unit: DaemonInstanceCpuUnit$outboundSchema, - value: z.number(), -}); - -export function daemonInstanceCpuToJSON( - daemonInstanceCpu: DaemonInstanceCpu, -): string { - return JSON.stringify( - DaemonInstanceCpu$outboundSchema.parse(daemonInstanceCpu), - ); -} - -/** @internal */ -export type DaemonInstanceCpuUnion4$Outbound = DaemonInstanceCpu$Outbound | any; - -/** @internal */ -export const DaemonInstanceCpuUnion4$outboundSchema: z.ZodType< - DaemonInstanceCpuUnion4$Outbound, - DaemonInstanceCpuUnion4 -> = z.union([z.lazy(() => DaemonInstanceCpu$outboundSchema), z.any()]); - -export function daemonInstanceCpuUnion4ToJSON( - daemonInstanceCpuUnion4: DaemonInstanceCpuUnion4, -): string { - return JSON.stringify( - DaemonInstanceCpuUnion4$outboundSchema.parse(daemonInstanceCpuUnion4), - ); -} - -/** @internal */ -export const DaemonInstanceKind$outboundSchema: z.ZodEnum< - typeof DaemonInstanceKind -> = z.enum(DaemonInstanceKind); - -/** @internal */ -export const DaemonInstanceMemoryUnit$outboundSchema: z.ZodEnum< - typeof DaemonInstanceMemoryUnit -> = z.enum(DaemonInstanceMemoryUnit); - -/** @internal */ -export type DaemonInstanceMemory$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const DaemonInstanceMemory$outboundSchema: z.ZodType< - DaemonInstanceMemory$Outbound, - DaemonInstanceMemory -> = z.object({ - unit: DaemonInstanceMemoryUnit$outboundSchema, - value: z.number(), -}); - -export function daemonInstanceMemoryToJSON( - daemonInstanceMemory: DaemonInstanceMemory, -): string { - return JSON.stringify( - DaemonInstanceMemory$outboundSchema.parse(daemonInstanceMemory), - ); -} - -/** @internal */ -export type DaemonInstanceMemoryUnion4$Outbound = - | DaemonInstanceMemory$Outbound - | any; - -/** @internal */ -export const DaemonInstanceMemoryUnion4$outboundSchema: z.ZodType< - DaemonInstanceMemoryUnion4$Outbound, - DaemonInstanceMemoryUnion4 -> = z.union([z.lazy(() => DaemonInstanceMemory$outboundSchema), z.any()]); - -export function daemonInstanceMemoryUnion4ToJSON( - daemonInstanceMemoryUnion4: DaemonInstanceMemoryUnion4, -): string { - return JSON.stringify( - DaemonInstanceMemoryUnion4$outboundSchema.parse(daemonInstanceMemoryUnion4), - ); -} - -/** @internal */ -export type DaemonInstance4$Outbound = { - cpu?: DaemonInstanceCpu$Outbound | any | null | undefined; - kind: string; - memory?: DaemonInstanceMemory$Outbound | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; -}; - -/** @internal */ -export const DaemonInstance4$outboundSchema: z.ZodType< - DaemonInstance4$Outbound, - DaemonInstance4 -> = z.object({ - cpu: z.nullable( - z.union([z.lazy(() => DaemonInstanceCpu$outboundSchema), z.any()]), - ).optional(), - kind: DaemonInstanceKind$outboundSchema, - memory: z.nullable( - z.union([z.lazy(() => DaemonInstanceMemory$outboundSchema), z.any()]), - ).optional(), - name: z.string(), - phase: z.nullable(z.string()).optional(), - pid: z.nullable(z.int()).optional(), - ready: z.boolean(), - restartCount: z.nullable(z.int()).optional(), - unitId: z.string(), -}); - -export function daemonInstance4ToJSON( - daemonInstance4: DaemonInstance4, -): string { - return JSON.stringify(DaemonInstance4$outboundSchema.parse(daemonInstance4)); -} - -/** @internal */ -export type DaemonInstanceUnion$Outbound = DaemonInstance4$Outbound | any; - -/** @internal */ -export const DaemonInstanceUnion$outboundSchema: z.ZodType< - DaemonInstanceUnion$Outbound, - DaemonInstanceUnion -> = z.union([z.lazy(() => DaemonInstance4$outboundSchema), z.any()]); - -export function daemonInstanceUnionToJSON( - daemonInstanceUnion: DaemonInstanceUnion, -): string { - return JSON.stringify( - DaemonInstanceUnion$outboundSchema.parse(daemonInstanceUnion), - ); -} - -/** @internal */ -export const EventSeverity3$outboundSchema: z.ZodEnum = z - .enum(EventSeverity3); - -/** @internal */ -export type SyncReconcileRequestSubject3$Outbound = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSubject3$outboundSchema: z.ZodType< - SyncReconcileRequestSubject3$Outbound, - SyncReconcileRequestSubject3 -> = z.object({ - id: z.nullable(z.string()).optional(), - kind: z.string(), - name: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSubject3ToJSON( - syncReconcileRequestSubject3: SyncReconcileRequestSubject3, -): string { - return JSON.stringify( - SyncReconcileRequestSubject3$outboundSchema.parse( - syncReconcileRequestSubject3, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestSubjectUnion3$Outbound = - | SyncReconcileRequestSubject3$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestSubjectUnion3$outboundSchema: z.ZodType< - SyncReconcileRequestSubjectUnion3$Outbound, - SyncReconcileRequestSubjectUnion3 -> = z.union([ - z.lazy(() => SyncReconcileRequestSubject3$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestSubjectUnion3ToJSON( - syncReconcileRequestSubjectUnion3: SyncReconcileRequestSubjectUnion3, -): string { - return JSON.stringify( - SyncReconcileRequestSubjectUnion3$outboundSchema.parse( - syncReconcileRequestSubjectUnion3, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestEvent10$Outbound = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: string; - subject?: SyncReconcileRequestSubject3$Outbound | any | null | undefined; - timestamp: string; -}; - -/** @internal */ -export const SyncReconcileRequestEvent10$outboundSchema: z.ZodType< - SyncReconcileRequestEvent10$Outbound, - SyncReconcileRequestEvent10 -> = z.object({ - kind: z.string(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - severity: EventSeverity3$outboundSchema, - subject: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSubject3$outboundSchema), - z.any(), - ]), - ).optional(), - timestamp: z.date().transform(v => v.toISOString()), -}); - -export function syncReconcileRequestEvent10ToJSON( - syncReconcileRequestEvent10: SyncReconcileRequestEvent10, -): string { - return JSON.stringify( - SyncReconcileRequestEvent10$outboundSchema.parse( - syncReconcileRequestEvent10, - ), - ); -} - -/** @internal */ -export const Reason17$outboundSchema: z.ZodEnum = z.enum( - Reason17, -); - -/** @internal */ -export const CollectionIssueSeverity17$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity17 -> = z.enum(CollectionIssueSeverity17); - -/** @internal */ -export type CollectionIssue17$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue17$outboundSchema: z.ZodType< - CollectionIssue17$Outbound, - CollectionIssue17 -> = z.object({ - message: z.string(), - reason: Reason17$outboundSchema, - severity: CollectionIssueSeverity17$outboundSchema, - source: z.string(), -}); - -export function collectionIssue17ToJSON( - collectionIssue17: CollectionIssue17, -): string { - return JSON.stringify( - CollectionIssue17$outboundSchema.parse(collectionIssue17), - ); -} - -/** @internal */ -export const Health17$outboundSchema: z.ZodEnum = z.enum( - Health17, -); - -/** @internal */ -export const StatusLifecycle17$outboundSchema: z.ZodEnum< - typeof StatusLifecycle17 -> = z.enum(StatusLifecycle17); - -/** @internal */ -export type HeartbeatStatus17$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus17$outboundSchema: z.ZodType< - HeartbeatStatus17$Outbound, - HeartbeatStatus17 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue17$outboundSchema)), - health: Health17$outboundSchema, - lifecycle: StatusLifecycle17$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus17ToJSON( - heartbeatStatus17: HeartbeatStatus17, -): string { - return JSON.stringify( - HeartbeatStatus17$outboundSchema.parse(heartbeatStatus17), - ); -} - -/** @internal */ -export type DataLocal4$Outbound = { - commandSupported: boolean; - daemonInstance?: DaemonInstance4$Outbound | any | null | undefined; - daemonName: string; - events: Array; - exitReason?: string | null | undefined; - imagePathPresent: boolean; - pid?: number | null | undefined; - restartCount?: number | null | undefined; - runtimeId: string; - status: HeartbeatStatus17$Outbound; - backend: "local"; -}; - -/** @internal */ -export const DataLocal4$outboundSchema: z.ZodType< - DataLocal4$Outbound, - DataLocal4 -> = z.object({ - commandSupported: z.boolean(), - daemonInstance: z.nullable( - z.union([z.lazy(() => DaemonInstance4$outboundSchema), z.any()]), - ).optional(), - daemonName: z.string(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent10$outboundSchema)), - exitReason: z.nullable(z.string()).optional(), - imagePathPresent: z.boolean(), - pid: z.nullable(z.int()).optional(), - restartCount: z.nullable(z.int()).optional(), - runtimeId: z.string(), - status: z.lazy(() => HeartbeatStatus17$outboundSchema), - backend: z.literal("local"), -}); - -export function dataLocal4ToJSON(dataLocal4: DataLocal4): string { - return JSON.stringify(DataLocal4$outboundSchema.parse(dataLocal4)); -} - -/** @internal */ -export const CpuUnit6$outboundSchema: z.ZodEnum = z.enum( - CpuUnit6, -); - -/** @internal */ -export type Cpu6$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Cpu6$outboundSchema: z.ZodType = z.object({ - unit: CpuUnit6$outboundSchema, - value: z.number(), -}); - -export function cpu6ToJSON(cpu6: Cpu6): string { - return JSON.stringify(Cpu6$outboundSchema.parse(cpu6)); -} - -/** @internal */ -export type CpuUnion6$Outbound = Cpu6$Outbound | any; - -/** @internal */ -export const CpuUnion6$outboundSchema: z.ZodType< - CpuUnion6$Outbound, - CpuUnion6 -> = z.union([z.lazy(() => Cpu6$outboundSchema), z.any()]); - -export function cpuUnion6ToJSON(cpuUnion6: CpuUnion6): string { - return JSON.stringify(CpuUnion6$outboundSchema.parse(cpuUnion6)); -} - -/** @internal */ -export type InvolvedObject7$Outbound = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -/** @internal */ -export const InvolvedObject7$outboundSchema: z.ZodType< - InvolvedObject7$Outbound, - InvolvedObject7 -> = z.object({ - apiVersion: z.nullable(z.string()).optional(), - fieldPath: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - namespace: z.nullable(z.string()).optional(), - resourceVersion: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), -}); - -export function involvedObject7ToJSON( - involvedObject7: InvolvedObject7, -): string { - return JSON.stringify(InvolvedObject7$outboundSchema.parse(involvedObject7)); -} - -/** @internal */ -export type InvolvedObjectUnion7$Outbound = InvolvedObject7$Outbound | any; - -/** @internal */ -export const InvolvedObjectUnion7$outboundSchema: z.ZodType< - InvolvedObjectUnion7$Outbound, - InvolvedObjectUnion7 -> = z.union([z.lazy(() => InvolvedObject7$outboundSchema), z.any()]); - -export function involvedObjectUnion7ToJSON( - involvedObjectUnion7: InvolvedObjectUnion7, -): string { - return JSON.stringify( - InvolvedObjectUnion7$outboundSchema.parse(involvedObjectUnion7), - ); -} - -/** @internal */ -export type SyncReconcileRequestSource7$Outbound = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSource7$outboundSchema: z.ZodType< - SyncReconcileRequestSource7$Outbound, - SyncReconcileRequestSource7 -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSource7ToJSON( - syncReconcileRequestSource7: SyncReconcileRequestSource7, -): string { - return JSON.stringify( - SyncReconcileRequestSource7$outboundSchema.parse( - syncReconcileRequestSource7, - ), - ); -} - -/** @internal */ -export type SourceUnion7$Outbound = SyncReconcileRequestSource7$Outbound | any; - -/** @internal */ -export const SourceUnion7$outboundSchema: z.ZodType< - SourceUnion7$Outbound, - SourceUnion7 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource7$outboundSchema), - z.any(), -]); - -export function sourceUnion7ToJSON(sourceUnion7: SourceUnion7): string { - return JSON.stringify(SourceUnion7$outboundSchema.parse(sourceUnion7)); -} - -/** @internal */ -export type SyncReconcileRequestEvent9$Outbound = { - count?: number | null | undefined; - eventTime?: string | null | undefined; - firstTimestamp?: string | null | undefined; - involvedObject?: InvolvedObject7$Outbound | any | null | undefined; - lastTimestamp?: string | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource7$Outbound | any | null | undefined; - type?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestEvent9$outboundSchema: z.ZodType< - SyncReconcileRequestEvent9$Outbound, - SyncReconcileRequestEvent9 -> = z.object({ - count: z.nullable(z.int()).optional(), - eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), - firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject7$outboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource7$outboundSchema), - z.any(), - ]), - ).optional(), - type: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestEvent9ToJSON( - syncReconcileRequestEvent9: SyncReconcileRequestEvent9, -): string { - return JSON.stringify( - SyncReconcileRequestEvent9$outboundSchema.parse(syncReconcileRequestEvent9), - ); -} - -/** @internal */ -export const MemoryUnit6$outboundSchema: z.ZodEnum = z.enum( - MemoryUnit6, -); - -/** @internal */ -export type Memory6$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Memory6$outboundSchema: z.ZodType = z - .object({ - unit: MemoryUnit6$outboundSchema, - value: z.number(), - }); - -export function memory6ToJSON(memory6: Memory6): string { - return JSON.stringify(Memory6$outboundSchema.parse(memory6)); -} - -/** @internal */ -export type MemoryUnion6$Outbound = Memory6$Outbound | any; - -/** @internal */ -export const MemoryUnion6$outboundSchema: z.ZodType< - MemoryUnion6$Outbound, - MemoryUnion6 -> = z.union([z.lazy(() => Memory6$outboundSchema), z.any()]); - -export function memoryUnion6ToJSON(memoryUnion6: MemoryUnion6): string { - return JSON.stringify(MemoryUnion6$outboundSchema.parse(memoryUnion6)); -} - -/** @internal */ -export const CpuPodUnit3$outboundSchema: z.ZodEnum = z.enum( - CpuPodUnit3, -); - -/** @internal */ -export type CpuPod3$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const CpuPod3$outboundSchema: z.ZodType = z - .object({ - unit: CpuPodUnit3$outboundSchema, - value: z.number(), - }); - -export function cpuPod3ToJSON(cpuPod3: CpuPod3): string { - return JSON.stringify(CpuPod3$outboundSchema.parse(cpuPod3)); -} - -/** @internal */ -export type PodCpuUnion3$Outbound = CpuPod3$Outbound | any; - -/** @internal */ -export const PodCpuUnion3$outboundSchema: z.ZodType< - PodCpuUnion3$Outbound, - PodCpuUnion3 -> = z.union([z.lazy(() => CpuPod3$outboundSchema), z.any()]); - -export function podCpuUnion3ToJSON(podCpuUnion3: PodCpuUnion3): string { - return JSON.stringify(PodCpuUnion3$outboundSchema.parse(podCpuUnion3)); -} - -/** @internal */ -export const MemoryPodUnit3$outboundSchema: z.ZodEnum = z - .enum(MemoryPodUnit3); - -/** @internal */ -export type MemoryPod3$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const MemoryPod3$outboundSchema: z.ZodType< - MemoryPod3$Outbound, - MemoryPod3 -> = z.object({ - unit: MemoryPodUnit3$outboundSchema, - value: z.number(), -}); - -export function memoryPod3ToJSON(memoryPod3: MemoryPod3): string { - return JSON.stringify(MemoryPod3$outboundSchema.parse(memoryPod3)); -} - -/** @internal */ -export type PodMemoryUnion3$Outbound = MemoryPod3$Outbound | any; - -/** @internal */ -export const PodMemoryUnion3$outboundSchema: z.ZodType< - PodMemoryUnion3$Outbound, - PodMemoryUnion3 -> = z.union([z.lazy(() => MemoryPod3$outboundSchema), z.any()]); - -export function podMemoryUnion3ToJSON( - podMemoryUnion3: PodMemoryUnion3, -): string { - return JSON.stringify(PodMemoryUnion3$outboundSchema.parse(podMemoryUnion3)); -} - -/** @internal */ -export type OwnerReference3$Outbound = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; - -/** @internal */ -export const OwnerReference3$outboundSchema: z.ZodType< - OwnerReference3$Outbound, - OwnerReference3 -> = z.object({ - controller: z.boolean(), - kind: z.string(), - name: z.string(), - uid: z.string(), -}); - -export function ownerReference3ToJSON( - ownerReference3: OwnerReference3, -): string { - return JSON.stringify(OwnerReference3$outboundSchema.parse(ownerReference3)); -} - -/** @internal */ -export type Pod3$Outbound = { - cpu?: CpuPod3$Outbound | any | null | undefined; - memory?: MemoryPod3$Outbound | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -/** @internal */ -export const Pod3$outboundSchema: z.ZodType = z.object({ - cpu: z.nullable(z.union([z.lazy(() => CpuPod3$outboundSchema), z.any()])) - .optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryPod3$outboundSchema), z.any()]), - ).optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - ownerReferences: z.array(z.lazy(() => OwnerReference3$outboundSchema)), - phase: z.nullable(z.string()).optional(), - podIp: z.nullable(z.string()).optional(), - ready: z.boolean(), - restartCount: z.int(), - terminatedReason: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function pod3ToJSON(pod3: Pod3): string { - return JSON.stringify(Pod3$outboundSchema.parse(pod3)); -} - -/** @internal */ -export type Replicas4$Outbound = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -/** @internal */ -export const Replicas4$outboundSchema: z.ZodType< - Replicas4$Outbound, - Replicas4 -> = z.object({ - available: z.nullable(z.int()).optional(), - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - misscheduled: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - updated: z.nullable(z.int()).optional(), -}); - -export function replicas4ToJSON(replicas4: Replicas4): string { - return JSON.stringify(Replicas4$outboundSchema.parse(replicas4)); -} - -/** @internal */ -export const Reason16$outboundSchema: z.ZodEnum = z.enum( - Reason16, -); - -/** @internal */ -export const CollectionIssueSeverity16$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity16 -> = z.enum(CollectionIssueSeverity16); - -/** @internal */ -export type CollectionIssue16$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue16$outboundSchema: z.ZodType< - CollectionIssue16$Outbound, - CollectionIssue16 -> = z.object({ - message: z.string(), - reason: Reason16$outboundSchema, - severity: CollectionIssueSeverity16$outboundSchema, - source: z.string(), -}); - -export function collectionIssue16ToJSON( - collectionIssue16: CollectionIssue16, -): string { - return JSON.stringify( - CollectionIssue16$outboundSchema.parse(collectionIssue16), - ); -} - -/** @internal */ -export const Health16$outboundSchema: z.ZodEnum = z.enum( - Health16, -); - -/** @internal */ -export const StatusLifecycle16$outboundSchema: z.ZodEnum< - typeof StatusLifecycle16 -> = z.enum(StatusLifecycle16); - -/** @internal */ -export type HeartbeatStatus16$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus16$outboundSchema: z.ZodType< - HeartbeatStatus16$Outbound, - HeartbeatStatus16 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue16$outboundSchema)), - health: Health16$outboundSchema, - lifecycle: StatusLifecycle16$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus16ToJSON( - heartbeatStatus16: HeartbeatStatus16, -): string { - return JSON.stringify( - HeartbeatStatus16$outboundSchema.parse(heartbeatStatus16), - ); -} - -/** @internal */ -export type WorkloadCondition3$Outbound = { - lastTransitionTime?: string | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -/** @internal */ -export const WorkloadCondition3$outboundSchema: z.ZodType< - WorkloadCondition3$Outbound, - WorkloadCondition3 -> = z.object({ - lastTransitionTime: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.nullable(z.string()).optional(), - reason: z.nullable(z.string()).optional(), - status: z.string(), - type: z.string(), -}); - -export function workloadCondition3ToJSON( - workloadCondition3: WorkloadCondition3, -): string { - return JSON.stringify( - WorkloadCondition3$outboundSchema.parse(workloadCondition3), - ); -} - -/** @internal */ -export type Workload3$Outbound = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; -}; - -/** @internal */ -export const Workload3$outboundSchema: z.ZodType< - Workload3$Outbound, - Workload3 -> = z.object({ - availableReplicas: z.nullable(z.int()).optional(), - conditions: z.array(z.lazy(() => WorkloadCondition3$outboundSchema)), - desiredGeneration: z.nullable(z.int()).optional(), - desiredReplicas: z.nullable(z.int()).optional(), - observedGeneration: z.nullable(z.int()).optional(), - readyReplicas: z.nullable(z.int()).optional(), - rolloutReason: z.nullable(z.string()).optional(), - updatedReplicas: z.nullable(z.int()).optional(), -}); - -export function workload3ToJSON(workload3: Workload3): string { - return JSON.stringify(Workload3$outboundSchema.parse(workload3)); -} - -/** @internal */ -export type WorkloadUnion3$Outbound = Workload3$Outbound | any; - -/** @internal */ -export const WorkloadUnion3$outboundSchema: z.ZodType< - WorkloadUnion3$Outbound, - WorkloadUnion3 -> = z.union([z.lazy(() => Workload3$outboundSchema), z.any()]); - -export function workloadUnion3ToJSON(workloadUnion3: WorkloadUnion3): string { - return JSON.stringify(WorkloadUnion3$outboundSchema.parse(workloadUnion3)); -} - -/** @internal */ -export type DataKubernetes3$Outbound = { - commandSupported: boolean; - cpu?: Cpu6$Outbound | any | null | undefined; - events: Array; - memory?: Memory6$Outbound | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas4$Outbound; - restarts?: number | null | undefined; - status: HeartbeatStatus16$Outbound; - workload?: Workload3$Outbound | any | null | undefined; - backend: "kubernetes"; -}; - -/** @internal */ -export const DataKubernetes3$outboundSchema: z.ZodType< - DataKubernetes3$Outbound, - DataKubernetes3 -> = z.object({ - commandSupported: z.boolean(), - cpu: z.nullable(z.union([z.lazy(() => Cpu6$outboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent9$outboundSchema)), - memory: z.nullable(z.union([z.lazy(() => Memory6$outboundSchema), z.any()])) - .optional(), - name: z.string(), - namespace: z.string(), - pods: z.array(z.lazy(() => Pod3$outboundSchema)), - replicas: z.lazy(() => Replicas4$outboundSchema), - restarts: z.nullable(z.int()).optional(), - status: z.lazy(() => HeartbeatStatus16$outboundSchema), - workload: z.nullable( - z.union([z.lazy(() => Workload3$outboundSchema), z.any()]), - ).optional(), - backend: z.literal("kubernetes"), -}); - -export function dataKubernetes3ToJSON( - dataKubernetes3: DataKubernetes3, -): string { - return JSON.stringify(DataKubernetes3$outboundSchema.parse(dataKubernetes3)); -} - -/** @internal */ -export const CpuDaemonInstanceUnit3$outboundSchema: z.ZodEnum< - typeof CpuDaemonInstanceUnit3 -> = z.enum(CpuDaemonInstanceUnit3); - -/** @internal */ -export type CpuDaemonInstance3$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const CpuDaemonInstance3$outboundSchema: z.ZodType< - CpuDaemonInstance3$Outbound, - CpuDaemonInstance3 -> = z.object({ - unit: CpuDaemonInstanceUnit3$outboundSchema, - value: z.number(), -}); - -export function cpuDaemonInstance3ToJSON( - cpuDaemonInstance3: CpuDaemonInstance3, -): string { - return JSON.stringify( - CpuDaemonInstance3$outboundSchema.parse(cpuDaemonInstance3), - ); -} - -/** @internal */ -export type DaemonInstanceCpuUnion3$Outbound = - | CpuDaemonInstance3$Outbound - | any; - -/** @internal */ -export const DaemonInstanceCpuUnion3$outboundSchema: z.ZodType< - DaemonInstanceCpuUnion3$Outbound, - DaemonInstanceCpuUnion3 -> = z.union([z.lazy(() => CpuDaemonInstance3$outboundSchema), z.any()]); - -export function daemonInstanceCpuUnion3ToJSON( - daemonInstanceCpuUnion3: DaemonInstanceCpuUnion3, -): string { - return JSON.stringify( - DaemonInstanceCpuUnion3$outboundSchema.parse(daemonInstanceCpuUnion3), - ); -} - -/** @internal */ -export const MemoryDaemonInstanceUnit3$outboundSchema: z.ZodEnum< - typeof MemoryDaemonInstanceUnit3 -> = z.enum(MemoryDaemonInstanceUnit3); - -/** @internal */ -export type MemoryDaemonInstance3$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const MemoryDaemonInstance3$outboundSchema: z.ZodType< - MemoryDaemonInstance3$Outbound, - MemoryDaemonInstance3 -> = z.object({ - unit: MemoryDaemonInstanceUnit3$outboundSchema, - value: z.number(), -}); - -export function memoryDaemonInstance3ToJSON( - memoryDaemonInstance3: MemoryDaemonInstance3, -): string { - return JSON.stringify( - MemoryDaemonInstance3$outboundSchema.parse(memoryDaemonInstance3), - ); -} - -/** @internal */ -export type DaemonInstanceMemoryUnion3$Outbound = - | MemoryDaemonInstance3$Outbound - | any; - -/** @internal */ -export const DaemonInstanceMemoryUnion3$outboundSchema: z.ZodType< - DaemonInstanceMemoryUnion3$Outbound, - DaemonInstanceMemoryUnion3 -> = z.union([z.lazy(() => MemoryDaemonInstance3$outboundSchema), z.any()]); - -export function daemonInstanceMemoryUnion3ToJSON( - daemonInstanceMemoryUnion3: DaemonInstanceMemoryUnion3, -): string { - return JSON.stringify( - DaemonInstanceMemoryUnion3$outboundSchema.parse(daemonInstanceMemoryUnion3), - ); -} - -/** @internal */ -export type DaemonInstance3$Outbound = { - cpu?: CpuDaemonInstance3$Outbound | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance3$Outbound | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -/** @internal */ -export const DaemonInstance3$outboundSchema: z.ZodType< - DaemonInstance3$Outbound, - DaemonInstance3 -> = z.object({ - cpu: z.nullable( - z.union([z.lazy(() => CpuDaemonInstance3$outboundSchema), z.any()]), - ).optional(), - ip: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryDaemonInstance3$outboundSchema), z.any()]), - ).optional(), - message: z.nullable(z.string()).optional(), - metricsHealthy: z.nullable(z.boolean()).optional(), - metricsLastUpdated: z.nullable(z.string()).optional(), - metricsStatus: z.nullable(z.string()).optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - phase: z.nullable(z.string()).optional(), - ready: z.boolean(), - reason: z.nullable(z.string()).optional(), - replicaId: z.string(), - restartCount: z.nullable(z.int()).optional(), - status: z.nullable(z.string()).optional(), - terminatedReason: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function daemonInstance3ToJSON( - daemonInstance3: DaemonInstance3, -): string { - return JSON.stringify(DaemonInstance3$outboundSchema.parse(daemonInstance3)); -} - -/** @internal */ -export type InvolvedObject6$Outbound = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -/** @internal */ -export const InvolvedObject6$outboundSchema: z.ZodType< - InvolvedObject6$Outbound, - InvolvedObject6 -> = z.object({ - details: z.nullable(z.any()).optional(), - id: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - replicaId: z.nullable(z.string()).optional(), -}); - -export function involvedObject6ToJSON( - involvedObject6: InvolvedObject6, -): string { - return JSON.stringify(InvolvedObject6$outboundSchema.parse(involvedObject6)); -} - -/** @internal */ -export type InvolvedObjectUnion6$Outbound = InvolvedObject6$Outbound | any; - -/** @internal */ -export const InvolvedObjectUnion6$outboundSchema: z.ZodType< - InvolvedObjectUnion6$Outbound, - InvolvedObjectUnion6 -> = z.union([z.lazy(() => InvolvedObject6$outboundSchema), z.any()]); - -export function involvedObjectUnion6ToJSON( - involvedObjectUnion6: InvolvedObjectUnion6, -): string { - return JSON.stringify( - InvolvedObjectUnion6$outboundSchema.parse(involvedObjectUnion6), - ); -} - -/** @internal */ -export type SyncReconcileRequestSource6$Outbound = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSource6$outboundSchema: z.ZodType< - SyncReconcileRequestSource6$Outbound, - SyncReconcileRequestSource6 -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSource6ToJSON( - syncReconcileRequestSource6: SyncReconcileRequestSource6, -): string { - return JSON.stringify( - SyncReconcileRequestSource6$outboundSchema.parse( - syncReconcileRequestSource6, - ), - ); -} - -/** @internal */ -export type SourceUnion6$Outbound = SyncReconcileRequestSource6$Outbound | any; - -/** @internal */ -export const SourceUnion6$outboundSchema: z.ZodType< - SourceUnion6$Outbound, - SourceUnion6 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource6$outboundSchema), - z.any(), -]); - -export function sourceUnion6ToJSON(sourceUnion6: SourceUnion6): string { - return JSON.stringify(SourceUnion6$outboundSchema.parse(sourceUnion6)); -} - -/** @internal */ -export type SyncReconcileRequestEvent8$Outbound = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: string | null | undefined; - firstTimestamp?: string | null | undefined; - involvedObject?: InvolvedObject6$Outbound | any | null | undefined; - lastTimestamp?: string | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource6$Outbound | any | null | undefined; - type?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestEvent8$outboundSchema: z.ZodType< - SyncReconcileRequestEvent8$Outbound, - SyncReconcileRequestEvent8 -> = z.object({ - count: z.nullable(z.int()).optional(), - details: z.nullable(z.any()).optional(), - eventId: z.nullable(z.string()).optional(), - eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), - firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject6$outboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource6$outboundSchema), - z.any(), - ]), - ).optional(), - type: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestEvent8ToJSON( - syncReconcileRequestEvent8: SyncReconcileRequestEvent8, -): string { - return JSON.stringify( - SyncReconcileRequestEvent8$outboundSchema.parse(syncReconcileRequestEvent8), - ); -} - -/** @internal */ -export const Reason15$outboundSchema: z.ZodEnum = z.enum( - Reason15, -); - -/** @internal */ -export const CollectionIssueSeverity15$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity15 -> = z.enum(CollectionIssueSeverity15); - -/** @internal */ -export type CollectionIssue15$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue15$outboundSchema: z.ZodType< - CollectionIssue15$Outbound, - CollectionIssue15 -> = z.object({ - message: z.string(), - reason: Reason15$outboundSchema, - severity: CollectionIssueSeverity15$outboundSchema, - source: z.string(), -}); - -export function collectionIssue15ToJSON( - collectionIssue15: CollectionIssue15, -): string { - return JSON.stringify( - CollectionIssue15$outboundSchema.parse(collectionIssue15), - ); -} - -/** @internal */ -export const Health15$outboundSchema: z.ZodEnum = z.enum( - Health15, -); - -/** @internal */ -export const StatusLifecycle15$outboundSchema: z.ZodEnum< - typeof StatusLifecycle15 -> = z.enum(StatusLifecycle15); - -/** @internal */ -export type HeartbeatStatus15$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus15$outboundSchema: z.ZodType< - HeartbeatStatus15$Outbound, - HeartbeatStatus15 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue15$outboundSchema)), - health: Health15$outboundSchema, - lifecycle: StatusLifecycle15$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus15ToJSON( - heartbeatStatus15: HeartbeatStatus15, -): string { - return JSON.stringify( - HeartbeatStatus15$outboundSchema.parse(heartbeatStatus15), - ); -} - -/** @internal */ -export type DataAzure1$Outbound = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName: string; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: HeartbeatStatus15$Outbound; - unavailableInstances: number; - backend: "azure"; -}; - -/** @internal */ -export const DataAzure1$outboundSchema: z.ZodType< - DataAzure1$Outbound, - DataAzure1 -> = z.object({ - assignedMachines: z.int(), - capacityGroup: z.string(), - commandSupported: z.boolean(), - daemonInstances: z.array(z.lazy(() => DaemonInstance3$outboundSchema)), - daemonName: z.string(), - desiredMachines: z.int(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent8$outboundSchema)), - healthyInstances: z.int(), - horizonClusterId: z.string(), - horizonStatus: z.string(), - horizonStatusMessage: z.nullable(z.string()).optional(), - horizonStatusReason: z.nullable(z.string()).optional(), - latestUpdateTimestamp: z.string(), - status: z.lazy(() => HeartbeatStatus15$outboundSchema), - unavailableInstances: z.int(), - backend: z.literal("azure"), -}); - -export function dataAzure1ToJSON(dataAzure1: DataAzure1): string { - return JSON.stringify(DataAzure1$outboundSchema.parse(dataAzure1)); -} - -/** @internal */ -export const CpuDaemonInstanceUnit2$outboundSchema: z.ZodEnum< - typeof CpuDaemonInstanceUnit2 -> = z.enum(CpuDaemonInstanceUnit2); - -/** @internal */ -export type CpuDaemonInstance2$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const CpuDaemonInstance2$outboundSchema: z.ZodType< - CpuDaemonInstance2$Outbound, - CpuDaemonInstance2 -> = z.object({ - unit: CpuDaemonInstanceUnit2$outboundSchema, - value: z.number(), -}); - -export function cpuDaemonInstance2ToJSON( - cpuDaemonInstance2: CpuDaemonInstance2, -): string { - return JSON.stringify( - CpuDaemonInstance2$outboundSchema.parse(cpuDaemonInstance2), - ); -} - -/** @internal */ -export type DaemonInstanceCpuUnion2$Outbound = - | CpuDaemonInstance2$Outbound - | any; - -/** @internal */ -export const DaemonInstanceCpuUnion2$outboundSchema: z.ZodType< - DaemonInstanceCpuUnion2$Outbound, - DaemonInstanceCpuUnion2 -> = z.union([z.lazy(() => CpuDaemonInstance2$outboundSchema), z.any()]); - -export function daemonInstanceCpuUnion2ToJSON( - daemonInstanceCpuUnion2: DaemonInstanceCpuUnion2, -): string { - return JSON.stringify( - DaemonInstanceCpuUnion2$outboundSchema.parse(daemonInstanceCpuUnion2), - ); -} - -/** @internal */ -export const MemoryDaemonInstanceUnit2$outboundSchema: z.ZodEnum< - typeof MemoryDaemonInstanceUnit2 -> = z.enum(MemoryDaemonInstanceUnit2); - -/** @internal */ -export type MemoryDaemonInstance2$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const MemoryDaemonInstance2$outboundSchema: z.ZodType< - MemoryDaemonInstance2$Outbound, - MemoryDaemonInstance2 -> = z.object({ - unit: MemoryDaemonInstanceUnit2$outboundSchema, - value: z.number(), -}); - -export function memoryDaemonInstance2ToJSON( - memoryDaemonInstance2: MemoryDaemonInstance2, -): string { - return JSON.stringify( - MemoryDaemonInstance2$outboundSchema.parse(memoryDaemonInstance2), - ); -} - -/** @internal */ -export type DaemonInstanceMemoryUnion2$Outbound = - | MemoryDaemonInstance2$Outbound - | any; - -/** @internal */ -export const DaemonInstanceMemoryUnion2$outboundSchema: z.ZodType< - DaemonInstanceMemoryUnion2$Outbound, - DaemonInstanceMemoryUnion2 -> = z.union([z.lazy(() => MemoryDaemonInstance2$outboundSchema), z.any()]); - -export function daemonInstanceMemoryUnion2ToJSON( - daemonInstanceMemoryUnion2: DaemonInstanceMemoryUnion2, -): string { - return JSON.stringify( - DaemonInstanceMemoryUnion2$outboundSchema.parse(daemonInstanceMemoryUnion2), - ); -} - -/** @internal */ -export type DaemonInstance2$Outbound = { - cpu?: CpuDaemonInstance2$Outbound | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance2$Outbound | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -/** @internal */ -export const DaemonInstance2$outboundSchema: z.ZodType< - DaemonInstance2$Outbound, - DaemonInstance2 -> = z.object({ - cpu: z.nullable( - z.union([z.lazy(() => CpuDaemonInstance2$outboundSchema), z.any()]), - ).optional(), - ip: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryDaemonInstance2$outboundSchema), z.any()]), - ).optional(), - message: z.nullable(z.string()).optional(), - metricsHealthy: z.nullable(z.boolean()).optional(), - metricsLastUpdated: z.nullable(z.string()).optional(), - metricsStatus: z.nullable(z.string()).optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - phase: z.nullable(z.string()).optional(), - ready: z.boolean(), - reason: z.nullable(z.string()).optional(), - replicaId: z.string(), - restartCount: z.nullable(z.int()).optional(), - status: z.nullable(z.string()).optional(), - terminatedReason: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function daemonInstance2ToJSON( - daemonInstance2: DaemonInstance2, -): string { - return JSON.stringify(DaemonInstance2$outboundSchema.parse(daemonInstance2)); -} - -/** @internal */ -export type InvolvedObject5$Outbound = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -/** @internal */ -export const InvolvedObject5$outboundSchema: z.ZodType< - InvolvedObject5$Outbound, - InvolvedObject5 -> = z.object({ - details: z.nullable(z.any()).optional(), - id: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - replicaId: z.nullable(z.string()).optional(), -}); - -export function involvedObject5ToJSON( - involvedObject5: InvolvedObject5, -): string { - return JSON.stringify(InvolvedObject5$outboundSchema.parse(involvedObject5)); -} - -/** @internal */ -export type InvolvedObjectUnion5$Outbound = InvolvedObject5$Outbound | any; - -/** @internal */ -export const InvolvedObjectUnion5$outboundSchema: z.ZodType< - InvolvedObjectUnion5$Outbound, - InvolvedObjectUnion5 -> = z.union([z.lazy(() => InvolvedObject5$outboundSchema), z.any()]); - -export function involvedObjectUnion5ToJSON( - involvedObjectUnion5: InvolvedObjectUnion5, -): string { - return JSON.stringify( - InvolvedObjectUnion5$outboundSchema.parse(involvedObjectUnion5), - ); -} - -/** @internal */ -export type SyncReconcileRequestSource5$Outbound = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSource5$outboundSchema: z.ZodType< - SyncReconcileRequestSource5$Outbound, - SyncReconcileRequestSource5 -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSource5ToJSON( - syncReconcileRequestSource5: SyncReconcileRequestSource5, -): string { - return JSON.stringify( - SyncReconcileRequestSource5$outboundSchema.parse( - syncReconcileRequestSource5, - ), - ); -} - -/** @internal */ -export type SourceUnion5$Outbound = SyncReconcileRequestSource5$Outbound | any; - -/** @internal */ -export const SourceUnion5$outboundSchema: z.ZodType< - SourceUnion5$Outbound, - SourceUnion5 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource5$outboundSchema), - z.any(), -]); - -export function sourceUnion5ToJSON(sourceUnion5: SourceUnion5): string { - return JSON.stringify(SourceUnion5$outboundSchema.parse(sourceUnion5)); -} - -/** @internal */ -export type SyncReconcileRequestEvent7$Outbound = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: string | null | undefined; - firstTimestamp?: string | null | undefined; - involvedObject?: InvolvedObject5$Outbound | any | null | undefined; - lastTimestamp?: string | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource5$Outbound | any | null | undefined; - type?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestEvent7$outboundSchema: z.ZodType< - SyncReconcileRequestEvent7$Outbound, - SyncReconcileRequestEvent7 -> = z.object({ - count: z.nullable(z.int()).optional(), - details: z.nullable(z.any()).optional(), - eventId: z.nullable(z.string()).optional(), - eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), - firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject5$outboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource5$outboundSchema), - z.any(), - ]), - ).optional(), - type: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestEvent7ToJSON( - syncReconcileRequestEvent7: SyncReconcileRequestEvent7, -): string { - return JSON.stringify( - SyncReconcileRequestEvent7$outboundSchema.parse(syncReconcileRequestEvent7), - ); -} - -/** @internal */ -export const Reason14$outboundSchema: z.ZodEnum = z.enum( - Reason14, -); - -/** @internal */ -export const CollectionIssueSeverity14$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity14 -> = z.enum(CollectionIssueSeverity14); - -/** @internal */ -export type CollectionIssue14$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue14$outboundSchema: z.ZodType< - CollectionIssue14$Outbound, - CollectionIssue14 -> = z.object({ - message: z.string(), - reason: Reason14$outboundSchema, - severity: CollectionIssueSeverity14$outboundSchema, - source: z.string(), -}); - -export function collectionIssue14ToJSON( - collectionIssue14: CollectionIssue14, -): string { - return JSON.stringify( - CollectionIssue14$outboundSchema.parse(collectionIssue14), - ); -} - -/** @internal */ -export const Health14$outboundSchema: z.ZodEnum = z.enum( - Health14, -); - -/** @internal */ -export const StatusLifecycle14$outboundSchema: z.ZodEnum< - typeof StatusLifecycle14 -> = z.enum(StatusLifecycle14); - -/** @internal */ -export type HeartbeatStatus14$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus14$outboundSchema: z.ZodType< - HeartbeatStatus14$Outbound, - HeartbeatStatus14 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue14$outboundSchema)), - health: Health14$outboundSchema, - lifecycle: StatusLifecycle14$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus14ToJSON( - heartbeatStatus14: HeartbeatStatus14, -): string { - return JSON.stringify( - HeartbeatStatus14$outboundSchema.parse(heartbeatStatus14), - ); -} - -/** @internal */ -export type DataGcp1$Outbound = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName: string; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: HeartbeatStatus14$Outbound; - unavailableInstances: number; - backend: "gcp"; -}; - -/** @internal */ -export const DataGcp1$outboundSchema: z.ZodType = z - .object({ - assignedMachines: z.int(), - capacityGroup: z.string(), - commandSupported: z.boolean(), - daemonInstances: z.array(z.lazy(() => DaemonInstance2$outboundSchema)), - daemonName: z.string(), - desiredMachines: z.int(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent7$outboundSchema)), - healthyInstances: z.int(), - horizonClusterId: z.string(), - horizonStatus: z.string(), - horizonStatusMessage: z.nullable(z.string()).optional(), - horizonStatusReason: z.nullable(z.string()).optional(), - latestUpdateTimestamp: z.string(), - status: z.lazy(() => HeartbeatStatus14$outboundSchema), - unavailableInstances: z.int(), - backend: z.literal("gcp"), - }); - -export function dataGcp1ToJSON(dataGcp1: DataGcp1): string { - return JSON.stringify(DataGcp1$outboundSchema.parse(dataGcp1)); -} - -/** @internal */ -export const CpuDaemonInstanceUnit1$outboundSchema: z.ZodEnum< - typeof CpuDaemonInstanceUnit1 -> = z.enum(CpuDaemonInstanceUnit1); - -/** @internal */ -export type CpuDaemonInstance1$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const CpuDaemonInstance1$outboundSchema: z.ZodType< - CpuDaemonInstance1$Outbound, - CpuDaemonInstance1 -> = z.object({ - unit: CpuDaemonInstanceUnit1$outboundSchema, - value: z.number(), -}); - -export function cpuDaemonInstance1ToJSON( - cpuDaemonInstance1: CpuDaemonInstance1, -): string { - return JSON.stringify( - CpuDaemonInstance1$outboundSchema.parse(cpuDaemonInstance1), - ); -} - -/** @internal */ -export type DaemonInstanceCpuUnion1$Outbound = - | CpuDaemonInstance1$Outbound - | any; - -/** @internal */ -export const DaemonInstanceCpuUnion1$outboundSchema: z.ZodType< - DaemonInstanceCpuUnion1$Outbound, - DaemonInstanceCpuUnion1 -> = z.union([z.lazy(() => CpuDaemonInstance1$outboundSchema), z.any()]); - -export function daemonInstanceCpuUnion1ToJSON( - daemonInstanceCpuUnion1: DaemonInstanceCpuUnion1, -): string { - return JSON.stringify( - DaemonInstanceCpuUnion1$outboundSchema.parse(daemonInstanceCpuUnion1), - ); -} - -/** @internal */ -export const MemoryDaemonInstanceUnit1$outboundSchema: z.ZodEnum< - typeof MemoryDaemonInstanceUnit1 -> = z.enum(MemoryDaemonInstanceUnit1); - -/** @internal */ -export type MemoryDaemonInstance1$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const MemoryDaemonInstance1$outboundSchema: z.ZodType< - MemoryDaemonInstance1$Outbound, - MemoryDaemonInstance1 -> = z.object({ - unit: MemoryDaemonInstanceUnit1$outboundSchema, - value: z.number(), -}); - -export function memoryDaemonInstance1ToJSON( - memoryDaemonInstance1: MemoryDaemonInstance1, -): string { - return JSON.stringify( - MemoryDaemonInstance1$outboundSchema.parse(memoryDaemonInstance1), - ); -} - -/** @internal */ -export type DaemonInstanceMemoryUnion1$Outbound = - | MemoryDaemonInstance1$Outbound - | any; - -/** @internal */ -export const DaemonInstanceMemoryUnion1$outboundSchema: z.ZodType< - DaemonInstanceMemoryUnion1$Outbound, - DaemonInstanceMemoryUnion1 -> = z.union([z.lazy(() => MemoryDaemonInstance1$outboundSchema), z.any()]); - -export function daemonInstanceMemoryUnion1ToJSON( - daemonInstanceMemoryUnion1: DaemonInstanceMemoryUnion1, -): string { - return JSON.stringify( - DaemonInstanceMemoryUnion1$outboundSchema.parse(daemonInstanceMemoryUnion1), - ); -} - -/** @internal */ -export type DaemonInstance1$Outbound = { - cpu?: CpuDaemonInstance1$Outbound | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryDaemonInstance1$Outbound | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -/** @internal */ -export const DaemonInstance1$outboundSchema: z.ZodType< - DaemonInstance1$Outbound, - DaemonInstance1 -> = z.object({ - cpu: z.nullable( - z.union([z.lazy(() => CpuDaemonInstance1$outboundSchema), z.any()]), - ).optional(), - ip: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryDaemonInstance1$outboundSchema), z.any()]), - ).optional(), - message: z.nullable(z.string()).optional(), - metricsHealthy: z.nullable(z.boolean()).optional(), - metricsLastUpdated: z.nullable(z.string()).optional(), - metricsStatus: z.nullable(z.string()).optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - phase: z.nullable(z.string()).optional(), - ready: z.boolean(), - reason: z.nullable(z.string()).optional(), - replicaId: z.string(), - restartCount: z.nullable(z.int()).optional(), - status: z.nullable(z.string()).optional(), - terminatedReason: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function daemonInstance1ToJSON( - daemonInstance1: DaemonInstance1, -): string { - return JSON.stringify(DaemonInstance1$outboundSchema.parse(daemonInstance1)); -} - -/** @internal */ -export type InvolvedObject4$Outbound = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -/** @internal */ -export const InvolvedObject4$outboundSchema: z.ZodType< - InvolvedObject4$Outbound, - InvolvedObject4 -> = z.object({ - details: z.nullable(z.any()).optional(), - id: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - replicaId: z.nullable(z.string()).optional(), -}); - -export function involvedObject4ToJSON( - involvedObject4: InvolvedObject4, -): string { - return JSON.stringify(InvolvedObject4$outboundSchema.parse(involvedObject4)); -} - -/** @internal */ -export type InvolvedObjectUnion4$Outbound = InvolvedObject4$Outbound | any; - -/** @internal */ -export const InvolvedObjectUnion4$outboundSchema: z.ZodType< - InvolvedObjectUnion4$Outbound, - InvolvedObjectUnion4 -> = z.union([z.lazy(() => InvolvedObject4$outboundSchema), z.any()]); - -export function involvedObjectUnion4ToJSON( - involvedObjectUnion4: InvolvedObjectUnion4, -): string { - return JSON.stringify( - InvolvedObjectUnion4$outboundSchema.parse(involvedObjectUnion4), - ); -} - -/** @internal */ -export type SyncReconcileRequestSource4$Outbound = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSource4$outboundSchema: z.ZodType< - SyncReconcileRequestSource4$Outbound, - SyncReconcileRequestSource4 -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSource4ToJSON( - syncReconcileRequestSource4: SyncReconcileRequestSource4, -): string { - return JSON.stringify( - SyncReconcileRequestSource4$outboundSchema.parse( - syncReconcileRequestSource4, - ), - ); -} - -/** @internal */ -export type SourceUnion4$Outbound = SyncReconcileRequestSource4$Outbound | any; - -/** @internal */ -export const SourceUnion4$outboundSchema: z.ZodType< - SourceUnion4$Outbound, - SourceUnion4 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource4$outboundSchema), - z.any(), -]); - -export function sourceUnion4ToJSON(sourceUnion4: SourceUnion4): string { - return JSON.stringify(SourceUnion4$outboundSchema.parse(sourceUnion4)); -} - -/** @internal */ -export type SyncReconcileRequestEvent6$Outbound = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: string | null | undefined; - firstTimestamp?: string | null | undefined; - involvedObject?: InvolvedObject4$Outbound | any | null | undefined; - lastTimestamp?: string | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource4$Outbound | any | null | undefined; - type?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestEvent6$outboundSchema: z.ZodType< - SyncReconcileRequestEvent6$Outbound, - SyncReconcileRequestEvent6 -> = z.object({ - count: z.nullable(z.int()).optional(), - details: z.nullable(z.any()).optional(), - eventId: z.nullable(z.string()).optional(), - eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), - firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject4$outboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource4$outboundSchema), - z.any(), - ]), - ).optional(), - type: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestEvent6ToJSON( - syncReconcileRequestEvent6: SyncReconcileRequestEvent6, -): string { - return JSON.stringify( - SyncReconcileRequestEvent6$outboundSchema.parse(syncReconcileRequestEvent6), - ); -} - -/** @internal */ -export const Reason13$outboundSchema: z.ZodEnum = z.enum( - Reason13, -); - -/** @internal */ -export const CollectionIssueSeverity13$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity13 -> = z.enum(CollectionIssueSeverity13); - -/** @internal */ -export type CollectionIssue13$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue13$outboundSchema: z.ZodType< - CollectionIssue13$Outbound, - CollectionIssue13 -> = z.object({ - message: z.string(), - reason: Reason13$outboundSchema, - severity: CollectionIssueSeverity13$outboundSchema, - source: z.string(), -}); - -export function collectionIssue13ToJSON( - collectionIssue13: CollectionIssue13, -): string { - return JSON.stringify( - CollectionIssue13$outboundSchema.parse(collectionIssue13), - ); -} - -/** @internal */ -export const Health13$outboundSchema: z.ZodEnum = z.enum( - Health13, -); - -/** @internal */ -export const StatusLifecycle13$outboundSchema: z.ZodEnum< - typeof StatusLifecycle13 -> = z.enum(StatusLifecycle13); - -/** @internal */ -export type HeartbeatStatus13$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus13$outboundSchema: z.ZodType< - HeartbeatStatus13$Outbound, - HeartbeatStatus13 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue13$outboundSchema)), - health: Health13$outboundSchema, - lifecycle: StatusLifecycle13$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus13ToJSON( - heartbeatStatus13: HeartbeatStatus13, -): string { - return JSON.stringify( - HeartbeatStatus13$outboundSchema.parse(heartbeatStatus13), - ); -} - -/** @internal */ -export type DataAws1$Outbound = { - assignedMachines: number; - capacityGroup: string; - commandSupported: boolean; - daemonInstances: Array; - daemonName: string; - desiredMachines: number; - events: Array; - healthyInstances: number; - horizonClusterId: string; - horizonStatus: string; - horizonStatusMessage?: string | null | undefined; - horizonStatusReason?: string | null | undefined; - latestUpdateTimestamp: string; - status: HeartbeatStatus13$Outbound; - unavailableInstances: number; - backend: "aws"; -}; - -/** @internal */ -export const DataAws1$outboundSchema: z.ZodType = z - .object({ - assignedMachines: z.int(), - capacityGroup: z.string(), - commandSupported: z.boolean(), - daemonInstances: z.array(z.lazy(() => DaemonInstance1$outboundSchema)), - daemonName: z.string(), - desiredMachines: z.int(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent6$outboundSchema)), - healthyInstances: z.int(), - horizonClusterId: z.string(), - horizonStatus: z.string(), - horizonStatusMessage: z.nullable(z.string()).optional(), - horizonStatusReason: z.nullable(z.string()).optional(), - latestUpdateTimestamp: z.string(), - status: z.lazy(() => HeartbeatStatus13$outboundSchema), - unavailableInstances: z.int(), - backend: z.literal("aws"), - }); - -export function dataAws1ToJSON(dataAws1: DataAws1): string { - return JSON.stringify(DataAws1$outboundSchema.parse(dataAws1)); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion4$Outbound = - | DataAws1$Outbound - | DataGcp1$Outbound - | DataAzure1$Outbound - | DataKubernetes3$Outbound - | DataLocal4$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion4$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion4$Outbound, - SyncReconcileRequestDataUnion4 -> = z.union([ - z.lazy(() => DataAws1$outboundSchema), - z.lazy(() => DataGcp1$outboundSchema), - z.lazy(() => DataAzure1$outboundSchema), - z.lazy(() => DataKubernetes3$outboundSchema), - z.lazy(() => DataLocal4$outboundSchema), -]); - -export function syncReconcileRequestDataUnion4ToJSON( - syncReconcileRequestDataUnion4: SyncReconcileRequestDataUnion4, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion4$outboundSchema.parse( - syncReconcileRequestDataUnion4, - ), - ); -} - -/** @internal */ -export type DataDaemon$Outbound = { - data: - | DataAws1$Outbound - | DataGcp1$Outbound - | DataAzure1$Outbound - | DataKubernetes3$Outbound - | DataLocal4$Outbound; - resourceType: "daemon"; -}; - -/** @internal */ -export const DataDaemon$outboundSchema: z.ZodType< - DataDaemon$Outbound, - DataDaemon -> = z.object({ - data: z.union([ - z.lazy(() => DataAws1$outboundSchema), - z.lazy(() => DataGcp1$outboundSchema), - z.lazy(() => DataAzure1$outboundSchema), - z.lazy(() => DataKubernetes3$outboundSchema), - z.lazy(() => DataLocal4$outboundSchema), - ]), - resourceType: z.literal("daemon"), -}); - -export function dataDaemonToJSON(dataDaemon: DataDaemon): string { - return JSON.stringify(DataDaemon$outboundSchema.parse(dataDaemon)); -} - -/** @internal */ -export const ContainerUnitCpuUnit$outboundSchema: z.ZodEnum< - typeof ContainerUnitCpuUnit -> = z.enum(ContainerUnitCpuUnit); - -/** @internal */ -export type ContainerUnitCpu$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const ContainerUnitCpu$outboundSchema: z.ZodType< - ContainerUnitCpu$Outbound, - ContainerUnitCpu -> = z.object({ - unit: ContainerUnitCpuUnit$outboundSchema, - value: z.number(), -}); - -export function containerUnitCpuToJSON( - containerUnitCpu: ContainerUnitCpu, -): string { - return JSON.stringify( - ContainerUnitCpu$outboundSchema.parse(containerUnitCpu), - ); -} - -/** @internal */ -export type ContainerUnitCpuUnion$Outbound = ContainerUnitCpu$Outbound | any; - -/** @internal */ -export const ContainerUnitCpuUnion$outboundSchema: z.ZodType< - ContainerUnitCpuUnion$Outbound, - ContainerUnitCpuUnion -> = z.union([z.lazy(() => ContainerUnitCpu$outboundSchema), z.any()]); - -export function containerUnitCpuUnionToJSON( - containerUnitCpuUnion: ContainerUnitCpuUnion, -): string { - return JSON.stringify( - ContainerUnitCpuUnion$outboundSchema.parse(containerUnitCpuUnion), - ); -} - -/** @internal */ -export const ContainerUnitKind$outboundSchema: z.ZodEnum< - typeof ContainerUnitKind -> = z.enum(ContainerUnitKind); - -/** @internal */ -export const ContainerUnitMemoryUnit$outboundSchema: z.ZodEnum< - typeof ContainerUnitMemoryUnit -> = z.enum(ContainerUnitMemoryUnit); - -/** @internal */ -export type ContainerUnitMemory$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const ContainerUnitMemory$outboundSchema: z.ZodType< - ContainerUnitMemory$Outbound, - ContainerUnitMemory -> = z.object({ - unit: ContainerUnitMemoryUnit$outboundSchema, - value: z.number(), -}); - -export function containerUnitMemoryToJSON( - containerUnitMemory: ContainerUnitMemory, -): string { - return JSON.stringify( - ContainerUnitMemory$outboundSchema.parse(containerUnitMemory), - ); -} - -/** @internal */ -export type ContainerUnitMemoryUnion$Outbound = - | ContainerUnitMemory$Outbound - | any; - -/** @internal */ -export const ContainerUnitMemoryUnion$outboundSchema: z.ZodType< - ContainerUnitMemoryUnion$Outbound, - ContainerUnitMemoryUnion -> = z.union([z.lazy(() => ContainerUnitMemory$outboundSchema), z.any()]); - -export function containerUnitMemoryUnionToJSON( - containerUnitMemoryUnion: ContainerUnitMemoryUnion, -): string { - return JSON.stringify( - ContainerUnitMemoryUnion$outboundSchema.parse(containerUnitMemoryUnion), - ); -} - -/** @internal */ -export type ContainerUnit$Outbound = { - cpu?: ContainerUnitCpu$Outbound | any | null | undefined; - kind: string; - memory?: ContainerUnitMemory$Outbound | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; -}; - -/** @internal */ -export const ContainerUnit$outboundSchema: z.ZodType< - ContainerUnit$Outbound, - ContainerUnit -> = z.object({ - cpu: z.nullable( - z.union([z.lazy(() => ContainerUnitCpu$outboundSchema), z.any()]), - ).optional(), - kind: ContainerUnitKind$outboundSchema, - memory: z.nullable( - z.union([z.lazy(() => ContainerUnitMemory$outboundSchema), z.any()]), - ).optional(), - name: z.string(), - phase: z.nullable(z.string()).optional(), - pid: z.nullable(z.int()).optional(), - ready: z.boolean(), - restartCount: z.nullable(z.int()).optional(), - unitId: z.string(), -}); - -export function containerUnitToJSON(containerUnit: ContainerUnit): string { - return JSON.stringify(ContainerUnit$outboundSchema.parse(containerUnit)); -} - -/** @internal */ -export type ContainerUnitUnion$Outbound = ContainerUnit$Outbound | any; - -/** @internal */ -export const ContainerUnitUnion$outboundSchema: z.ZodType< - ContainerUnitUnion$Outbound, - ContainerUnitUnion -> = z.union([z.lazy(() => ContainerUnit$outboundSchema), z.any()]); - -export function containerUnitUnionToJSON( - containerUnitUnion: ContainerUnitUnion, -): string { - return JSON.stringify( - ContainerUnitUnion$outboundSchema.parse(containerUnitUnion), - ); -} - -/** @internal */ -export const CpuUnit5$outboundSchema: z.ZodEnum = z.enum( - CpuUnit5, -); - -/** @internal */ -export type Cpu5$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Cpu5$outboundSchema: z.ZodType = z.object({ - unit: CpuUnit5$outboundSchema, - value: z.number(), -}); - -export function cpu5ToJSON(cpu5: Cpu5): string { - return JSON.stringify(Cpu5$outboundSchema.parse(cpu5)); -} - -/** @internal */ -export type CpuUnion5$Outbound = Cpu5$Outbound | any; - -/** @internal */ -export const CpuUnion5$outboundSchema: z.ZodType< - CpuUnion5$Outbound, - CpuUnion5 -> = z.union([z.lazy(() => Cpu5$outboundSchema), z.any()]); - -export function cpuUnion5ToJSON(cpuUnion5: CpuUnion5): string { - return JSON.stringify(CpuUnion5$outboundSchema.parse(cpuUnion5)); -} - -/** @internal */ -export const EventSeverity2$outboundSchema: z.ZodEnum = z - .enum(EventSeverity2); - -/** @internal */ -export type SyncReconcileRequestSubject2$Outbound = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSubject2$outboundSchema: z.ZodType< - SyncReconcileRequestSubject2$Outbound, - SyncReconcileRequestSubject2 -> = z.object({ - id: z.nullable(z.string()).optional(), - kind: z.string(), - name: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSubject2ToJSON( - syncReconcileRequestSubject2: SyncReconcileRequestSubject2, -): string { - return JSON.stringify( - SyncReconcileRequestSubject2$outboundSchema.parse( - syncReconcileRequestSubject2, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestSubjectUnion2$Outbound = - | SyncReconcileRequestSubject2$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestSubjectUnion2$outboundSchema: z.ZodType< - SyncReconcileRequestSubjectUnion2$Outbound, - SyncReconcileRequestSubjectUnion2 -> = z.union([ - z.lazy(() => SyncReconcileRequestSubject2$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestSubjectUnion2ToJSON( - syncReconcileRequestSubjectUnion2: SyncReconcileRequestSubjectUnion2, -): string { - return JSON.stringify( - SyncReconcileRequestSubjectUnion2$outboundSchema.parse( - syncReconcileRequestSubjectUnion2, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestEvent5$Outbound = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: string; - subject?: SyncReconcileRequestSubject2$Outbound | any | null | undefined; - timestamp: string; -}; - -/** @internal */ -export const SyncReconcileRequestEvent5$outboundSchema: z.ZodType< - SyncReconcileRequestEvent5$Outbound, - SyncReconcileRequestEvent5 -> = z.object({ - kind: z.string(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - severity: EventSeverity2$outboundSchema, - subject: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSubject2$outboundSchema), - z.any(), - ]), - ).optional(), - timestamp: z.date().transform(v => v.toISOString()), -}); - -export function syncReconcileRequestEvent5ToJSON( - syncReconcileRequestEvent5: SyncReconcileRequestEvent5, -): string { - return JSON.stringify( - SyncReconcileRequestEvent5$outboundSchema.parse(syncReconcileRequestEvent5), - ); -} - -/** @internal */ -export const MemoryUnit5$outboundSchema: z.ZodEnum = z.enum( - MemoryUnit5, -); - -/** @internal */ -export type Memory5$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Memory5$outboundSchema: z.ZodType = z - .object({ - unit: MemoryUnit5$outboundSchema, - value: z.number(), - }); - -export function memory5ToJSON(memory5: Memory5): string { - return JSON.stringify(Memory5$outboundSchema.parse(memory5)); -} - -/** @internal */ -export type MemoryUnion5$Outbound = Memory5$Outbound | any; - -/** @internal */ -export const MemoryUnion5$outboundSchema: z.ZodType< - MemoryUnion5$Outbound, - MemoryUnion5 -> = z.union([z.lazy(() => Memory5$outboundSchema), z.any()]); - -export function memoryUnion5ToJSON(memoryUnion5: MemoryUnion5): string { - return JSON.stringify(MemoryUnion5$outboundSchema.parse(memoryUnion5)); -} - -/** @internal */ -export const Reason12$outboundSchema: z.ZodEnum = z.enum( - Reason12, -); - -/** @internal */ -export const CollectionIssueSeverity12$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity12 -> = z.enum(CollectionIssueSeverity12); - -/** @internal */ -export type CollectionIssue12$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue12$outboundSchema: z.ZodType< - CollectionIssue12$Outbound, - CollectionIssue12 -> = z.object({ - message: z.string(), - reason: Reason12$outboundSchema, - severity: CollectionIssueSeverity12$outboundSchema, - source: z.string(), -}); - -export function collectionIssue12ToJSON( - collectionIssue12: CollectionIssue12, -): string { - return JSON.stringify( - CollectionIssue12$outboundSchema.parse(collectionIssue12), - ); -} - -/** @internal */ -export const Health12$outboundSchema: z.ZodEnum = z.enum( - Health12, -); - -/** @internal */ -export const StatusLifecycle12$outboundSchema: z.ZodEnum< - typeof StatusLifecycle12 -> = z.enum(StatusLifecycle12); - -/** @internal */ -export type HeartbeatStatus12$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus12$outboundSchema: z.ZodType< - HeartbeatStatus12$Outbound, - HeartbeatStatus12 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue12$outboundSchema)), - health: Health12$outboundSchema, - lifecycle: StatusLifecycle12$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus12ToJSON( - heartbeatStatus12: HeartbeatStatus12, -): string { - return JSON.stringify( - HeartbeatStatus12$outboundSchema.parse(heartbeatStatus12), - ); -} - -/** @internal */ -export type DataLocal3$Outbound = { - bindMountCount: number; - containerId?: string | null | undefined; - containerUnit?: ContainerUnit$Outbound | any | null | undefined; - cpu?: Cpu5$Outbound | any | null | undefined; - events: Array; - image?: string | null | undefined; - localUrl?: string | null | undefined; - memory?: Memory5$Outbound | any | null | undefined; - name?: string | null | undefined; - portCount: number; - restartCount?: number | null | undefined; - runtimeReachable: boolean; - runtimeStatus?: string | null | undefined; - status: HeartbeatStatus12$Outbound; - backend: "local"; -}; - -/** @internal */ -export const DataLocal3$outboundSchema: z.ZodType< - DataLocal3$Outbound, - DataLocal3 -> = z.object({ - bindMountCount: z.int(), - containerId: z.nullable(z.string()).optional(), - containerUnit: z.nullable( - z.union([z.lazy(() => ContainerUnit$outboundSchema), z.any()]), - ).optional(), - cpu: z.nullable(z.union([z.lazy(() => Cpu5$outboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent5$outboundSchema)), - image: z.nullable(z.string()).optional(), - localUrl: z.nullable(z.string()).optional(), - memory: z.nullable(z.union([z.lazy(() => Memory5$outboundSchema), z.any()])) - .optional(), - name: z.nullable(z.string()).optional(), - portCount: z.int(), - restartCount: z.nullable(z.int()).optional(), - runtimeReachable: z.boolean(), - runtimeStatus: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus12$outboundSchema), - backend: z.literal("local"), -}); - -export function dataLocal3ToJSON(dataLocal3: DataLocal3): string { - return JSON.stringify(DataLocal3$outboundSchema.parse(dataLocal3)); -} - -/** @internal */ -export const CpuUnit4$outboundSchema: z.ZodEnum = z.enum( - CpuUnit4, -); - -/** @internal */ -export type Cpu4$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Cpu4$outboundSchema: z.ZodType = z.object({ - unit: CpuUnit4$outboundSchema, - value: z.number(), -}); - -export function cpu4ToJSON(cpu4: Cpu4): string { - return JSON.stringify(Cpu4$outboundSchema.parse(cpu4)); -} - -/** @internal */ -export type CpuUnion4$Outbound = Cpu4$Outbound | any; - -/** @internal */ -export const CpuUnion4$outboundSchema: z.ZodType< - CpuUnion4$Outbound, - CpuUnion4 -> = z.union([z.lazy(() => Cpu4$outboundSchema), z.any()]); - -export function cpuUnion4ToJSON(cpuUnion4: CpuUnion4): string { - return JSON.stringify(CpuUnion4$outboundSchema.parse(cpuUnion4)); -} - -/** @internal */ -export type InvolvedObject3$Outbound = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -/** @internal */ -export const InvolvedObject3$outboundSchema: z.ZodType< - InvolvedObject3$Outbound, - InvolvedObject3 -> = z.object({ - apiVersion: z.nullable(z.string()).optional(), - fieldPath: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - namespace: z.nullable(z.string()).optional(), - resourceVersion: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), -}); - -export function involvedObject3ToJSON( - involvedObject3: InvolvedObject3, -): string { - return JSON.stringify(InvolvedObject3$outboundSchema.parse(involvedObject3)); -} - -/** @internal */ -export type InvolvedObjectUnion3$Outbound = InvolvedObject3$Outbound | any; - -/** @internal */ -export const InvolvedObjectUnion3$outboundSchema: z.ZodType< - InvolvedObjectUnion3$Outbound, - InvolvedObjectUnion3 -> = z.union([z.lazy(() => InvolvedObject3$outboundSchema), z.any()]); - -export function involvedObjectUnion3ToJSON( - involvedObjectUnion3: InvolvedObjectUnion3, -): string { - return JSON.stringify( - InvolvedObjectUnion3$outboundSchema.parse(involvedObjectUnion3), - ); -} - -/** @internal */ -export type SyncReconcileRequestSource3$Outbound = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSource3$outboundSchema: z.ZodType< - SyncReconcileRequestSource3$Outbound, - SyncReconcileRequestSource3 -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSource3ToJSON( - syncReconcileRequestSource3: SyncReconcileRequestSource3, -): string { - return JSON.stringify( - SyncReconcileRequestSource3$outboundSchema.parse( - syncReconcileRequestSource3, - ), - ); -} - -/** @internal */ -export type SourceUnion3$Outbound = SyncReconcileRequestSource3$Outbound | any; - -/** @internal */ -export const SourceUnion3$outboundSchema: z.ZodType< - SourceUnion3$Outbound, - SourceUnion3 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource3$outboundSchema), - z.any(), -]); - -export function sourceUnion3ToJSON(sourceUnion3: SourceUnion3): string { - return JSON.stringify(SourceUnion3$outboundSchema.parse(sourceUnion3)); -} - -/** @internal */ -export type SyncReconcileRequestEvent4$Outbound = { - count?: number | null | undefined; - eventTime?: string | null | undefined; - firstTimestamp?: string | null | undefined; - involvedObject?: InvolvedObject3$Outbound | any | null | undefined; - lastTimestamp?: string | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource3$Outbound | any | null | undefined; - type?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestEvent4$outboundSchema: z.ZodType< - SyncReconcileRequestEvent4$Outbound, - SyncReconcileRequestEvent4 -> = z.object({ - count: z.nullable(z.int()).optional(), - eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), - firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject3$outboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource3$outboundSchema), - z.any(), - ]), - ).optional(), - type: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestEvent4ToJSON( - syncReconcileRequestEvent4: SyncReconcileRequestEvent4, -): string { - return JSON.stringify( - SyncReconcileRequestEvent4$outboundSchema.parse(syncReconcileRequestEvent4), - ); -} - -/** @internal */ -export const MemoryUnit4$outboundSchema: z.ZodEnum = z.enum( - MemoryUnit4, -); - -/** @internal */ -export type Memory4$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Memory4$outboundSchema: z.ZodType = z - .object({ - unit: MemoryUnit4$outboundSchema, - value: z.number(), - }); - -export function memory4ToJSON(memory4: Memory4): string { - return JSON.stringify(Memory4$outboundSchema.parse(memory4)); -} - -/** @internal */ -export type MemoryUnion4$Outbound = Memory4$Outbound | any; - -/** @internal */ -export const MemoryUnion4$outboundSchema: z.ZodType< - MemoryUnion4$Outbound, - MemoryUnion4 -> = z.union([z.lazy(() => Memory4$outboundSchema), z.any()]); - -export function memoryUnion4ToJSON(memoryUnion4: MemoryUnion4): string { - return JSON.stringify(MemoryUnion4$outboundSchema.parse(memoryUnion4)); -} - -/** @internal */ -export const CpuPodUnit2$outboundSchema: z.ZodEnum = z.enum( - CpuPodUnit2, -); - -/** @internal */ -export type CpuPod2$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const CpuPod2$outboundSchema: z.ZodType = z - .object({ - unit: CpuPodUnit2$outboundSchema, - value: z.number(), - }); - -export function cpuPod2ToJSON(cpuPod2: CpuPod2): string { - return JSON.stringify(CpuPod2$outboundSchema.parse(cpuPod2)); -} - -/** @internal */ -export type PodCpuUnion2$Outbound = CpuPod2$Outbound | any; - -/** @internal */ -export const PodCpuUnion2$outboundSchema: z.ZodType< - PodCpuUnion2$Outbound, - PodCpuUnion2 -> = z.union([z.lazy(() => CpuPod2$outboundSchema), z.any()]); - -export function podCpuUnion2ToJSON(podCpuUnion2: PodCpuUnion2): string { - return JSON.stringify(PodCpuUnion2$outboundSchema.parse(podCpuUnion2)); -} - -/** @internal */ -export const MemoryPodUnit2$outboundSchema: z.ZodEnum = z - .enum(MemoryPodUnit2); - -/** @internal */ -export type MemoryPod2$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const MemoryPod2$outboundSchema: z.ZodType< - MemoryPod2$Outbound, - MemoryPod2 -> = z.object({ - unit: MemoryPodUnit2$outboundSchema, - value: z.number(), -}); - -export function memoryPod2ToJSON(memoryPod2: MemoryPod2): string { - return JSON.stringify(MemoryPod2$outboundSchema.parse(memoryPod2)); -} - -/** @internal */ -export type PodMemoryUnion2$Outbound = MemoryPod2$Outbound | any; - -/** @internal */ -export const PodMemoryUnion2$outboundSchema: z.ZodType< - PodMemoryUnion2$Outbound, - PodMemoryUnion2 -> = z.union([z.lazy(() => MemoryPod2$outboundSchema), z.any()]); - -export function podMemoryUnion2ToJSON( - podMemoryUnion2: PodMemoryUnion2, -): string { - return JSON.stringify(PodMemoryUnion2$outboundSchema.parse(podMemoryUnion2)); -} - -/** @internal */ -export type OwnerReference2$Outbound = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; - -/** @internal */ -export const OwnerReference2$outboundSchema: z.ZodType< - OwnerReference2$Outbound, - OwnerReference2 -> = z.object({ - controller: z.boolean(), - kind: z.string(), - name: z.string(), - uid: z.string(), -}); - -export function ownerReference2ToJSON( - ownerReference2: OwnerReference2, -): string { - return JSON.stringify(OwnerReference2$outboundSchema.parse(ownerReference2)); -} - -/** @internal */ -export type Pod2$Outbound = { - cpu?: CpuPod2$Outbound | any | null | undefined; - memory?: MemoryPod2$Outbound | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -/** @internal */ -export const Pod2$outboundSchema: z.ZodType = z.object({ - cpu: z.nullable(z.union([z.lazy(() => CpuPod2$outboundSchema), z.any()])) - .optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryPod2$outboundSchema), z.any()]), - ).optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - ownerReferences: z.array(z.lazy(() => OwnerReference2$outboundSchema)), - phase: z.nullable(z.string()).optional(), - podIp: z.nullable(z.string()).optional(), - ready: z.boolean(), - restartCount: z.int(), - terminatedReason: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function pod2ToJSON(pod2: Pod2): string { - return JSON.stringify(Pod2$outboundSchema.parse(pod2)); -} - -/** @internal */ -export type Replicas3$Outbound = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -/** @internal */ -export const Replicas3$outboundSchema: z.ZodType< - Replicas3$Outbound, - Replicas3 -> = z.object({ - available: z.nullable(z.int()).optional(), - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - misscheduled: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - updated: z.nullable(z.int()).optional(), -}); - -export function replicas3ToJSON(replicas3: Replicas3): string { - return JSON.stringify(Replicas3$outboundSchema.parse(replicas3)); -} - -/** @internal */ -export const Reason11$outboundSchema: z.ZodEnum = z.enum( - Reason11, -); - -/** @internal */ -export const CollectionIssueSeverity11$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity11 -> = z.enum(CollectionIssueSeverity11); - -/** @internal */ -export type CollectionIssue11$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue11$outboundSchema: z.ZodType< - CollectionIssue11$Outbound, - CollectionIssue11 -> = z.object({ - message: z.string(), - reason: Reason11$outboundSchema, - severity: CollectionIssueSeverity11$outboundSchema, - source: z.string(), -}); - -export function collectionIssue11ToJSON( - collectionIssue11: CollectionIssue11, -): string { - return JSON.stringify( - CollectionIssue11$outboundSchema.parse(collectionIssue11), - ); -} - -/** @internal */ -export const Health11$outboundSchema: z.ZodEnum = z.enum( - Health11, -); - -/** @internal */ -export const StatusLifecycle11$outboundSchema: z.ZodEnum< - typeof StatusLifecycle11 -> = z.enum(StatusLifecycle11); - -/** @internal */ -export type HeartbeatStatus11$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus11$outboundSchema: z.ZodType< - HeartbeatStatus11$Outbound, - HeartbeatStatus11 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue11$outboundSchema)), - health: Health11$outboundSchema, - lifecycle: StatusLifecycle11$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus11ToJSON( - heartbeatStatus11: HeartbeatStatus11, -): string { - return JSON.stringify( - HeartbeatStatus11$outboundSchema.parse(heartbeatStatus11), - ); -} - -/** @internal */ -export type WorkloadCondition2$Outbound = { - lastTransitionTime?: string | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -/** @internal */ -export const WorkloadCondition2$outboundSchema: z.ZodType< - WorkloadCondition2$Outbound, - WorkloadCondition2 -> = z.object({ - lastTransitionTime: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.nullable(z.string()).optional(), - reason: z.nullable(z.string()).optional(), - status: z.string(), - type: z.string(), -}); - -export function workloadCondition2ToJSON( - workloadCondition2: WorkloadCondition2, -): string { - return JSON.stringify( - WorkloadCondition2$outboundSchema.parse(workloadCondition2), - ); -} - -/** @internal */ -export type Workload2$Outbound = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; -}; - -/** @internal */ -export const Workload2$outboundSchema: z.ZodType< - Workload2$Outbound, - Workload2 -> = z.object({ - availableReplicas: z.nullable(z.int()).optional(), - conditions: z.array(z.lazy(() => WorkloadCondition2$outboundSchema)), - desiredGeneration: z.nullable(z.int()).optional(), - desiredReplicas: z.nullable(z.int()).optional(), - observedGeneration: z.nullable(z.int()).optional(), - readyReplicas: z.nullable(z.int()).optional(), - rolloutReason: z.nullable(z.string()).optional(), - updatedReplicas: z.nullable(z.int()).optional(), -}); - -export function workload2ToJSON(workload2: Workload2): string { - return JSON.stringify(Workload2$outboundSchema.parse(workload2)); -} - -/** @internal */ -export type WorkloadUnion2$Outbound = Workload2$Outbound | any; - -/** @internal */ -export const WorkloadUnion2$outboundSchema: z.ZodType< - WorkloadUnion2$Outbound, - WorkloadUnion2 -> = z.union([z.lazy(() => Workload2$outboundSchema), z.any()]); - -export function workloadUnion2ToJSON(workloadUnion2: WorkloadUnion2): string { - return JSON.stringify(WorkloadUnion2$outboundSchema.parse(workloadUnion2)); -} - -/** @internal */ -export const WorkloadKind2$outboundSchema: z.ZodEnum = z - .enum(WorkloadKind2); - -/** @internal */ -export type DataKubernetes2$Outbound = { - cpu?: Cpu4$Outbound | any | null | undefined; - events: Array; - memory?: Memory4$Outbound | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas3$Outbound; - restarts?: number | null | undefined; - status: HeartbeatStatus11$Outbound; - workload?: Workload2$Outbound | any | null | undefined; - workloadKind: string; - backend: "kubernetes"; -}; - -/** @internal */ -export const DataKubernetes2$outboundSchema: z.ZodType< - DataKubernetes2$Outbound, - DataKubernetes2 -> = z.object({ - cpu: z.nullable(z.union([z.lazy(() => Cpu4$outboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent4$outboundSchema)), - memory: z.nullable(z.union([z.lazy(() => Memory4$outboundSchema), z.any()])) - .optional(), - name: z.string(), - namespace: z.string(), - pods: z.array(z.lazy(() => Pod2$outboundSchema)), - replicas: z.lazy(() => Replicas3$outboundSchema), - restarts: z.nullable(z.int()).optional(), - status: z.lazy(() => HeartbeatStatus11$outboundSchema), - workload: z.nullable( - z.union([z.lazy(() => Workload2$outboundSchema), z.any()]), - ).optional(), - workloadKind: WorkloadKind2$outboundSchema, - backend: z.literal("kubernetes"), -}); - -export function dataKubernetes2ToJSON( - dataKubernetes2: DataKubernetes2, -): string { - return JSON.stringify(DataKubernetes2$outboundSchema.parse(dataKubernetes2)); -} - -/** @internal */ -export const CpuUnit3$outboundSchema: z.ZodEnum = z.enum( - CpuUnit3, -); - -/** @internal */ -export type Cpu3$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Cpu3$outboundSchema: z.ZodType = z.object({ - unit: CpuUnit3$outboundSchema, - value: z.number(), -}); - -export function cpu3ToJSON(cpu3: Cpu3): string { - return JSON.stringify(Cpu3$outboundSchema.parse(cpu3)); -} - -/** @internal */ -export type CpuUnion3$Outbound = Cpu3$Outbound | any; - -/** @internal */ -export const CpuUnion3$outboundSchema: z.ZodType< - CpuUnion3$Outbound, - CpuUnion3 -> = z.union([z.lazy(() => Cpu3$outboundSchema), z.any()]); - -export function cpuUnion3ToJSON(cpuUnion3: CpuUnion3): string { - return JSON.stringify(CpuUnion3$outboundSchema.parse(cpuUnion3)); -} - -/** @internal */ -export type InvolvedObject2$Outbound = { - details?: any | null | undefined; - id?: string | null | undefined; - kind?: string | null | undefined; - machineId?: string | null | undefined; - name?: string | null | undefined; - replicaId?: string | null | undefined; -}; - -/** @internal */ -export const InvolvedObject2$outboundSchema: z.ZodType< - InvolvedObject2$Outbound, - InvolvedObject2 -> = z.object({ - details: z.nullable(z.any()).optional(), - id: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - replicaId: z.nullable(z.string()).optional(), -}); - -export function involvedObject2ToJSON( - involvedObject2: InvolvedObject2, -): string { - return JSON.stringify(InvolvedObject2$outboundSchema.parse(involvedObject2)); -} - -/** @internal */ -export type InvolvedObjectUnion2$Outbound = InvolvedObject2$Outbound | any; - -/** @internal */ -export const InvolvedObjectUnion2$outboundSchema: z.ZodType< - InvolvedObjectUnion2$Outbound, - InvolvedObjectUnion2 -> = z.union([z.lazy(() => InvolvedObject2$outboundSchema), z.any()]); - -export function involvedObjectUnion2ToJSON( - involvedObjectUnion2: InvolvedObjectUnion2, -): string { - return JSON.stringify( - InvolvedObjectUnion2$outboundSchema.parse(involvedObjectUnion2), - ); -} - -/** @internal */ -export type SyncReconcileRequestSource2$Outbound = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSource2$outboundSchema: z.ZodType< - SyncReconcileRequestSource2$Outbound, - SyncReconcileRequestSource2 -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSource2ToJSON( - syncReconcileRequestSource2: SyncReconcileRequestSource2, -): string { - return JSON.stringify( - SyncReconcileRequestSource2$outboundSchema.parse( - syncReconcileRequestSource2, - ), - ); -} - -/** @internal */ -export type SourceUnion2$Outbound = SyncReconcileRequestSource2$Outbound | any; - -/** @internal */ -export const SourceUnion2$outboundSchema: z.ZodType< - SourceUnion2$Outbound, - SourceUnion2 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource2$outboundSchema), - z.any(), -]); - -export function sourceUnion2ToJSON(sourceUnion2: SourceUnion2): string { - return JSON.stringify(SourceUnion2$outboundSchema.parse(sourceUnion2)); -} - -/** @internal */ -export type SyncReconcileRequestEvent3$Outbound = { - count?: number | null | undefined; - details?: any | null | undefined; - eventId?: string | null | undefined; - eventTime?: string | null | undefined; - firstTimestamp?: string | null | undefined; - involvedObject?: InvolvedObject2$Outbound | any | null | undefined; - lastTimestamp?: string | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource2$Outbound | any | null | undefined; - type?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestEvent3$outboundSchema: z.ZodType< - SyncReconcileRequestEvent3$Outbound, - SyncReconcileRequestEvent3 -> = z.object({ - count: z.nullable(z.int()).optional(), - details: z.nullable(z.any()).optional(), - eventId: z.nullable(z.string()).optional(), - eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), - firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject2$outboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource2$outboundSchema), - z.any(), - ]), - ).optional(), - type: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestEvent3ToJSON( - syncReconcileRequestEvent3: SyncReconcileRequestEvent3, -): string { - return JSON.stringify( - SyncReconcileRequestEvent3$outboundSchema.parse(syncReconcileRequestEvent3), - ); -} - -/** @internal */ -export const MemoryUnit3$outboundSchema: z.ZodEnum = z.enum( - MemoryUnit3, -); - -/** @internal */ -export type Memory3$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Memory3$outboundSchema: z.ZodType = z - .object({ - unit: MemoryUnit3$outboundSchema, - value: z.number(), - }); - -export function memory3ToJSON(memory3: Memory3): string { - return JSON.stringify(Memory3$outboundSchema.parse(memory3)); -} - -/** @internal */ -export type MemoryUnion3$Outbound = Memory3$Outbound | any; - -/** @internal */ -export const MemoryUnion3$outboundSchema: z.ZodType< - MemoryUnion3$Outbound, - MemoryUnion3 -> = z.union([z.lazy(() => Memory3$outboundSchema), z.any()]); - -export function memoryUnion3ToJSON(memoryUnion3: MemoryUnion3): string { - return JSON.stringify(MemoryUnion3$outboundSchema.parse(memoryUnion3)); -} - -/** @internal */ -export const CpuReplicaUnitUnit$outboundSchema: z.ZodEnum< - typeof CpuReplicaUnitUnit -> = z.enum(CpuReplicaUnitUnit); - -/** @internal */ -export type CpuReplicaUnit$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const CpuReplicaUnit$outboundSchema: z.ZodType< - CpuReplicaUnit$Outbound, - CpuReplicaUnit -> = z.object({ - unit: CpuReplicaUnitUnit$outboundSchema, - value: z.number(), -}); - -export function cpuReplicaUnitToJSON(cpuReplicaUnit: CpuReplicaUnit): string { - return JSON.stringify(CpuReplicaUnit$outboundSchema.parse(cpuReplicaUnit)); -} - -/** @internal */ -export type ReplicaUnitCpuUnion$Outbound = CpuReplicaUnit$Outbound | any; - -/** @internal */ -export const ReplicaUnitCpuUnion$outboundSchema: z.ZodType< - ReplicaUnitCpuUnion$Outbound, - ReplicaUnitCpuUnion -> = z.union([z.lazy(() => CpuReplicaUnit$outboundSchema), z.any()]); - -export function replicaUnitCpuUnionToJSON( - replicaUnitCpuUnion: ReplicaUnitCpuUnion, -): string { - return JSON.stringify( - ReplicaUnitCpuUnion$outboundSchema.parse(replicaUnitCpuUnion), - ); -} - -/** @internal */ -export const MemoryReplicaUnitUnit$outboundSchema: z.ZodEnum< - typeof MemoryReplicaUnitUnit -> = z.enum(MemoryReplicaUnitUnit); - -/** @internal */ -export type MemoryReplicaUnit$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const MemoryReplicaUnit$outboundSchema: z.ZodType< - MemoryReplicaUnit$Outbound, - MemoryReplicaUnit -> = z.object({ - unit: MemoryReplicaUnitUnit$outboundSchema, - value: z.number(), -}); - -export function memoryReplicaUnitToJSON( - memoryReplicaUnit: MemoryReplicaUnit, -): string { - return JSON.stringify( - MemoryReplicaUnit$outboundSchema.parse(memoryReplicaUnit), - ); -} - -/** @internal */ -export type ReplicaUnitMemoryUnion$Outbound = MemoryReplicaUnit$Outbound | any; - -/** @internal */ -export const ReplicaUnitMemoryUnion$outboundSchema: z.ZodType< - ReplicaUnitMemoryUnion$Outbound, - ReplicaUnitMemoryUnion -> = z.union([z.lazy(() => MemoryReplicaUnit$outboundSchema), z.any()]); - -export function replicaUnitMemoryUnionToJSON( - replicaUnitMemoryUnion: ReplicaUnitMemoryUnion, -): string { - return JSON.stringify( - ReplicaUnitMemoryUnion$outboundSchema.parse(replicaUnitMemoryUnion), - ); -} - -/** @internal */ -export type ReplicaUnit$Outbound = { - cpu?: CpuReplicaUnit$Outbound | any | null | undefined; - ip?: string | null | undefined; - machineId?: string | null | undefined; - memory?: MemoryReplicaUnit$Outbound | any | null | undefined; - message?: string | null | undefined; - metricsHealthy?: boolean | null | undefined; - metricsLastUpdated?: string | null | undefined; - metricsStatus?: string | null | undefined; - name: string; - nodeName?: string | null | undefined; - phase?: string | null | undefined; - ready: boolean; - reason?: string | null | undefined; - replicaId: string; - restartCount?: number | null | undefined; - status?: string | null | undefined; - terminatedReason?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -/** @internal */ -export const ReplicaUnit$outboundSchema: z.ZodType< - ReplicaUnit$Outbound, - ReplicaUnit -> = z.object({ - cpu: z.nullable( - z.union([z.lazy(() => CpuReplicaUnit$outboundSchema), z.any()]), - ).optional(), - ip: z.nullable(z.string()).optional(), - machineId: z.nullable(z.string()).optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryReplicaUnit$outboundSchema), z.any()]), - ).optional(), - message: z.nullable(z.string()).optional(), - metricsHealthy: z.nullable(z.boolean()).optional(), - metricsLastUpdated: z.nullable(z.string()).optional(), - metricsStatus: z.nullable(z.string()).optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - phase: z.nullable(z.string()).optional(), - ready: z.boolean(), - reason: z.nullable(z.string()).optional(), - replicaId: z.string(), - restartCount: z.nullable(z.int()).optional(), - status: z.nullable(z.string()).optional(), - terminatedReason: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function replicaUnitToJSON(replicaUnit: ReplicaUnit): string { - return JSON.stringify(ReplicaUnit$outboundSchema.parse(replicaUnit)); -} - -/** @internal */ -export type Replicas2$Outbound = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -/** @internal */ -export const Replicas2$outboundSchema: z.ZodType< - Replicas2$Outbound, - Replicas2 -> = z.object({ - available: z.nullable(z.int()).optional(), - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - misscheduled: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - updated: z.nullable(z.int()).optional(), -}); - -export function replicas2ToJSON(replicas2: Replicas2): string { - return JSON.stringify(Replicas2$outboundSchema.parse(replicas2)); -} - -/** @internal */ -export const SchedulingMode$outboundSchema: z.ZodEnum = z - .enum(SchedulingMode); - -/** @internal */ -export const Reason10$outboundSchema: z.ZodEnum = z.enum( - Reason10, -); - -/** @internal */ -export const CollectionIssueSeverity10$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity10 -> = z.enum(CollectionIssueSeverity10); - -/** @internal */ -export type CollectionIssue10$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue10$outboundSchema: z.ZodType< - CollectionIssue10$Outbound, - CollectionIssue10 -> = z.object({ - message: z.string(), - reason: Reason10$outboundSchema, - severity: CollectionIssueSeverity10$outboundSchema, - source: z.string(), -}); - -export function collectionIssue10ToJSON( - collectionIssue10: CollectionIssue10, -): string { - return JSON.stringify( - CollectionIssue10$outboundSchema.parse(collectionIssue10), - ); -} - -/** @internal */ -export const Health10$outboundSchema: z.ZodEnum = z.enum( - Health10, -); - -/** @internal */ -export const StatusLifecycle10$outboundSchema: z.ZodEnum< - typeof StatusLifecycle10 -> = z.enum(StatusLifecycle10); - -/** @internal */ -export type HeartbeatStatus10$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus10$outboundSchema: z.ZodType< - HeartbeatStatus10$Outbound, - HeartbeatStatus10 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue10$outboundSchema)), - health: Health10$outboundSchema, - lifecycle: StatusLifecycle10$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus10ToJSON( - heartbeatStatus10: HeartbeatStatus10, -): string { - return JSON.stringify( - HeartbeatStatus10$outboundSchema.parse(heartbeatStatus10), - ); -} - -/** @internal */ -export type DataHorizonPlatform$Outbound = { - attentionCount: number; - containerId: string; - cpu?: Cpu3$Outbound | any | null | undefined; - events: Array; - image?: string | null | undefined; - memory?: Memory3$Outbound | any | null | undefined; - replicaUnits: Array; - replicas: Replicas2$Outbound; - schedulingMode: string; - status: HeartbeatStatus10$Outbound; - backend: "horizonPlatform"; -}; - -/** @internal */ -export const DataHorizonPlatform$outboundSchema: z.ZodType< - DataHorizonPlatform$Outbound, - DataHorizonPlatform -> = z.object({ - attentionCount: z.int(), - containerId: z.string(), - cpu: z.nullable(z.union([z.lazy(() => Cpu3$outboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent3$outboundSchema)), - image: z.nullable(z.string()).optional(), - memory: z.nullable(z.union([z.lazy(() => Memory3$outboundSchema), z.any()])) - .optional(), - replicaUnits: z.array(z.lazy(() => ReplicaUnit$outboundSchema)), - replicas: z.lazy(() => Replicas2$outboundSchema), - schedulingMode: SchedulingMode$outboundSchema, - status: z.lazy(() => HeartbeatStatus10$outboundSchema), - backend: z.literal("horizonPlatform"), -}); - -export function dataHorizonPlatformToJSON( - dataHorizonPlatform: DataHorizonPlatform, -): string { - return JSON.stringify( - DataHorizonPlatform$outboundSchema.parse(dataHorizonPlatform), - ); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion3$Outbound = - | DataHorizonPlatform$Outbound - | DataKubernetes2$Outbound - | DataLocal3$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion3$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion3$Outbound, - SyncReconcileRequestDataUnion3 -> = z.union([ - z.lazy(() => DataHorizonPlatform$outboundSchema), - z.lazy(() => DataKubernetes2$outboundSchema), - z.lazy(() => DataLocal3$outboundSchema), -]); - -export function syncReconcileRequestDataUnion3ToJSON( - syncReconcileRequestDataUnion3: SyncReconcileRequestDataUnion3, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion3$outboundSchema.parse( - syncReconcileRequestDataUnion3, - ), - ); -} - -/** @internal */ -export type DataContainer$Outbound = { - data: - | DataHorizonPlatform$Outbound - | DataKubernetes2$Outbound - | DataLocal3$Outbound; - resourceType: "container"; -}; - -/** @internal */ -export const DataContainer$outboundSchema: z.ZodType< - DataContainer$Outbound, - DataContainer -> = z.object({ - data: z.union([ - z.lazy(() => DataHorizonPlatform$outboundSchema), - z.lazy(() => DataKubernetes2$outboundSchema), - z.lazy(() => DataLocal3$outboundSchema), - ]), - resourceType: z.literal("container"), -}); - -export function dataContainerToJSON(dataContainer: DataContainer): string { - return JSON.stringify(DataContainer$outboundSchema.parse(dataContainer)); -} - -/** @internal */ -export const CpuUnit2$outboundSchema: z.ZodEnum = z.enum( - CpuUnit2, -); - -/** @internal */ -export type Cpu2$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Cpu2$outboundSchema: z.ZodType = z.object({ - unit: CpuUnit2$outboundSchema, - value: z.number(), -}); - -export function cpu2ToJSON(cpu2: Cpu2): string { - return JSON.stringify(Cpu2$outboundSchema.parse(cpu2)); -} - -/** @internal */ -export type CpuUnion2$Outbound = Cpu2$Outbound | any; - -/** @internal */ -export const CpuUnion2$outboundSchema: z.ZodType< - CpuUnion2$Outbound, - CpuUnion2 -> = z.union([z.lazy(() => Cpu2$outboundSchema), z.any()]); - -export function cpuUnion2ToJSON(cpuUnion2: CpuUnion2): string { - return JSON.stringify(CpuUnion2$outboundSchema.parse(cpuUnion2)); -} - -/** @internal */ -export const EventSeverity1$outboundSchema: z.ZodEnum = z - .enum(EventSeverity1); - -/** @internal */ -export type SyncReconcileRequestSubject1$Outbound = { - id?: string | null | undefined; - kind: string; - name?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSubject1$outboundSchema: z.ZodType< - SyncReconcileRequestSubject1$Outbound, - SyncReconcileRequestSubject1 -> = z.object({ - id: z.nullable(z.string()).optional(), - kind: z.string(), - name: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSubject1ToJSON( - syncReconcileRequestSubject1: SyncReconcileRequestSubject1, -): string { - return JSON.stringify( - SyncReconcileRequestSubject1$outboundSchema.parse( - syncReconcileRequestSubject1, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestSubjectUnion1$Outbound = - | SyncReconcileRequestSubject1$Outbound - | any; - -/** @internal */ -export const SyncReconcileRequestSubjectUnion1$outboundSchema: z.ZodType< - SyncReconcileRequestSubjectUnion1$Outbound, - SyncReconcileRequestSubjectUnion1 -> = z.union([ - z.lazy(() => SyncReconcileRequestSubject1$outboundSchema), - z.any(), -]); - -export function syncReconcileRequestSubjectUnion1ToJSON( - syncReconcileRequestSubjectUnion1: SyncReconcileRequestSubjectUnion1, -): string { - return JSON.stringify( - SyncReconcileRequestSubjectUnion1$outboundSchema.parse( - syncReconcileRequestSubjectUnion1, - ), - ); -} - -/** @internal */ -export type SyncReconcileRequestEvent2$Outbound = { - kind: string; - message: string; - raw?: any | null | undefined; - severity: string; - subject?: SyncReconcileRequestSubject1$Outbound | any | null | undefined; - timestamp: string; -}; - -/** @internal */ -export const SyncReconcileRequestEvent2$outboundSchema: z.ZodType< - SyncReconcileRequestEvent2$Outbound, - SyncReconcileRequestEvent2 -> = z.object({ - kind: z.string(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - severity: EventSeverity1$outboundSchema, - subject: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSubject1$outboundSchema), - z.any(), - ]), - ).optional(), - timestamp: z.date().transform(v => v.toISOString()), -}); - -export function syncReconcileRequestEvent2ToJSON( - syncReconcileRequestEvent2: SyncReconcileRequestEvent2, -): string { - return JSON.stringify( - SyncReconcileRequestEvent2$outboundSchema.parse(syncReconcileRequestEvent2), - ); -} - -/** @internal */ -export const MemoryUnit2$outboundSchema: z.ZodEnum = z.enum( - MemoryUnit2, -); - -/** @internal */ -export type Memory2$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Memory2$outboundSchema: z.ZodType = z - .object({ - unit: MemoryUnit2$outboundSchema, - value: z.number(), - }); - -export function memory2ToJSON(memory2: Memory2): string { - return JSON.stringify(Memory2$outboundSchema.parse(memory2)); -} - -/** @internal */ -export type MemoryUnion2$Outbound = Memory2$Outbound | any; - -/** @internal */ -export const MemoryUnion2$outboundSchema: z.ZodType< - MemoryUnion2$Outbound, - MemoryUnion2 -> = z.union([z.lazy(() => Memory2$outboundSchema), z.any()]); - -export function memoryUnion2ToJSON(memoryUnion2: MemoryUnion2): string { - return JSON.stringify(MemoryUnion2$outboundSchema.parse(memoryUnion2)); -} - -/** @internal */ -export const ProcessCpuUnit$outboundSchema: z.ZodEnum = z - .enum(ProcessCpuUnit); - -/** @internal */ -export type ProcessCpu$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const ProcessCpu$outboundSchema: z.ZodType< - ProcessCpu$Outbound, - ProcessCpu -> = z.object({ - unit: ProcessCpuUnit$outboundSchema, - value: z.number(), -}); - -export function processCpuToJSON(processCpu: ProcessCpu): string { - return JSON.stringify(ProcessCpu$outboundSchema.parse(processCpu)); -} - -/** @internal */ -export type ProcessCpuUnion$Outbound = ProcessCpu$Outbound | any; - -/** @internal */ -export const ProcessCpuUnion$outboundSchema: z.ZodType< - ProcessCpuUnion$Outbound, - ProcessCpuUnion -> = z.union([z.lazy(() => ProcessCpu$outboundSchema), z.any()]); - -export function processCpuUnionToJSON( - processCpuUnion: ProcessCpuUnion, -): string { - return JSON.stringify(ProcessCpuUnion$outboundSchema.parse(processCpuUnion)); -} - -/** @internal */ -export const ProcessKind$outboundSchema: z.ZodEnum = z.enum( - ProcessKind, -); - -/** @internal */ -export const ProcessMemoryUnit$outboundSchema: z.ZodEnum< - typeof ProcessMemoryUnit -> = z.enum(ProcessMemoryUnit); - -/** @internal */ -export type ProcessMemory$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const ProcessMemory$outboundSchema: z.ZodType< - ProcessMemory$Outbound, - ProcessMemory -> = z.object({ - unit: ProcessMemoryUnit$outboundSchema, - value: z.number(), -}); - -export function processMemoryToJSON(processMemory: ProcessMemory): string { - return JSON.stringify(ProcessMemory$outboundSchema.parse(processMemory)); -} - -/** @internal */ -export type ProcessMemoryUnion$Outbound = ProcessMemory$Outbound | any; - -/** @internal */ -export const ProcessMemoryUnion$outboundSchema: z.ZodType< - ProcessMemoryUnion$Outbound, - ProcessMemoryUnion -> = z.union([z.lazy(() => ProcessMemory$outboundSchema), z.any()]); - -export function processMemoryUnionToJSON( - processMemoryUnion: ProcessMemoryUnion, -): string { - return JSON.stringify( - ProcessMemoryUnion$outboundSchema.parse(processMemoryUnion), - ); -} - -/** @internal */ -export type Process$Outbound = { - cpu?: ProcessCpu$Outbound | any | null | undefined; - kind: string; - memory?: ProcessMemory$Outbound | any | null | undefined; - name: string; - phase?: string | null | undefined; - pid?: number | null | undefined; - ready: boolean; - restartCount?: number | null | undefined; - unitId: string; -}; - -/** @internal */ -export const Process$outboundSchema: z.ZodType = z - .object({ - cpu: z.nullable(z.union([z.lazy(() => ProcessCpu$outboundSchema), z.any()])) - .optional(), - kind: ProcessKind$outboundSchema, - memory: z.nullable( - z.union([z.lazy(() => ProcessMemory$outboundSchema), z.any()]), - ).optional(), - name: z.string(), - phase: z.nullable(z.string()).optional(), - pid: z.nullable(z.int()).optional(), - ready: z.boolean(), - restartCount: z.nullable(z.int()).optional(), - unitId: z.string(), - }); - -export function processToJSON(process: Process): string { - return JSON.stringify(Process$outboundSchema.parse(process)); -} - -/** @internal */ -export type ProcessUnion$Outbound = Process$Outbound | any; - -/** @internal */ -export const ProcessUnion$outboundSchema: z.ZodType< - ProcessUnion$Outbound, - ProcessUnion -> = z.union([z.lazy(() => Process$outboundSchema), z.any()]); - -export function processUnionToJSON(processUnion: ProcessUnion): string { - return JSON.stringify(ProcessUnion$outboundSchema.parse(processUnion)); -} - -/** @internal */ -export const Reason9$outboundSchema: z.ZodEnum = z.enum( - Reason9, -); - -/** @internal */ -export const CollectionIssueSeverity9$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity9 -> = z.enum(CollectionIssueSeverity9); - -/** @internal */ -export type CollectionIssue9$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue9$outboundSchema: z.ZodType< - CollectionIssue9$Outbound, - CollectionIssue9 -> = z.object({ - message: z.string(), - reason: Reason9$outboundSchema, - severity: CollectionIssueSeverity9$outboundSchema, - source: z.string(), -}); - -export function collectionIssue9ToJSON( - collectionIssue9: CollectionIssue9, -): string { - return JSON.stringify( - CollectionIssue9$outboundSchema.parse(collectionIssue9), - ); -} - -/** @internal */ -export const Health9$outboundSchema: z.ZodEnum = z.enum( - Health9, -); - -/** @internal */ -export const StatusLifecycle9$outboundSchema: z.ZodEnum< - typeof StatusLifecycle9 -> = z.enum(StatusLifecycle9); - -/** @internal */ -export type HeartbeatStatus9$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus9$outboundSchema: z.ZodType< - HeartbeatStatus9$Outbound, - HeartbeatStatus9 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue9$outboundSchema)), - health: Health9$outboundSchema, - lifecycle: StatusLifecycle9$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus9ToJSON( - heartbeatStatus9: HeartbeatStatus9, -): string { - return JSON.stringify( - HeartbeatStatus9$outboundSchema.parse(heartbeatStatus9), - ); -} - -/** @internal */ -export type DataLocal2$Outbound = { - commandSupported: boolean; - cpu?: Cpu2$Outbound | any | null | undefined; - events: Array; - imagePathPresent: boolean; - memory?: Memory2$Outbound | any | null | undefined; - pid?: number | null | undefined; - process?: Process$Outbound | any | null | undefined; - readinessProbeOk?: boolean | null | undefined; - status: HeartbeatStatus9$Outbound; - triggerCount: number; - backend: "local"; -}; - -/** @internal */ -export const DataLocal2$outboundSchema: z.ZodType< - DataLocal2$Outbound, - DataLocal2 -> = z.object({ - commandSupported: z.boolean(), - cpu: z.nullable(z.union([z.lazy(() => Cpu2$outboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent2$outboundSchema)), - imagePathPresent: z.boolean(), - memory: z.nullable(z.union([z.lazy(() => Memory2$outboundSchema), z.any()])) - .optional(), - pid: z.nullable(z.int()).optional(), - process: z.nullable(z.union([z.lazy(() => Process$outboundSchema), z.any()])) - .optional(), - readinessProbeOk: z.nullable(z.boolean()).optional(), - status: z.lazy(() => HeartbeatStatus9$outboundSchema), - triggerCount: z.int(), - backend: z.literal("local"), -}); - -export function dataLocal2ToJSON(dataLocal2: DataLocal2): string { - return JSON.stringify(DataLocal2$outboundSchema.parse(dataLocal2)); -} - -/** @internal */ -export const CpuUnit1$outboundSchema: z.ZodEnum = z.enum( - CpuUnit1, -); - -/** @internal */ -export type Cpu1$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Cpu1$outboundSchema: z.ZodType = z.object({ - unit: CpuUnit1$outboundSchema, - value: z.number(), -}); - -export function cpu1ToJSON(cpu1: Cpu1): string { - return JSON.stringify(Cpu1$outboundSchema.parse(cpu1)); -} - -/** @internal */ -export type CpuUnion1$Outbound = Cpu1$Outbound | any; - -/** @internal */ -export const CpuUnion1$outboundSchema: z.ZodType< - CpuUnion1$Outbound, - CpuUnion1 -> = z.union([z.lazy(() => Cpu1$outboundSchema), z.any()]); - -export function cpuUnion1ToJSON(cpuUnion1: CpuUnion1): string { - return JSON.stringify(CpuUnion1$outboundSchema.parse(cpuUnion1)); -} - -/** @internal */ -export type InvolvedObject1$Outbound = { - apiVersion?: string | null | undefined; - fieldPath?: string | null | undefined; - kind?: string | null | undefined; - name?: string | null | undefined; - namespace?: string | null | undefined; - resourceVersion?: string | null | undefined; - uid?: string | null | undefined; -}; - -/** @internal */ -export const InvolvedObject1$outboundSchema: z.ZodType< - InvolvedObject1$Outbound, - InvolvedObject1 -> = z.object({ - apiVersion: z.nullable(z.string()).optional(), - fieldPath: z.nullable(z.string()).optional(), - kind: z.nullable(z.string()).optional(), - name: z.nullable(z.string()).optional(), - namespace: z.nullable(z.string()).optional(), - resourceVersion: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), -}); - -export function involvedObject1ToJSON( - involvedObject1: InvolvedObject1, -): string { - return JSON.stringify(InvolvedObject1$outboundSchema.parse(involvedObject1)); -} - -/** @internal */ -export type InvolvedObjectUnion1$Outbound = InvolvedObject1$Outbound | any; - -/** @internal */ -export const InvolvedObjectUnion1$outboundSchema: z.ZodType< - InvolvedObjectUnion1$Outbound, - InvolvedObjectUnion1 -> = z.union([z.lazy(() => InvolvedObject1$outboundSchema), z.any()]); - -export function involvedObjectUnion1ToJSON( - involvedObjectUnion1: InvolvedObjectUnion1, -): string { - return JSON.stringify( - InvolvedObjectUnion1$outboundSchema.parse(involvedObjectUnion1), - ); -} - -/** @internal */ -export type SyncReconcileRequestSource1$Outbound = { - component?: string | null | undefined; - host?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestSource1$outboundSchema: z.ZodType< - SyncReconcileRequestSource1$Outbound, - SyncReconcileRequestSource1 -> = z.object({ - component: z.nullable(z.string()).optional(), - host: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestSource1ToJSON( - syncReconcileRequestSource1: SyncReconcileRequestSource1, -): string { - return JSON.stringify( - SyncReconcileRequestSource1$outboundSchema.parse( - syncReconcileRequestSource1, - ), - ); -} - -/** @internal */ -export type SourceUnion1$Outbound = SyncReconcileRequestSource1$Outbound | any; - -/** @internal */ -export const SourceUnion1$outboundSchema: z.ZodType< - SourceUnion1$Outbound, - SourceUnion1 -> = z.union([ - z.lazy(() => SyncReconcileRequestSource1$outboundSchema), - z.any(), -]); - -export function sourceUnion1ToJSON(sourceUnion1: SourceUnion1): string { - return JSON.stringify(SourceUnion1$outboundSchema.parse(sourceUnion1)); -} - -/** @internal */ -export type SyncReconcileRequestEvent1$Outbound = { - count?: number | null | undefined; - eventTime?: string | null | undefined; - firstTimestamp?: string | null | undefined; - involvedObject?: InvolvedObject1$Outbound | any | null | undefined; - lastTimestamp?: string | null | undefined; - message: string; - raw?: any | null | undefined; - reason: string; - source?: SyncReconcileRequestSource1$Outbound | any | null | undefined; - type?: string | null | undefined; -}; - -/** @internal */ -export const SyncReconcileRequestEvent1$outboundSchema: z.ZodType< - SyncReconcileRequestEvent1$Outbound, - SyncReconcileRequestEvent1 -> = z.object({ - count: z.nullable(z.int()).optional(), - eventTime: z.nullable(z.date().transform(v => v.toISOString())).optional(), - firstTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - involvedObject: z.nullable( - z.union([z.lazy(() => InvolvedObject1$outboundSchema), z.any()]), - ).optional(), - lastTimestamp: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.string(), - raw: z.nullable(z.any()).optional(), - reason: z.string(), - source: z.nullable( - z.union([ - z.lazy(() => SyncReconcileRequestSource1$outboundSchema), - z.any(), - ]), - ).optional(), - type: z.nullable(z.string()).optional(), -}); - -export function syncReconcileRequestEvent1ToJSON( - syncReconcileRequestEvent1: SyncReconcileRequestEvent1, -): string { - return JSON.stringify( - SyncReconcileRequestEvent1$outboundSchema.parse(syncReconcileRequestEvent1), - ); -} - -/** @internal */ -export const MemoryUnit1$outboundSchema: z.ZodEnum = z.enum( - MemoryUnit1, -); - -/** @internal */ -export type Memory1$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const Memory1$outboundSchema: z.ZodType = z - .object({ - unit: MemoryUnit1$outboundSchema, - value: z.number(), - }); - -export function memory1ToJSON(memory1: Memory1): string { - return JSON.stringify(Memory1$outboundSchema.parse(memory1)); -} - -/** @internal */ -export type MemoryUnion1$Outbound = Memory1$Outbound | any; - -/** @internal */ -export const MemoryUnion1$outboundSchema: z.ZodType< - MemoryUnion1$Outbound, - MemoryUnion1 -> = z.union([z.lazy(() => Memory1$outboundSchema), z.any()]); - -export function memoryUnion1ToJSON(memoryUnion1: MemoryUnion1): string { - return JSON.stringify(MemoryUnion1$outboundSchema.parse(memoryUnion1)); -} - -/** @internal */ -export const CpuPodUnit1$outboundSchema: z.ZodEnum = z.enum( - CpuPodUnit1, -); - -/** @internal */ -export type CpuPod1$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const CpuPod1$outboundSchema: z.ZodType = z - .object({ - unit: CpuPodUnit1$outboundSchema, - value: z.number(), - }); - -export function cpuPod1ToJSON(cpuPod1: CpuPod1): string { - return JSON.stringify(CpuPod1$outboundSchema.parse(cpuPod1)); -} - -/** @internal */ -export type PodCpuUnion1$Outbound = CpuPod1$Outbound | any; - -/** @internal */ -export const PodCpuUnion1$outboundSchema: z.ZodType< - PodCpuUnion1$Outbound, - PodCpuUnion1 -> = z.union([z.lazy(() => CpuPod1$outboundSchema), z.any()]); - -export function podCpuUnion1ToJSON(podCpuUnion1: PodCpuUnion1): string { - return JSON.stringify(PodCpuUnion1$outboundSchema.parse(podCpuUnion1)); -} - -/** @internal */ -export const MemoryPodUnit1$outboundSchema: z.ZodEnum = z - .enum(MemoryPodUnit1); - -/** @internal */ -export type MemoryPod1$Outbound = { - unit: string; - value: number; -}; - -/** @internal */ -export const MemoryPod1$outboundSchema: z.ZodType< - MemoryPod1$Outbound, - MemoryPod1 -> = z.object({ - unit: MemoryPodUnit1$outboundSchema, - value: z.number(), -}); - -export function memoryPod1ToJSON(memoryPod1: MemoryPod1): string { - return JSON.stringify(MemoryPod1$outboundSchema.parse(memoryPod1)); -} - -/** @internal */ -export type PodMemoryUnion1$Outbound = MemoryPod1$Outbound | any; - -/** @internal */ -export const PodMemoryUnion1$outboundSchema: z.ZodType< - PodMemoryUnion1$Outbound, - PodMemoryUnion1 -> = z.union([z.lazy(() => MemoryPod1$outboundSchema), z.any()]); - -export function podMemoryUnion1ToJSON( - podMemoryUnion1: PodMemoryUnion1, -): string { - return JSON.stringify(PodMemoryUnion1$outboundSchema.parse(podMemoryUnion1)); -} - -/** @internal */ -export type OwnerReference1$Outbound = { - controller: boolean; - kind: string; - name: string; - uid: string; -}; - -/** @internal */ -export const OwnerReference1$outboundSchema: z.ZodType< - OwnerReference1$Outbound, - OwnerReference1 -> = z.object({ - controller: z.boolean(), - kind: z.string(), - name: z.string(), - uid: z.string(), -}); - -export function ownerReference1ToJSON( - ownerReference1: OwnerReference1, -): string { - return JSON.stringify(OwnerReference1$outboundSchema.parse(ownerReference1)); -} - -/** @internal */ -export type Pod1$Outbound = { - cpu?: CpuPod1$Outbound | any | null | undefined; - memory?: MemoryPod1$Outbound | any | null | undefined; - name: string; - nodeName?: string | null | undefined; - ownerReferences: Array; - phase?: string | null | undefined; - podIp?: string | null | undefined; - ready: boolean; - restartCount: number; - terminatedReason?: string | null | undefined; - uid?: string | null | undefined; - waitingReason?: string | null | undefined; -}; - -/** @internal */ -export const Pod1$outboundSchema: z.ZodType = z.object({ - cpu: z.nullable(z.union([z.lazy(() => CpuPod1$outboundSchema), z.any()])) - .optional(), - memory: z.nullable( - z.union([z.lazy(() => MemoryPod1$outboundSchema), z.any()]), - ).optional(), - name: z.string(), - nodeName: z.nullable(z.string()).optional(), - ownerReferences: z.array(z.lazy(() => OwnerReference1$outboundSchema)), - phase: z.nullable(z.string()).optional(), - podIp: z.nullable(z.string()).optional(), - ready: z.boolean(), - restartCount: z.int(), - terminatedReason: z.nullable(z.string()).optional(), - uid: z.nullable(z.string()).optional(), - waitingReason: z.nullable(z.string()).optional(), -}); - -export function pod1ToJSON(pod1: Pod1): string { - return JSON.stringify(Pod1$outboundSchema.parse(pod1)); -} - -/** @internal */ -export type Replicas1$Outbound = { - available?: number | null | undefined; - current?: number | null | undefined; - desired?: number | null | undefined; - misscheduled?: number | null | undefined; - ready?: number | null | undefined; - updated?: number | null | undefined; -}; - -/** @internal */ -export const Replicas1$outboundSchema: z.ZodType< - Replicas1$Outbound, - Replicas1 -> = z.object({ - available: z.nullable(z.int()).optional(), - current: z.nullable(z.int()).optional(), - desired: z.nullable(z.int()).optional(), - misscheduled: z.nullable(z.int()).optional(), - ready: z.nullable(z.int()).optional(), - updated: z.nullable(z.int()).optional(), -}); - -export function replicas1ToJSON(replicas1: Replicas1): string { - return JSON.stringify(Replicas1$outboundSchema.parse(replicas1)); -} - -/** @internal */ -export const Reason8$outboundSchema: z.ZodEnum = z.enum( - Reason8, -); - -/** @internal */ -export const CollectionIssueSeverity8$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity8 -> = z.enum(CollectionIssueSeverity8); - -/** @internal */ -export type CollectionIssue8$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue8$outboundSchema: z.ZodType< - CollectionIssue8$Outbound, - CollectionIssue8 -> = z.object({ - message: z.string(), - reason: Reason8$outboundSchema, - severity: CollectionIssueSeverity8$outboundSchema, - source: z.string(), -}); - -export function collectionIssue8ToJSON( - collectionIssue8: CollectionIssue8, -): string { - return JSON.stringify( - CollectionIssue8$outboundSchema.parse(collectionIssue8), - ); -} - -/** @internal */ -export const Health8$outboundSchema: z.ZodEnum = z.enum( - Health8, -); - -/** @internal */ -export const StatusLifecycle8$outboundSchema: z.ZodEnum< - typeof StatusLifecycle8 -> = z.enum(StatusLifecycle8); - -/** @internal */ -export type HeartbeatStatus8$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus8$outboundSchema: z.ZodType< - HeartbeatStatus8$Outbound, - HeartbeatStatus8 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue8$outboundSchema)), - health: Health8$outboundSchema, - lifecycle: StatusLifecycle8$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus8ToJSON( - heartbeatStatus8: HeartbeatStatus8, -): string { - return JSON.stringify( - HeartbeatStatus8$outboundSchema.parse(heartbeatStatus8), - ); -} - -/** @internal */ -export type WorkloadCondition1$Outbound = { - lastTransitionTime?: string | null | undefined; - message?: string | null | undefined; - reason?: string | null | undefined; - status: string; - type: string; -}; - -/** @internal */ -export const WorkloadCondition1$outboundSchema: z.ZodType< - WorkloadCondition1$Outbound, - WorkloadCondition1 -> = z.object({ - lastTransitionTime: z.nullable(z.date().transform(v => v.toISOString())) - .optional(), - message: z.nullable(z.string()).optional(), - reason: z.nullable(z.string()).optional(), - status: z.string(), - type: z.string(), -}); - -export function workloadCondition1ToJSON( - workloadCondition1: WorkloadCondition1, -): string { - return JSON.stringify( - WorkloadCondition1$outboundSchema.parse(workloadCondition1), - ); -} - -/** @internal */ -export type Workload1$Outbound = { - availableReplicas?: number | null | undefined; - conditions: Array; - desiredGeneration?: number | null | undefined; - desiredReplicas?: number | null | undefined; - observedGeneration?: number | null | undefined; - readyReplicas?: number | null | undefined; - rolloutReason?: string | null | undefined; - updatedReplicas?: number | null | undefined; -}; - -/** @internal */ -export const Workload1$outboundSchema: z.ZodType< - Workload1$Outbound, - Workload1 -> = z.object({ - availableReplicas: z.nullable(z.int()).optional(), - conditions: z.array(z.lazy(() => WorkloadCondition1$outboundSchema)), - desiredGeneration: z.nullable(z.int()).optional(), - desiredReplicas: z.nullable(z.int()).optional(), - observedGeneration: z.nullable(z.int()).optional(), - readyReplicas: z.nullable(z.int()).optional(), - rolloutReason: z.nullable(z.string()).optional(), - updatedReplicas: z.nullable(z.int()).optional(), -}); - -export function workload1ToJSON(workload1: Workload1): string { - return JSON.stringify(Workload1$outboundSchema.parse(workload1)); -} - -/** @internal */ -export type WorkloadUnion1$Outbound = Workload1$Outbound | any; - -/** @internal */ -export const WorkloadUnion1$outboundSchema: z.ZodType< - WorkloadUnion1$Outbound, - WorkloadUnion1 -> = z.union([z.lazy(() => Workload1$outboundSchema), z.any()]); - -export function workloadUnion1ToJSON(workloadUnion1: WorkloadUnion1): string { - return JSON.stringify(WorkloadUnion1$outboundSchema.parse(workloadUnion1)); -} - -/** @internal */ -export const WorkloadKind1$outboundSchema: z.ZodEnum = z - .enum(WorkloadKind1); - -/** @internal */ -export type DataKubernetes1$Outbound = { - cpu?: Cpu1$Outbound | any | null | undefined; - events: Array; - memory?: Memory1$Outbound | any | null | undefined; - name: string; - namespace: string; - pods: Array; - replicas: Replicas1$Outbound; - restarts?: number | null | undefined; - status: HeartbeatStatus8$Outbound; - triggerCount: number; - workload?: Workload1$Outbound | any | null | undefined; - workloadKind: string; - backend: "kubernetes"; -}; - -/** @internal */ -export const DataKubernetes1$outboundSchema: z.ZodType< - DataKubernetes1$Outbound, - DataKubernetes1 -> = z.object({ - cpu: z.nullable(z.union([z.lazy(() => Cpu1$outboundSchema), z.any()])) - .optional(), - events: z.array(z.lazy(() => SyncReconcileRequestEvent1$outboundSchema)), - memory: z.nullable(z.union([z.lazy(() => Memory1$outboundSchema), z.any()])) - .optional(), - name: z.string(), - namespace: z.string(), - pods: z.array(z.lazy(() => Pod1$outboundSchema)), - replicas: z.lazy(() => Replicas1$outboundSchema), - restarts: z.nullable(z.int()).optional(), - status: z.lazy(() => HeartbeatStatus8$outboundSchema), - triggerCount: z.int(), - workload: z.nullable( - z.union([z.lazy(() => Workload1$outboundSchema), z.any()]), - ).optional(), - workloadKind: WorkloadKind1$outboundSchema, - backend: z.literal("kubernetes"), -}); - -export function dataKubernetes1ToJSON( - dataKubernetes1: DataKubernetes1, -): string { - return JSON.stringify(DataKubernetes1$outboundSchema.parse(dataKubernetes1)); -} - -/** @internal */ -export const Reason7$outboundSchema: z.ZodEnum = z.enum( - Reason7, -); - -/** @internal */ -export const CollectionIssueSeverity7$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity7 -> = z.enum(CollectionIssueSeverity7); - -/** @internal */ -export type CollectionIssue7$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue7$outboundSchema: z.ZodType< - CollectionIssue7$Outbound, - CollectionIssue7 -> = z.object({ - message: z.string(), - reason: Reason7$outboundSchema, - severity: CollectionIssueSeverity7$outboundSchema, - source: z.string(), -}); - -export function collectionIssue7ToJSON( - collectionIssue7: CollectionIssue7, -): string { - return JSON.stringify( - CollectionIssue7$outboundSchema.parse(collectionIssue7), - ); -} - -/** @internal */ -export const Health7$outboundSchema: z.ZodEnum = z.enum( - Health7, -); - -/** @internal */ -export const StatusLifecycle7$outboundSchema: z.ZodEnum< - typeof StatusLifecycle7 -> = z.enum(StatusLifecycle7); - -/** @internal */ -export type HeartbeatStatus7$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus7$outboundSchema: z.ZodType< - HeartbeatStatus7$Outbound, - HeartbeatStatus7 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue7$outboundSchema)), - health: Health7$outboundSchema, - lifecycle: StatusLifecycle7$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus7ToJSON( - heartbeatStatus7: HeartbeatStatus7, -): string { - return JSON.stringify( - HeartbeatStatus7$outboundSchema.parse(heartbeatStatus7), - ); -} - -/** @internal */ -export type DataAzureContainerApps1$Outbound = { - appName: string; - cpu?: number | null | undefined; - environmentName?: string | null | undefined; - ingressFqdn?: string | null | undefined; - maxReplicas?: number | null | undefined; - memory?: string | null | undefined; - minReplicas?: number | null | undefined; - provisioningState?: string | null | undefined; - revision?: string | null | undefined; - runningStatus?: string | null | undefined; - status: HeartbeatStatus7$Outbound; - backend: "azureContainerApps"; -}; - -/** @internal */ -export const DataAzureContainerApps1$outboundSchema: z.ZodType< - DataAzureContainerApps1$Outbound, - DataAzureContainerApps1 -> = z.object({ - appName: z.string(), - cpu: z.nullable(z.number()).optional(), - environmentName: z.nullable(z.string()).optional(), - ingressFqdn: z.nullable(z.string()).optional(), - maxReplicas: z.nullable(z.int()).optional(), - memory: z.nullable(z.string()).optional(), - minReplicas: z.nullable(z.int()).optional(), - provisioningState: z.nullable(z.string()).optional(), - revision: z.nullable(z.string()).optional(), - runningStatus: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus7$outboundSchema), - backend: z.literal("azureContainerApps"), -}); - -export function dataAzureContainerApps1ToJSON( - dataAzureContainerApps1: DataAzureContainerApps1, -): string { - return JSON.stringify( - DataAzureContainerApps1$outboundSchema.parse(dataAzureContainerApps1), - ); -} - -/** @internal */ -export const Reason6$outboundSchema: z.ZodEnum = z.enum( - Reason6, -); - -/** @internal */ -export const CollectionIssueSeverity6$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity6 -> = z.enum(CollectionIssueSeverity6); - -/** @internal */ -export type CollectionIssue6$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue6$outboundSchema: z.ZodType< - CollectionIssue6$Outbound, - CollectionIssue6 -> = z.object({ - message: z.string(), - reason: Reason6$outboundSchema, - severity: CollectionIssueSeverity6$outboundSchema, - source: z.string(), -}); - -export function collectionIssue6ToJSON( - collectionIssue6: CollectionIssue6, -): string { - return JSON.stringify( - CollectionIssue6$outboundSchema.parse(collectionIssue6), - ); -} - -/** @internal */ -export const Health6$outboundSchema: z.ZodEnum = z.enum( - Health6, -); - -/** @internal */ -export const StatusLifecycle6$outboundSchema: z.ZodEnum< - typeof StatusLifecycle6 -> = z.enum(StatusLifecycle6); - -/** @internal */ -export type HeartbeatStatus6$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus6$outboundSchema: z.ZodType< - HeartbeatStatus6$Outbound, - HeartbeatStatus6 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue6$outboundSchema)), - health: Health6$outboundSchema, - lifecycle: StatusLifecycle6$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus6ToJSON( - heartbeatStatus6: HeartbeatStatus6, -): string { - return JSON.stringify( - HeartbeatStatus6$outboundSchema.parse(heartbeatStatus6), - ); -} - -/** @internal */ -export type DataGcpCloudRun$Outbound = { - containerImage?: string | null | undefined; - cpuLimit?: string | null | undefined; - generation?: number | null | undefined; - latestCreatedRevision?: string | null | undefined; - latestReadyRevision?: string | null | undefined; - maxInstanceCount?: number | null | undefined; - memoryLimit?: string | null | undefined; - minInstanceCount?: number | null | undefined; - observedGeneration?: number | null | undefined; - region?: string | null | undefined; - service: string; - status: HeartbeatStatus6$Outbound; - trafficCount: number; - uri?: string | null | undefined; - urls: Array; - backend: "gcpCloudRun"; -}; - -/** @internal */ -export const DataGcpCloudRun$outboundSchema: z.ZodType< - DataGcpCloudRun$Outbound, - DataGcpCloudRun -> = z.object({ - containerImage: z.nullable(z.string()).optional(), - cpuLimit: z.nullable(z.string()).optional(), - generation: z.nullable(z.int()).optional(), - latestCreatedRevision: z.nullable(z.string()).optional(), - latestReadyRevision: z.nullable(z.string()).optional(), - maxInstanceCount: z.nullable(z.int()).optional(), - memoryLimit: z.nullable(z.string()).optional(), - minInstanceCount: z.nullable(z.int()).optional(), - observedGeneration: z.nullable(z.int()).optional(), - region: z.nullable(z.string()).optional(), - service: z.string(), - status: z.lazy(() => HeartbeatStatus6$outboundSchema), - trafficCount: z.int(), - uri: z.nullable(z.string()).optional(), - urls: z.array(z.string()), - backend: z.literal("gcpCloudRun"), -}); - -export function dataGcpCloudRunToJSON( - dataGcpCloudRun: DataGcpCloudRun, -): string { - return JSON.stringify(DataGcpCloudRun$outboundSchema.parse(dataGcpCloudRun)); -} - -/** @internal */ -export const Reason5$outboundSchema: z.ZodEnum = z.enum( - Reason5, -); - -/** @internal */ -export const CollectionIssueSeverity5$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity5 -> = z.enum(CollectionIssueSeverity5); - -/** @internal */ -export type CollectionIssue5$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue5$outboundSchema: z.ZodType< - CollectionIssue5$Outbound, - CollectionIssue5 -> = z.object({ - message: z.string(), - reason: Reason5$outboundSchema, - severity: CollectionIssueSeverity5$outboundSchema, - source: z.string(), -}); - -export function collectionIssue5ToJSON( - collectionIssue5: CollectionIssue5, -): string { - return JSON.stringify( - CollectionIssue5$outboundSchema.parse(collectionIssue5), - ); -} - -/** @internal */ -export const Health5$outboundSchema: z.ZodEnum = z.enum( - Health5, -); - -/** @internal */ -export const StatusLifecycle5$outboundSchema: z.ZodEnum< - typeof StatusLifecycle5 -> = z.enum(StatusLifecycle5); - -/** @internal */ -export type HeartbeatStatus5$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus5$outboundSchema: z.ZodType< - HeartbeatStatus5$Outbound, - HeartbeatStatus5 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue5$outboundSchema)), - health: Health5$outboundSchema, - lifecycle: StatusLifecycle5$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus5ToJSON( - heartbeatStatus5: HeartbeatStatus5, -): string { - return JSON.stringify( - HeartbeatStatus5$outboundSchema.parse(heartbeatStatus5), - ); -} - -/** @internal */ -export type DataAwsLambda$Outbound = { - codeSha256?: string | null | undefined; - functionName: string; - functionUrlAuthType?: string | null | undefined; - functionUrlCorsPresent: boolean; - lastModified?: string | null | undefined; - lastUpdateStatus?: string | null | undefined; - lastUpdateStatusReason?: string | null | undefined; - lastUpdateStatusReasonCode?: string | null | undefined; - layerCount: number; - memorySizeMb?: number | null | undefined; - packageType?: string | null | undefined; - revisionId?: string | null | undefined; - runtime?: string | null | undefined; - state?: string | null | undefined; - stateReason?: string | null | undefined; - stateReasonCode?: string | null | undefined; - status: HeartbeatStatus5$Outbound; - timeoutSeconds?: number | null | undefined; - triggerCount: number; - version?: string | null | undefined; - backend: "awsLambda"; -}; - -/** @internal */ -export const DataAwsLambda$outboundSchema: z.ZodType< - DataAwsLambda$Outbound, - DataAwsLambda -> = z.object({ - codeSha256: z.nullable(z.string()).optional(), - functionName: z.string(), - functionUrlAuthType: z.nullable(z.string()).optional(), - functionUrlCorsPresent: z.boolean(), - lastModified: z.nullable(z.string()).optional(), - lastUpdateStatus: z.nullable(z.string()).optional(), - lastUpdateStatusReason: z.nullable(z.string()).optional(), - lastUpdateStatusReasonCode: z.nullable(z.string()).optional(), - layerCount: z.int(), - memorySizeMb: z.nullable(z.int()).optional(), - packageType: z.nullable(z.string()).optional(), - revisionId: z.nullable(z.string()).optional(), - runtime: z.nullable(z.string()).optional(), - state: z.nullable(z.string()).optional(), - stateReason: z.nullable(z.string()).optional(), - stateReasonCode: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus5$outboundSchema), - timeoutSeconds: z.nullable(z.int()).optional(), - triggerCount: z.int(), - version: z.nullable(z.string()).optional(), - backend: z.literal("awsLambda"), -}); - -export function dataAwsLambdaToJSON(dataAwsLambda: DataAwsLambda): string { - return JSON.stringify(DataAwsLambda$outboundSchema.parse(dataAwsLambda)); -} - -/** @internal */ -export type SyncReconcileRequestDataUnion2$Outbound = - | DataAwsLambda$Outbound - | DataGcpCloudRun$Outbound - | DataAzureContainerApps1$Outbound - | DataKubernetes1$Outbound - | DataLocal2$Outbound; - -/** @internal */ -export const SyncReconcileRequestDataUnion2$outboundSchema: z.ZodType< - SyncReconcileRequestDataUnion2$Outbound, - SyncReconcileRequestDataUnion2 -> = z.union([ - z.lazy(() => DataAwsLambda$outboundSchema), - z.lazy(() => DataGcpCloudRun$outboundSchema), - z.lazy(() => DataAzureContainerApps1$outboundSchema), - z.lazy(() => DataKubernetes1$outboundSchema), - z.lazy(() => DataLocal2$outboundSchema), -]); - -export function syncReconcileRequestDataUnion2ToJSON( - syncReconcileRequestDataUnion2: SyncReconcileRequestDataUnion2, -): string { - return JSON.stringify( - SyncReconcileRequestDataUnion2$outboundSchema.parse( - syncReconcileRequestDataUnion2, - ), - ); -} - -/** @internal */ -export type DataWorker$Outbound = { - data: - | DataAwsLambda$Outbound - | DataGcpCloudRun$Outbound - | DataAzureContainerApps1$Outbound - | DataKubernetes1$Outbound - | DataLocal2$Outbound; - resourceType: "worker"; -}; - -/** @internal */ -export const DataWorker$outboundSchema: z.ZodType< - DataWorker$Outbound, - DataWorker -> = z.object({ - data: z.union([ - z.lazy(() => DataAwsLambda$outboundSchema), - z.lazy(() => DataGcpCloudRun$outboundSchema), - z.lazy(() => DataAzureContainerApps1$outboundSchema), - z.lazy(() => DataKubernetes1$outboundSchema), - z.lazy(() => DataLocal2$outboundSchema), - ]), - resourceType: z.literal("worker"), -}); - -export function dataWorkerToJSON(dataWorker: DataWorker): string { - return JSON.stringify(DataWorker$outboundSchema.parse(dataWorker)); -} - -/** @internal */ -export const Reason4$outboundSchema: z.ZodEnum = z.enum( - Reason4, -); - -/** @internal */ -export const CollectionIssueSeverity4$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity4 -> = z.enum(CollectionIssueSeverity4); - -/** @internal */ -export type CollectionIssue4$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue4$outboundSchema: z.ZodType< - CollectionIssue4$Outbound, - CollectionIssue4 -> = z.object({ - message: z.string(), - reason: Reason4$outboundSchema, - severity: CollectionIssueSeverity4$outboundSchema, - source: z.string(), -}); - -export function collectionIssue4ToJSON( - collectionIssue4: CollectionIssue4, -): string { - return JSON.stringify( - CollectionIssue4$outboundSchema.parse(collectionIssue4), - ); -} - -/** @internal */ -export const Health4$outboundSchema: z.ZodEnum = z.enum( - Health4, -); - -/** @internal */ -export const StatusLifecycle4$outboundSchema: z.ZodEnum< - typeof StatusLifecycle4 -> = z.enum(StatusLifecycle4); - -/** @internal */ -export type HeartbeatStatus4$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus4$outboundSchema: z.ZodType< - HeartbeatStatus4$Outbound, - HeartbeatStatus4 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue4$outboundSchema)), - health: Health4$outboundSchema, - lifecycle: StatusLifecycle4$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus4ToJSON( - heartbeatStatus4: HeartbeatStatus4, -): string { - return JSON.stringify( - HeartbeatStatus4$outboundSchema.parse(heartbeatStatus4), - ); -} - -/** @internal */ -export type DataLocal1$Outbound = { - isDirectory?: boolean | null | undefined; - modifiedAt?: string | null | undefined; - path: string; - pathExists: boolean; - readonly?: boolean | null | undefined; - status: HeartbeatStatus4$Outbound; - backend: "local"; -}; - -/** @internal */ -export const DataLocal1$outboundSchema: z.ZodType< - DataLocal1$Outbound, - DataLocal1 -> = z.object({ - isDirectory: z.nullable(z.boolean()).optional(), - modifiedAt: z.nullable(z.date().transform(v => v.toISOString())).optional(), - path: z.string(), - pathExists: z.boolean(), - readonly: z.nullable(z.boolean()).optional(), - status: z.lazy(() => HeartbeatStatus4$outboundSchema), - backend: z.literal("local"), -}); - -export function dataLocal1ToJSON(dataLocal1: DataLocal1): string { - return JSON.stringify(DataLocal1$outboundSchema.parse(dataLocal1)); -} - -/** @internal */ -export const Reason3$outboundSchema: z.ZodEnum = z.enum( - Reason3, -); - -/** @internal */ -export const CollectionIssueSeverity3$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity3 -> = z.enum(CollectionIssueSeverity3); - -/** @internal */ -export type CollectionIssue3$Outbound = { - message: string; - reason: string; - severity: string; - source: string; -}; - -/** @internal */ -export const CollectionIssue3$outboundSchema: z.ZodType< - CollectionIssue3$Outbound, - CollectionIssue3 -> = z.object({ - message: z.string(), - reason: Reason3$outboundSchema, - severity: CollectionIssueSeverity3$outboundSchema, - source: z.string(), -}); - -export function collectionIssue3ToJSON( - collectionIssue3: CollectionIssue3, -): string { - return JSON.stringify( - CollectionIssue3$outboundSchema.parse(collectionIssue3), - ); -} - -/** @internal */ -export const Health3$outboundSchema: z.ZodEnum = z.enum( - Health3, -); - -/** @internal */ -export const StatusLifecycle3$outboundSchema: z.ZodEnum< - typeof StatusLifecycle3 -> = z.enum(StatusLifecycle3); - -/** @internal */ -export type HeartbeatStatus3$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; - message?: string | null | undefined; - partial: boolean; - stale: boolean; -}; - -/** @internal */ -export const HeartbeatStatus3$outboundSchema: z.ZodType< - HeartbeatStatus3$Outbound, - HeartbeatStatus3 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue3$outboundSchema)), - health: Health3$outboundSchema, - lifecycle: StatusLifecycle3$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus3ToJSON( - heartbeatStatus3: HeartbeatStatus3, -): string { - return JSON.stringify( - HeartbeatStatus3$outboundSchema.parse(heartbeatStatus3), - ); -} - -/** @internal */ -export type DataAzureBlob$Outbound = { - accessTier?: string | null | undefined; - accountKind?: string | null | undefined; - allowBlobPublicAccess?: boolean | null | undefined; - blobDeleteRetentionDays?: number | null | undefined; - blobDeleteRetentionEnabled?: boolean | null | undefined; - blobEncryptionEnabled?: boolean | null | undefined; - blobVersioningEnabled?: boolean | null | undefined; - changeFeedEnabled?: boolean | null | undefined; - changeFeedRetentionDays?: number | null | undefined; - containerDeleteRetentionDays?: number | null | undefined; - containerDeleteRetentionEnabled?: boolean | null | undefined; - containerPublicAccess?: string | null | undefined; - encryptionKeySource?: string | null | undefined; - fileEncryptionEnabled?: boolean | null | undefined; - location?: string | null | undefined; - name: string; - primaryLocation?: string | null | undefined; - provisioningState?: string | null | undefined; - publicNetworkAccess?: string | null | undefined; - queueEncryptionEnabled?: boolean | null | undefined; - resourceGroup?: string | null | undefined; - secondaryLocation?: string | null | undefined; - skuName?: string | null | undefined; - skuTier?: string | null | undefined; - status: HeartbeatStatus3$Outbound; - statusOfPrimary?: string | null | undefined; - statusOfSecondary?: string | null | undefined; - storageAccountName?: string | null | undefined; - tableEncryptionEnabled?: boolean | null | undefined; - backend: "azureBlob"; -}; - -/** @internal */ -export const DataAzureBlob$outboundSchema: z.ZodType< +import { + DataArtifactRegistry, + DataArtifactRegistry$Outbound, + DataArtifactRegistry$outboundSchema, + DataKv, + DataKv$Outbound, + DataKv$outboundSchema, + DataNetwork, + DataNetwork$Outbound, + DataNetwork$outboundSchema, + DataRemoteStackManagement, + DataRemoteStackManagement$Outbound, + DataRemoteStackManagement$outboundSchema, + DataServiceAccount, + DataServiceAccount$Outbound, + DataServiceAccount$outboundSchema, + DataVault, + DataVault$Outbound, + DataVault$outboundSchema, +} from "./collectionissue26.js"; +import { + DataAzureBlob, DataAzureBlob$Outbound, - DataAzureBlob -> = z.object({ - accessTier: z.nullable(z.string()).optional(), - accountKind: z.nullable(z.string()).optional(), - allowBlobPublicAccess: z.nullable(z.boolean()).optional(), - blobDeleteRetentionDays: z.nullable(z.int()).optional(), - blobDeleteRetentionEnabled: z.nullable(z.boolean()).optional(), - blobEncryptionEnabled: z.nullable(z.boolean()).optional(), - blobVersioningEnabled: z.nullable(z.boolean()).optional(), - changeFeedEnabled: z.nullable(z.boolean()).optional(), - changeFeedRetentionDays: z.nullable(z.int()).optional(), - containerDeleteRetentionDays: z.nullable(z.int()).optional(), - containerDeleteRetentionEnabled: z.nullable(z.boolean()).optional(), - containerPublicAccess: z.nullable(z.string()).optional(), - encryptionKeySource: z.nullable(z.string()).optional(), - fileEncryptionEnabled: z.nullable(z.boolean()).optional(), - location: z.nullable(z.string()).optional(), - name: z.string(), - primaryLocation: z.nullable(z.string()).optional(), - provisioningState: z.nullable(z.string()).optional(), - publicNetworkAccess: z.nullable(z.string()).optional(), - queueEncryptionEnabled: z.nullable(z.boolean()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - secondaryLocation: z.nullable(z.string()).optional(), - skuName: z.nullable(z.string()).optional(), - skuTier: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus3$outboundSchema), - statusOfPrimary: z.nullable(z.string()).optional(), - statusOfSecondary: z.nullable(z.string()).optional(), - storageAccountName: z.nullable(z.string()).optional(), - tableEncryptionEnabled: z.nullable(z.boolean()).optional(), - backend: z.literal("azureBlob"), -}); - -export function dataAzureBlobToJSON(dataAzureBlob: DataAzureBlob): string { - return JSON.stringify(DataAzureBlob$outboundSchema.parse(dataAzureBlob)); -} + DataAzureBlob$outboundSchema, + DataContainer, + DataContainer$Outbound, + DataContainer$outboundSchema, + DataGcpCloudStorage, + DataGcpCloudStorage$Outbound, + DataGcpCloudStorage$outboundSchema, + DataLocal1, + DataLocal1$Outbound, + DataLocal1$outboundSchema, + DataWorker, + DataWorker$Outbound, + DataWorker$outboundSchema, +} from "./datagcpcloudstorage.js"; +import { + BackendEnum, + BackendEnum$outboundSchema, + DataAzureContainerAppsEnvironment, + DataAzureContainerAppsEnvironment$Outbound, + DataAzureContainerAppsEnvironment$outboundSchema, + DataAzureResourceGroup, + DataAzureResourceGroup$Outbound, + DataAzureResourceGroup$outboundSchema, + DataAzureServiceBusNamespace, + DataAzureServiceBusNamespace$Outbound, + DataAzureServiceBusNamespace$outboundSchema, + DataAzureStorageAccount, + DataAzureStorageAccount$Outbound, + DataAzureStorageAccount$outboundSchema, + DataBuild, + DataBuild$Outbound, + DataBuild$outboundSchema, + DataServiceActivation, + DataServiceActivation$Outbound, + DataServiceActivation$outboundSchema, + HeartbeatControllerPlatform, + HeartbeatControllerPlatform$outboundSchema, + SyncReconcileRequestState, + SyncReconcileRequestState$Outbound, + SyncReconcileRequestState$outboundSchema, +} from "./heartbeatstatus46.js"; +import { + DataComputeCluster, + DataComputeCluster$Outbound, + DataComputeCluster$outboundSchema, + DataDaemon, + DataDaemon$Outbound, + DataDaemon$outboundSchema, +} from "./memoryunion4.js"; +import { + DataKubernetesCluster, + DataKubernetesCluster$Outbound, + DataKubernetesCluster$outboundSchema, + DataQueue, + DataQueue$Outbound, + DataQueue$outboundSchema, +} from "./statuslifecycle18.js"; -/** @internal */ -export const Reason2$outboundSchema: z.ZodEnum = z.enum( - Reason2, -); +export const Reason1 = { + Forbidden: "forbidden", + NotInstalled: "not-installed", + ApiUnavailable: "api-unavailable", + CollectionFailed: "collection-failed", + TimedOut: "timed-out", +} as const; +export type Reason1 = ClosedEnum; -/** @internal */ -export const CollectionIssueSeverity2$outboundSchema: z.ZodEnum< - typeof CollectionIssueSeverity2 -> = z.enum(CollectionIssueSeverity2); +export const CollectionIssueSeverity1 = { + Info: "info", + Warning: "warning", + Error: "error", +} as const; +export type CollectionIssueSeverity1 = ClosedEnum< + typeof CollectionIssueSeverity1 +>; -/** @internal */ -export type CollectionIssue2$Outbound = { +export type CollectionIssue1 = { message: string; - reason: string; - severity: string; + reason: Reason1; + severity: CollectionIssueSeverity1; source: string; }; -/** @internal */ -export const CollectionIssue2$outboundSchema: z.ZodType< - CollectionIssue2$Outbound, - CollectionIssue2 -> = z.object({ - message: z.string(), - reason: Reason2$outboundSchema, - severity: CollectionIssueSeverity2$outboundSchema, - source: z.string(), -}); - -export function collectionIssue2ToJSON( - collectionIssue2: CollectionIssue2, -): string { - return JSON.stringify( - CollectionIssue2$outboundSchema.parse(collectionIssue2), - ); -} - -/** @internal */ -export const Health2$outboundSchema: z.ZodEnum = z.enum( - Health2, -); +export const Health1 = { + Unknown: "unknown", + Healthy: "healthy", + Degraded: "degraded", + Unhealthy: "unhealthy", +} as const; +export type Health1 = ClosedEnum; -/** @internal */ -export const StatusLifecycle2$outboundSchema: z.ZodEnum< - typeof StatusLifecycle2 -> = z.enum(StatusLifecycle2); +export const StatusLifecycle1 = { + Unknown: "unknown", + Creating: "creating", + Updating: "updating", + Running: "running", + Scaling: "scaling", + Stopping: "stopping", + Stopped: "stopped", + Deleting: "deleting", + Deleted: "deleted", + Failed: "failed", +} as const; +export type StatusLifecycle1 = ClosedEnum; -/** @internal */ -export type HeartbeatStatus2$Outbound = { - collectionIssues: Array; - health: string; - lifecycle: string; +export type HeartbeatStatus1 = { + collectionIssues: Array; + health: Health1; + lifecycle: StatusLifecycle1; message?: string | null | undefined; partial: boolean; stale: boolean; }; -/** @internal */ -export const HeartbeatStatus2$outboundSchema: z.ZodType< - HeartbeatStatus2$Outbound, - HeartbeatStatus2 -> = z.object({ - collectionIssues: z.array(z.lazy(() => CollectionIssue2$outboundSchema)), - health: Health2$outboundSchema, - lifecycle: StatusLifecycle2$outboundSchema, - message: z.nullable(z.string()).optional(), - partial: z.boolean(), - stale: z.boolean(), -}); - -export function heartbeatStatus2ToJSON( - heartbeatStatus2: HeartbeatStatus2, -): string { - return JSON.stringify( - HeartbeatStatus2$outboundSchema.parse(heartbeatStatus2), - ); -} - -/** @internal */ -export type DataGcpCloudStorage$Outbound = { - bucketId?: string | null | undefined; - defaultKmsKeyName?: string | null | undefined; +export type DataAwsS3 = { + blockPublicAcls?: boolean | null | undefined; + blockPublicPolicy?: boolean | null | undefined; + bucketAclPresent?: boolean | null | undefined; + bucketLocation?: string | null | undefined; + bucketPolicyPresent?: boolean | null | undefined; encryptionConfigPresent: boolean; + encryptionEnabled?: boolean | null | undefined; + ignorePublicAcls?: boolean | null | undefined; lifecyclePresent: boolean; lifecycleRuleCount?: number | null | undefined; - location?: string | null | undefined; - locationType?: string | null | undefined; name: string; - publicAccessPrevention?: string | null | undefined; - retentionPeriod?: string | null | undefined; - retentionPolicyEffectiveTime?: string | null | undefined; - retentionPolicyIsLocked?: boolean | null | undefined; - softDeleteEffectiveTime?: string | null | undefined; - softDeleteRetentionDurationSeconds?: string | null | undefined; - status: HeartbeatStatus2$Outbound; - storageClass?: string | null | undefined; - uniformBucketLevelAccessEnabled?: boolean | null | undefined; - uniformBucketLevelAccessLockedTime?: string | null | undefined; + publicAccessBlockPresent: boolean; + region?: string | null | undefined; + restrictPublicBuckets?: boolean | null | undefined; + status: HeartbeatStatus1; versioningEnabled?: boolean | null | undefined; - backend: "gcpCloudStorage"; + versioningStatus?: string | null | undefined; + backend: "awsS3"; }; -/** @internal */ -export const DataGcpCloudStorage$outboundSchema: z.ZodType< - DataGcpCloudStorage$Outbound, - DataGcpCloudStorage -> = z.object({ - bucketId: z.nullable(z.string()).optional(), - defaultKmsKeyName: z.nullable(z.string()).optional(), - encryptionConfigPresent: z.boolean(), - lifecyclePresent: z.boolean(), - lifecycleRuleCount: z.nullable(z.int()).optional(), - location: z.nullable(z.string()).optional(), - locationType: z.nullable(z.string()).optional(), - name: z.string(), - publicAccessPrevention: z.nullable(z.string()).optional(), - retentionPeriod: z.nullable(z.string()).optional(), - retentionPolicyEffectiveTime: z.nullable(z.string()).optional(), - retentionPolicyIsLocked: z.nullable(z.boolean()).optional(), - softDeleteEffectiveTime: z.nullable(z.string()).optional(), - softDeleteRetentionDurationSeconds: z.nullable(z.string()).optional(), - status: z.lazy(() => HeartbeatStatus2$outboundSchema), - storageClass: z.nullable(z.string()).optional(), - uniformBucketLevelAccessEnabled: z.nullable(z.boolean()).optional(), - uniformBucketLevelAccessLockedTime: z.nullable(z.string()).optional(), - versioningEnabled: z.nullable(z.boolean()).optional(), - backend: z.literal("gcpCloudStorage"), -}); +export type SyncReconcileRequestDataUnion1 = + | DataAwsS3 + | DataGcpCloudStorage + | DataAzureBlob + | DataLocal1; -export function dataGcpCloudStorageToJSON( - dataGcpCloudStorage: DataGcpCloudStorage, -): string { - return JSON.stringify( - DataGcpCloudStorage$outboundSchema.parse(dataGcpCloudStorage), - ); -} +export type DataStorage = { + data: DataAwsS3 | DataGcpCloudStorage | DataAzureBlob | DataLocal1; + resourceType: "storage"; +}; + +export type SyncReconcileRequestDataUnion15 = + | DataStorage + | DataWorker + | DataContainer + | DataDaemon + | DataComputeCluster + | DataKubernetesCluster + | DataQueue + | DataKv + | DataVault + | DataServiceAccount + | DataNetwork + | DataRemoteStackManagement + | DataArtifactRegistry + | DataBuild + | DataServiceActivation + | DataAzureResourceGroup + | DataAzureStorageAccount + | DataAzureContainerAppsEnvironment + | DataAzureServiceBusNamespace; + +export const Format = { + Json: "json", + Yaml: "yaml", + Text: "text", +} as const; +export type Format = ClosedEnum; + +export type Raw = { + body: string; + collectedAt: Date; + format: Format; + source: string; + truncated: boolean; +}; + +export type Heartbeat = { + backend: BackendEnum; + /** + * Represents the target cloud platform. + */ + controllerPlatform: HeartbeatControllerPlatform; + data: + | DataStorage + | DataWorker + | DataContainer + | DataDaemon + | DataComputeCluster + | DataKubernetesCluster + | DataQueue + | DataKv + | DataVault + | DataServiceAccount + | DataNetwork + | DataRemoteStackManagement + | DataArtifactRegistry + | DataBuild + | DataServiceActivation + | DataAzureResourceGroup + | DataAzureStorageAccount + | DataAzureContainerAppsEnvironment + | DataAzureServiceBusNamespace; + deploymentId?: string | null | undefined; + observedAt: Date; + raw: Array; + resourceId: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + resourceType: string; +}; + +/** + * Agent host OS. + */ +export const SyncReconcileRequestAgentOs = { + Linux: "linux", + Macos: "macos", + Windows: "windows", +} as const; +/** + * Agent host OS. + */ +export type SyncReconcileRequestAgentOs = ClosedEnum< + typeof SyncReconcileRequestAgentOs +>; + +/** + * Agent host architecture. + */ +export const SyncReconcileRequestAgentArch = { + X8664: "x86_64", + Aarch64: "aarch64", +} as const; +/** + * Agent host architecture. + */ +export type SyncReconcileRequestAgentArch = ClosedEnum< + typeof SyncReconcileRequestAgentArch +>; + +/** + * Supervisor regime: os-service or kubernetes. + */ +export const SyncReconcileRequestRegime = { + OsService: "os-service", + Kubernetes: "kubernetes", +} as const; +/** + * Supervisor regime: os-service or kubernetes. + */ +export type SyncReconcileRequestRegime = ClosedEnum< + typeof SyncReconcileRequestRegime +>; + +/** + * Request to reconcile deployment state + */ +export type SyncReconcileRequest = { + /** + * Deployment ID to reconcile state for + */ + deploymentId: string; + /** + * Lock session (push model only) - verifies lock ownership + */ + session?: string | undefined; + /** + * Complete deployment state after step() execution + */ + state: SyncReconcileRequestState; + /** + * Update heartbeat timestamp (for successful health checks) + */ + updateHeartbeat?: boolean | undefined; + /** + * Delay before this deployment should be acquired again. + */ + suggestedDelayMs?: number | undefined; + /** + * Latest typed resource heartbeats collected during this step. + */ + heartbeats?: Array | undefined; + /** + * Agent binary version from the last /v1/sync. + */ + agentVersion?: string | null | undefined; + /** + * Agent host OS. + */ + agentOs?: SyncReconcileRequestAgentOs | null | undefined; + /** + * Agent host architecture. + */ + agentArch?: SyncReconcileRequestAgentArch | null | undefined; + /** + * Supervisor regime: os-service or kubernetes. + */ + regime?: SyncReconcileRequestRegime | null | undefined; + /** + * Container image repository the agent was pulled from (no tag), chart-injected at install time. Surfaced in the dashboard pin-version UI so admins see the registry. + */ + agentImageRepository?: string | null | undefined; +}; /** @internal */ export const Reason1$outboundSchema: z.ZodEnum = z.enum( @@ -34471,9 +480,9 @@ export const SyncReconcileRequestDataUnion1$outboundSchema: z.ZodType< SyncReconcileRequestDataUnion1 > = z.union([ z.lazy(() => DataAwsS3$outboundSchema), - z.lazy(() => DataGcpCloudStorage$outboundSchema), - z.lazy(() => DataAzureBlob$outboundSchema), - z.lazy(() => DataLocal1$outboundSchema), + DataGcpCloudStorage$outboundSchema, + DataAzureBlob$outboundSchema, + DataLocal1$outboundSchema, ]); export function syncReconcileRequestDataUnion1ToJSON( @@ -34503,9 +512,9 @@ export const DataStorage$outboundSchema: z.ZodType< > = z.object({ data: z.union([ z.lazy(() => DataAwsS3$outboundSchema), - z.lazy(() => DataGcpCloudStorage$outboundSchema), - z.lazy(() => DataAzureBlob$outboundSchema), - z.lazy(() => DataLocal1$outboundSchema), + DataGcpCloudStorage$outboundSchema, + DataAzureBlob$outboundSchema, + DataLocal1$outboundSchema, ]), resourceType: z.literal("storage"), }); @@ -34542,24 +551,24 @@ export const SyncReconcileRequestDataUnion15$outboundSchema: z.ZodType< SyncReconcileRequestDataUnion15 > = z.union([ z.lazy(() => DataStorage$outboundSchema), - z.lazy(() => DataWorker$outboundSchema), - z.lazy(() => DataContainer$outboundSchema), - z.lazy(() => DataDaemon$outboundSchema), - z.lazy(() => DataComputeCluster$outboundSchema), - z.lazy(() => DataKubernetesCluster$outboundSchema), - z.lazy(() => DataQueue$outboundSchema), - z.lazy(() => DataKv$outboundSchema), - z.lazy(() => DataVault$outboundSchema), - z.lazy(() => DataServiceAccount$outboundSchema), - z.lazy(() => DataNetwork$outboundSchema), - z.lazy(() => DataRemoteStackManagement$outboundSchema), - z.lazy(() => DataArtifactRegistry$outboundSchema), - z.lazy(() => DataBuild$outboundSchema), - z.lazy(() => DataServiceActivation$outboundSchema), - z.lazy(() => DataAzureResourceGroup$outboundSchema), - z.lazy(() => DataAzureStorageAccount$outboundSchema), - z.lazy(() => DataAzureContainerAppsEnvironment$outboundSchema), - z.lazy(() => DataAzureServiceBusNamespace$outboundSchema), + DataWorker$outboundSchema, + DataContainer$outboundSchema, + DataDaemon$outboundSchema, + DataComputeCluster$outboundSchema, + DataKubernetesCluster$outboundSchema, + DataQueue$outboundSchema, + DataKv$outboundSchema, + DataVault$outboundSchema, + DataServiceAccount$outboundSchema, + DataNetwork$outboundSchema, + DataRemoteStackManagement$outboundSchema, + DataArtifactRegistry$outboundSchema, + DataBuild$outboundSchema, + DataServiceActivation$outboundSchema, + DataAzureResourceGroup$outboundSchema, + DataAzureStorageAccount$outboundSchema, + DataAzureContainerAppsEnvironment$outboundSchema, + DataAzureServiceBusNamespace$outboundSchema, ]); export function syncReconcileRequestDataUnion15ToJSON( @@ -34637,24 +646,24 @@ export const Heartbeat$outboundSchema: z.ZodType< controllerPlatform: HeartbeatControllerPlatform$outboundSchema, data: z.union([ z.lazy(() => DataStorage$outboundSchema), - z.lazy(() => DataWorker$outboundSchema), - z.lazy(() => DataContainer$outboundSchema), - z.lazy(() => DataDaemon$outboundSchema), - z.lazy(() => DataComputeCluster$outboundSchema), - z.lazy(() => DataKubernetesCluster$outboundSchema), - z.lazy(() => DataQueue$outboundSchema), - z.lazy(() => DataKv$outboundSchema), - z.lazy(() => DataVault$outboundSchema), - z.lazy(() => DataServiceAccount$outboundSchema), - z.lazy(() => DataNetwork$outboundSchema), - z.lazy(() => DataRemoteStackManagement$outboundSchema), - z.lazy(() => DataArtifactRegistry$outboundSchema), - z.lazy(() => DataBuild$outboundSchema), - z.lazy(() => DataServiceActivation$outboundSchema), - z.lazy(() => DataAzureResourceGroup$outboundSchema), - z.lazy(() => DataAzureStorageAccount$outboundSchema), - z.lazy(() => DataAzureContainerAppsEnvironment$outboundSchema), - z.lazy(() => DataAzureServiceBusNamespace$outboundSchema), + DataWorker$outboundSchema, + DataContainer$outboundSchema, + DataDaemon$outboundSchema, + DataComputeCluster$outboundSchema, + DataKubernetesCluster$outboundSchema, + DataQueue$outboundSchema, + DataKv$outboundSchema, + DataVault$outboundSchema, + DataServiceAccount$outboundSchema, + DataNetwork$outboundSchema, + DataRemoteStackManagement$outboundSchema, + DataArtifactRegistry$outboundSchema, + DataBuild$outboundSchema, + DataServiceActivation$outboundSchema, + DataAzureResourceGroup$outboundSchema, + DataAzureStorageAccount$outboundSchema, + DataAzureContainerAppsEnvironment$outboundSchema, + DataAzureServiceBusNamespace$outboundSchema, ]), deploymentId: z.nullable(z.string()).optional(), observedAt: z.date().transform(v => v.toISOString()), @@ -34667,6 +676,21 @@ export function heartbeatToJSON(heartbeat: Heartbeat): string { return JSON.stringify(Heartbeat$outboundSchema.parse(heartbeat)); } +/** @internal */ +export const SyncReconcileRequestAgentOs$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestAgentOs +> = z.enum(SyncReconcileRequestAgentOs); + +/** @internal */ +export const SyncReconcileRequestAgentArch$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestAgentArch +> = z.enum(SyncReconcileRequestAgentArch); + +/** @internal */ +export const SyncReconcileRequestRegime$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestRegime +> = z.enum(SyncReconcileRequestRegime); + /** @internal */ export type SyncReconcileRequest$Outbound = { deploymentId: string; @@ -34675,6 +699,11 @@ export type SyncReconcileRequest$Outbound = { updateHeartbeat?: boolean | undefined; suggestedDelayMs?: number | undefined; heartbeats?: Array | undefined; + agentVersion?: string | null | undefined; + agentOs?: string | null | undefined; + agentArch?: string | null | undefined; + regime?: string | null | undefined; + agentImageRepository?: string | null | undefined; }; /** @internal */ @@ -34684,10 +713,16 @@ export const SyncReconcileRequest$outboundSchema: z.ZodType< > = z.object({ deploymentId: z.string(), session: z.string().optional(), - state: z.lazy(() => SyncReconcileRequestState$outboundSchema), + state: SyncReconcileRequestState$outboundSchema, updateHeartbeat: z.boolean().optional(), suggestedDelayMs: z.int().optional(), heartbeats: z.array(z.lazy(() => Heartbeat$outboundSchema)).optional(), + agentVersion: z.nullable(z.string()).optional(), + agentOs: z.nullable(SyncReconcileRequestAgentOs$outboundSchema).optional(), + agentArch: z.nullable(SyncReconcileRequestAgentArch$outboundSchema) + .optional(), + regime: z.nullable(SyncReconcileRequestRegime$outboundSchema).optional(), + agentImageRepository: z.nullable(z.string()).optional(), }); export function syncReconcileRequestToJSON( diff --git a/client-sdks/platform/typescript/src/models/syncreconcilerequestpreparedstackoverridegcpstack.ts b/client-sdks/platform/typescript/src/models/syncreconcilerequestpreparedstackoverridegcpstack.ts new file mode 100644 index 000000000..f9695243f --- /dev/null +++ b/client-sdks/platform/typescript/src/models/syncreconcilerequestpreparedstackoverridegcpstack.ts @@ -0,0 +1,6306 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { ClosedEnum } from "../types/enums.js"; + +export const SyncReconcileRequestCurrentReleaseTypeStringList = { + StringList: "stringList", +} as const; +export type SyncReconcileRequestCurrentReleaseTypeStringList = ClosedEnum< + typeof SyncReconcileRequestCurrentReleaseTypeStringList +>; + +export type SyncReconcileRequestCurrentReleaseDefaultStringList = { + type: SyncReconcileRequestCurrentReleaseTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const SyncReconcileRequestCurrentReleaseTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncReconcileRequestCurrentReleaseTypeBoolean = ClosedEnum< + typeof SyncReconcileRequestCurrentReleaseTypeBoolean +>; + +export type SyncReconcileRequestCurrentReleaseDefaultBoolean = { + type: SyncReconcileRequestCurrentReleaseTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const SyncReconcileRequestCurrentReleaseTypeNumber = { + Number: "number", +} as const; +export type SyncReconcileRequestCurrentReleaseTypeNumber = ClosedEnum< + typeof SyncReconcileRequestCurrentReleaseTypeNumber +>; + +export type SyncReconcileRequestCurrentReleaseDefaultNumber = { + type: SyncReconcileRequestCurrentReleaseTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const SyncReconcileRequestCurrentReleaseTypeString = { + String: "string", +} as const; +export type SyncReconcileRequestCurrentReleaseTypeString = ClosedEnum< + typeof SyncReconcileRequestCurrentReleaseTypeString +>; + +export type SyncReconcileRequestCurrentReleaseDefaultString = { + type: SyncReconcileRequestCurrentReleaseTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncReconcileRequestCurrentReleaseDefaultUnion = + | SyncReconcileRequestCurrentReleaseDefaultString + | SyncReconcileRequestCurrentReleaseDefaultNumber + | SyncReconcileRequestCurrentReleaseDefaultBoolean + | SyncReconcileRequestCurrentReleaseDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const SyncReconcileRequestCurrentReleaseTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncReconcileRequestCurrentReleaseTypeEnvEnum = ClosedEnum< + typeof SyncReconcileRequestCurrentReleaseTypeEnvEnum +>; + +export type SyncReconcileRequestCurrentReleaseTypeUnion = + | SyncReconcileRequestCurrentReleaseTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncReconcileRequestCurrentReleaseEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: SyncReconcileRequestCurrentReleaseTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const CurrentReleaseStateKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type CurrentReleaseStateKind = ClosedEnum< + typeof CurrentReleaseStateKind +>; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileRequestCurrentReleasePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileRequestCurrentReleasePlatform = ClosedEnum< + typeof SyncReconcileRequestCurrentReleasePlatform +>; + +/** + * Who can provide a stack input value. + */ +export const SyncReconcileRequestCurrentReleaseProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncReconcileRequestCurrentReleaseProvidedBy = ClosedEnum< + typeof SyncReconcileRequestCurrentReleaseProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type SyncReconcileRequestCurrentReleaseValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type SyncReconcileRequestCurrentReleaseValidationUnion = + | SyncReconcileRequestCurrentReleaseValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type SyncReconcileRequestCurrentReleaseInput = { + default?: + | SyncReconcileRequestCurrentReleaseDefaultString + | SyncReconcileRequestCurrentReleaseDefaultNumber + | SyncReconcileRequestCurrentReleaseDefaultBoolean + | SyncReconcileRequestCurrentReleaseDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: CurrentReleaseStateKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncReconcileRequestCurrentReleaseValidation + | any + | null + | undefined; +}; + +export const SyncReconcileRequestCurrentReleaseManagementEnum = { + Auto: "auto", +} as const; +export type SyncReconcileRequestCurrentReleaseManagementEnum = ClosedEnum< + typeof SyncReconcileRequestCurrentReleaseManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestCurrentReleaseOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileRequestCurrentReleaseOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestCurrentReleaseOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestCurrentReleaseOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestCurrentReleaseOverrideEffect = ClosedEnum< + typeof SyncReconcileRequestCurrentReleaseOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestCurrentReleaseOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestCurrentReleaseOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestCurrentReleaseOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestCurrentReleaseOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestCurrentReleaseOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestCurrentReleaseOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | SyncReconcileRequestCurrentReleaseOverrideAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestCurrentReleaseOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestCurrentReleaseOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestCurrentReleaseOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestCurrentReleaseOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestCurrentReleaseOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type CurrentReleaseOverrideConditionStateResource = { + expression: string; + title: string; +}; + +export type CurrentReleaseOverrideStateResourceConditionUnion = + | CurrentReleaseOverrideConditionStateResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseOverrideGcpResource = { + condition?: + | CurrentReleaseOverrideConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type CurrentReleaseOverrideConditionState = { + expression: string; + title: string; +}; + +export type CurrentReleaseOverrideStateConditionUnion = + | CurrentReleaseOverrideConditionState + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseOverrideGcpStack = { + condition?: CurrentReleaseOverrideConditionState | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestCurrentReleaseOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileRequestCurrentReleaseOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestCurrentReleaseOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestCurrentReleaseOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestCurrentReleaseOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestCurrentReleaseOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestCurrentReleaseOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestCurrentReleaseOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestCurrentReleaseOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestCurrentReleaseOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestCurrentReleaseOverrideUnion = + | SyncReconcileRequestCurrentReleaseOverride + | string; + +export type SyncReconcileRequestCurrentReleaseManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestCurrentReleaseExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileRequestCurrentReleaseExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestCurrentReleaseExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestCurrentReleaseExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestCurrentReleaseExtendEffect = ClosedEnum< + typeof SyncReconcileRequestCurrentReleaseExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestCurrentReleaseExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestCurrentReleaseExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestCurrentReleaseExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestCurrentReleaseExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestCurrentReleaseExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestCurrentReleaseExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileRequestCurrentReleaseExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestCurrentReleaseExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestCurrentReleaseExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestCurrentReleaseExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestCurrentReleaseExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestCurrentReleaseExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type CurrentReleaseExtendConditionStateResource = { + expression: string; + title: string; +}; + +export type CurrentReleaseExtendStateResourceConditionUnion = + | CurrentReleaseExtendConditionStateResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseExtendGcpResource = { + condition?: + | CurrentReleaseExtendConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type CurrentReleaseExtendConditionState = { + expression: string; + title: string; +}; + +export type CurrentReleaseExtendStateConditionUnion = + | CurrentReleaseExtendConditionState + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseExtendGcpStack = { + condition?: CurrentReleaseExtendConditionState | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestCurrentReleaseExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileRequestCurrentReleaseExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestCurrentReleaseExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestCurrentReleaseExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestCurrentReleaseExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestCurrentReleaseExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestCurrentReleaseExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestCurrentReleaseExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestCurrentReleaseExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestCurrentReleaseExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestCurrentReleaseExtendUnion = + | SyncReconcileRequestCurrentReleaseExtend + | string; + +export type SyncReconcileRequestCurrentReleaseManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array; + }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type SyncReconcileRequestCurrentReleaseManagementUnion = + | SyncReconcileRequestCurrentReleaseManagement1 + | SyncReconcileRequestCurrentReleaseManagement2 + | SyncReconcileRequestCurrentReleaseManagementEnum; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestCurrentReleaseProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileRequestCurrentReleaseProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestCurrentReleaseProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestCurrentReleaseProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestCurrentReleaseProfileEffect = ClosedEnum< + typeof SyncReconcileRequestCurrentReleaseProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestCurrentReleaseProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestCurrentReleaseProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestCurrentReleaseProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestCurrentReleaseProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestCurrentReleaseProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestCurrentReleaseProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileRequestCurrentReleaseProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestCurrentReleaseProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestCurrentReleaseProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestCurrentReleaseProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestCurrentReleaseProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestCurrentReleaseProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type CurrentReleaseProfileConditionStateResource = { + expression: string; + title: string; +}; + +export type CurrentReleaseProfileStateResourceConditionUnion = + | CurrentReleaseProfileConditionStateResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseProfileGcpResource = { + condition?: + | CurrentReleaseProfileConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type CurrentReleaseProfileConditionState = { + expression: string; + title: string; +}; + +export type CurrentReleaseProfileStateConditionUnion = + | CurrentReleaseProfileConditionState + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestCurrentReleaseProfileGcpStack = { + condition?: CurrentReleaseProfileConditionState | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestCurrentReleaseProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileRequestCurrentReleaseProfileGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestCurrentReleaseProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestCurrentReleaseProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestCurrentReleaseProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestCurrentReleaseProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestCurrentReleaseProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestCurrentReleaseProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestCurrentReleaseProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestCurrentReleaseProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestCurrentReleaseProfileUnion = + | SyncReconcileRequestCurrentReleaseProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncReconcileRequestCurrentReleasePermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncReconcileRequestCurrentReleaseManagement1 + | SyncReconcileRequestCurrentReleaseManagement2 + | SyncReconcileRequestCurrentReleaseManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileRequestCurrentReleaseConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncReconcileRequestCurrentReleaseDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const CurrentReleaseStateLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type CurrentReleaseStateLifecycle = ClosedEnum< + typeof CurrentReleaseStateLifecycle +>; + +export type SyncReconcileRequestCurrentReleaseResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncReconcileRequestCurrentReleaseConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: CurrentReleaseStateLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileRequestCurrentReleaseSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileRequestCurrentReleaseSupportedPlatform = ClosedEnum< + typeof SyncReconcileRequestCurrentReleaseSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncReconcileRequestCurrentReleaseStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncReconcileRequestCurrentReleasePermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncReconcileRequestCurrentReleaseResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +/** + * Release metadata + * + * @remarks + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. + */ +export type SyncReconcileRequestCurrentRelease = { + /** + * Short description of the release + */ + description?: string | null | undefined; + /** + * Release ID (e.g., rel_xyz) + */ + releaseId: string; + /** + * A bag of resources, unaware of any cloud. + */ + stack: SyncReconcileRequestCurrentReleaseStack; + /** + * Version string (e.g., 2.1.0) + */ + version?: string | null | undefined; +}; + +export type SyncReconcileRequestCurrentReleaseUnion = + | SyncReconcileRequestCurrentRelease + | any; + +export const SyncReconcileRequestPlatformTest = { + Test: "test", +} as const; +export type SyncReconcileRequestPlatformTest = ClosedEnum< + typeof SyncReconcileRequestPlatformTest +>; + +/** + * Test platform environment information (mock) + */ +export type SyncReconcileRequestEnvironmentInfoTest = { + /** + * Test identifier for this environment + */ + testId: string; + platform: SyncReconcileRequestPlatformTest; +}; + +export const SyncReconcileRequestPlatformLocal = { + Local: "local", +} as const; +export type SyncReconcileRequestPlatformLocal = ClosedEnum< + typeof SyncReconcileRequestPlatformLocal +>; + +/** + * Local platform environment information + */ +export type SyncReconcileRequestEnvironmentInfoLocal = { + /** + * Architecture (e.g., "x86_64", "aarch64") + */ + arch: string; + /** + * Hostname of the machine running the deployment + */ + hostname: string; + /** + * Operating system (e.g., "linux", "macos", "windows") + */ + os: string; + platform: SyncReconcileRequestPlatformLocal; +}; + +export const SyncReconcileRequestPlatformAzure = { + Azure: "azure", +} as const; +export type SyncReconcileRequestPlatformAzure = ClosedEnum< + typeof SyncReconcileRequestPlatformAzure +>; + +/** + * Azure-specific environment information + */ +export type SyncReconcileRequestEnvironmentInfoAzure = { + /** + * Azure location/region + */ + location: string; + /** + * Azure subscription ID + */ + subscriptionId: string; + /** + * Azure tenant ID + */ + tenantId: string; + platform: SyncReconcileRequestPlatformAzure; +}; + +export const SyncReconcileRequestPlatformGcp = { + Gcp: "gcp", +} as const; +export type SyncReconcileRequestPlatformGcp = ClosedEnum< + typeof SyncReconcileRequestPlatformGcp +>; + +/** + * GCP-specific environment information + */ +export type SyncReconcileRequestEnvironmentInfoGcp = { + /** + * GCP project ID (e.g., "my-project") + */ + projectId: string; + /** + * GCP project number (e.g., "123456789012") + */ + projectNumber: string; + /** + * GCP region + */ + region: string; + platform: SyncReconcileRequestPlatformGcp; +}; + +export const SyncReconcileRequestPlatformAws = { + Aws: "aws", +} as const; +export type SyncReconcileRequestPlatformAws = ClosedEnum< + typeof SyncReconcileRequestPlatformAws +>; + +/** + * AWS-specific environment information + */ +export type SyncReconcileRequestEnvironmentInfoAws = { + /** + * AWS account ID + */ + accountId: string; + /** + * AWS region + */ + region: string; + platform: SyncReconcileRequestPlatformAws; +}; + +export type SyncReconcileRequestEnvironmentInfoUnion = + | SyncReconcileRequestEnvironmentInfoGcp + | SyncReconcileRequestEnvironmentInfoAzure + | SyncReconcileRequestEnvironmentInfoLocal + | SyncReconcileRequestEnvironmentInfoAws + | SyncReconcileRequestEnvironmentInfoTest + | any; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type SyncReconcileRequestError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable?: boolean | undefined; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type SyncReconcileRequestErrorUnion = SyncReconcileRequestError | any; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileRequestPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileRequestPlatform = ClosedEnum< + typeof SyncReconcileRequestPlatform +>; + +export const SyncReconcileRequestPreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type SyncReconcileRequestPreparedStackTypeStringList = ClosedEnum< + typeof SyncReconcileRequestPreparedStackTypeStringList +>; + +export type SyncReconcileRequestPreparedStackDefaultStringList = { + type: SyncReconcileRequestPreparedStackTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const SyncReconcileRequestPreparedStackTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncReconcileRequestPreparedStackTypeBoolean = ClosedEnum< + typeof SyncReconcileRequestPreparedStackTypeBoolean +>; + +export type SyncReconcileRequestPreparedStackDefaultBoolean = { + type: SyncReconcileRequestPreparedStackTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const SyncReconcileRequestPreparedStackTypeNumber = { + Number: "number", +} as const; +export type SyncReconcileRequestPreparedStackTypeNumber = ClosedEnum< + typeof SyncReconcileRequestPreparedStackTypeNumber +>; + +export type SyncReconcileRequestPreparedStackDefaultNumber = { + type: SyncReconcileRequestPreparedStackTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const SyncReconcileRequestPreparedStackTypeString = { + String: "string", +} as const; +export type SyncReconcileRequestPreparedStackTypeString = ClosedEnum< + typeof SyncReconcileRequestPreparedStackTypeString +>; + +export type SyncReconcileRequestPreparedStackDefaultString = { + type: SyncReconcileRequestPreparedStackTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncReconcileRequestPreparedStackDefaultUnion = + | SyncReconcileRequestPreparedStackDefaultString + | SyncReconcileRequestPreparedStackDefaultNumber + | SyncReconcileRequestPreparedStackDefaultBoolean + | SyncReconcileRequestPreparedStackDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const SyncReconcileRequestPreparedStackTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncReconcileRequestPreparedStackTypeEnvEnum = ClosedEnum< + typeof SyncReconcileRequestPreparedStackTypeEnvEnum +>; + +export type SyncReconcileRequestPreparedStackTypeUnion = + | SyncReconcileRequestPreparedStackTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncReconcileRequestPreparedStackEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: SyncReconcileRequestPreparedStackTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const PreparedStackStateKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type PreparedStackStateKind = ClosedEnum; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileRequestPreparedStackPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileRequestPreparedStackPlatform = ClosedEnum< + typeof SyncReconcileRequestPreparedStackPlatform +>; + +/** + * Who can provide a stack input value. + */ +export const SyncReconcileRequestPreparedStackProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncReconcileRequestPreparedStackProvidedBy = ClosedEnum< + typeof SyncReconcileRequestPreparedStackProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type SyncReconcileRequestPreparedStackValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type SyncReconcileRequestPreparedStackValidationUnion = + | SyncReconcileRequestPreparedStackValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type SyncReconcileRequestPreparedStackInput = { + default?: + | SyncReconcileRequestPreparedStackDefaultString + | SyncReconcileRequestPreparedStackDefaultNumber + | SyncReconcileRequestPreparedStackDefaultBoolean + | SyncReconcileRequestPreparedStackDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: PreparedStackStateKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncReconcileRequestPreparedStackValidation + | any + | null + | undefined; +}; + +export const SyncReconcileRequestPreparedStackManagementEnum = { + Auto: "auto", +} as const; +export type SyncReconcileRequestPreparedStackManagementEnum = ClosedEnum< + typeof SyncReconcileRequestPreparedStackManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestPreparedStackOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestPreparedStackOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestPreparedStackOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileRequestPreparedStackOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestPreparedStackOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestPreparedStackOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestPreparedStackOverrideEffect = ClosedEnum< + typeof SyncReconcileRequestPreparedStackOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestPreparedStackOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestPreparedStackOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestPreparedStackOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestPreparedStackOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestPreparedStackOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestPreparedStackOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestPreparedStackOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestPreparedStackOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileRequestPreparedStackOverrideAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestPreparedStackOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestPreparedStackOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestPreparedStackOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestPreparedStackOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestPreparedStackOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type PreparedStackOverrideConditionStateResource = { + expression: string; + title: string; +}; + +export type PreparedStackOverrideStateResourceConditionUnion = + | PreparedStackOverrideConditionStateResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestPreparedStackOverrideGcpResource = { + condition?: + | PreparedStackOverrideConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type PreparedStackOverrideConditionStateStack = { + expression: string; + title: string; +}; + +export type PreparedStackOverrideStateStackConditionUnion = + | PreparedStackOverrideConditionStateStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestPreparedStackOverrideGcpStack = { + condition?: PreparedStackOverrideConditionStateStack | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeStringList$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseTypeStringList, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound = { + type: string; + value: Array; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound, + SyncReconcileRequestCurrentReleaseDefaultStringList + > = z.object({ + type: SyncReconcileRequestCurrentReleaseTypeStringList$outboundSchema, + value: z.array(z.string()), + }); + +export function syncReconcileRequestCurrentReleaseDefaultStringListToJSON( + syncReconcileRequestCurrentReleaseDefaultStringList: + SyncReconcileRequestCurrentReleaseDefaultStringList, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDefaultStringList, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeBoolean$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseTypeBoolean, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound = { + type: string; + value: boolean; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound, + SyncReconcileRequestCurrentReleaseDefaultBoolean + > = z.object({ + type: SyncReconcileRequestCurrentReleaseTypeBoolean$outboundSchema, + value: z.boolean(), + }); + +export function syncReconcileRequestCurrentReleaseDefaultBooleanToJSON( + syncReconcileRequestCurrentReleaseDefaultBoolean: + SyncReconcileRequestCurrentReleaseDefaultBoolean, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDefaultBoolean, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeNumber$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseTypeNumber, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound, + SyncReconcileRequestCurrentReleaseDefaultNumber + > = z.object({ + type: SyncReconcileRequestCurrentReleaseTypeNumber$outboundSchema, + value: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseDefaultNumberToJSON( + syncReconcileRequestCurrentReleaseDefaultNumber: + SyncReconcileRequestCurrentReleaseDefaultNumber, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDefaultNumber, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeString$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseTypeString, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDefaultString$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDefaultString$Outbound, + SyncReconcileRequestCurrentReleaseDefaultString + > = z.object({ + type: SyncReconcileRequestCurrentReleaseTypeString$outboundSchema, + value: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseDefaultStringToJSON( + syncReconcileRequestCurrentReleaseDefaultString: + SyncReconcileRequestCurrentReleaseDefaultString, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDefaultString, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDefaultUnion$Outbound = + | SyncReconcileRequestCurrentReleaseDefaultString$Outbound + | SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound + | SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound + | SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDefaultUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDefaultUnion$Outbound, + SyncReconcileRequestCurrentReleaseDefaultUnion + > = z.union([ + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema + ), + z.any(), + ]); + +export function syncReconcileRequestCurrentReleaseDefaultUnionToJSON( + syncReconcileRequestCurrentReleaseDefaultUnion: + SyncReconcileRequestCurrentReleaseDefaultUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDefaultUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDefaultUnion, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseTypeEnvEnum, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseTypeUnion$Outbound = string | any; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseTypeUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseTypeUnion$Outbound, + SyncReconcileRequestCurrentReleaseTypeUnion + > = z.union([ + SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema, + z.any(), + ]); + +export function syncReconcileRequestCurrentReleaseTypeUnionToJSON( + syncReconcileRequestCurrentReleaseTypeUnion: + SyncReconcileRequestCurrentReleaseTypeUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseTypeUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseTypeUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseEnv$Outbound = { + name: string; + targetResources?: Array | null | undefined; + type?: string | any | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseEnv$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseEnv$Outbound, + SyncReconcileRequestCurrentReleaseEnv +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileRequestCurrentReleaseTypeEnvEnum$outboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileRequestCurrentReleaseEnvToJSON( + syncReconcileRequestCurrentReleaseEnv: SyncReconcileRequestCurrentReleaseEnv, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseEnv$outboundSchema.parse( + syncReconcileRequestCurrentReleaseEnv, + ), + ); +} + +/** @internal */ +export const CurrentReleaseStateKind$outboundSchema: z.ZodEnum< + typeof CurrentReleaseStateKind +> = z.enum(CurrentReleaseStateKind); + +/** @internal */ +export const SyncReconcileRequestCurrentReleasePlatform$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleasePlatform, + ); + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProvidedBy$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseProvidedBy, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseValidation$Outbound = { + format?: string | null | undefined; + max?: string | null | undefined; + maxItems?: number | null | undefined; + maxLength?: number | null | undefined; + min?: string | null | undefined; + minItems?: number | null | undefined; + minLength?: number | null | undefined; + pattern?: string | null | undefined; + values?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseValidation$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseValidation$Outbound, + SyncReconcileRequestCurrentReleaseValidation + > = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseValidationToJSON( + syncReconcileRequestCurrentReleaseValidation: + SyncReconcileRequestCurrentReleaseValidation, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseValidation$outboundSchema.parse( + syncReconcileRequestCurrentReleaseValidation, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseValidationUnion$Outbound = + | SyncReconcileRequestCurrentReleaseValidation$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseValidationUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseValidationUnion$Outbound, + SyncReconcileRequestCurrentReleaseValidationUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseValidation$outboundSchema), + z.any(), + ]); + +export function syncReconcileRequestCurrentReleaseValidationUnionToJSON( + syncReconcileRequestCurrentReleaseValidationUnion: + SyncReconcileRequestCurrentReleaseValidationUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseValidationUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseValidationUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseInput$Outbound = { + default?: + | SyncReconcileRequestCurrentReleaseDefaultString$Outbound + | SyncReconcileRequestCurrentReleaseDefaultNumber$Outbound + | SyncReconcileRequestCurrentReleaseDefaultBoolean$Outbound + | SyncReconcileRequestCurrentReleaseDefaultStringList$Outbound + | any + | null + | undefined; + description: string; + env?: Array | undefined; + id: string; + kind: string; + label: string; + placeholder?: string | null | undefined; + platforms?: Array | null | undefined; + providedBy: Array; + required: boolean; + validation?: + | SyncReconcileRequestCurrentReleaseValidation$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseInput$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseInput$Outbound, + SyncReconcileRequestCurrentReleaseInput +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultString$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultNumber$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseDefaultStringList$outboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => SyncReconcileRequestCurrentReleaseEnv$outboundSchema), + ).optional(), + id: z.string(), + kind: CurrentReleaseStateKind$outboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncReconcileRequestCurrentReleasePlatform$outboundSchema), + ).optional(), + providedBy: z.array( + SyncReconcileRequestCurrentReleaseProvidedBy$outboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseValidation$outboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileRequestCurrentReleaseInputToJSON( + syncReconcileRequestCurrentReleaseInput: + SyncReconcileRequestCurrentReleaseInput, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseInput$outboundSchema.parse( + syncReconcileRequestCurrentReleaseInput, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseManagementEnum, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAwResource$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAwResource$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAwResourceToJSON( + syncReconcileRequestCurrentReleaseOverrideAwResource: + SyncReconcileRequestCurrentReleaseOverrideAwResource, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAwResource$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAwStackToJSON( + syncReconcileRequestCurrentReleaseOverrideAwStack: + SyncReconcileRequestCurrentReleaseOverrideAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound = { + resource?: + | SyncReconcileRequestCurrentReleaseOverrideAwResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseOverrideAwStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAwBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAwBindingToJSON( + syncReconcileRequestCurrentReleaseOverrideAwBinding: + SyncReconcileRequestCurrentReleaseOverrideAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseOverrideEffect, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAwGrantToJSON( + syncReconcileRequestCurrentReleaseOverrideAwGrant: + SyncReconcileRequestCurrentReleaseOverrideAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAw$Outbound = { + binding: SyncReconcileRequestCurrentReleaseOverrideAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestCurrentReleaseOverrideAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAw$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestCurrentReleaseOverrideEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAwToJSON( + syncReconcileRequestCurrentReleaseOverrideAw: + SyncReconcileRequestCurrentReleaseOverrideAw, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAw, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAzureResource$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAzureResource$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAzureResource + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAzureResourceToJSON( + syncReconcileRequestCurrentReleaseOverrideAzureResource: + SyncReconcileRequestCurrentReleaseOverrideAzureResource, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAzureResource$outboundSchema + .parse(syncReconcileRequestCurrentReleaseOverrideAzureResource), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAzureStackToJSON( + syncReconcileRequestCurrentReleaseOverrideAzureStack: + SyncReconcileRequestCurrentReleaseOverrideAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound = { + resource?: + | SyncReconcileRequestCurrentReleaseOverrideAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseOverrideAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAzureBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAzureBindingToJSON( + syncReconcileRequestCurrentReleaseOverrideAzureBinding: + SyncReconcileRequestCurrentReleaseOverrideAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAzureGrantToJSON( + syncReconcileRequestCurrentReleaseOverrideAzureGrant: + SyncReconcileRequestCurrentReleaseOverrideAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideAzure$Outbound = { + binding: SyncReconcileRequestCurrentReleaseOverrideAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseOverrideAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideAzure$Outbound, + SyncReconcileRequestCurrentReleaseOverrideAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideAzureToJSON( + syncReconcileRequestCurrentReleaseOverrideAzure: + SyncReconcileRequestCurrentReleaseOverrideAzure, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideAzure, + ), + ); +} + +/** @internal */ +export type CurrentReleaseOverrideConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseOverrideConditionStateResource$outboundSchema: + z.ZodType< + CurrentReleaseOverrideConditionStateResource$Outbound, + CurrentReleaseOverrideConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function currentReleaseOverrideConditionStateResourceToJSON( + currentReleaseOverrideConditionStateResource: + CurrentReleaseOverrideConditionStateResource, +): string { + return JSON.stringify( + CurrentReleaseOverrideConditionStateResource$outboundSchema.parse( + currentReleaseOverrideConditionStateResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseOverrideStateResourceConditionUnion$Outbound = + | CurrentReleaseOverrideConditionStateResource$Outbound + | any; + +/** @internal */ +export const CurrentReleaseOverrideStateResourceConditionUnion$outboundSchema: + z.ZodType< + CurrentReleaseOverrideStateResourceConditionUnion$Outbound, + CurrentReleaseOverrideStateResourceConditionUnion + > = z.union([ + z.lazy(() => CurrentReleaseOverrideConditionStateResource$outboundSchema), + z.any(), + ]); + +export function currentReleaseOverrideStateResourceConditionUnionToJSON( + currentReleaseOverrideStateResourceConditionUnion: + CurrentReleaseOverrideStateResourceConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseOverrideStateResourceConditionUnion$outboundSchema.parse( + currentReleaseOverrideStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideGcpResource$Outbound = { + condition?: + | CurrentReleaseOverrideConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideGcpResource$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideGcpResource$Outbound, + SyncReconcileRequestCurrentReleaseOverrideGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + CurrentReleaseOverrideConditionStateResource$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideGcpResourceToJSON( + syncReconcileRequestCurrentReleaseOverrideGcpResource: + SyncReconcileRequestCurrentReleaseOverrideGcpResource, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideGcpResource$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideGcpResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseOverrideConditionState$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseOverrideConditionState$outboundSchema: z.ZodType< + CurrentReleaseOverrideConditionState$Outbound, + CurrentReleaseOverrideConditionState +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function currentReleaseOverrideConditionStateToJSON( + currentReleaseOverrideConditionState: CurrentReleaseOverrideConditionState, +): string { + return JSON.stringify( + CurrentReleaseOverrideConditionState$outboundSchema.parse( + currentReleaseOverrideConditionState, + ), + ); +} + +/** @internal */ +export type CurrentReleaseOverrideStateConditionUnion$Outbound = + | CurrentReleaseOverrideConditionState$Outbound + | any; + +/** @internal */ +export const CurrentReleaseOverrideStateConditionUnion$outboundSchema: + z.ZodType< + CurrentReleaseOverrideStateConditionUnion$Outbound, + CurrentReleaseOverrideStateConditionUnion + > = z.union([ + z.lazy(() => CurrentReleaseOverrideConditionState$outboundSchema), + z.any(), + ]); + +export function currentReleaseOverrideStateConditionUnionToJSON( + currentReleaseOverrideStateConditionUnion: + CurrentReleaseOverrideStateConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseOverrideStateConditionUnion$outboundSchema.parse( + currentReleaseOverrideStateConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound = { + condition?: + | CurrentReleaseOverrideConditionState$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound, + SyncReconcileRequestCurrentReleaseOverrideGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => CurrentReleaseOverrideConditionState$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideGcpStackToJSON( + syncReconcileRequestCurrentReleaseOverrideGcpStack: + SyncReconcileRequestCurrentReleaseOverrideGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideGcpStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound = { + resource?: + | SyncReconcileRequestCurrentReleaseOverrideGcpResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseOverrideGcpStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound, + SyncReconcileRequestCurrentReleaseOverrideGcpBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideGcpStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideGcpBindingToJSON( + syncReconcileRequestCurrentReleaseOverrideGcpBinding: + SyncReconcileRequestCurrentReleaseOverrideGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound, + SyncReconcileRequestCurrentReleaseOverrideGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideGcpGrantToJSON( + syncReconcileRequestCurrentReleaseOverrideGcpGrant: + SyncReconcileRequestCurrentReleaseOverrideGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideGcp$Outbound = { + binding: SyncReconcileRequestCurrentReleaseOverrideGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseOverrideGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideGcp$Outbound, + SyncReconcileRequestCurrentReleaseOverrideGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverrideGcpToJSON( + syncReconcileRequestCurrentReleaseOverrideGcp: + SyncReconcileRequestCurrentReleaseOverrideGcp, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound, + SyncReconcileRequestCurrentReleaseOverridePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseOverrideGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseOverridePlatformsToJSON( + syncReconcileRequestCurrentReleaseOverridePlatforms: + SyncReconcileRequestCurrentReleaseOverridePlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverridePlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverride$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestCurrentReleaseOverridePlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverride$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverride$Outbound, + SyncReconcileRequestCurrentReleaseOverride + > = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestCurrentReleaseOverridePlatforms$outboundSchema + ), + }); + +export function syncReconcileRequestCurrentReleaseOverrideToJSON( + syncReconcileRequestCurrentReleaseOverride: + SyncReconcileRequestCurrentReleaseOverride, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverride$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverride, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseOverrideUnion$Outbound = + | SyncReconcileRequestCurrentReleaseOverride$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseOverrideUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseOverrideUnion$Outbound, + SyncReconcileRequestCurrentReleaseOverrideUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseOverride$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestCurrentReleaseOverrideUnionToJSON( + syncReconcileRequestCurrentReleaseOverrideUnion: + SyncReconcileRequestCurrentReleaseOverrideUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseOverrideUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseOverrideUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseManagement2$Outbound = { + override: { + [k: string]: Array< + SyncReconcileRequestCurrentReleaseOverride$Outbound | string + >; + }; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseManagement2$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseManagement2$Outbound, + SyncReconcileRequestCurrentReleaseManagement2 + > = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseOverride$outboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileRequestCurrentReleaseManagement2ToJSON( + syncReconcileRequestCurrentReleaseManagement2: + SyncReconcileRequestCurrentReleaseManagement2, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseManagement2$outboundSchema.parse( + syncReconcileRequestCurrentReleaseManagement2, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAwResource$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAwResource$Outbound, + SyncReconcileRequestCurrentReleaseExtendAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestCurrentReleaseExtendAwResourceToJSON( + syncReconcileRequestCurrentReleaseExtendAwResource: + SyncReconcileRequestCurrentReleaseExtendAwResource, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAwResource$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound, + SyncReconcileRequestCurrentReleaseExtendAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestCurrentReleaseExtendAwStackToJSON( + syncReconcileRequestCurrentReleaseExtendAwStack: + SyncReconcileRequestCurrentReleaseExtendAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound = { + resource?: + | SyncReconcileRequestCurrentReleaseExtendAwResource$Outbound + | undefined; + stack?: SyncReconcileRequestCurrentReleaseExtendAwStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound, + SyncReconcileRequestCurrentReleaseExtendAwBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAwBindingToJSON( + syncReconcileRequestCurrentReleaseExtendAwBinding: + SyncReconcileRequestCurrentReleaseExtendAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseExtendEffect, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound, + SyncReconcileRequestCurrentReleaseExtendAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAwGrantToJSON( + syncReconcileRequestCurrentReleaseExtendAwGrant: + SyncReconcileRequestCurrentReleaseExtendAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAw$Outbound = { + binding: SyncReconcileRequestCurrentReleaseExtendAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestCurrentReleaseExtendAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAw$Outbound, + SyncReconcileRequestCurrentReleaseExtendAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestCurrentReleaseExtendEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAwToJSON( + syncReconcileRequestCurrentReleaseExtendAw: + SyncReconcileRequestCurrentReleaseExtendAw, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAw, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAzureResource$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAzureResource$Outbound, + SyncReconcileRequestCurrentReleaseExtendAzureResource + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAzureResourceToJSON( + syncReconcileRequestCurrentReleaseExtendAzureResource: + SyncReconcileRequestCurrentReleaseExtendAzureResource, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAzureResource$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound, + SyncReconcileRequestCurrentReleaseExtendAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAzureStackToJSON( + syncReconcileRequestCurrentReleaseExtendAzureStack: + SyncReconcileRequestCurrentReleaseExtendAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound = { + resource?: + | SyncReconcileRequestCurrentReleaseExtendAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseExtendAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound, + SyncReconcileRequestCurrentReleaseExtendAzureBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAzureBindingToJSON( + syncReconcileRequestCurrentReleaseExtendAzureBinding: + SyncReconcileRequestCurrentReleaseExtendAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound, + SyncReconcileRequestCurrentReleaseExtendAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAzureGrantToJSON( + syncReconcileRequestCurrentReleaseExtendAzureGrant: + SyncReconcileRequestCurrentReleaseExtendAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendAzure$Outbound = { + binding: SyncReconcileRequestCurrentReleaseExtendAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseExtendAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendAzure$Outbound, + SyncReconcileRequestCurrentReleaseExtendAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendAzureToJSON( + syncReconcileRequestCurrentReleaseExtendAzure: + SyncReconcileRequestCurrentReleaseExtendAzure, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendAzure, + ), + ); +} + +/** @internal */ +export type CurrentReleaseExtendConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseExtendConditionStateResource$outboundSchema: + z.ZodType< + CurrentReleaseExtendConditionStateResource$Outbound, + CurrentReleaseExtendConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function currentReleaseExtendConditionStateResourceToJSON( + currentReleaseExtendConditionStateResource: + CurrentReleaseExtendConditionStateResource, +): string { + return JSON.stringify( + CurrentReleaseExtendConditionStateResource$outboundSchema.parse( + currentReleaseExtendConditionStateResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseExtendStateResourceConditionUnion$Outbound = + | CurrentReleaseExtendConditionStateResource$Outbound + | any; + +/** @internal */ +export const CurrentReleaseExtendStateResourceConditionUnion$outboundSchema: + z.ZodType< + CurrentReleaseExtendStateResourceConditionUnion$Outbound, + CurrentReleaseExtendStateResourceConditionUnion + > = z.union([ + z.lazy(() => CurrentReleaseExtendConditionStateResource$outboundSchema), + z.any(), + ]); + +export function currentReleaseExtendStateResourceConditionUnionToJSON( + currentReleaseExtendStateResourceConditionUnion: + CurrentReleaseExtendStateResourceConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseExtendStateResourceConditionUnion$outboundSchema.parse( + currentReleaseExtendStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendGcpResource$Outbound = { + condition?: + | CurrentReleaseExtendConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendGcpResource$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendGcpResource$Outbound, + SyncReconcileRequestCurrentReleaseExtendGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => CurrentReleaseExtendConditionStateResource$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseExtendGcpResourceToJSON( + syncReconcileRequestCurrentReleaseExtendGcpResource: + SyncReconcileRequestCurrentReleaseExtendGcpResource, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendGcpResource$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendGcpResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseExtendConditionState$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseExtendConditionState$outboundSchema: z.ZodType< + CurrentReleaseExtendConditionState$Outbound, + CurrentReleaseExtendConditionState +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function currentReleaseExtendConditionStateToJSON( + currentReleaseExtendConditionState: CurrentReleaseExtendConditionState, +): string { + return JSON.stringify( + CurrentReleaseExtendConditionState$outboundSchema.parse( + currentReleaseExtendConditionState, + ), + ); +} + +/** @internal */ +export type CurrentReleaseExtendStateConditionUnion$Outbound = + | CurrentReleaseExtendConditionState$Outbound + | any; + +/** @internal */ +export const CurrentReleaseExtendStateConditionUnion$outboundSchema: z.ZodType< + CurrentReleaseExtendStateConditionUnion$Outbound, + CurrentReleaseExtendStateConditionUnion +> = z.union([ + z.lazy(() => CurrentReleaseExtendConditionState$outboundSchema), + z.any(), +]); + +export function currentReleaseExtendStateConditionUnionToJSON( + currentReleaseExtendStateConditionUnion: + CurrentReleaseExtendStateConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseExtendStateConditionUnion$outboundSchema.parse( + currentReleaseExtendStateConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound = { + condition?: + | CurrentReleaseExtendConditionState$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound, + SyncReconcileRequestCurrentReleaseExtendGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => CurrentReleaseExtendConditionState$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseExtendGcpStackToJSON( + syncReconcileRequestCurrentReleaseExtendGcpStack: + SyncReconcileRequestCurrentReleaseExtendGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendGcpStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound = { + resource?: + | SyncReconcileRequestCurrentReleaseExtendGcpResource$Outbound + | undefined; + stack?: SyncReconcileRequestCurrentReleaseExtendGcpStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound, + SyncReconcileRequestCurrentReleaseExtendGcpBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendGcpStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendGcpBindingToJSON( + syncReconcileRequestCurrentReleaseExtendGcpBinding: + SyncReconcileRequestCurrentReleaseExtendGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound, + SyncReconcileRequestCurrentReleaseExtendGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendGcpGrantToJSON( + syncReconcileRequestCurrentReleaseExtendGcpGrant: + SyncReconcileRequestCurrentReleaseExtendGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendGcp$Outbound = { + binding: SyncReconcileRequestCurrentReleaseExtendGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseExtendGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendGcp$Outbound, + SyncReconcileRequestCurrentReleaseExtendGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendGcpToJSON( + syncReconcileRequestCurrentReleaseExtendGcp: + SyncReconcileRequestCurrentReleaseExtendGcp, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound, + SyncReconcileRequestCurrentReleaseExtendPlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseExtendPlatformsToJSON( + syncReconcileRequestCurrentReleaseExtendPlatforms: + SyncReconcileRequestCurrentReleaseExtendPlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendPlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtend$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestCurrentReleaseExtendPlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtend$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseExtend$Outbound, + SyncReconcileRequestCurrentReleaseExtend +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestCurrentReleaseExtendPlatforms$outboundSchema + ), +}); + +export function syncReconcileRequestCurrentReleaseExtendToJSON( + syncReconcileRequestCurrentReleaseExtend: + SyncReconcileRequestCurrentReleaseExtend, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtend$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtend, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseExtendUnion$Outbound = + | SyncReconcileRequestCurrentReleaseExtend$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseExtendUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseExtendUnion$Outbound, + SyncReconcileRequestCurrentReleaseExtendUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseExtend$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestCurrentReleaseExtendUnionToJSON( + syncReconcileRequestCurrentReleaseExtendUnion: + SyncReconcileRequestCurrentReleaseExtendUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseExtendUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseExtendUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseManagement1$Outbound = { + extend: { + [k: string]: Array< + SyncReconcileRequestCurrentReleaseExtend$Outbound | string + >; + }; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseManagement1$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseManagement1$Outbound, + SyncReconcileRequestCurrentReleaseManagement1 + > = z.object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseExtend$outboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileRequestCurrentReleaseManagement1ToJSON( + syncReconcileRequestCurrentReleaseManagement1: + SyncReconcileRequestCurrentReleaseManagement1, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseManagement1$outboundSchema.parse( + syncReconcileRequestCurrentReleaseManagement1, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseManagementUnion$Outbound = + | SyncReconcileRequestCurrentReleaseManagement1$Outbound + | SyncReconcileRequestCurrentReleaseManagement2$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseManagementUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseManagementUnion$Outbound, + SyncReconcileRequestCurrentReleaseManagementUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseManagement1$outboundSchema), + z.lazy(() => SyncReconcileRequestCurrentReleaseManagement2$outboundSchema), + SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema, + ]); + +export function syncReconcileRequestCurrentReleaseManagementUnionToJSON( + syncReconcileRequestCurrentReleaseManagementUnion: + SyncReconcileRequestCurrentReleaseManagementUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseManagementUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseManagementUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAwResource$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAwResource$Outbound, + SyncReconcileRequestCurrentReleaseProfileAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestCurrentReleaseProfileAwResourceToJSON( + syncReconcileRequestCurrentReleaseProfileAwResource: + SyncReconcileRequestCurrentReleaseProfileAwResource, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAwResource$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound, + SyncReconcileRequestCurrentReleaseProfileAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestCurrentReleaseProfileAwStackToJSON( + syncReconcileRequestCurrentReleaseProfileAwStack: + SyncReconcileRequestCurrentReleaseProfileAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound = { + resource?: + | SyncReconcileRequestCurrentReleaseProfileAwResource$Outbound + | undefined; + stack?: SyncReconcileRequestCurrentReleaseProfileAwStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound, + SyncReconcileRequestCurrentReleaseProfileAwBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAwBindingToJSON( + syncReconcileRequestCurrentReleaseProfileAwBinding: + SyncReconcileRequestCurrentReleaseProfileAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestCurrentReleaseProfileEffect, + ); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound, + SyncReconcileRequestCurrentReleaseProfileAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAwGrantToJSON( + syncReconcileRequestCurrentReleaseProfileAwGrant: + SyncReconcileRequestCurrentReleaseProfileAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAw$Outbound = { + binding: SyncReconcileRequestCurrentReleaseProfileAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestCurrentReleaseProfileAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAw$Outbound, + SyncReconcileRequestCurrentReleaseProfileAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestCurrentReleaseProfileEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAwToJSON( + syncReconcileRequestCurrentReleaseProfileAw: + SyncReconcileRequestCurrentReleaseProfileAw, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAw, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAzureResource$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAzureResource$Outbound, + SyncReconcileRequestCurrentReleaseProfileAzureResource + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAzureResourceToJSON( + syncReconcileRequestCurrentReleaseProfileAzureResource: + SyncReconcileRequestCurrentReleaseProfileAzureResource, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAzureResource$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound, + SyncReconcileRequestCurrentReleaseProfileAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAzureStackToJSON( + syncReconcileRequestCurrentReleaseProfileAzureStack: + SyncReconcileRequestCurrentReleaseProfileAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound = { + resource?: + | SyncReconcileRequestCurrentReleaseProfileAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseProfileAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound, + SyncReconcileRequestCurrentReleaseProfileAzureBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAzureBindingToJSON( + syncReconcileRequestCurrentReleaseProfileAzureBinding: + SyncReconcileRequestCurrentReleaseProfileAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound, + SyncReconcileRequestCurrentReleaseProfileAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAzureGrantToJSON( + syncReconcileRequestCurrentReleaseProfileAzureGrant: + SyncReconcileRequestCurrentReleaseProfileAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileAzure$Outbound = { + binding: SyncReconcileRequestCurrentReleaseProfileAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseProfileAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileAzure$Outbound, + SyncReconcileRequestCurrentReleaseProfileAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileAzureToJSON( + syncReconcileRequestCurrentReleaseProfileAzure: + SyncReconcileRequestCurrentReleaseProfileAzure, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileAzure, + ), + ); +} + +/** @internal */ +export type CurrentReleaseProfileConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseProfileConditionStateResource$outboundSchema: + z.ZodType< + CurrentReleaseProfileConditionStateResource$Outbound, + CurrentReleaseProfileConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function currentReleaseProfileConditionStateResourceToJSON( + currentReleaseProfileConditionStateResource: + CurrentReleaseProfileConditionStateResource, +): string { + return JSON.stringify( + CurrentReleaseProfileConditionStateResource$outboundSchema.parse( + currentReleaseProfileConditionStateResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseProfileStateResourceConditionUnion$Outbound = + | CurrentReleaseProfileConditionStateResource$Outbound + | any; + +/** @internal */ +export const CurrentReleaseProfileStateResourceConditionUnion$outboundSchema: + z.ZodType< + CurrentReleaseProfileStateResourceConditionUnion$Outbound, + CurrentReleaseProfileStateResourceConditionUnion + > = z.union([ + z.lazy(() => CurrentReleaseProfileConditionStateResource$outboundSchema), + z.any(), + ]); + +export function currentReleaseProfileStateResourceConditionUnionToJSON( + currentReleaseProfileStateResourceConditionUnion: + CurrentReleaseProfileStateResourceConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseProfileStateResourceConditionUnion$outboundSchema.parse( + currentReleaseProfileStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileGcpResource$Outbound = { + condition?: + | CurrentReleaseProfileConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileGcpResource$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileGcpResource$Outbound, + SyncReconcileRequestCurrentReleaseProfileGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + CurrentReleaseProfileConditionStateResource$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseProfileGcpResourceToJSON( + syncReconcileRequestCurrentReleaseProfileGcpResource: + SyncReconcileRequestCurrentReleaseProfileGcpResource, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileGcpResource$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileGcpResource, + ), + ); +} + +/** @internal */ +export type CurrentReleaseProfileConditionState$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const CurrentReleaseProfileConditionState$outboundSchema: z.ZodType< + CurrentReleaseProfileConditionState$Outbound, + CurrentReleaseProfileConditionState +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function currentReleaseProfileConditionStateToJSON( + currentReleaseProfileConditionState: CurrentReleaseProfileConditionState, +): string { + return JSON.stringify( + CurrentReleaseProfileConditionState$outboundSchema.parse( + currentReleaseProfileConditionState, + ), + ); +} + +/** @internal */ +export type CurrentReleaseProfileStateConditionUnion$Outbound = + | CurrentReleaseProfileConditionState$Outbound + | any; + +/** @internal */ +export const CurrentReleaseProfileStateConditionUnion$outboundSchema: z.ZodType< + CurrentReleaseProfileStateConditionUnion$Outbound, + CurrentReleaseProfileStateConditionUnion +> = z.union([ + z.lazy(() => CurrentReleaseProfileConditionState$outboundSchema), + z.any(), +]); + +export function currentReleaseProfileStateConditionUnionToJSON( + currentReleaseProfileStateConditionUnion: + CurrentReleaseProfileStateConditionUnion, +): string { + return JSON.stringify( + CurrentReleaseProfileStateConditionUnion$outboundSchema.parse( + currentReleaseProfileStateConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound = { + condition?: + | CurrentReleaseProfileConditionState$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound, + SyncReconcileRequestCurrentReleaseProfileGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => CurrentReleaseProfileConditionState$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseProfileGcpStackToJSON( + syncReconcileRequestCurrentReleaseProfileGcpStack: + SyncReconcileRequestCurrentReleaseProfileGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileGcpStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound = { + resource?: + | SyncReconcileRequestCurrentReleaseProfileGcpResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestCurrentReleaseProfileGcpStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound, + SyncReconcileRequestCurrentReleaseProfileGcpBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileGcpStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileGcpBindingToJSON( + syncReconcileRequestCurrentReleaseProfileGcpBinding: + SyncReconcileRequestCurrentReleaseProfileGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound, + SyncReconcileRequestCurrentReleaseProfileGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileGcpGrantToJSON( + syncReconcileRequestCurrentReleaseProfileGcpGrant: + SyncReconcileRequestCurrentReleaseProfileGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileGcp$Outbound = { + binding: SyncReconcileRequestCurrentReleaseProfileGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestCurrentReleaseProfileGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileGcp$Outbound, + SyncReconcileRequestCurrentReleaseProfileGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfileGcpToJSON( + syncReconcileRequestCurrentReleaseProfileGcp: + SyncReconcileRequestCurrentReleaseProfileGcp, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound, + SyncReconcileRequestCurrentReleaseProfilePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestCurrentReleaseProfileGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestCurrentReleaseProfilePlatformsToJSON( + syncReconcileRequestCurrentReleaseProfilePlatforms: + SyncReconcileRequestCurrentReleaseProfilePlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfilePlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfile$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestCurrentReleaseProfilePlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfile$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfile$Outbound, + SyncReconcileRequestCurrentReleaseProfile + > = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestCurrentReleaseProfilePlatforms$outboundSchema + ), + }); + +export function syncReconcileRequestCurrentReleaseProfileToJSON( + syncReconcileRequestCurrentReleaseProfile: + SyncReconcileRequestCurrentReleaseProfile, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfile$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfile, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseProfileUnion$Outbound = + | SyncReconcileRequestCurrentReleaseProfile$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseProfileUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseProfileUnion$Outbound, + SyncReconcileRequestCurrentReleaseProfileUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestCurrentReleaseProfile$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestCurrentReleaseProfileUnionToJSON( + syncReconcileRequestCurrentReleaseProfileUnion: + SyncReconcileRequestCurrentReleaseProfileUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseProfileUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseProfileUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleasePermissions$Outbound = { + management?: + | SyncReconcileRequestCurrentReleaseManagement1$Outbound + | SyncReconcileRequestCurrentReleaseManagement2$Outbound + | string + | undefined; + profiles: { + [k: string]: { + [k: string]: Array< + SyncReconcileRequestCurrentReleaseProfile$Outbound | string + >; + }; + }; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleasePermissions$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleasePermissions$Outbound, + SyncReconcileRequestCurrentReleasePermissions + > = z.object({ + management: z.union([ + z.lazy(() => + SyncReconcileRequestCurrentReleaseManagement1$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestCurrentReleaseManagement2$outboundSchema + ), + SyncReconcileRequestCurrentReleaseManagementEnum$outboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileRequestCurrentReleaseProfile$outboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); + +export function syncReconcileRequestCurrentReleasePermissionsToJSON( + syncReconcileRequestCurrentReleasePermissions: + SyncReconcileRequestCurrentReleasePermissions, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleasePermissions$outboundSchema.parse( + syncReconcileRequestCurrentReleasePermissions, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseConfig$Outbound = { + id: string; + type: string; + [additionalProperties: string]: unknown; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseConfig$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseConfig$Outbound, + SyncReconcileRequestCurrentReleaseConfig +> = z.object({ + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; +}); + +export function syncReconcileRequestCurrentReleaseConfigToJSON( + syncReconcileRequestCurrentReleaseConfig: + SyncReconcileRequestCurrentReleaseConfig, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseConfig$outboundSchema.parse( + syncReconcileRequestCurrentReleaseConfig, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseDependency$Outbound = { + id: string; + type: string; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseDependency$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseDependency$Outbound, + SyncReconcileRequestCurrentReleaseDependency + > = z.object({ + id: z.string(), + type: z.string(), + }); + +export function syncReconcileRequestCurrentReleaseDependencyToJSON( + syncReconcileRequestCurrentReleaseDependency: + SyncReconcileRequestCurrentReleaseDependency, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseDependency$outboundSchema.parse( + syncReconcileRequestCurrentReleaseDependency, + ), + ); +} + +/** @internal */ +export const CurrentReleaseStateLifecycle$outboundSchema: z.ZodEnum< + typeof CurrentReleaseStateLifecycle +> = z.enum(CurrentReleaseStateLifecycle); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseResources$Outbound = { + config: SyncReconcileRequestCurrentReleaseConfig$Outbound; + dependencies: Array; + lifecycle: string; + remoteAccess?: boolean | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseResources$outboundSchema: + z.ZodType< + SyncReconcileRequestCurrentReleaseResources$Outbound, + SyncReconcileRequestCurrentReleaseResources + > = z.object({ + config: z.lazy(() => + SyncReconcileRequestCurrentReleaseConfig$outboundSchema + ), + dependencies: z.array( + z.lazy(() => SyncReconcileRequestCurrentReleaseDependency$outboundSchema), + ), + lifecycle: CurrentReleaseStateLifecycle$outboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncReconcileRequestCurrentReleaseResourcesToJSON( + syncReconcileRequestCurrentReleaseResources: + SyncReconcileRequestCurrentReleaseResources, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseResources$outboundSchema.parse( + syncReconcileRequestCurrentReleaseResources, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseSupportedPlatform$outboundSchema: + z.ZodEnum = z + .enum(SyncReconcileRequestCurrentReleaseSupportedPlatform); + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseStack$Outbound = { + id: string; + inputs?: Array | undefined; + permissions?: + | SyncReconcileRequestCurrentReleasePermissions$Outbound + | undefined; + resources: { + [k: string]: SyncReconcileRequestCurrentReleaseResources$Outbound; + }; + supportedPlatforms?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseStack$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseStack$Outbound, + SyncReconcileRequestCurrentReleaseStack +> = z.object({ + id: z.string(), + inputs: z.array( + z.lazy(() => SyncReconcileRequestCurrentReleaseInput$outboundSchema), + ).optional(), + permissions: z.lazy(() => + SyncReconcileRequestCurrentReleasePermissions$outboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileRequestCurrentReleaseResources$outboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncReconcileRequestCurrentReleaseSupportedPlatform$outboundSchema), + ).optional(), +}); + +export function syncReconcileRequestCurrentReleaseStackToJSON( + syncReconcileRequestCurrentReleaseStack: + SyncReconcileRequestCurrentReleaseStack, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseStack$outboundSchema.parse( + syncReconcileRequestCurrentReleaseStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentRelease$Outbound = { + description?: string | null | undefined; + releaseId: string; + stack: SyncReconcileRequestCurrentReleaseStack$Outbound; + version?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestCurrentRelease$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentRelease$Outbound, + SyncReconcileRequestCurrentRelease +> = z.object({ + description: z.nullable(z.string()).optional(), + releaseId: z.string(), + stack: z.lazy(() => SyncReconcileRequestCurrentReleaseStack$outboundSchema), + version: z.nullable(z.string()).optional(), +}); + +export function syncReconcileRequestCurrentReleaseToJSON( + syncReconcileRequestCurrentRelease: SyncReconcileRequestCurrentRelease, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentRelease$outboundSchema.parse( + syncReconcileRequestCurrentRelease, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestCurrentReleaseUnion$Outbound = + | SyncReconcileRequestCurrentRelease$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestCurrentReleaseUnion$outboundSchema: z.ZodType< + SyncReconcileRequestCurrentReleaseUnion$Outbound, + SyncReconcileRequestCurrentReleaseUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestCurrentRelease$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestCurrentReleaseUnionToJSON( + syncReconcileRequestCurrentReleaseUnion: + SyncReconcileRequestCurrentReleaseUnion, +): string { + return JSON.stringify( + SyncReconcileRequestCurrentReleaseUnion$outboundSchema.parse( + syncReconcileRequestCurrentReleaseUnion, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatformTest$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatformTest +> = z.enum(SyncReconcileRequestPlatformTest); + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoTest$Outbound = { + testId: string; + platform: string; +}; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoTest$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoTest$Outbound, + SyncReconcileRequestEnvironmentInfoTest +> = z.object({ + testId: z.string(), + platform: SyncReconcileRequestPlatformTest$outboundSchema, +}); + +export function syncReconcileRequestEnvironmentInfoTestToJSON( + syncReconcileRequestEnvironmentInfoTest: + SyncReconcileRequestEnvironmentInfoTest, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoTest$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoTest, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatformLocal$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatformLocal +> = z.enum(SyncReconcileRequestPlatformLocal); + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoLocal$Outbound = { + arch: string; + hostname: string; + os: string; + platform: string; +}; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoLocal$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoLocal$Outbound, + SyncReconcileRequestEnvironmentInfoLocal +> = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: SyncReconcileRequestPlatformLocal$outboundSchema, +}); + +export function syncReconcileRequestEnvironmentInfoLocalToJSON( + syncReconcileRequestEnvironmentInfoLocal: + SyncReconcileRequestEnvironmentInfoLocal, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoLocal$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoLocal, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatformAzure$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatformAzure +> = z.enum(SyncReconcileRequestPlatformAzure); + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoAzure$Outbound = { + location: string; + subscriptionId: string; + tenantId: string; + platform: string; +}; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoAzure$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoAzure$Outbound, + SyncReconcileRequestEnvironmentInfoAzure +> = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: SyncReconcileRequestPlatformAzure$outboundSchema, +}); + +export function syncReconcileRequestEnvironmentInfoAzureToJSON( + syncReconcileRequestEnvironmentInfoAzure: + SyncReconcileRequestEnvironmentInfoAzure, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoAzure$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoAzure, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatformGcp$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatformGcp +> = z.enum(SyncReconcileRequestPlatformGcp); + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoGcp$Outbound = { + projectId: string; + projectNumber: string; + region: string; + platform: string; +}; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoGcp$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoGcp$Outbound, + SyncReconcileRequestEnvironmentInfoGcp +> = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: SyncReconcileRequestPlatformGcp$outboundSchema, +}); + +export function syncReconcileRequestEnvironmentInfoGcpToJSON( + syncReconcileRequestEnvironmentInfoGcp: + SyncReconcileRequestEnvironmentInfoGcp, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoGcp$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoGcp, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatformAws$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatformAws +> = z.enum(SyncReconcileRequestPlatformAws); + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoAws$Outbound = { + accountId: string; + region: string; + platform: string; +}; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoAws$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoAws$Outbound, + SyncReconcileRequestEnvironmentInfoAws +> = z.object({ + accountId: z.string(), + region: z.string(), + platform: SyncReconcileRequestPlatformAws$outboundSchema, +}); + +export function syncReconcileRequestEnvironmentInfoAwsToJSON( + syncReconcileRequestEnvironmentInfoAws: + SyncReconcileRequestEnvironmentInfoAws, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoAws$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoAws, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestEnvironmentInfoUnion$Outbound = + | SyncReconcileRequestEnvironmentInfoGcp$Outbound + | SyncReconcileRequestEnvironmentInfoAzure$Outbound + | SyncReconcileRequestEnvironmentInfoLocal$Outbound + | SyncReconcileRequestEnvironmentInfoAws$Outbound + | SyncReconcileRequestEnvironmentInfoTest$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestEnvironmentInfoUnion$outboundSchema: z.ZodType< + SyncReconcileRequestEnvironmentInfoUnion$Outbound, + SyncReconcileRequestEnvironmentInfoUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestEnvironmentInfoGcp$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoAzure$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoLocal$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoAws$outboundSchema), + z.lazy(() => SyncReconcileRequestEnvironmentInfoTest$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestEnvironmentInfoUnionToJSON( + syncReconcileRequestEnvironmentInfoUnion: + SyncReconcileRequestEnvironmentInfoUnion, +): string { + return JSON.stringify( + SyncReconcileRequestEnvironmentInfoUnion$outboundSchema.parse( + syncReconcileRequestEnvironmentInfoUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestError$Outbound = { + code: string; + context?: any | null | undefined; + hint?: string | null | undefined; + httpStatusCode?: number | null | undefined; + internal: boolean; + message: string; + retryable: boolean; + source?: any | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestError$outboundSchema: z.ZodType< + SyncReconcileRequestError$Outbound, + SyncReconcileRequestError +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function syncReconcileRequestErrorToJSON( + syncReconcileRequestError: SyncReconcileRequestError, +): string { + return JSON.stringify( + SyncReconcileRequestError$outboundSchema.parse(syncReconcileRequestError), + ); +} + +/** @internal */ +export type SyncReconcileRequestErrorUnion$Outbound = + | SyncReconcileRequestError$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestErrorUnion$outboundSchema: z.ZodType< + SyncReconcileRequestErrorUnion$Outbound, + SyncReconcileRequestErrorUnion +> = z.union([z.lazy(() => SyncReconcileRequestError$outboundSchema), z.any()]); + +export function syncReconcileRequestErrorUnionToJSON( + syncReconcileRequestErrorUnion: SyncReconcileRequestErrorUnion, +): string { + return JSON.stringify( + SyncReconcileRequestErrorUnion$outboundSchema.parse( + syncReconcileRequestErrorUnion, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPlatform$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestPlatform +> = z.enum(SyncReconcileRequestPlatform); + +/** @internal */ +export const SyncReconcileRequestPreparedStackTypeStringList$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackTypeStringList, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackDefaultStringList$Outbound = { + type: string; + value: Array; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackDefaultStringList$Outbound, + SyncReconcileRequestPreparedStackDefaultStringList + > = z.object({ + type: SyncReconcileRequestPreparedStackTypeStringList$outboundSchema, + value: z.array(z.string()), + }); + +export function syncReconcileRequestPreparedStackDefaultStringListToJSON( + syncReconcileRequestPreparedStackDefaultStringList: + SyncReconcileRequestPreparedStackDefaultStringList, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema.parse( + syncReconcileRequestPreparedStackDefaultStringList, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPreparedStackTypeBoolean$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackTypeBoolean, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackDefaultBoolean$Outbound = { + type: string; + value: boolean; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackDefaultBoolean$Outbound, + SyncReconcileRequestPreparedStackDefaultBoolean + > = z.object({ + type: SyncReconcileRequestPreparedStackTypeBoolean$outboundSchema, + value: z.boolean(), + }); + +export function syncReconcileRequestPreparedStackDefaultBooleanToJSON( + syncReconcileRequestPreparedStackDefaultBoolean: + SyncReconcileRequestPreparedStackDefaultBoolean, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema.parse( + syncReconcileRequestPreparedStackDefaultBoolean, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPreparedStackTypeNumber$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackTypeNumber, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackDefaultNumber$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackDefaultNumber$Outbound, + SyncReconcileRequestPreparedStackDefaultNumber + > = z.object({ + type: SyncReconcileRequestPreparedStackTypeNumber$outboundSchema, + value: z.string(), + }); + +export function syncReconcileRequestPreparedStackDefaultNumberToJSON( + syncReconcileRequestPreparedStackDefaultNumber: + SyncReconcileRequestPreparedStackDefaultNumber, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema.parse( + syncReconcileRequestPreparedStackDefaultNumber, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPreparedStackTypeString$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackTypeString, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackDefaultString$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackDefaultString$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackDefaultString$Outbound, + SyncReconcileRequestPreparedStackDefaultString + > = z.object({ + type: SyncReconcileRequestPreparedStackTypeString$outboundSchema, + value: z.string(), + }); + +export function syncReconcileRequestPreparedStackDefaultStringToJSON( + syncReconcileRequestPreparedStackDefaultString: + SyncReconcileRequestPreparedStackDefaultString, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackDefaultString$outboundSchema.parse( + syncReconcileRequestPreparedStackDefaultString, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackDefaultUnion$Outbound = + | SyncReconcileRequestPreparedStackDefaultString$Outbound + | SyncReconcileRequestPreparedStackDefaultNumber$Outbound + | SyncReconcileRequestPreparedStackDefaultBoolean$Outbound + | SyncReconcileRequestPreparedStackDefaultStringList$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestPreparedStackDefaultUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackDefaultUnion$Outbound, + SyncReconcileRequestPreparedStackDefaultUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackDefaultString$outboundSchema), + z.lazy(() => SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema), + z.lazy(() => + SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema + ), + z.any(), + ]); + +export function syncReconcileRequestPreparedStackDefaultUnionToJSON( + syncReconcileRequestPreparedStackDefaultUnion: + SyncReconcileRequestPreparedStackDefaultUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackDefaultUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackDefaultUnion, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackTypeEnvEnum, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackTypeUnion$Outbound = string | any; + +/** @internal */ +export const SyncReconcileRequestPreparedStackTypeUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackTypeUnion$Outbound, + SyncReconcileRequestPreparedStackTypeUnion + > = z.union([ + SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema, + z.any(), + ]); + +export function syncReconcileRequestPreparedStackTypeUnionToJSON( + syncReconcileRequestPreparedStackTypeUnion: + SyncReconcileRequestPreparedStackTypeUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackTypeUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackTypeUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackEnv$Outbound = { + name: string; + targetResources?: Array | null | undefined; + type?: string | any | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackEnv$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackEnv$Outbound, + SyncReconcileRequestPreparedStackEnv +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileRequestPreparedStackTypeEnvEnum$outboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileRequestPreparedStackEnvToJSON( + syncReconcileRequestPreparedStackEnv: SyncReconcileRequestPreparedStackEnv, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackEnv$outboundSchema.parse( + syncReconcileRequestPreparedStackEnv, + ), + ); +} + +/** @internal */ +export const PreparedStackStateKind$outboundSchema: z.ZodEnum< + typeof PreparedStackStateKind +> = z.enum(PreparedStackStateKind); + +/** @internal */ +export const SyncReconcileRequestPreparedStackPlatform$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackPlatform, + ); + +/** @internal */ +export const SyncReconcileRequestPreparedStackProvidedBy$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackProvidedBy, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackValidation$Outbound = { + format?: string | null | undefined; + max?: string | null | undefined; + maxItems?: number | null | undefined; + maxLength?: number | null | undefined; + min?: string | null | undefined; + minItems?: number | null | undefined; + minLength?: number | null | undefined; + pattern?: string | null | undefined; + values?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackValidation$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackValidation$Outbound, + SyncReconcileRequestPreparedStackValidation + > = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPreparedStackValidationToJSON( + syncReconcileRequestPreparedStackValidation: + SyncReconcileRequestPreparedStackValidation, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackValidation$outboundSchema.parse( + syncReconcileRequestPreparedStackValidation, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackValidationUnion$Outbound = + | SyncReconcileRequestPreparedStackValidation$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestPreparedStackValidationUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackValidationUnion$Outbound, + SyncReconcileRequestPreparedStackValidationUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackValidation$outboundSchema), + z.any(), + ]); + +export function syncReconcileRequestPreparedStackValidationUnionToJSON( + syncReconcileRequestPreparedStackValidationUnion: + SyncReconcileRequestPreparedStackValidationUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackValidationUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackValidationUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackInput$Outbound = { + default?: + | SyncReconcileRequestPreparedStackDefaultString$Outbound + | SyncReconcileRequestPreparedStackDefaultNumber$Outbound + | SyncReconcileRequestPreparedStackDefaultBoolean$Outbound + | SyncReconcileRequestPreparedStackDefaultStringList$Outbound + | any + | null + | undefined; + description: string; + env?: Array | undefined; + id: string; + kind: string; + label: string; + placeholder?: string | null | undefined; + platforms?: Array | null | undefined; + providedBy: Array; + required: boolean; + validation?: + | SyncReconcileRequestPreparedStackValidation$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackInput$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackInput$Outbound, + SyncReconcileRequestPreparedStackInput +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileRequestPreparedStackDefaultString$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPreparedStackDefaultNumber$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPreparedStackDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestPreparedStackDefaultStringList$outboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => SyncReconcileRequestPreparedStackEnv$outboundSchema), + ).optional(), + id: z.string(), + kind: PreparedStackStateKind$outboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncReconcileRequestPreparedStackPlatform$outboundSchema), + ).optional(), + providedBy: z.array( + SyncReconcileRequestPreparedStackProvidedBy$outboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackValidation$outboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileRequestPreparedStackInputToJSON( + syncReconcileRequestPreparedStackInput: + SyncReconcileRequestPreparedStackInput, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackInput$outboundSchema.parse( + syncReconcileRequestPreparedStackInput, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPreparedStackManagementEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackManagementEnum, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideAwResource$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAwResource$Outbound, + SyncReconcileRequestPreparedStackOverrideAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestPreparedStackOverrideAwResourceToJSON( + syncReconcileRequestPreparedStackOverrideAwResource: + SyncReconcileRequestPreparedStackOverrideAwResource, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideAwResource$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAwStack$Outbound, + SyncReconcileRequestPreparedStackOverrideAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestPreparedStackOverrideAwStackToJSON( + syncReconcileRequestPreparedStackOverrideAwStack: + SyncReconcileRequestPreparedStackOverrideAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound = { + resource?: + | SyncReconcileRequestPreparedStackOverrideAwResource$Outbound + | undefined; + stack?: SyncReconcileRequestPreparedStackOverrideAwStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound, + SyncReconcileRequestPreparedStackOverrideAwBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestPreparedStackOverrideAwBindingToJSON( + syncReconcileRequestPreparedStackOverrideAwBinding: + SyncReconcileRequestPreparedStackOverrideAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackOverrideEffect, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound, + SyncReconcileRequestPreparedStackOverrideAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPreparedStackOverrideAwGrantToJSON( + syncReconcileRequestPreparedStackOverrideAwGrant: + SyncReconcileRequestPreparedStackOverrideAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideAw$Outbound = { + binding: SyncReconcileRequestPreparedStackOverrideAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestPreparedStackOverrideAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideAw$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAw$Outbound, + SyncReconcileRequestPreparedStackOverrideAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestPreparedStackOverrideEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestPreparedStackOverrideAwToJSON( + syncReconcileRequestPreparedStackOverrideAw: + SyncReconcileRequestPreparedStackOverrideAw, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideAw$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAw, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideAzureResource$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAzureResource$Outbound, + SyncReconcileRequestPreparedStackOverrideAzureResource + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackOverrideAzureResourceToJSON( + syncReconcileRequestPreparedStackOverrideAzureResource: + SyncReconcileRequestPreparedStackOverrideAzureResource, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideAzureResource$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound, + SyncReconcileRequestPreparedStackOverrideAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackOverrideAzureStackToJSON( + syncReconcileRequestPreparedStackOverrideAzureStack: + SyncReconcileRequestPreparedStackOverrideAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound = { + resource?: + | SyncReconcileRequestPreparedStackOverrideAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestPreparedStackOverrideAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound, + SyncReconcileRequestPreparedStackOverrideAzureBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestPreparedStackOverrideAzureBindingToJSON( + syncReconcileRequestPreparedStackOverrideAzureBinding: + SyncReconcileRequestPreparedStackOverrideAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound, + SyncReconcileRequestPreparedStackOverrideAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPreparedStackOverrideAzureGrantToJSON( + syncReconcileRequestPreparedStackOverrideAzureGrant: + SyncReconcileRequestPreparedStackOverrideAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideAzure$Outbound = { + binding: SyncReconcileRequestPreparedStackOverrideAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestPreparedStackOverrideAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideAzure$Outbound, + SyncReconcileRequestPreparedStackOverrideAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestPreparedStackOverrideAzureToJSON( + syncReconcileRequestPreparedStackOverrideAzure: + SyncReconcileRequestPreparedStackOverrideAzure, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideAzure, + ), + ); +} + +/** @internal */ +export type PreparedStackOverrideConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const PreparedStackOverrideConditionStateResource$outboundSchema: + z.ZodType< + PreparedStackOverrideConditionStateResource$Outbound, + PreparedStackOverrideConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function preparedStackOverrideConditionStateResourceToJSON( + preparedStackOverrideConditionStateResource: + PreparedStackOverrideConditionStateResource, +): string { + return JSON.stringify( + PreparedStackOverrideConditionStateResource$outboundSchema.parse( + preparedStackOverrideConditionStateResource, + ), + ); +} + +/** @internal */ +export type PreparedStackOverrideStateResourceConditionUnion$Outbound = + | PreparedStackOverrideConditionStateResource$Outbound + | any; + +/** @internal */ +export const PreparedStackOverrideStateResourceConditionUnion$outboundSchema: + z.ZodType< + PreparedStackOverrideStateResourceConditionUnion$Outbound, + PreparedStackOverrideStateResourceConditionUnion + > = z.union([ + z.lazy(() => PreparedStackOverrideConditionStateResource$outboundSchema), + z.any(), + ]); + +export function preparedStackOverrideStateResourceConditionUnionToJSON( + preparedStackOverrideStateResourceConditionUnion: + PreparedStackOverrideStateResourceConditionUnion, +): string { + return JSON.stringify( + PreparedStackOverrideStateResourceConditionUnion$outboundSchema.parse( + preparedStackOverrideStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideGcpResource$Outbound = { + condition?: + | PreparedStackOverrideConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideGcpResource$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideGcpResource$Outbound, + SyncReconcileRequestPreparedStackOverrideGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + PreparedStackOverrideConditionStateResource$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackOverrideGcpResourceToJSON( + syncReconcileRequestPreparedStackOverrideGcpResource: + SyncReconcileRequestPreparedStackOverrideGcpResource, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideGcpResource$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideGcpResource, + ), + ); +} + +/** @internal */ +export type PreparedStackOverrideConditionStateStack$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const PreparedStackOverrideConditionStateStack$outboundSchema: z.ZodType< + PreparedStackOverrideConditionStateStack$Outbound, + PreparedStackOverrideConditionStateStack +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function preparedStackOverrideConditionStateStackToJSON( + preparedStackOverrideConditionStateStack: + PreparedStackOverrideConditionStateStack, +): string { + return JSON.stringify( + PreparedStackOverrideConditionStateStack$outboundSchema.parse( + preparedStackOverrideConditionStateStack, + ), + ); +} + +/** @internal */ +export type PreparedStackOverrideStateStackConditionUnion$Outbound = + | PreparedStackOverrideConditionStateStack$Outbound + | any; + +/** @internal */ +export const PreparedStackOverrideStateStackConditionUnion$outboundSchema: + z.ZodType< + PreparedStackOverrideStateStackConditionUnion$Outbound, + PreparedStackOverrideStateStackConditionUnion + > = z.union([ + z.lazy(() => PreparedStackOverrideConditionStateStack$outboundSchema), + z.any(), + ]); + +export function preparedStackOverrideStateStackConditionUnionToJSON( + preparedStackOverrideStateStackConditionUnion: + PreparedStackOverrideStateStackConditionUnion, +): string { + return JSON.stringify( + PreparedStackOverrideStateStackConditionUnion$outboundSchema.parse( + preparedStackOverrideStateStackConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound = { + condition?: + | PreparedStackOverrideConditionStateStack$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound, + SyncReconcileRequestPreparedStackOverrideGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => PreparedStackOverrideConditionStateStack$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackOverrideGcpStackToJSON( + syncReconcileRequestPreparedStackOverrideGcpStack: + SyncReconcileRequestPreparedStackOverrideGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideGcpStack, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/syncreconcilerequesttargetreleasemanagement1.ts b/client-sdks/platform/typescript/src/models/syncreconcilerequesttargetreleasemanagement1.ts new file mode 100644 index 000000000..56ab00f0c --- /dev/null +++ b/client-sdks/platform/typescript/src/models/syncreconcilerequesttargetreleasemanagement1.ts @@ -0,0 +1,6673 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { ClosedEnum } from "../types/enums.js"; +import { + SyncReconcileRequestPreparedStackInput, + SyncReconcileRequestPreparedStackInput$Outbound, + SyncReconcileRequestPreparedStackInput$outboundSchema, + SyncReconcileRequestPreparedStackManagementEnum, + SyncReconcileRequestPreparedStackManagementEnum$outboundSchema, + SyncReconcileRequestPreparedStackOverrideAw, + SyncReconcileRequestPreparedStackOverrideAw$Outbound, + SyncReconcileRequestPreparedStackOverrideAw$outboundSchema, + SyncReconcileRequestPreparedStackOverrideAzure, + SyncReconcileRequestPreparedStackOverrideAzure$Outbound, + SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema, + SyncReconcileRequestPreparedStackOverrideGcpResource, + SyncReconcileRequestPreparedStackOverrideGcpResource$Outbound, + SyncReconcileRequestPreparedStackOverrideGcpResource$outboundSchema, + SyncReconcileRequestPreparedStackOverrideGcpStack, + SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound, + SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema, +} from "./syncreconcilerequestpreparedstackoverridegcpstack.js"; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestPreparedStackOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileRequestPreparedStackOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestPreparedStackOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestPreparedStackOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestPreparedStackOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestPreparedStackOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestPreparedStackOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestPreparedStackOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestPreparedStackOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestPreparedStackOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestPreparedStackOverrideUnion = + | SyncReconcileRequestPreparedStackOverride + | string; + +export type SyncReconcileRequestPreparedStackManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestPreparedStackExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestPreparedStackExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestPreparedStackExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileRequestPreparedStackExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestPreparedStackExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestPreparedStackExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestPreparedStackExtendEffect = ClosedEnum< + typeof SyncReconcileRequestPreparedStackExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestPreparedStackExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestPreparedStackExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestPreparedStackExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestPreparedStackExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestPreparedStackExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestPreparedStackExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestPreparedStackExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestPreparedStackExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileRequestPreparedStackExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestPreparedStackExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestPreparedStackExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestPreparedStackExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestPreparedStackExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestPreparedStackExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type PreparedStackExtendConditionStateResource = { + expression: string; + title: string; +}; + +export type PreparedStackExtendStateResourceConditionUnion = + | PreparedStackExtendConditionStateResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestPreparedStackExtendGcpResource = { + condition?: + | PreparedStackExtendConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type PreparedStackExtendConditionStateStack = { + expression: string; + title: string; +}; + +export type PreparedStackExtendStateStackConditionUnion = + | PreparedStackExtendConditionStateStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestPreparedStackExtendGcpStack = { + condition?: PreparedStackExtendConditionStateStack | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestPreparedStackExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileRequestPreparedStackExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestPreparedStackExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestPreparedStackExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestPreparedStackExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestPreparedStackExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestPreparedStackExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestPreparedStackExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestPreparedStackExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestPreparedStackExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestPreparedStackExtendUnion = + | SyncReconcileRequestPreparedStackExtend + | string; + +export type SyncReconcileRequestPreparedStackManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array; + }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type SyncReconcileRequestPreparedStackManagementUnion = + | SyncReconcileRequestPreparedStackManagement1 + | SyncReconcileRequestPreparedStackManagement2 + | SyncReconcileRequestPreparedStackManagementEnum; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestPreparedStackProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestPreparedStackProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestPreparedStackProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileRequestPreparedStackProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestPreparedStackProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestPreparedStackProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestPreparedStackProfileEffect = ClosedEnum< + typeof SyncReconcileRequestPreparedStackProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestPreparedStackProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestPreparedStackProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestPreparedStackProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestPreparedStackProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestPreparedStackProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestPreparedStackProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestPreparedStackProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestPreparedStackProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileRequestPreparedStackProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestPreparedStackProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestPreparedStackProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestPreparedStackProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestPreparedStackProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestPreparedStackProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type PreparedStackProfileConditionStateResource = { + expression: string; + title: string; +}; + +export type PreparedStackProfileStateResourceConditionUnion = + | PreparedStackProfileConditionStateResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestPreparedStackProfileGcpResource = { + condition?: + | PreparedStackProfileConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type PreparedStackProfileConditionStateStack = { + expression: string; + title: string; +}; + +export type PreparedStackProfileStateStackConditionUnion = + | PreparedStackProfileConditionStateStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestPreparedStackProfileGcpStack = { + condition?: PreparedStackProfileConditionStateStack | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestPreparedStackProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileRequestPreparedStackProfileGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestPreparedStackProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestPreparedStackProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestPreparedStackProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestPreparedStackProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestPreparedStackProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestPreparedStackProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestPreparedStackProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestPreparedStackProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestPreparedStackProfileUnion = + | SyncReconcileRequestPreparedStackProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncReconcileRequestPreparedStackPermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncReconcileRequestPreparedStackManagement1 + | SyncReconcileRequestPreparedStackManagement2 + | SyncReconcileRequestPreparedStackManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileRequestPreparedStackConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncReconcileRequestPreparedStackDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const PreparedStackStateLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type PreparedStackStateLifecycle = ClosedEnum< + typeof PreparedStackStateLifecycle +>; + +export type SyncReconcileRequestPreparedStackResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncReconcileRequestPreparedStackConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: PreparedStackStateLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileRequestPreparedStackSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileRequestPreparedStackSupportedPlatform = ClosedEnum< + typeof SyncReconcileRequestPreparedStackSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncReconcileRequestPreparedStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncReconcileRequestPreparedStackPermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncReconcileRequestPreparedStackResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +export type SyncReconcileRequestPreparedStackUnion = + | SyncReconcileRequestPreparedStack + | any; + +/** + * Runtime metadata for deployment + * + * @remarks + * + * Stores deployment state that needs to persist across step calls. + */ +export type SyncReconcileRequestRuntimeMetadata = { + /** + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment + */ + lastSyncedEnvVarsHash?: string | null | undefined; + preparedStack?: SyncReconcileRequestPreparedStack | any | null | undefined; + /** + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. + */ + registryAccessGranted?: boolean | undefined; +}; + +export type SyncReconcileRequestRuntimeMetadataUnion = + | SyncReconcileRequestRuntimeMetadata + | any; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileRequestStackStatePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileRequestStackStatePlatform = ClosedEnum< + typeof SyncReconcileRequestStackStatePlatform +>; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileRequestStackStateConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const ControllerPlatformStateEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type ControllerPlatformStateEnum = ClosedEnum< + typeof ControllerPlatformStateEnum +>; + +export type StateControllerPlatformUnion = ControllerPlatformStateEnum | any; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncReconcileRequestStackStateDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type SyncReconcileRequestStackStateError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable?: boolean | undefined; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type SyncReconcileRequestStackStateErrorUnion = + | SyncReconcileRequestStackStateError + | any; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const StackStateLifecycleStateEnum = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type StackStateLifecycleStateEnum = ClosedEnum< + typeof StackStateLifecycleStateEnum +>; + +export type StateLifecycleUnion = StackStateLifecycleStateEnum | any; + +/** + * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. + */ +export type SyncReconcileRequestOutputs = { + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type SyncReconcileRequestOutputsUnion = + | SyncReconcileRequestOutputs + | any; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileRequestPreviousConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type SyncReconcileRequestPreviousConfigUnion = + | SyncReconcileRequestPreviousConfig + | any; + +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export const StackStateStateStatus = { + Pending: "pending", + Provisioning: "provisioning", + ProvisionFailed: "provision-failed", + Running: "running", + Updating: "updating", + UpdateFailed: "update-failed", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + Deleted: "deleted", + RefreshFailed: "refresh-failed", +} as const; +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export type StackStateStateStatus = ClosedEnum; + +/** + * Represents the state of a single resource within the stack for a specific platform. + */ +export type SyncReconcileRequestStackStateResources = { + /** + * The platform-specific resource controller that manages this resource's lifecycle. + * + * @remarks + * This is None when the resource status is Pending. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + internal?: any | null | undefined; + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncReconcileRequestStackStateConfig; + controllerPlatform?: ControllerPlatformStateEnum | any | null | undefined; + /** + * Complete list of dependencies for this resource, including infrastructure dependencies. + * + * @remarks + * This preserves the full dependency information from the stack definition. + */ + dependencies?: Array | undefined; + error?: SyncReconcileRequestStackStateError | any | null | undefined; + /** + * Stores the controller state that failed, used for manual retry operations. + * + * @remarks + * This allows resuming from the exact point where the failure occurred. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + lastFailedState?: any | null | undefined; + lifecycle?: StackStateLifecycleStateEnum | any | null | undefined; + outputs?: SyncReconcileRequestOutputs | any | null | undefined; + previousConfig?: SyncReconcileRequestPreviousConfig | any | null | undefined; + /** + * Binding parameters for remote access. + * + * @remarks + * Only populated when the resource has `remote_access: true` in its ResourceEntry. + * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). + * Populated by controllers during provisioning using get_binding_params(). + */ + remoteBindingParams?: any | null | undefined; + /** + * Tracks consecutive retry attempts for the current state transition. + */ + retryAttempt?: number | undefined; + /** + * Represents the high-level status of a resource during its lifecycle. + */ + status: StackStateStateStatus; + /** + * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + */ + type: string; +}; + +/** + * Represents the collective state of all resources in a stack, including platform and pending actions. + */ +export type SyncReconcileRequestStackState = { + /** + * Represents the target cloud platform. + */ + platform: SyncReconcileRequestStackStatePlatform; + /** + * A prefix used for resource naming to ensure uniqueness across deployments. + */ + resourcePrefix: string; + /** + * The state of individual resources, keyed by resource ID. + */ + resources: { [k: string]: SyncReconcileRequestStackStateResources }; +}; + +export type SyncReconcileRequestStackStateUnion = + | SyncReconcileRequestStackState + | any; + +/** + * Deployment status in the deployment lifecycle + */ +export const StateStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", +} as const; +/** + * Deployment status in the deployment lifecycle + */ +export type StateStatus = ClosedEnum; + +export const SyncReconcileRequestTargetReleaseTypeStringList = { + StringList: "stringList", +} as const; +export type SyncReconcileRequestTargetReleaseTypeStringList = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseTypeStringList +>; + +export type SyncReconcileRequestTargetReleaseDefaultStringList = { + type: SyncReconcileRequestTargetReleaseTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const SyncReconcileRequestTargetReleaseTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncReconcileRequestTargetReleaseTypeBoolean = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseTypeBoolean +>; + +export type SyncReconcileRequestTargetReleaseDefaultBoolean = { + type: SyncReconcileRequestTargetReleaseTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const SyncReconcileRequestTargetReleaseTypeNumber = { + Number: "number", +} as const; +export type SyncReconcileRequestTargetReleaseTypeNumber = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseTypeNumber +>; + +export type SyncReconcileRequestTargetReleaseDefaultNumber = { + type: SyncReconcileRequestTargetReleaseTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const SyncReconcileRequestTargetReleaseTypeString = { + String: "string", +} as const; +export type SyncReconcileRequestTargetReleaseTypeString = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseTypeString +>; + +export type SyncReconcileRequestTargetReleaseDefaultString = { + type: SyncReconcileRequestTargetReleaseTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncReconcileRequestTargetReleaseDefaultUnion = + | SyncReconcileRequestTargetReleaseDefaultString + | SyncReconcileRequestTargetReleaseDefaultNumber + | SyncReconcileRequestTargetReleaseDefaultBoolean + | SyncReconcileRequestTargetReleaseDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const SyncReconcileRequestTargetReleaseTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncReconcileRequestTargetReleaseTypeEnvEnum = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseTypeEnvEnum +>; + +export type SyncReconcileRequestTargetReleaseTypeUnion = + | SyncReconcileRequestTargetReleaseTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncReconcileRequestTargetReleaseEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: SyncReconcileRequestTargetReleaseTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const TargetReleaseStateKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type TargetReleaseStateKind = ClosedEnum; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileRequestTargetReleasePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileRequestTargetReleasePlatform = ClosedEnum< + typeof SyncReconcileRequestTargetReleasePlatform +>; + +/** + * Who can provide a stack input value. + */ +export const SyncReconcileRequestTargetReleaseProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncReconcileRequestTargetReleaseProvidedBy = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type SyncReconcileRequestTargetReleaseValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type SyncReconcileRequestTargetReleaseValidationUnion = + | SyncReconcileRequestTargetReleaseValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type SyncReconcileRequestTargetReleaseInput = { + default?: + | SyncReconcileRequestTargetReleaseDefaultString + | SyncReconcileRequestTargetReleaseDefaultNumber + | SyncReconcileRequestTargetReleaseDefaultBoolean + | SyncReconcileRequestTargetReleaseDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: TargetReleaseStateKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncReconcileRequestTargetReleaseValidation + | any + | null + | undefined; +}; + +export const SyncReconcileRequestTargetReleaseManagementEnum = { + Auto: "auto", +} as const; +export type SyncReconcileRequestTargetReleaseManagementEnum = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileRequestTargetReleaseOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestTargetReleaseOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestTargetReleaseOverrideEffect = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestTargetReleaseOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileRequestTargetReleaseOverrideAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type TargetReleaseOverrideConditionStateResource = { + expression: string; + title: string; +}; + +export type TargetReleaseOverrideStateResourceConditionUnion = + | TargetReleaseOverrideConditionStateResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseOverrideGcpResource = { + condition?: + | TargetReleaseOverrideConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type TargetReleaseOverrideConditionState = { + expression: string; + title: string; +}; + +export type TargetReleaseOverrideStateConditionUnion = + | TargetReleaseOverrideConditionState + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseOverrideGcpStack = { + condition?: TargetReleaseOverrideConditionState | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileRequestTargetReleaseOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestTargetReleaseOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestTargetReleaseOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestTargetReleaseOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestTargetReleaseOverrideUnion = + | SyncReconcileRequestTargetReleaseOverride + | string; + +export type SyncReconcileRequestTargetReleaseManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileRequestTargetReleaseExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileRequestTargetReleaseExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileRequestTargetReleaseExtendEffect = ClosedEnum< + typeof SyncReconcileRequestTargetReleaseExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileRequestTargetReleaseExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileRequestTargetReleaseExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type TargetReleaseExtendConditionStateResource = { + expression: string; + title: string; +}; + +export type TargetReleaseExtendStateResourceConditionUnion = + | TargetReleaseExtendConditionStateResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseExtendGcpResource = { + condition?: + | TargetReleaseExtendConditionStateResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type TargetReleaseExtendConditionState = { + expression: string; + title: string; +}; + +export type TargetReleaseExtendStateConditionUnion = + | TargetReleaseExtendConditionState + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileRequestTargetReleaseExtendGcpStack = { + condition?: TargetReleaseExtendConditionState | any | null | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileRequestTargetReleaseExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileRequestTargetReleaseExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileRequestTargetReleaseExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileRequestTargetReleaseExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileRequestTargetReleaseExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileRequestTargetReleaseExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileRequestTargetReleaseExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileRequestTargetReleaseExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileRequestTargetReleaseExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileRequestTargetReleaseExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileRequestTargetReleaseExtendUnion = + | SyncReconcileRequestTargetReleaseExtend + | string; + +export type SyncReconcileRequestTargetReleaseManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array; + }; +}; + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound = { + resource?: + | SyncReconcileRequestPreparedStackOverrideGcpResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestPreparedStackOverrideGcpStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound, + SyncReconcileRequestPreparedStackOverrideGcpBinding + > = z.object({ + resource: + SyncReconcileRequestPreparedStackOverrideGcpResource$outboundSchema + .optional(), + stack: SyncReconcileRequestPreparedStackOverrideGcpStack$outboundSchema + .optional(), + }); + +export function syncReconcileRequestPreparedStackOverrideGcpBindingToJSON( + syncReconcileRequestPreparedStackOverrideGcpBinding: + SyncReconcileRequestPreparedStackOverrideGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound, + SyncReconcileRequestPreparedStackOverrideGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPreparedStackOverrideGcpGrantToJSON( + syncReconcileRequestPreparedStackOverrideGcpGrant: + SyncReconcileRequestPreparedStackOverrideGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideGcp$Outbound = { + binding: SyncReconcileRequestPreparedStackOverrideGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestPreparedStackOverrideGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideGcp$Outbound, + SyncReconcileRequestPreparedStackOverrideGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackOverrideGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestPreparedStackOverrideGcpToJSON( + syncReconcileRequestPreparedStackOverrideGcp: + SyncReconcileRequestPreparedStackOverrideGcp, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverridePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverridePlatforms$Outbound, + SyncReconcileRequestPreparedStackOverridePlatforms + > = z.object({ + aws: z.nullable( + z.array(SyncReconcileRequestPreparedStackOverrideAw$outboundSchema), + ).optional(), + azure: z.nullable( + z.array(SyncReconcileRequestPreparedStackOverrideAzure$outboundSchema), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPreparedStackOverrideGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestPreparedStackOverridePlatformsToJSON( + syncReconcileRequestPreparedStackOverridePlatforms: + SyncReconcileRequestPreparedStackOverridePlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema.parse( + syncReconcileRequestPreparedStackOverridePlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverride$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestPreparedStackOverridePlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverride$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverride$Outbound, + SyncReconcileRequestPreparedStackOverride + > = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestPreparedStackOverridePlatforms$outboundSchema + ), + }); + +export function syncReconcileRequestPreparedStackOverrideToJSON( + syncReconcileRequestPreparedStackOverride: + SyncReconcileRequestPreparedStackOverride, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverride$outboundSchema.parse( + syncReconcileRequestPreparedStackOverride, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackOverrideUnion$Outbound = + | SyncReconcileRequestPreparedStackOverride$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestPreparedStackOverrideUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackOverrideUnion$Outbound, + SyncReconcileRequestPreparedStackOverrideUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackOverride$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestPreparedStackOverrideUnionToJSON( + syncReconcileRequestPreparedStackOverrideUnion: + SyncReconcileRequestPreparedStackOverrideUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackOverrideUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackOverrideUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackManagement2$Outbound = { + override: { + [k: string]: Array< + SyncReconcileRequestPreparedStackOverride$Outbound | string + >; + }; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackManagement2$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackManagement2$Outbound, + SyncReconcileRequestPreparedStackManagement2 + > = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackOverride$outboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileRequestPreparedStackManagement2ToJSON( + syncReconcileRequestPreparedStackManagement2: + SyncReconcileRequestPreparedStackManagement2, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackManagement2$outboundSchema.parse( + syncReconcileRequestPreparedStackManagement2, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendAwResource$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendAwResource$Outbound, + SyncReconcileRequestPreparedStackExtendAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestPreparedStackExtendAwResourceToJSON( + syncReconcileRequestPreparedStackExtendAwResource: + SyncReconcileRequestPreparedStackExtendAwResource, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendAwResource$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendAwStack$Outbound, + SyncReconcileRequestPreparedStackExtendAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestPreparedStackExtendAwStackToJSON( + syncReconcileRequestPreparedStackExtendAwStack: + SyncReconcileRequestPreparedStackExtendAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendAwBinding$Outbound = { + resource?: + | SyncReconcileRequestPreparedStackExtendAwResource$Outbound + | undefined; + stack?: SyncReconcileRequestPreparedStackExtendAwStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendAwBinding$Outbound, + SyncReconcileRequestPreparedStackExtendAwBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestPreparedStackExtendAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPreparedStackExtendAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestPreparedStackExtendAwBindingToJSON( + syncReconcileRequestPreparedStackExtendAwBinding: + SyncReconcileRequestPreparedStackExtendAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackExtendEffect, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendAwGrant$Outbound, + SyncReconcileRequestPreparedStackExtendAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPreparedStackExtendAwGrantToJSON( + syncReconcileRequestPreparedStackExtendAwGrant: + SyncReconcileRequestPreparedStackExtendAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendAw$Outbound = { + binding: SyncReconcileRequestPreparedStackExtendAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestPreparedStackExtendAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendAw$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendAw$Outbound, + SyncReconcileRequestPreparedStackExtendAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackExtendAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestPreparedStackExtendEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackExtendAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestPreparedStackExtendAwToJSON( + syncReconcileRequestPreparedStackExtendAw: + SyncReconcileRequestPreparedStackExtendAw, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendAw$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAw, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendAzureResource$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendAzureResource$Outbound, + SyncReconcileRequestPreparedStackExtendAzureResource + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackExtendAzureResourceToJSON( + syncReconcileRequestPreparedStackExtendAzureResource: + SyncReconcileRequestPreparedStackExtendAzureResource, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendAzureResource$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendAzureStack$Outbound, + SyncReconcileRequestPreparedStackExtendAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackExtendAzureStackToJSON( + syncReconcileRequestPreparedStackExtendAzureStack: + SyncReconcileRequestPreparedStackExtendAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound = { + resource?: + | SyncReconcileRequestPreparedStackExtendAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestPreparedStackExtendAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound, + SyncReconcileRequestPreparedStackExtendAzureBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestPreparedStackExtendAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPreparedStackExtendAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestPreparedStackExtendAzureBindingToJSON( + syncReconcileRequestPreparedStackExtendAzureBinding: + SyncReconcileRequestPreparedStackExtendAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound, + SyncReconcileRequestPreparedStackExtendAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPreparedStackExtendAzureGrantToJSON( + syncReconcileRequestPreparedStackExtendAzureGrant: + SyncReconcileRequestPreparedStackExtendAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendAzure$Outbound = { + binding: SyncReconcileRequestPreparedStackExtendAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestPreparedStackExtendAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendAzure$Outbound, + SyncReconcileRequestPreparedStackExtendAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackExtendAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackExtendAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestPreparedStackExtendAzureToJSON( + syncReconcileRequestPreparedStackExtendAzure: + SyncReconcileRequestPreparedStackExtendAzure, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendAzure$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendAzure, + ), + ); +} + +/** @internal */ +export type PreparedStackExtendConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const PreparedStackExtendConditionStateResource$outboundSchema: + z.ZodType< + PreparedStackExtendConditionStateResource$Outbound, + PreparedStackExtendConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function preparedStackExtendConditionStateResourceToJSON( + preparedStackExtendConditionStateResource: + PreparedStackExtendConditionStateResource, +): string { + return JSON.stringify( + PreparedStackExtendConditionStateResource$outboundSchema.parse( + preparedStackExtendConditionStateResource, + ), + ); +} + +/** @internal */ +export type PreparedStackExtendStateResourceConditionUnion$Outbound = + | PreparedStackExtendConditionStateResource$Outbound + | any; + +/** @internal */ +export const PreparedStackExtendStateResourceConditionUnion$outboundSchema: + z.ZodType< + PreparedStackExtendStateResourceConditionUnion$Outbound, + PreparedStackExtendStateResourceConditionUnion + > = z.union([ + z.lazy(() => PreparedStackExtendConditionStateResource$outboundSchema), + z.any(), + ]); + +export function preparedStackExtendStateResourceConditionUnionToJSON( + preparedStackExtendStateResourceConditionUnion: + PreparedStackExtendStateResourceConditionUnion, +): string { + return JSON.stringify( + PreparedStackExtendStateResourceConditionUnion$outboundSchema.parse( + preparedStackExtendStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendGcpResource$Outbound = { + condition?: + | PreparedStackExtendConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendGcpResource$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendGcpResource$Outbound, + SyncReconcileRequestPreparedStackExtendGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => PreparedStackExtendConditionStateResource$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackExtendGcpResourceToJSON( + syncReconcileRequestPreparedStackExtendGcpResource: + SyncReconcileRequestPreparedStackExtendGcpResource, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendGcpResource$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendGcpResource, + ), + ); +} + +/** @internal */ +export type PreparedStackExtendConditionStateStack$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const PreparedStackExtendConditionStateStack$outboundSchema: z.ZodType< + PreparedStackExtendConditionStateStack$Outbound, + PreparedStackExtendConditionStateStack +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function preparedStackExtendConditionStateStackToJSON( + preparedStackExtendConditionStateStack: + PreparedStackExtendConditionStateStack, +): string { + return JSON.stringify( + PreparedStackExtendConditionStateStack$outboundSchema.parse( + preparedStackExtendConditionStateStack, + ), + ); +} + +/** @internal */ +export type PreparedStackExtendStateStackConditionUnion$Outbound = + | PreparedStackExtendConditionStateStack$Outbound + | any; + +/** @internal */ +export const PreparedStackExtendStateStackConditionUnion$outboundSchema: + z.ZodType< + PreparedStackExtendStateStackConditionUnion$Outbound, + PreparedStackExtendStateStackConditionUnion + > = z.union([ + z.lazy(() => PreparedStackExtendConditionStateStack$outboundSchema), + z.any(), + ]); + +export function preparedStackExtendStateStackConditionUnionToJSON( + preparedStackExtendStateStackConditionUnion: + PreparedStackExtendStateStackConditionUnion, +): string { + return JSON.stringify( + PreparedStackExtendStateStackConditionUnion$outboundSchema.parse( + preparedStackExtendStateStackConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendGcpStack$Outbound = { + condition?: + | PreparedStackExtendConditionStateStack$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendGcpStack$Outbound, + SyncReconcileRequestPreparedStackExtendGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => PreparedStackExtendConditionStateStack$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackExtendGcpStackToJSON( + syncReconcileRequestPreparedStackExtendGcpStack: + SyncReconcileRequestPreparedStackExtendGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendGcpStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound = { + resource?: + | SyncReconcileRequestPreparedStackExtendGcpResource$Outbound + | undefined; + stack?: SyncReconcileRequestPreparedStackExtendGcpStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound, + SyncReconcileRequestPreparedStackExtendGcpBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestPreparedStackExtendGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPreparedStackExtendGcpStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestPreparedStackExtendGcpBindingToJSON( + syncReconcileRequestPreparedStackExtendGcpBinding: + SyncReconcileRequestPreparedStackExtendGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound, + SyncReconcileRequestPreparedStackExtendGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPreparedStackExtendGcpGrantToJSON( + syncReconcileRequestPreparedStackExtendGcpGrant: + SyncReconcileRequestPreparedStackExtendGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendGcp$Outbound = { + binding: SyncReconcileRequestPreparedStackExtendGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestPreparedStackExtendGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendGcp$Outbound, + SyncReconcileRequestPreparedStackExtendGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackExtendGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackExtendGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestPreparedStackExtendGcpToJSON( + syncReconcileRequestPreparedStackExtendGcp: + SyncReconcileRequestPreparedStackExtendGcp, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendGcp$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendPlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendPlatforms$Outbound, + SyncReconcileRequestPreparedStackExtendPlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPreparedStackExtendAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPreparedStackExtendAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPreparedStackExtendGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestPreparedStackExtendPlatformsToJSON( + syncReconcileRequestPreparedStackExtendPlatforms: + SyncReconcileRequestPreparedStackExtendPlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendPlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtend$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestPreparedStackExtendPlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtend$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackExtend$Outbound, + SyncReconcileRequestPreparedStackExtend +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestPreparedStackExtendPlatforms$outboundSchema + ), +}); + +export function syncReconcileRequestPreparedStackExtendToJSON( + syncReconcileRequestPreparedStackExtend: + SyncReconcileRequestPreparedStackExtend, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtend$outboundSchema.parse( + syncReconcileRequestPreparedStackExtend, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackExtendUnion$Outbound = + | SyncReconcileRequestPreparedStackExtend$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestPreparedStackExtendUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackExtendUnion$Outbound, + SyncReconcileRequestPreparedStackExtendUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackExtend$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestPreparedStackExtendUnionToJSON( + syncReconcileRequestPreparedStackExtendUnion: + SyncReconcileRequestPreparedStackExtendUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackExtendUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackExtendUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackManagement1$Outbound = { + extend: { + [k: string]: Array< + SyncReconcileRequestPreparedStackExtend$Outbound | string + >; + }; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackManagement1$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackManagement1$Outbound, + SyncReconcileRequestPreparedStackManagement1 + > = z.object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackExtend$outboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileRequestPreparedStackManagement1ToJSON( + syncReconcileRequestPreparedStackManagement1: + SyncReconcileRequestPreparedStackManagement1, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackManagement1$outboundSchema.parse( + syncReconcileRequestPreparedStackManagement1, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackManagementUnion$Outbound = + | SyncReconcileRequestPreparedStackManagement1$Outbound + | SyncReconcileRequestPreparedStackManagement2$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestPreparedStackManagementUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackManagementUnion$Outbound, + SyncReconcileRequestPreparedStackManagementUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackManagement1$outboundSchema), + z.lazy(() => SyncReconcileRequestPreparedStackManagement2$outboundSchema), + SyncReconcileRequestPreparedStackManagementEnum$outboundSchema, + ]); + +export function syncReconcileRequestPreparedStackManagementUnionToJSON( + syncReconcileRequestPreparedStackManagementUnion: + SyncReconcileRequestPreparedStackManagementUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackManagementUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackManagementUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileAwResource$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileAwResource$Outbound, + SyncReconcileRequestPreparedStackProfileAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestPreparedStackProfileAwResourceToJSON( + syncReconcileRequestPreparedStackProfileAwResource: + SyncReconcileRequestPreparedStackProfileAwResource, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileAwResource$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileAwStack$Outbound, + SyncReconcileRequestPreparedStackProfileAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestPreparedStackProfileAwStackToJSON( + syncReconcileRequestPreparedStackProfileAwStack: + SyncReconcileRequestPreparedStackProfileAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileAwBinding$Outbound = { + resource?: + | SyncReconcileRequestPreparedStackProfileAwResource$Outbound + | undefined; + stack?: SyncReconcileRequestPreparedStackProfileAwStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileAwBinding$Outbound, + SyncReconcileRequestPreparedStackProfileAwBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestPreparedStackProfileAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPreparedStackProfileAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestPreparedStackProfileAwBindingToJSON( + syncReconcileRequestPreparedStackProfileAwBinding: + SyncReconcileRequestPreparedStackProfileAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackProfileEffect, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileAwGrant$Outbound, + SyncReconcileRequestPreparedStackProfileAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPreparedStackProfileAwGrantToJSON( + syncReconcileRequestPreparedStackProfileAwGrant: + SyncReconcileRequestPreparedStackProfileAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileAw$Outbound = { + binding: SyncReconcileRequestPreparedStackProfileAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestPreparedStackProfileAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileAw$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileAw$Outbound, + SyncReconcileRequestPreparedStackProfileAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackProfileAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestPreparedStackProfileEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackProfileAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestPreparedStackProfileAwToJSON( + syncReconcileRequestPreparedStackProfileAw: + SyncReconcileRequestPreparedStackProfileAw, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileAw$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAw, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileAzureResource$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileAzureResource$Outbound, + SyncReconcileRequestPreparedStackProfileAzureResource + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackProfileAzureResourceToJSON( + syncReconcileRequestPreparedStackProfileAzureResource: + SyncReconcileRequestPreparedStackProfileAzureResource, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileAzureResource$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileAzureStack$Outbound, + SyncReconcileRequestPreparedStackProfileAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackProfileAzureStackToJSON( + syncReconcileRequestPreparedStackProfileAzureStack: + SyncReconcileRequestPreparedStackProfileAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound = { + resource?: + | SyncReconcileRequestPreparedStackProfileAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestPreparedStackProfileAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound, + SyncReconcileRequestPreparedStackProfileAzureBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestPreparedStackProfileAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPreparedStackProfileAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestPreparedStackProfileAzureBindingToJSON( + syncReconcileRequestPreparedStackProfileAzureBinding: + SyncReconcileRequestPreparedStackProfileAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound, + SyncReconcileRequestPreparedStackProfileAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPreparedStackProfileAzureGrantToJSON( + syncReconcileRequestPreparedStackProfileAzureGrant: + SyncReconcileRequestPreparedStackProfileAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileAzure$Outbound = { + binding: SyncReconcileRequestPreparedStackProfileAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestPreparedStackProfileAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileAzure$Outbound, + SyncReconcileRequestPreparedStackProfileAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackProfileAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackProfileAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestPreparedStackProfileAzureToJSON( + syncReconcileRequestPreparedStackProfileAzure: + SyncReconcileRequestPreparedStackProfileAzure, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileAzure$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileAzure, + ), + ); +} + +/** @internal */ +export type PreparedStackProfileConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const PreparedStackProfileConditionStateResource$outboundSchema: + z.ZodType< + PreparedStackProfileConditionStateResource$Outbound, + PreparedStackProfileConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function preparedStackProfileConditionStateResourceToJSON( + preparedStackProfileConditionStateResource: + PreparedStackProfileConditionStateResource, +): string { + return JSON.stringify( + PreparedStackProfileConditionStateResource$outboundSchema.parse( + preparedStackProfileConditionStateResource, + ), + ); +} + +/** @internal */ +export type PreparedStackProfileStateResourceConditionUnion$Outbound = + | PreparedStackProfileConditionStateResource$Outbound + | any; + +/** @internal */ +export const PreparedStackProfileStateResourceConditionUnion$outboundSchema: + z.ZodType< + PreparedStackProfileStateResourceConditionUnion$Outbound, + PreparedStackProfileStateResourceConditionUnion + > = z.union([ + z.lazy(() => PreparedStackProfileConditionStateResource$outboundSchema), + z.any(), + ]); + +export function preparedStackProfileStateResourceConditionUnionToJSON( + preparedStackProfileStateResourceConditionUnion: + PreparedStackProfileStateResourceConditionUnion, +): string { + return JSON.stringify( + PreparedStackProfileStateResourceConditionUnion$outboundSchema.parse( + preparedStackProfileStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileGcpResource$Outbound = { + condition?: + | PreparedStackProfileConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileGcpResource$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileGcpResource$Outbound, + SyncReconcileRequestPreparedStackProfileGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => PreparedStackProfileConditionStateResource$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackProfileGcpResourceToJSON( + syncReconcileRequestPreparedStackProfileGcpResource: + SyncReconcileRequestPreparedStackProfileGcpResource, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileGcpResource$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileGcpResource, + ), + ); +} + +/** @internal */ +export type PreparedStackProfileConditionStateStack$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const PreparedStackProfileConditionStateStack$outboundSchema: z.ZodType< + PreparedStackProfileConditionStateStack$Outbound, + PreparedStackProfileConditionStateStack +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function preparedStackProfileConditionStateStackToJSON( + preparedStackProfileConditionStateStack: + PreparedStackProfileConditionStateStack, +): string { + return JSON.stringify( + PreparedStackProfileConditionStateStack$outboundSchema.parse( + preparedStackProfileConditionStateStack, + ), + ); +} + +/** @internal */ +export type PreparedStackProfileStateStackConditionUnion$Outbound = + | PreparedStackProfileConditionStateStack$Outbound + | any; + +/** @internal */ +export const PreparedStackProfileStateStackConditionUnion$outboundSchema: + z.ZodType< + PreparedStackProfileStateStackConditionUnion$Outbound, + PreparedStackProfileStateStackConditionUnion + > = z.union([ + z.lazy(() => PreparedStackProfileConditionStateStack$outboundSchema), + z.any(), + ]); + +export function preparedStackProfileStateStackConditionUnionToJSON( + preparedStackProfileStateStackConditionUnion: + PreparedStackProfileStateStackConditionUnion, +): string { + return JSON.stringify( + PreparedStackProfileStateStackConditionUnion$outboundSchema.parse( + preparedStackProfileStateStackConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileGcpStack$Outbound = { + condition?: + | PreparedStackProfileConditionStateStack$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileGcpStack$Outbound, + SyncReconcileRequestPreparedStackProfileGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => PreparedStackProfileConditionStateStack$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestPreparedStackProfileGcpStackToJSON( + syncReconcileRequestPreparedStackProfileGcpStack: + SyncReconcileRequestPreparedStackProfileGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileGcpStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound = { + resource?: + | SyncReconcileRequestPreparedStackProfileGcpResource$Outbound + | undefined; + stack?: SyncReconcileRequestPreparedStackProfileGcpStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound, + SyncReconcileRequestPreparedStackProfileGcpBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestPreparedStackProfileGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestPreparedStackProfileGcpStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestPreparedStackProfileGcpBindingToJSON( + syncReconcileRequestPreparedStackProfileGcpBinding: + SyncReconcileRequestPreparedStackProfileGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound, + SyncReconcileRequestPreparedStackProfileGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestPreparedStackProfileGcpGrantToJSON( + syncReconcileRequestPreparedStackProfileGcpGrant: + SyncReconcileRequestPreparedStackProfileGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileGcp$Outbound = { + binding: SyncReconcileRequestPreparedStackProfileGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestPreparedStackProfileGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileGcp$Outbound, + SyncReconcileRequestPreparedStackProfileGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestPreparedStackProfileGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestPreparedStackProfileGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestPreparedStackProfileGcpToJSON( + syncReconcileRequestPreparedStackProfileGcp: + SyncReconcileRequestPreparedStackProfileGcp, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileGcp$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfilePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfilePlatforms$Outbound, + SyncReconcileRequestPreparedStackProfilePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPreparedStackProfileAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPreparedStackProfileAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestPreparedStackProfileGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestPreparedStackProfilePlatformsToJSON( + syncReconcileRequestPreparedStackProfilePlatforms: + SyncReconcileRequestPreparedStackProfilePlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema.parse( + syncReconcileRequestPreparedStackProfilePlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfile$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestPreparedStackProfilePlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfile$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackProfile$Outbound, + SyncReconcileRequestPreparedStackProfile +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestPreparedStackProfilePlatforms$outboundSchema + ), +}); + +export function syncReconcileRequestPreparedStackProfileToJSON( + syncReconcileRequestPreparedStackProfile: + SyncReconcileRequestPreparedStackProfile, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfile$outboundSchema.parse( + syncReconcileRequestPreparedStackProfile, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackProfileUnion$Outbound = + | SyncReconcileRequestPreparedStackProfile$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestPreparedStackProfileUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackProfileUnion$Outbound, + SyncReconcileRequestPreparedStackProfileUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackProfile$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestPreparedStackProfileUnionToJSON( + syncReconcileRequestPreparedStackProfileUnion: + SyncReconcileRequestPreparedStackProfileUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackProfileUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackProfileUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackPermissions$Outbound = { + management?: + | SyncReconcileRequestPreparedStackManagement1$Outbound + | SyncReconcileRequestPreparedStackManagement2$Outbound + | string + | undefined; + profiles: { + [k: string]: { + [k: string]: Array< + SyncReconcileRequestPreparedStackProfile$Outbound | string + >; + }; + }; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackPermissions$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackPermissions$Outbound, + SyncReconcileRequestPreparedStackPermissions + > = z.object({ + management: z.union([ + z.lazy(() => SyncReconcileRequestPreparedStackManagement1$outboundSchema), + z.lazy(() => SyncReconcileRequestPreparedStackManagement2$outboundSchema), + SyncReconcileRequestPreparedStackManagementEnum$outboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileRequestPreparedStackProfile$outboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); + +export function syncReconcileRequestPreparedStackPermissionsToJSON( + syncReconcileRequestPreparedStackPermissions: + SyncReconcileRequestPreparedStackPermissions, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackPermissions$outboundSchema.parse( + syncReconcileRequestPreparedStackPermissions, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackConfig$Outbound = { + id: string; + type: string; + [additionalProperties: string]: unknown; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackConfig$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackConfig$Outbound, + SyncReconcileRequestPreparedStackConfig +> = z.object({ + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; +}); + +export function syncReconcileRequestPreparedStackConfigToJSON( + syncReconcileRequestPreparedStackConfig: + SyncReconcileRequestPreparedStackConfig, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackConfig$outboundSchema.parse( + syncReconcileRequestPreparedStackConfig, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackDependency$Outbound = { + id: string; + type: string; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackDependency$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackDependency$Outbound, + SyncReconcileRequestPreparedStackDependency + > = z.object({ + id: z.string(), + type: z.string(), + }); + +export function syncReconcileRequestPreparedStackDependencyToJSON( + syncReconcileRequestPreparedStackDependency: + SyncReconcileRequestPreparedStackDependency, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackDependency$outboundSchema.parse( + syncReconcileRequestPreparedStackDependency, + ), + ); +} + +/** @internal */ +export const PreparedStackStateLifecycle$outboundSchema: z.ZodEnum< + typeof PreparedStackStateLifecycle +> = z.enum(PreparedStackStateLifecycle); + +/** @internal */ +export type SyncReconcileRequestPreparedStackResources$Outbound = { + config: SyncReconcileRequestPreparedStackConfig$Outbound; + dependencies: Array; + lifecycle: string; + remoteAccess?: boolean | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStackResources$outboundSchema: + z.ZodType< + SyncReconcileRequestPreparedStackResources$Outbound, + SyncReconcileRequestPreparedStackResources + > = z.object({ + config: z.lazy(() => + SyncReconcileRequestPreparedStackConfig$outboundSchema + ), + dependencies: z.array( + z.lazy(() => SyncReconcileRequestPreparedStackDependency$outboundSchema), + ), + lifecycle: PreparedStackStateLifecycle$outboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncReconcileRequestPreparedStackResourcesToJSON( + syncReconcileRequestPreparedStackResources: + SyncReconcileRequestPreparedStackResources, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackResources$outboundSchema.parse( + syncReconcileRequestPreparedStackResources, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestPreparedStackSupportedPlatform$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestPreparedStackSupportedPlatform, + ); + +/** @internal */ +export type SyncReconcileRequestPreparedStack$Outbound = { + id: string; + inputs?: Array | undefined; + permissions?: + | SyncReconcileRequestPreparedStackPermissions$Outbound + | undefined; + resources: { + [k: string]: SyncReconcileRequestPreparedStackResources$Outbound; + }; + supportedPlatforms?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestPreparedStack$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStack$Outbound, + SyncReconcileRequestPreparedStack +> = z.object({ + id: z.string(), + inputs: z.array(SyncReconcileRequestPreparedStackInput$outboundSchema) + .optional(), + permissions: z.lazy(() => + SyncReconcileRequestPreparedStackPermissions$outboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileRequestPreparedStackResources$outboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncReconcileRequestPreparedStackSupportedPlatform$outboundSchema), + ).optional(), +}); + +export function syncReconcileRequestPreparedStackToJSON( + syncReconcileRequestPreparedStack: SyncReconcileRequestPreparedStack, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStack$outboundSchema.parse( + syncReconcileRequestPreparedStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreparedStackUnion$Outbound = + | SyncReconcileRequestPreparedStack$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestPreparedStackUnion$outboundSchema: z.ZodType< + SyncReconcileRequestPreparedStackUnion$Outbound, + SyncReconcileRequestPreparedStackUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestPreparedStack$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestPreparedStackUnionToJSON( + syncReconcileRequestPreparedStackUnion: + SyncReconcileRequestPreparedStackUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPreparedStackUnion$outboundSchema.parse( + syncReconcileRequestPreparedStackUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestRuntimeMetadata$Outbound = { + lastSyncedEnvVarsHash?: string | null | undefined; + preparedStack?: + | SyncReconcileRequestPreparedStack$Outbound + | any + | null + | undefined; + registryAccessGranted?: boolean | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestRuntimeMetadata$outboundSchema: z.ZodType< + SyncReconcileRequestRuntimeMetadata$Outbound, + SyncReconcileRequestRuntimeMetadata +> = z.object({ + lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), + preparedStack: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestPreparedStack$outboundSchema), + z.any(), + ]), + ).optional(), + registryAccessGranted: z.boolean().optional(), +}); + +export function syncReconcileRequestRuntimeMetadataToJSON( + syncReconcileRequestRuntimeMetadata: SyncReconcileRequestRuntimeMetadata, +): string { + return JSON.stringify( + SyncReconcileRequestRuntimeMetadata$outboundSchema.parse( + syncReconcileRequestRuntimeMetadata, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestRuntimeMetadataUnion$Outbound = + | SyncReconcileRequestRuntimeMetadata$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestRuntimeMetadataUnion$outboundSchema: z.ZodType< + SyncReconcileRequestRuntimeMetadataUnion$Outbound, + SyncReconcileRequestRuntimeMetadataUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestRuntimeMetadata$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestRuntimeMetadataUnionToJSON( + syncReconcileRequestRuntimeMetadataUnion: + SyncReconcileRequestRuntimeMetadataUnion, +): string { + return JSON.stringify( + SyncReconcileRequestRuntimeMetadataUnion$outboundSchema.parse( + syncReconcileRequestRuntimeMetadataUnion, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestStackStatePlatform$outboundSchema: z.ZodEnum< + typeof SyncReconcileRequestStackStatePlatform +> = z.enum(SyncReconcileRequestStackStatePlatform); + +/** @internal */ +export type SyncReconcileRequestStackStateConfig$Outbound = { + id: string; + type: string; + [additionalProperties: string]: unknown; +}; + +/** @internal */ +export const SyncReconcileRequestStackStateConfig$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateConfig$Outbound, + SyncReconcileRequestStackStateConfig +> = z.object({ + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; +}); + +export function syncReconcileRequestStackStateConfigToJSON( + syncReconcileRequestStackStateConfig: SyncReconcileRequestStackStateConfig, +): string { + return JSON.stringify( + SyncReconcileRequestStackStateConfig$outboundSchema.parse( + syncReconcileRequestStackStateConfig, + ), + ); +} + +/** @internal */ +export const ControllerPlatformStateEnum$outboundSchema: z.ZodEnum< + typeof ControllerPlatformStateEnum +> = z.enum(ControllerPlatformStateEnum); + +/** @internal */ +export type StateControllerPlatformUnion$Outbound = string | any; + +/** @internal */ +export const StateControllerPlatformUnion$outboundSchema: z.ZodType< + StateControllerPlatformUnion$Outbound, + StateControllerPlatformUnion +> = z.union([ControllerPlatformStateEnum$outboundSchema, z.any()]); + +export function stateControllerPlatformUnionToJSON( + stateControllerPlatformUnion: StateControllerPlatformUnion, +): string { + return JSON.stringify( + StateControllerPlatformUnion$outboundSchema.parse( + stateControllerPlatformUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestStackStateDependency$Outbound = { + id: string; + type: string; +}; + +/** @internal */ +export const SyncReconcileRequestStackStateDependency$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateDependency$Outbound, + SyncReconcileRequestStackStateDependency +> = z.object({ + id: z.string(), + type: z.string(), +}); + +export function syncReconcileRequestStackStateDependencyToJSON( + syncReconcileRequestStackStateDependency: + SyncReconcileRequestStackStateDependency, +): string { + return JSON.stringify( + SyncReconcileRequestStackStateDependency$outboundSchema.parse( + syncReconcileRequestStackStateDependency, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestStackStateError$Outbound = { + code: string; + context?: any | null | undefined; + hint?: string | null | undefined; + httpStatusCode?: number | null | undefined; + internal: boolean; + message: string; + retryable: boolean; + source?: any | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestStackStateError$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateError$Outbound, + SyncReconcileRequestStackStateError +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function syncReconcileRequestStackStateErrorToJSON( + syncReconcileRequestStackStateError: SyncReconcileRequestStackStateError, +): string { + return JSON.stringify( + SyncReconcileRequestStackStateError$outboundSchema.parse( + syncReconcileRequestStackStateError, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestStackStateErrorUnion$Outbound = + | SyncReconcileRequestStackStateError$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestStackStateErrorUnion$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateErrorUnion$Outbound, + SyncReconcileRequestStackStateErrorUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestStackStateError$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestStackStateErrorUnionToJSON( + syncReconcileRequestStackStateErrorUnion: + SyncReconcileRequestStackStateErrorUnion, +): string { + return JSON.stringify( + SyncReconcileRequestStackStateErrorUnion$outboundSchema.parse( + syncReconcileRequestStackStateErrorUnion, + ), + ); +} + +/** @internal */ +export const StackStateLifecycleStateEnum$outboundSchema: z.ZodEnum< + typeof StackStateLifecycleStateEnum +> = z.enum(StackStateLifecycleStateEnum); + +/** @internal */ +export type StateLifecycleUnion$Outbound = string | any; + +/** @internal */ +export const StateLifecycleUnion$outboundSchema: z.ZodType< + StateLifecycleUnion$Outbound, + StateLifecycleUnion +> = z.union([StackStateLifecycleStateEnum$outboundSchema, z.any()]); + +export function stateLifecycleUnionToJSON( + stateLifecycleUnion: StateLifecycleUnion, +): string { + return JSON.stringify( + StateLifecycleUnion$outboundSchema.parse(stateLifecycleUnion), + ); +} + +/** @internal */ +export type SyncReconcileRequestOutputs$Outbound = { + type: string; + [additionalProperties: string]: unknown; +}; + +/** @internal */ +export const SyncReconcileRequestOutputs$outboundSchema: z.ZodType< + SyncReconcileRequestOutputs$Outbound, + SyncReconcileRequestOutputs +> = z.object({ + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; +}); + +export function syncReconcileRequestOutputsToJSON( + syncReconcileRequestOutputs: SyncReconcileRequestOutputs, +): string { + return JSON.stringify( + SyncReconcileRequestOutputs$outboundSchema.parse( + syncReconcileRequestOutputs, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestOutputsUnion$Outbound = + | SyncReconcileRequestOutputs$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestOutputsUnion$outboundSchema: z.ZodType< + SyncReconcileRequestOutputsUnion$Outbound, + SyncReconcileRequestOutputsUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestOutputs$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestOutputsUnionToJSON( + syncReconcileRequestOutputsUnion: SyncReconcileRequestOutputsUnion, +): string { + return JSON.stringify( + SyncReconcileRequestOutputsUnion$outboundSchema.parse( + syncReconcileRequestOutputsUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreviousConfig$Outbound = { + id: string; + type: string; + [additionalProperties: string]: unknown; +}; + +/** @internal */ +export const SyncReconcileRequestPreviousConfig$outboundSchema: z.ZodType< + SyncReconcileRequestPreviousConfig$Outbound, + SyncReconcileRequestPreviousConfig +> = z.object({ + id: z.string(), + type: z.string(), + additionalProperties: z.record(z.string(), z.nullable(z.any())).optional(), +}).transform((v) => { + return { + ...v.additionalProperties, + ...remap$(v, { + additionalProperties: null, + }), + }; +}); + +export function syncReconcileRequestPreviousConfigToJSON( + syncReconcileRequestPreviousConfig: SyncReconcileRequestPreviousConfig, +): string { + return JSON.stringify( + SyncReconcileRequestPreviousConfig$outboundSchema.parse( + syncReconcileRequestPreviousConfig, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestPreviousConfigUnion$Outbound = + | SyncReconcileRequestPreviousConfig$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestPreviousConfigUnion$outboundSchema: z.ZodType< + SyncReconcileRequestPreviousConfigUnion$Outbound, + SyncReconcileRequestPreviousConfigUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestPreviousConfig$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestPreviousConfigUnionToJSON( + syncReconcileRequestPreviousConfigUnion: + SyncReconcileRequestPreviousConfigUnion, +): string { + return JSON.stringify( + SyncReconcileRequestPreviousConfigUnion$outboundSchema.parse( + syncReconcileRequestPreviousConfigUnion, + ), + ); +} + +/** @internal */ +export const StackStateStateStatus$outboundSchema: z.ZodEnum< + typeof StackStateStateStatus +> = z.enum(StackStateStateStatus); + +/** @internal */ +export type SyncReconcileRequestStackStateResources$Outbound = { + _internal?: any | null | undefined; + config: SyncReconcileRequestStackStateConfig$Outbound; + controllerPlatform?: string | any | null | undefined; + dependencies?: + | Array + | undefined; + error?: SyncReconcileRequestStackStateError$Outbound | any | null | undefined; + lastFailedState?: any | null | undefined; + lifecycle?: string | any | null | undefined; + outputs?: SyncReconcileRequestOutputs$Outbound | any | null | undefined; + previousConfig?: + | SyncReconcileRequestPreviousConfig$Outbound + | any + | null + | undefined; + remoteBindingParams?: any | null | undefined; + retryAttempt?: number | undefined; + status: string; + type: string; +}; + +/** @internal */ +export const SyncReconcileRequestStackStateResources$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateResources$Outbound, + SyncReconcileRequestStackStateResources +> = z.object({ + internal: z.nullable(z.any()).optional(), + config: z.lazy(() => SyncReconcileRequestStackStateConfig$outboundSchema), + controllerPlatform: z.nullable( + z.union([ControllerPlatformStateEnum$outboundSchema, z.any()]), + ).optional(), + dependencies: z.array( + z.lazy(() => SyncReconcileRequestStackStateDependency$outboundSchema), + ).optional(), + error: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestStackStateError$outboundSchema), + z.any(), + ]), + ).optional(), + lastFailedState: z.nullable(z.any()).optional(), + lifecycle: z.nullable( + z.union([StackStateLifecycleStateEnum$outboundSchema, z.any()]), + ).optional(), + outputs: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestOutputs$outboundSchema), + z.any(), + ]), + ).optional(), + previousConfig: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestPreviousConfig$outboundSchema), + z.any(), + ]), + ).optional(), + remoteBindingParams: z.nullable(z.any()).optional(), + retryAttempt: z.int().optional(), + status: StackStateStateStatus$outboundSchema, + type: z.string(), +}).transform((v) => { + return remap$(v, { + internal: "_internal", + }); +}); + +export function syncReconcileRequestStackStateResourcesToJSON( + syncReconcileRequestStackStateResources: + SyncReconcileRequestStackStateResources, +): string { + return JSON.stringify( + SyncReconcileRequestStackStateResources$outboundSchema.parse( + syncReconcileRequestStackStateResources, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestStackState$Outbound = { + platform: string; + resourcePrefix: string; + resources: { [k: string]: SyncReconcileRequestStackStateResources$Outbound }; +}; + +/** @internal */ +export const SyncReconcileRequestStackState$outboundSchema: z.ZodType< + SyncReconcileRequestStackState$Outbound, + SyncReconcileRequestStackState +> = z.object({ + platform: SyncReconcileRequestStackStatePlatform$outboundSchema, + resourcePrefix: z.string(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileRequestStackStateResources$outboundSchema), + ), +}); + +export function syncReconcileRequestStackStateToJSON( + syncReconcileRequestStackState: SyncReconcileRequestStackState, +): string { + return JSON.stringify( + SyncReconcileRequestStackState$outboundSchema.parse( + syncReconcileRequestStackState, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestStackStateUnion$Outbound = + | SyncReconcileRequestStackState$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestStackStateUnion$outboundSchema: z.ZodType< + SyncReconcileRequestStackStateUnion$Outbound, + SyncReconcileRequestStackStateUnion +> = z.union([ + z.lazy(() => SyncReconcileRequestStackState$outboundSchema), + z.any(), +]); + +export function syncReconcileRequestStackStateUnionToJSON( + syncReconcileRequestStackStateUnion: SyncReconcileRequestStackStateUnion, +): string { + return JSON.stringify( + SyncReconcileRequestStackStateUnion$outboundSchema.parse( + syncReconcileRequestStackStateUnion, + ), + ); +} + +/** @internal */ +export const StateStatus$outboundSchema: z.ZodEnum = z.enum( + StateStatus, +); + +/** @internal */ +export const SyncReconcileRequestTargetReleaseTypeStringList$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseTypeStringList, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseDefaultStringList$Outbound = { + type: string; + value: Array; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseDefaultStringList$Outbound, + SyncReconcileRequestTargetReleaseDefaultStringList + > = z.object({ + type: SyncReconcileRequestTargetReleaseTypeStringList$outboundSchema, + value: z.array(z.string()), + }); + +export function syncReconcileRequestTargetReleaseDefaultStringListToJSON( + syncReconcileRequestTargetReleaseDefaultStringList: + SyncReconcileRequestTargetReleaseDefaultStringList, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema.parse( + syncReconcileRequestTargetReleaseDefaultStringList, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestTargetReleaseTypeBoolean$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseTypeBoolean, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound = { + type: string; + value: boolean; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound, + SyncReconcileRequestTargetReleaseDefaultBoolean + > = z.object({ + type: SyncReconcileRequestTargetReleaseTypeBoolean$outboundSchema, + value: z.boolean(), + }); + +export function syncReconcileRequestTargetReleaseDefaultBooleanToJSON( + syncReconcileRequestTargetReleaseDefaultBoolean: + SyncReconcileRequestTargetReleaseDefaultBoolean, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema.parse( + syncReconcileRequestTargetReleaseDefaultBoolean, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestTargetReleaseTypeNumber$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseTypeNumber, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseDefaultNumber$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseDefaultNumber$Outbound, + SyncReconcileRequestTargetReleaseDefaultNumber + > = z.object({ + type: SyncReconcileRequestTargetReleaseTypeNumber$outboundSchema, + value: z.string(), + }); + +export function syncReconcileRequestTargetReleaseDefaultNumberToJSON( + syncReconcileRequestTargetReleaseDefaultNumber: + SyncReconcileRequestTargetReleaseDefaultNumber, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema.parse( + syncReconcileRequestTargetReleaseDefaultNumber, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestTargetReleaseTypeString$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseTypeString, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseDefaultString$Outbound = { + type: string; + value: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseDefaultString$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseDefaultString$Outbound, + SyncReconcileRequestTargetReleaseDefaultString + > = z.object({ + type: SyncReconcileRequestTargetReleaseTypeString$outboundSchema, + value: z.string(), + }); + +export function syncReconcileRequestTargetReleaseDefaultStringToJSON( + syncReconcileRequestTargetReleaseDefaultString: + SyncReconcileRequestTargetReleaseDefaultString, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseDefaultString$outboundSchema.parse( + syncReconcileRequestTargetReleaseDefaultString, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseDefaultUnion$Outbound = + | SyncReconcileRequestTargetReleaseDefaultString$Outbound + | SyncReconcileRequestTargetReleaseDefaultNumber$Outbound + | SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound + | SyncReconcileRequestTargetReleaseDefaultStringList$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseDefaultUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseDefaultUnion$Outbound, + SyncReconcileRequestTargetReleaseDefaultUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseDefaultString$outboundSchema), + z.lazy(() => SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema), + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema + ), + z.any(), + ]); + +export function syncReconcileRequestTargetReleaseDefaultUnionToJSON( + syncReconcileRequestTargetReleaseDefaultUnion: + SyncReconcileRequestTargetReleaseDefaultUnion, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseDefaultUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseDefaultUnion, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseTypeEnvEnum, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseTypeUnion$Outbound = string | any; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseTypeUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseTypeUnion$Outbound, + SyncReconcileRequestTargetReleaseTypeUnion + > = z.union([ + SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema, + z.any(), + ]); + +export function syncReconcileRequestTargetReleaseTypeUnionToJSON( + syncReconcileRequestTargetReleaseTypeUnion: + SyncReconcileRequestTargetReleaseTypeUnion, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseTypeUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseTypeUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseEnv$Outbound = { + name: string; + targetResources?: Array | null | undefined; + type?: string | any | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseEnv$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseEnv$Outbound, + SyncReconcileRequestTargetReleaseEnv +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileRequestTargetReleaseTypeEnvEnum$outboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileRequestTargetReleaseEnvToJSON( + syncReconcileRequestTargetReleaseEnv: SyncReconcileRequestTargetReleaseEnv, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseEnv$outboundSchema.parse( + syncReconcileRequestTargetReleaseEnv, + ), + ); +} + +/** @internal */ +export const TargetReleaseStateKind$outboundSchema: z.ZodEnum< + typeof TargetReleaseStateKind +> = z.enum(TargetReleaseStateKind); + +/** @internal */ +export const SyncReconcileRequestTargetReleasePlatform$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleasePlatform, + ); + +/** @internal */ +export const SyncReconcileRequestTargetReleaseProvidedBy$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseProvidedBy, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseValidation$Outbound = { + format?: string | null | undefined; + max?: string | null | undefined; + maxItems?: number | null | undefined; + maxLength?: number | null | undefined; + min?: string | null | undefined; + minItems?: number | null | undefined; + minLength?: number | null | undefined; + pattern?: string | null | undefined; + values?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseValidation$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseValidation$Outbound, + SyncReconcileRequestTargetReleaseValidation + > = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseValidationToJSON( + syncReconcileRequestTargetReleaseValidation: + SyncReconcileRequestTargetReleaseValidation, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseValidation$outboundSchema.parse( + syncReconcileRequestTargetReleaseValidation, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseValidationUnion$Outbound = + | SyncReconcileRequestTargetReleaseValidation$Outbound + | any; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseValidationUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseValidationUnion$Outbound, + SyncReconcileRequestTargetReleaseValidationUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseValidation$outboundSchema), + z.any(), + ]); + +export function syncReconcileRequestTargetReleaseValidationUnionToJSON( + syncReconcileRequestTargetReleaseValidationUnion: + SyncReconcileRequestTargetReleaseValidationUnion, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseValidationUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseValidationUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseInput$Outbound = { + default?: + | SyncReconcileRequestTargetReleaseDefaultString$Outbound + | SyncReconcileRequestTargetReleaseDefaultNumber$Outbound + | SyncReconcileRequestTargetReleaseDefaultBoolean$Outbound + | SyncReconcileRequestTargetReleaseDefaultStringList$Outbound + | any + | null + | undefined; + description: string; + env?: Array | undefined; + id: string; + kind: string; + label: string; + placeholder?: string | null | undefined; + platforms?: Array | null | undefined; + providedBy: Array; + required: boolean; + validation?: + | SyncReconcileRequestTargetReleaseValidation$Outbound + | any + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseInput$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseInput$Outbound, + SyncReconcileRequestTargetReleaseInput +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultString$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultNumber$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultBoolean$outboundSchema + ), + z.lazy(() => + SyncReconcileRequestTargetReleaseDefaultStringList$outboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => SyncReconcileRequestTargetReleaseEnv$outboundSchema), + ).optional(), + id: z.string(), + kind: TargetReleaseStateKind$outboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncReconcileRequestTargetReleasePlatform$outboundSchema), + ).optional(), + providedBy: z.array( + SyncReconcileRequestTargetReleaseProvidedBy$outboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseValidation$outboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileRequestTargetReleaseInputToJSON( + syncReconcileRequestTargetReleaseInput: + SyncReconcileRequestTargetReleaseInput, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseInput$outboundSchema.parse( + syncReconcileRequestTargetReleaseInput, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestTargetReleaseManagementEnum$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseManagementEnum, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideAwResource$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAwResource$Outbound, + SyncReconcileRequestTargetReleaseOverrideAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestTargetReleaseOverrideAwResourceToJSON( + syncReconcileRequestTargetReleaseOverrideAwResource: + SyncReconcileRequestTargetReleaseOverrideAwResource, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideAwResource$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound, + SyncReconcileRequestTargetReleaseOverrideAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestTargetReleaseOverrideAwStackToJSON( + syncReconcileRequestTargetReleaseOverrideAwStack: + SyncReconcileRequestTargetReleaseOverrideAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound = { + resource?: + | SyncReconcileRequestTargetReleaseOverrideAwResource$Outbound + | undefined; + stack?: SyncReconcileRequestTargetReleaseOverrideAwStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound, + SyncReconcileRequestTargetReleaseOverrideAwBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseOverrideAwBindingToJSON( + syncReconcileRequestTargetReleaseOverrideAwBinding: + SyncReconcileRequestTargetReleaseOverrideAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseOverrideEffect, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound, + SyncReconcileRequestTargetReleaseOverrideAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseOverrideAwGrantToJSON( + syncReconcileRequestTargetReleaseOverrideAwGrant: + SyncReconcileRequestTargetReleaseOverrideAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideAw$Outbound = { + binding: SyncReconcileRequestTargetReleaseOverrideAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestTargetReleaseOverrideAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAw$Outbound, + SyncReconcileRequestTargetReleaseOverrideAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestTargetReleaseOverrideEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestTargetReleaseOverrideAwToJSON( + syncReconcileRequestTargetReleaseOverrideAw: + SyncReconcileRequestTargetReleaseOverrideAw, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAw, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideAzureResource$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAzureResource$Outbound, + SyncReconcileRequestTargetReleaseOverrideAzureResource + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseOverrideAzureResourceToJSON( + syncReconcileRequestTargetReleaseOverrideAzureResource: + SyncReconcileRequestTargetReleaseOverrideAzureResource, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideAzureResource$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound, + SyncReconcileRequestTargetReleaseOverrideAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseOverrideAzureStackToJSON( + syncReconcileRequestTargetReleaseOverrideAzureStack: + SyncReconcileRequestTargetReleaseOverrideAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound = { + resource?: + | SyncReconcileRequestTargetReleaseOverrideAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestTargetReleaseOverrideAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound, + SyncReconcileRequestTargetReleaseOverrideAzureBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseOverrideAzureBindingToJSON( + syncReconcileRequestTargetReleaseOverrideAzureBinding: + SyncReconcileRequestTargetReleaseOverrideAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound, + SyncReconcileRequestTargetReleaseOverrideAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseOverrideAzureGrantToJSON( + syncReconcileRequestTargetReleaseOverrideAzureGrant: + SyncReconcileRequestTargetReleaseOverrideAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideAzure$Outbound = { + binding: SyncReconcileRequestTargetReleaseOverrideAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestTargetReleaseOverrideAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideAzure$Outbound, + SyncReconcileRequestTargetReleaseOverrideAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestTargetReleaseOverrideAzureToJSON( + syncReconcileRequestTargetReleaseOverrideAzure: + SyncReconcileRequestTargetReleaseOverrideAzure, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideAzure, + ), + ); +} + +/** @internal */ +export type TargetReleaseOverrideConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const TargetReleaseOverrideConditionStateResource$outboundSchema: + z.ZodType< + TargetReleaseOverrideConditionStateResource$Outbound, + TargetReleaseOverrideConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function targetReleaseOverrideConditionStateResourceToJSON( + targetReleaseOverrideConditionStateResource: + TargetReleaseOverrideConditionStateResource, +): string { + return JSON.stringify( + TargetReleaseOverrideConditionStateResource$outboundSchema.parse( + targetReleaseOverrideConditionStateResource, + ), + ); +} + +/** @internal */ +export type TargetReleaseOverrideStateResourceConditionUnion$Outbound = + | TargetReleaseOverrideConditionStateResource$Outbound + | any; + +/** @internal */ +export const TargetReleaseOverrideStateResourceConditionUnion$outboundSchema: + z.ZodType< + TargetReleaseOverrideStateResourceConditionUnion$Outbound, + TargetReleaseOverrideStateResourceConditionUnion + > = z.union([ + z.lazy(() => TargetReleaseOverrideConditionStateResource$outboundSchema), + z.any(), + ]); + +export function targetReleaseOverrideStateResourceConditionUnionToJSON( + targetReleaseOverrideStateResourceConditionUnion: + TargetReleaseOverrideStateResourceConditionUnion, +): string { + return JSON.stringify( + TargetReleaseOverrideStateResourceConditionUnion$outboundSchema.parse( + targetReleaseOverrideStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideGcpResource$Outbound = { + condition?: + | TargetReleaseOverrideConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideGcpResource$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideGcpResource$Outbound, + SyncReconcileRequestTargetReleaseOverrideGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => + TargetReleaseOverrideConditionStateResource$outboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseOverrideGcpResourceToJSON( + syncReconcileRequestTargetReleaseOverrideGcpResource: + SyncReconcileRequestTargetReleaseOverrideGcpResource, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideGcpResource$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideGcpResource, + ), + ); +} + +/** @internal */ +export type TargetReleaseOverrideConditionState$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const TargetReleaseOverrideConditionState$outboundSchema: z.ZodType< + TargetReleaseOverrideConditionState$Outbound, + TargetReleaseOverrideConditionState +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function targetReleaseOverrideConditionStateToJSON( + targetReleaseOverrideConditionState: TargetReleaseOverrideConditionState, +): string { + return JSON.stringify( + TargetReleaseOverrideConditionState$outboundSchema.parse( + targetReleaseOverrideConditionState, + ), + ); +} + +/** @internal */ +export type TargetReleaseOverrideStateConditionUnion$Outbound = + | TargetReleaseOverrideConditionState$Outbound + | any; + +/** @internal */ +export const TargetReleaseOverrideStateConditionUnion$outboundSchema: z.ZodType< + TargetReleaseOverrideStateConditionUnion$Outbound, + TargetReleaseOverrideStateConditionUnion +> = z.union([ + z.lazy(() => TargetReleaseOverrideConditionState$outboundSchema), + z.any(), +]); + +export function targetReleaseOverrideStateConditionUnionToJSON( + targetReleaseOverrideStateConditionUnion: + TargetReleaseOverrideStateConditionUnion, +): string { + return JSON.stringify( + TargetReleaseOverrideStateConditionUnion$outboundSchema.parse( + targetReleaseOverrideStateConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound = { + condition?: + | TargetReleaseOverrideConditionState$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound, + SyncReconcileRequestTargetReleaseOverrideGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => TargetReleaseOverrideConditionState$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseOverrideGcpStackToJSON( + syncReconcileRequestTargetReleaseOverrideGcpStack: + SyncReconcileRequestTargetReleaseOverrideGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideGcpStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound = { + resource?: + | SyncReconcileRequestTargetReleaseOverrideGcpResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestTargetReleaseOverrideGcpStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound, + SyncReconcileRequestTargetReleaseOverrideGcpBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideGcpStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseOverrideGcpBindingToJSON( + syncReconcileRequestTargetReleaseOverrideGcpBinding: + SyncReconcileRequestTargetReleaseOverrideGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound, + SyncReconcileRequestTargetReleaseOverrideGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseOverrideGcpGrantToJSON( + syncReconcileRequestTargetReleaseOverrideGcpGrant: + SyncReconcileRequestTargetReleaseOverrideGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideGcp$Outbound = { + binding: SyncReconcileRequestTargetReleaseOverrideGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestTargetReleaseOverrideGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideGcp$Outbound, + SyncReconcileRequestTargetReleaseOverrideGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestTargetReleaseOverrideGcpToJSON( + syncReconcileRequestTargetReleaseOverrideGcp: + SyncReconcileRequestTargetReleaseOverrideGcp, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound, + SyncReconcileRequestTargetReleaseOverridePlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseOverrideGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseOverridePlatformsToJSON( + syncReconcileRequestTargetReleaseOverridePlatforms: + SyncReconcileRequestTargetReleaseOverridePlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverridePlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverride$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestTargetReleaseOverridePlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverride$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverride$Outbound, + SyncReconcileRequestTargetReleaseOverride + > = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestTargetReleaseOverridePlatforms$outboundSchema + ), + }); + +export function syncReconcileRequestTargetReleaseOverrideToJSON( + syncReconcileRequestTargetReleaseOverride: + SyncReconcileRequestTargetReleaseOverride, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverride$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverride, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseOverrideUnion$Outbound = + | SyncReconcileRequestTargetReleaseOverride$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseOverrideUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseOverrideUnion$Outbound, + SyncReconcileRequestTargetReleaseOverrideUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseOverride$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestTargetReleaseOverrideUnionToJSON( + syncReconcileRequestTargetReleaseOverrideUnion: + SyncReconcileRequestTargetReleaseOverrideUnion, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseOverrideUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseOverrideUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseManagement2$Outbound = { + override: { + [k: string]: Array< + SyncReconcileRequestTargetReleaseOverride$Outbound | string + >; + }; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseManagement2$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseManagement2$Outbound, + SyncReconcileRequestTargetReleaseManagement2 + > = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseOverride$outboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileRequestTargetReleaseManagement2ToJSON( + syncReconcileRequestTargetReleaseManagement2: + SyncReconcileRequestTargetReleaseManagement2, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseManagement2$outboundSchema.parse( + syncReconcileRequestTargetReleaseManagement2, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendAwResource$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendAwResource$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendAwResource$Outbound, + SyncReconcileRequestTargetReleaseExtendAwResource + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestTargetReleaseExtendAwResourceToJSON( + syncReconcileRequestTargetReleaseExtendAwResource: + SyncReconcileRequestTargetReleaseExtendAwResource, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendAwResource$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAwResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendAwStack$Outbound = { + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + resources: Array; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendAwStack$Outbound, + SyncReconcileRequestTargetReleaseExtendAwStack + > = z.object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileRequestTargetReleaseExtendAwStackToJSON( + syncReconcileRequestTargetReleaseExtendAwStack: + SyncReconcileRequestTargetReleaseExtendAwStack, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAwStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound = { + resource?: + | SyncReconcileRequestTargetReleaseExtendAwResource$Outbound + | undefined; + stack?: SyncReconcileRequestTargetReleaseExtendAwStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound, + SyncReconcileRequestTargetReleaseExtendAwBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendAwResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendAwStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseExtendAwBindingToJSON( + syncReconcileRequestTargetReleaseExtendAwBinding: + SyncReconcileRequestTargetReleaseExtendAwBinding, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAwBinding, + ), + ); +} + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendEffect$outboundSchema: + z.ZodEnum = z.enum( + SyncReconcileRequestTargetReleaseExtendEffect, + ); + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound, + SyncReconcileRequestTargetReleaseExtendAwGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseExtendAwGrantToJSON( + syncReconcileRequestTargetReleaseExtendAwGrant: + SyncReconcileRequestTargetReleaseExtendAwGrant, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAwGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendAw$Outbound = { + binding: SyncReconcileRequestTargetReleaseExtendAwBinding$Outbound; + description?: string | null | undefined; + effect?: string | undefined; + grant: SyncReconcileRequestTargetReleaseExtendAwGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendAw$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendAw$Outbound, + SyncReconcileRequestTargetReleaseExtendAw + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendAwBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileRequestTargetReleaseExtendEffect$outboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendAwGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestTargetReleaseExtendAwToJSON( + syncReconcileRequestTargetReleaseExtendAw: + SyncReconcileRequestTargetReleaseExtendAw, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendAw$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAw, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendAzureResource$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendAzureResource$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendAzureResource$Outbound, + SyncReconcileRequestTargetReleaseExtendAzureResource + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseExtendAzureResourceToJSON( + syncReconcileRequestTargetReleaseExtendAzureResource: + SyncReconcileRequestTargetReleaseExtendAzureResource, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendAzureResource$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAzureResource, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound = { + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound, + SyncReconcileRequestTargetReleaseExtendAzureStack + > = z.object({ + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseExtendAzureStackToJSON( + syncReconcileRequestTargetReleaseExtendAzureStack: + SyncReconcileRequestTargetReleaseExtendAzureStack, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAzureStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound = { + resource?: + | SyncReconcileRequestTargetReleaseExtendAzureResource$Outbound + | undefined; + stack?: + | SyncReconcileRequestTargetReleaseExtendAzureStack$Outbound + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound, + SyncReconcileRequestTargetReleaseExtendAzureBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendAzureResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendAzureStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseExtendAzureBindingToJSON( + syncReconcileRequestTargetReleaseExtendAzureBinding: + SyncReconcileRequestTargetReleaseExtendAzureBinding, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAzureBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound, + SyncReconcileRequestTargetReleaseExtendAzureGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseExtendAzureGrantToJSON( + syncReconcileRequestTargetReleaseExtendAzureGrant: + SyncReconcileRequestTargetReleaseExtendAzureGrant, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAzureGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendAzure$Outbound = { + binding: SyncReconcileRequestTargetReleaseExtendAzureBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestTargetReleaseExtendAzureGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendAzure$Outbound, + SyncReconcileRequestTargetReleaseExtendAzure + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendAzureBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendAzureGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestTargetReleaseExtendAzureToJSON( + syncReconcileRequestTargetReleaseExtendAzure: + SyncReconcileRequestTargetReleaseExtendAzure, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendAzure, + ), + ); +} + +/** @internal */ +export type TargetReleaseExtendConditionStateResource$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const TargetReleaseExtendConditionStateResource$outboundSchema: + z.ZodType< + TargetReleaseExtendConditionStateResource$Outbound, + TargetReleaseExtendConditionStateResource + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function targetReleaseExtendConditionStateResourceToJSON( + targetReleaseExtendConditionStateResource: + TargetReleaseExtendConditionStateResource, +): string { + return JSON.stringify( + TargetReleaseExtendConditionStateResource$outboundSchema.parse( + targetReleaseExtendConditionStateResource, + ), + ); +} + +/** @internal */ +export type TargetReleaseExtendStateResourceConditionUnion$Outbound = + | TargetReleaseExtendConditionStateResource$Outbound + | any; + +/** @internal */ +export const TargetReleaseExtendStateResourceConditionUnion$outboundSchema: + z.ZodType< + TargetReleaseExtendStateResourceConditionUnion$Outbound, + TargetReleaseExtendStateResourceConditionUnion + > = z.union([ + z.lazy(() => TargetReleaseExtendConditionStateResource$outboundSchema), + z.any(), + ]); + +export function targetReleaseExtendStateResourceConditionUnionToJSON( + targetReleaseExtendStateResourceConditionUnion: + TargetReleaseExtendStateResourceConditionUnion, +): string { + return JSON.stringify( + TargetReleaseExtendStateResourceConditionUnion$outboundSchema.parse( + targetReleaseExtendStateResourceConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendGcpResource$Outbound = { + condition?: + | TargetReleaseExtendConditionStateResource$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendGcpResource$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendGcpResource$Outbound, + SyncReconcileRequestTargetReleaseExtendGcpResource + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => TargetReleaseExtendConditionStateResource$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseExtendGcpResourceToJSON( + syncReconcileRequestTargetReleaseExtendGcpResource: + SyncReconcileRequestTargetReleaseExtendGcpResource, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendGcpResource$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendGcpResource, + ), + ); +} + +/** @internal */ +export type TargetReleaseExtendConditionState$Outbound = { + expression: string; + title: string; +}; + +/** @internal */ +export const TargetReleaseExtendConditionState$outboundSchema: z.ZodType< + TargetReleaseExtendConditionState$Outbound, + TargetReleaseExtendConditionState +> = z.object({ + expression: z.string(), + title: z.string(), +}); + +export function targetReleaseExtendConditionStateToJSON( + targetReleaseExtendConditionState: TargetReleaseExtendConditionState, +): string { + return JSON.stringify( + TargetReleaseExtendConditionState$outboundSchema.parse( + targetReleaseExtendConditionState, + ), + ); +} + +/** @internal */ +export type TargetReleaseExtendStateConditionUnion$Outbound = + | TargetReleaseExtendConditionState$Outbound + | any; + +/** @internal */ +export const TargetReleaseExtendStateConditionUnion$outboundSchema: z.ZodType< + TargetReleaseExtendStateConditionUnion$Outbound, + TargetReleaseExtendStateConditionUnion +> = z.union([ + z.lazy(() => TargetReleaseExtendConditionState$outboundSchema), + z.any(), +]); + +export function targetReleaseExtendStateConditionUnionToJSON( + targetReleaseExtendStateConditionUnion: + TargetReleaseExtendStateConditionUnion, +): string { + return JSON.stringify( + TargetReleaseExtendStateConditionUnion$outboundSchema.parse( + targetReleaseExtendStateConditionUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound = { + condition?: + | TargetReleaseExtendConditionState$Outbound + | any + | null + | undefined; + scope: string; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound, + SyncReconcileRequestTargetReleaseExtendGcpStack + > = z.object({ + condition: z.nullable( + z.union([ + z.lazy(() => TargetReleaseExtendConditionState$outboundSchema), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileRequestTargetReleaseExtendGcpStackToJSON( + syncReconcileRequestTargetReleaseExtendGcpStack: + SyncReconcileRequestTargetReleaseExtendGcpStack, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendGcpStack, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound = { + resource?: + | SyncReconcileRequestTargetReleaseExtendGcpResource$Outbound + | undefined; + stack?: SyncReconcileRequestTargetReleaseExtendGcpStack$Outbound | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound, + SyncReconcileRequestTargetReleaseExtendGcpBinding + > = z.object({ + resource: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendGcpResource$outboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendGcpStack$outboundSchema + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseExtendGcpBindingToJSON( + syncReconcileRequestTargetReleaseExtendGcpBinding: + SyncReconcileRequestTargetReleaseExtendGcpBinding, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendGcpBinding, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound = { + actions?: Array | null | undefined; + dataActions?: Array | null | undefined; + permissions?: Array | null | undefined; + predefinedRoles?: Array | null | undefined; + residualPermissions?: Array | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound, + SyncReconcileRequestTargetReleaseExtendGcpGrant + > = z.object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileRequestTargetReleaseExtendGcpGrantToJSON( + syncReconcileRequestTargetReleaseExtendGcpGrant: + SyncReconcileRequestTargetReleaseExtendGcpGrant, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendGcpGrant, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendGcp$Outbound = { + binding: SyncReconcileRequestTargetReleaseExtendGcpBinding$Outbound; + description?: string | null | undefined; + grant: SyncReconcileRequestTargetReleaseExtendGcpGrant$Outbound; + label?: string | null | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendGcp$Outbound, + SyncReconcileRequestTargetReleaseExtendGcp + > = z.object({ + binding: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendGcpBinding$outboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendGcpGrant$outboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileRequestTargetReleaseExtendGcpToJSON( + syncReconcileRequestTargetReleaseExtendGcp: + SyncReconcileRequestTargetReleaseExtendGcp, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendGcp, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound = { + aws?: + | Array + | null + | undefined; + azure?: + | Array + | null + | undefined; + gcp?: + | Array + | null + | undefined; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound, + SyncReconcileRequestTargetReleaseExtendPlatforms + > = z.object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseExtendAw$outboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseExtendAzure$outboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileRequestTargetReleaseExtendGcp$outboundSchema + )), + ).optional(), + }); + +export function syncReconcileRequestTargetReleaseExtendPlatformsToJSON( + syncReconcileRequestTargetReleaseExtendPlatforms: + SyncReconcileRequestTargetReleaseExtendPlatforms, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendPlatforms, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtend$Outbound = { + description: string; + id: string; + platforms: SyncReconcileRequestTargetReleaseExtendPlatforms$Outbound; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtend$outboundSchema: z.ZodType< + SyncReconcileRequestTargetReleaseExtend$Outbound, + SyncReconcileRequestTargetReleaseExtend +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileRequestTargetReleaseExtendPlatforms$outboundSchema + ), +}); + +export function syncReconcileRequestTargetReleaseExtendToJSON( + syncReconcileRequestTargetReleaseExtend: + SyncReconcileRequestTargetReleaseExtend, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtend$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtend, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseExtendUnion$Outbound = + | SyncReconcileRequestTargetReleaseExtend$Outbound + | string; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseExtendUnion$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseExtendUnion$Outbound, + SyncReconcileRequestTargetReleaseExtendUnion + > = z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseExtend$outboundSchema), + z.string(), + ]); + +export function syncReconcileRequestTargetReleaseExtendUnionToJSON( + syncReconcileRequestTargetReleaseExtendUnion: + SyncReconcileRequestTargetReleaseExtendUnion, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseExtendUnion$outboundSchema.parse( + syncReconcileRequestTargetReleaseExtendUnion, + ), + ); +} + +/** @internal */ +export type SyncReconcileRequestTargetReleaseManagement1$Outbound = { + extend: { + [k: string]: Array< + SyncReconcileRequestTargetReleaseExtend$Outbound | string + >; + }; +}; + +/** @internal */ +export const SyncReconcileRequestTargetReleaseManagement1$outboundSchema: + z.ZodType< + SyncReconcileRequestTargetReleaseManagement1$Outbound, + SyncReconcileRequestTargetReleaseManagement1 + > = z.object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileRequestTargetReleaseExtend$outboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileRequestTargetReleaseManagement1ToJSON( + syncReconcileRequestTargetReleaseManagement1: + SyncReconcileRequestTargetReleaseManagement1, +): string { + return JSON.stringify( + SyncReconcileRequestTargetReleaseManagement1$outboundSchema.parse( + syncReconcileRequestTargetReleaseManagement1, + ), + ); +} diff --git a/client-sdks/platform/typescript/src/models/syncreconcileresponse.ts b/client-sdks/platform/typescript/src/models/syncreconcileresponse.ts index 86d4fc76c..a6d385fe2 100644 --- a/client-sdks/platform/typescript/src/models/syncreconcileresponse.ts +++ b/client-sdks/platform/typescript/src/models/syncreconcileresponse.ts @@ -3,142 +3,29 @@ */ import * as z from "zod/v4"; -import { remap as remap$ } from "../lib/primitives.js"; -import { - collectExtraKeys as collectExtraKeys$, - safeParse, -} from "../lib/schemas.js"; +import { safeParse } from "../lib/schemas.js"; import { ClosedEnum } from "../types/enums.js"; import { Result as SafeParseResult } from "../types/fp.js"; import { SDKValidationError } from "./errors/sdkvalidationerror.js"; - -export const SyncReconcileResponseCurrentReleaseTypeStringList = { - StringList: "stringList", -} as const; -export type SyncReconcileResponseCurrentReleaseTypeStringList = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseTypeStringList ->; - -export type SyncReconcileResponseCurrentReleaseDefaultStringList = { - type: SyncReconcileResponseCurrentReleaseTypeStringList; - /** - * String list default. - */ - value: Array; -}; - -export const SyncReconcileResponseCurrentReleaseTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncReconcileResponseCurrentReleaseTypeBoolean = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseTypeBoolean ->; - -export type SyncReconcileResponseCurrentReleaseDefaultBoolean = { - type: SyncReconcileResponseCurrentReleaseTypeBoolean; - /** - * Boolean default. - */ - value: boolean; -}; - -export const SyncReconcileResponseCurrentReleaseTypeNumber = { - Number: "number", -} as const; -export type SyncReconcileResponseCurrentReleaseTypeNumber = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseTypeNumber ->; - -export type SyncReconcileResponseCurrentReleaseDefaultNumber = { - type: SyncReconcileResponseCurrentReleaseTypeNumber; - /** - * Number default. - */ - value: string; -}; - -export const SyncReconcileResponseCurrentReleaseTypeString = { - String: "string", -} as const; -export type SyncReconcileResponseCurrentReleaseTypeString = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseTypeString ->; - -export type SyncReconcileResponseCurrentReleaseDefaultString = { - type: SyncReconcileResponseCurrentReleaseTypeString; - /** - * String default. - */ - value: string; -}; - -export type SyncReconcileResponseCurrentReleaseDefaultUnion = - | SyncReconcileResponseCurrentReleaseDefaultString - | SyncReconcileResponseCurrentReleaseDefaultNumber - | SyncReconcileResponseCurrentReleaseDefaultBoolean - | SyncReconcileResponseCurrentReleaseDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncReconcileResponseCurrentReleaseTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type SyncReconcileResponseCurrentReleaseTypeEnvEnum = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseTypeEnvEnum ->; - -export type SyncReconcileResponseCurrentReleaseTypeUnion = - | SyncReconcileResponseCurrentReleaseTypeEnvEnum - | any; - -/** - * How a resolved stack input is injected into runtime environment variables. - */ -export type SyncReconcileResponseCurrentReleaseEnv = { - /** - * Environment variable name. - */ - name: string; - /** - * Target resource IDs or patterns. None means every env-capable resource. - */ - targetResources?: Array | null | undefined; - type?: - | SyncReconcileResponseCurrentReleaseTypeEnvEnum - | any - | null - | undefined; -}; - -/** - * Primitive stack input kind. - */ -export const SyncReconcileResponseCurrentReleaseKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type SyncReconcileResponseCurrentReleaseKind = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseKind ->; +import { + ReleaseInfoInput, + ReleaseInfoInput$inboundSchema, + ReleaseInfoPermissions, + ReleaseInfoPermissions$inboundSchema, + ReleaseInfoResources, + ReleaseInfoResources$inboundSchema, + TargetConfig, + TargetConfig$inboundSchema, +} from "./releaseinforesources.js"; +import { + SyncReconcileResponseCurrent, + SyncReconcileResponseCurrent$inboundSchema, +} from "./syncreconcileresponsekeyprefixsecretref2.js"; /** * Represents the target cloud platform. */ -export const SyncReconcileResponseCurrentReleasePlatform = { +export const ReleaseInfoSupportedPlatform = { Aws: "aws", Gcp: "gcp", Azure: "azure", @@ -149,27004 +36,107 @@ export const SyncReconcileResponseCurrentReleasePlatform = { /** * Represents the target cloud platform. */ -export type SyncReconcileResponseCurrentReleasePlatform = ClosedEnum< - typeof SyncReconcileResponseCurrentReleasePlatform ->; - -/** - * Who can provide a stack input value. - */ -export const SyncReconcileResponseCurrentReleaseProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type SyncReconcileResponseCurrentReleaseProvidedBy = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseProvidedBy +export type ReleaseInfoSupportedPlatform = ClosedEnum< + typeof ReleaseInfoSupportedPlatform >; /** - * Portable stack input validation constraints. - */ -export type SyncReconcileResponseCurrentReleaseValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; - /** - * Minimum string-list items. - */ - minItems?: number | null | undefined; - /** - * Minimum string length. - */ - minLength?: number | null | undefined; - /** - * Portable whole-value regex pattern. - */ - pattern?: string | null | undefined; - /** - * Allowed string enum values. - */ - values?: Array | null | undefined; -}; - -export type SyncReconcileResponseCurrentReleaseValidationUnion = - | SyncReconcileResponseCurrentReleaseValidation - | any; - -/** - * Stack input definition serialized into a release stack. + * A bag of resources, unaware of any cloud. */ -export type SyncReconcileResponseCurrentReleaseInput = { - default?: - | SyncReconcileResponseCurrentReleaseDefaultString - | SyncReconcileResponseCurrentReleaseDefaultNumber - | SyncReconcileResponseCurrentReleaseDefaultBoolean - | SyncReconcileResponseCurrentReleaseDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; +export type ReleaseInfoStack = { /** - * Stable input ID used by CLI/API calls. + * Unique identifier for the stack */ id: string; /** - * Primitive stack input kind. - */ - kind: SyncReconcileResponseCurrentReleaseKind; - /** - * Human-facing field label. - */ - label: string; - /** - * Example placeholder shown in UI. - */ - placeholder?: string | null | undefined; - /** - * Platforms where this input applies. - */ - platforms?: - | Array - | null - | undefined; - /** - * Who can provide this value. - */ - providedBy: Array; - /** - * Whether a resolved value is required before deployment can proceed. - */ - required: boolean; - validation?: - | SyncReconcileResponseCurrentReleaseValidation - | any - | null - | undefined; -}; - -export const SyncReconcileResponseCurrentReleaseManagementEnum = { - Auto: "auto", -} as const; -export type SyncReconcileResponseCurrentReleaseManagementEnum = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseManagementEnum ->; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseOverrideAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseCurrentReleaseOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileResponseCurrentReleaseOverrideAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileResponseCurrentReleaseOverrideAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileResponseCurrentReleaseOverrideEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileResponseCurrentReleaseOverrideEffect = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseOverrideEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseCurrentReleaseOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) + * Input definitions required before setup or deployment can proceed. */ - dataActions?: Array | null | undefined; + inputs?: Array | undefined; /** - * GCP permissions that require an exact residual custom role. + * Combined permissions configuration that contains both profiles and management */ - permissions?: Array | null | undefined; + permissions?: ReleaseInfoPermissions | undefined; /** - * Provider predefined roles to bind directly. + * Map of resource IDs to their configurations and lifecycle settings */ - predefinedRoles?: Array | null | undefined; + resources: { [k: string]: ReleaseInfoResources }; /** - * GCP residual custom permissions to pair with predefined roles. + * Which platforms this stack supports. When None, all platforms are supported. */ - residualPermissions?: Array | null | undefined; + supportedPlatforms?: Array | null | undefined; }; /** - * AWS-specific platform permission configuration + * Release metadata + * + * @remarks + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. */ -export type SyncReconcileResponseCurrentReleaseOverrideAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseCurrentReleaseOverrideAwBinding; +export type ReleaseInfo = { /** - * Short admin-facing description of why this entry exists. + * Short description of the release */ description?: string | null | undefined; /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileResponseCurrentReleaseOverrideEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseCurrentReleaseOverrideAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) + * Release ID (e.g., rel_xyz) */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseCurrentReleaseOverrideAzureBinding = { + releaseId: string; /** - * Azure-specific binding specification + * A bag of resources, unaware of any cloud. */ - resource?: - | SyncReconcileResponseCurrentReleaseOverrideAzureResource - | undefined; + stack: ReleaseInfoStack; /** - * Azure-specific binding specification + * Version string (e.g., 2.1.0) */ - stack?: SyncReconcileResponseCurrentReleaseOverrideAzureStack | undefined; + version?: string | null | undefined; }; /** - * Grant permissions for a specific cloud platform + * Target deployment if update is needed */ -export type SyncReconcileResponseCurrentReleaseOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; +export type SyncReconcileResponseTarget = { /** - * Provider predefined roles to bind directly. + * Deployment configuration + * + * @remarks + * + * Configuration for how to perform the deployment. + * Note: Credentials (ClientConfig) are passed separately to step() function. */ - predefinedRoles?: Array | null | undefined; + config: TargetConfig; /** - * GCP residual custom permissions to pair with predefined roles. + * Release metadata + * + * @remarks + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. */ - residualPermissions?: Array | null | undefined; + releaseInfo: ReleaseInfo; }; /** - * Azure-specific platform permission configuration + * State reconciliation result with optional target */ -export type SyncReconcileResponseCurrentReleaseOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseCurrentReleaseOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseCurrentReleaseOverrideAzureGrant; +export type SyncReconcileResponse = { /** - * Stable admin-facing label for this permission entry. + * Whether the state was reconciled */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseCurrentReleaseOverrideConditionResource = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion = - | SyncReconcileResponseCurrentReleaseOverrideConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseOverrideGcpResource = { - condition?: - | SyncReconcileResponseCurrentReleaseOverrideConditionResource - | any - | null - | undefined; + success: boolean; /** - * Scope (project/resource level) + * Current deployment state after reconciliation */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseCurrentReleaseOverrideCondition = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseCurrentReleaseOverrideConditionUnion = - | SyncReconcileResponseCurrentReleaseOverrideCondition - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseOverrideGcpStack = { - condition?: - | SyncReconcileResponseCurrentReleaseOverrideCondition - | any - | null - | undefined; + current: SyncReconcileResponseCurrent; /** - * Scope (project/resource level) + * Target deployment if update is needed */ - scope: string; + target?: SyncReconcileResponseTarget | undefined; }; -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseCurrentReleaseOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileResponseCurrentReleaseOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileResponseCurrentReleaseOverrideGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseCurrentReleaseOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileResponseCurrentReleaseOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseCurrentReleaseOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseCurrentReleaseOverrideGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileResponseCurrentReleaseOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: - | Array - | null - | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileResponseCurrentReleaseOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileResponseCurrentReleaseOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileResponseCurrentReleaseOverrideUnion = - | SyncReconcileResponseCurrentReleaseOverride - | string; - -export type SyncReconcileResponseCurrentReleaseManagement2 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { - [k: string]: Array; - }; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseCurrentReleaseExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileResponseCurrentReleaseExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileResponseCurrentReleaseExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileResponseCurrentReleaseExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileResponseCurrentReleaseExtendEffect = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseExtendEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseCurrentReleaseExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileResponseCurrentReleaseExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseCurrentReleaseExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileResponseCurrentReleaseExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseCurrentReleaseExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseCurrentReleaseExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileResponseCurrentReleaseExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileResponseCurrentReleaseExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseCurrentReleaseExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileResponseCurrentReleaseExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseCurrentReleaseExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseCurrentReleaseExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseCurrentReleaseExtendConditionResource = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion = - | SyncReconcileResponseCurrentReleaseExtendConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseExtendGcpResource = { - condition?: - | SyncReconcileResponseCurrentReleaseExtendConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseCurrentReleaseExtendCondition = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseCurrentReleaseExtendConditionUnion = - | SyncReconcileResponseCurrentReleaseExtendCondition - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseExtendGcpStack = { - condition?: - | SyncReconcileResponseCurrentReleaseExtendCondition - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseCurrentReleaseExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileResponseCurrentReleaseExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileResponseCurrentReleaseExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseCurrentReleaseExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileResponseCurrentReleaseExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseCurrentReleaseExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseCurrentReleaseExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileResponseCurrentReleaseExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileResponseCurrentReleaseExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileResponseCurrentReleaseExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileResponseCurrentReleaseExtendUnion = - | SyncReconcileResponseCurrentReleaseExtend - | string; - -export type SyncReconcileResponseCurrentReleaseManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { - [k: string]: Array; - }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type SyncReconcileResponseCurrentReleaseManagementUnion = - | SyncReconcileResponseCurrentReleaseManagement1 - | SyncReconcileResponseCurrentReleaseManagement2 - | SyncReconcileResponseCurrentReleaseManagementEnum; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseCurrentReleaseProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileResponseCurrentReleaseProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileResponseCurrentReleaseProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileResponseCurrentReleaseProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileResponseCurrentReleaseProfileEffect = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseCurrentReleaseProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileResponseCurrentReleaseProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseCurrentReleaseProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileResponseCurrentReleaseProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseCurrentReleaseProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseCurrentReleaseProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: - | SyncReconcileResponseCurrentReleaseProfileAzureResource - | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileResponseCurrentReleaseProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseCurrentReleaseProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileResponseCurrentReleaseProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseCurrentReleaseProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseCurrentReleaseProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseCurrentReleaseProfileConditionResource = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion = - | SyncReconcileResponseCurrentReleaseProfileConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseProfileGcpResource = { - condition?: - | SyncReconcileResponseCurrentReleaseProfileConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseCurrentReleaseProfileCondition = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseCurrentReleaseProfileConditionUnion = - | SyncReconcileResponseCurrentReleaseProfileCondition - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseCurrentReleaseProfileGcpStack = { - condition?: - | SyncReconcileResponseCurrentReleaseProfileCondition - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseCurrentReleaseProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileResponseCurrentReleaseProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileResponseCurrentReleaseProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseCurrentReleaseProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileResponseCurrentReleaseProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseCurrentReleaseProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseCurrentReleaseProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileResponseCurrentReleaseProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileResponseCurrentReleaseProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileResponseCurrentReleaseProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileResponseCurrentReleaseProfileUnion = - | SyncReconcileResponseCurrentReleaseProfile - | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type SyncReconcileResponseCurrentReleasePermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncReconcileResponseCurrentReleaseManagement1 - | SyncReconcileResponseCurrentReleaseManagement2 - | SyncReconcileResponseCurrentReleaseManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncReconcileResponseCurrentReleaseConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncReconcileResponseCurrentReleaseDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const SyncReconcileResponseCurrentReleaseLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type SyncReconcileResponseCurrentReleaseLifecycle = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseLifecycle ->; - -export type SyncReconcileResponseCurrentReleaseResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncReconcileResponseCurrentReleaseConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: SyncReconcileResponseCurrentReleaseLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileResponseCurrentReleaseSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileResponseCurrentReleaseSupportedPlatform = ClosedEnum< - typeof SyncReconcileResponseCurrentReleaseSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncReconcileResponseCurrentReleaseStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: SyncReconcileResponseCurrentReleasePermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: SyncReconcileResponseCurrentReleaseResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -/** - * Release metadata - * - * @remarks - * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. - */ -export type SyncReconcileResponseCurrentRelease = { - /** - * Short description of the release - */ - description?: string | null | undefined; - /** - * Release ID (e.g., rel_xyz) - */ - releaseId: string; - /** - * A bag of resources, unaware of any cloud. - */ - stack: SyncReconcileResponseCurrentReleaseStack; - /** - * Version string (e.g., 2.1.0) - */ - version?: string | null | undefined; -}; - -export type SyncReconcileResponseCurrentReleaseUnion = - | SyncReconcileResponseCurrentRelease - | any; - -export const SyncReconcileResponsePlatformTest = { - Test: "test", -} as const; -export type SyncReconcileResponsePlatformTest = ClosedEnum< - typeof SyncReconcileResponsePlatformTest ->; - -/** - * Test platform environment information (mock) - */ -export type SyncReconcileResponseEnvironmentInfoTest = { - /** - * Test identifier for this environment - */ - testId: string; - platform: SyncReconcileResponsePlatformTest; -}; - -export const SyncReconcileResponsePlatformLocal = { - Local: "local", -} as const; -export type SyncReconcileResponsePlatformLocal = ClosedEnum< - typeof SyncReconcileResponsePlatformLocal ->; - -/** - * Local platform environment information - */ -export type SyncReconcileResponseEnvironmentInfoLocal = { - /** - * Architecture (e.g., "x86_64", "aarch64") - */ - arch: string; - /** - * Hostname of the machine running the deployment - */ - hostname: string; - /** - * Operating system (e.g., "linux", "macos", "windows") - */ - os: string; - platform: SyncReconcileResponsePlatformLocal; -}; - -export const SyncReconcileResponseCurrentPlatformAzure = { - Azure: "azure", -} as const; -export type SyncReconcileResponseCurrentPlatformAzure = ClosedEnum< - typeof SyncReconcileResponseCurrentPlatformAzure ->; - -/** - * Azure-specific environment information - */ -export type SyncReconcileResponseEnvironmentInfoAzure = { - /** - * Azure location/region - */ - location: string; - /** - * Azure subscription ID - */ - subscriptionId: string; - /** - * Azure tenant ID - */ - tenantId: string; - platform: SyncReconcileResponseCurrentPlatformAzure; -}; - -export const SyncReconcileResponseCurrentPlatformGcp = { - Gcp: "gcp", -} as const; -export type SyncReconcileResponseCurrentPlatformGcp = ClosedEnum< - typeof SyncReconcileResponseCurrentPlatformGcp ->; - -/** - * GCP-specific environment information - */ -export type SyncReconcileResponseEnvironmentInfoGcp = { - /** - * GCP project ID (e.g., "my-project") - */ - projectId: string; - /** - * GCP project number (e.g., "123456789012") - */ - projectNumber: string; - /** - * GCP region - */ - region: string; - platform: SyncReconcileResponseCurrentPlatformGcp; -}; - -export const SyncReconcileResponseCurrentPlatformAws = { - Aws: "aws", -} as const; -export type SyncReconcileResponseCurrentPlatformAws = ClosedEnum< - typeof SyncReconcileResponseCurrentPlatformAws ->; - -/** - * AWS-specific environment information - */ -export type SyncReconcileResponseEnvironmentInfoAws = { - /** - * AWS account ID - */ - accountId: string; - /** - * AWS region - */ - region: string; - platform: SyncReconcileResponseCurrentPlatformAws; -}; - -export type SyncReconcileResponseEnvironmentInfoUnion = - | SyncReconcileResponseEnvironmentInfoGcp - | SyncReconcileResponseEnvironmentInfoAzure - | SyncReconcileResponseEnvironmentInfoLocal - | SyncReconcileResponseEnvironmentInfoAws - | SyncReconcileResponseEnvironmentInfoTest - | any; - -/** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. - */ -export type SyncReconcileResponseError = { - /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" - */ - code: string; - /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. - */ - context?: any | null | undefined; - /** - * Optional human-facing remediation hint. - */ - hint?: string | null | undefined; - /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. - */ - httpStatusCode?: number | null | undefined; - /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. - */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable: boolean; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; -}; - -export type SyncReconcileResponseErrorUnion = SyncReconcileResponseError | any; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileResponseCurrentPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileResponseCurrentPlatform = ClosedEnum< - typeof SyncReconcileResponseCurrentPlatform ->; - -export const SyncReconcileResponsePreparedStackTypeStringList = { - StringList: "stringList", -} as const; -export type SyncReconcileResponsePreparedStackTypeStringList = ClosedEnum< - typeof SyncReconcileResponsePreparedStackTypeStringList ->; - -export type SyncReconcileResponsePreparedStackDefaultStringList = { - type: SyncReconcileResponsePreparedStackTypeStringList; - /** - * String list default. - */ - value: Array; -}; - -export const SyncReconcileResponsePreparedStackTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncReconcileResponsePreparedStackTypeBoolean = ClosedEnum< - typeof SyncReconcileResponsePreparedStackTypeBoolean ->; - -export type SyncReconcileResponsePreparedStackDefaultBoolean = { - type: SyncReconcileResponsePreparedStackTypeBoolean; - /** - * Boolean default. - */ - value: boolean; -}; - -export const SyncReconcileResponsePreparedStackTypeNumber = { - Number: "number", -} as const; -export type SyncReconcileResponsePreparedStackTypeNumber = ClosedEnum< - typeof SyncReconcileResponsePreparedStackTypeNumber ->; - -export type SyncReconcileResponsePreparedStackDefaultNumber = { - type: SyncReconcileResponsePreparedStackTypeNumber; - /** - * Number default. - */ - value: string; -}; - -export const SyncReconcileResponsePreparedStackTypeString = { - String: "string", -} as const; -export type SyncReconcileResponsePreparedStackTypeString = ClosedEnum< - typeof SyncReconcileResponsePreparedStackTypeString ->; - -export type SyncReconcileResponsePreparedStackDefaultString = { - type: SyncReconcileResponsePreparedStackTypeString; - /** - * String default. - */ - value: string; -}; - -export type SyncReconcileResponsePreparedStackDefaultUnion = - | SyncReconcileResponsePreparedStackDefaultString - | SyncReconcileResponsePreparedStackDefaultNumber - | SyncReconcileResponsePreparedStackDefaultBoolean - | SyncReconcileResponsePreparedStackDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncReconcileResponsePreparedStackTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type SyncReconcileResponsePreparedStackTypeEnvEnum = ClosedEnum< - typeof SyncReconcileResponsePreparedStackTypeEnvEnum ->; - -export type SyncReconcileResponsePreparedStackTypeUnion = - | SyncReconcileResponsePreparedStackTypeEnvEnum - | any; - -/** - * How a resolved stack input is injected into runtime environment variables. - */ -export type SyncReconcileResponsePreparedStackEnv = { - /** - * Environment variable name. - */ - name: string; - /** - * Target resource IDs or patterns. None means every env-capable resource. - */ - targetResources?: Array | null | undefined; - type?: SyncReconcileResponsePreparedStackTypeEnvEnum | any | null | undefined; -}; - -/** - * Primitive stack input kind. - */ -export const SyncReconcileResponsePreparedStackKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type SyncReconcileResponsePreparedStackKind = ClosedEnum< - typeof SyncReconcileResponsePreparedStackKind ->; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileResponsePreparedStackPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileResponsePreparedStackPlatform = ClosedEnum< - typeof SyncReconcileResponsePreparedStackPlatform ->; - -/** - * Who can provide a stack input value. - */ -export const SyncReconcileResponsePreparedStackProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type SyncReconcileResponsePreparedStackProvidedBy = ClosedEnum< - typeof SyncReconcileResponsePreparedStackProvidedBy ->; - -/** - * Portable stack input validation constraints. - */ -export type SyncReconcileResponsePreparedStackValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; - /** - * Minimum string-list items. - */ - minItems?: number | null | undefined; - /** - * Minimum string length. - */ - minLength?: number | null | undefined; - /** - * Portable whole-value regex pattern. - */ - pattern?: string | null | undefined; - /** - * Allowed string enum values. - */ - values?: Array | null | undefined; -}; - -export type SyncReconcileResponsePreparedStackValidationUnion = - | SyncReconcileResponsePreparedStackValidation - | any; - -/** - * Stack input definition serialized into a release stack. - */ -export type SyncReconcileResponsePreparedStackInput = { - default?: - | SyncReconcileResponsePreparedStackDefaultString - | SyncReconcileResponsePreparedStackDefaultNumber - | SyncReconcileResponsePreparedStackDefaultBoolean - | SyncReconcileResponsePreparedStackDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; - /** - * Stable input ID used by CLI/API calls. - */ - id: string; - /** - * Primitive stack input kind. - */ - kind: SyncReconcileResponsePreparedStackKind; - /** - * Human-facing field label. - */ - label: string; - /** - * Example placeholder shown in UI. - */ - placeholder?: string | null | undefined; - /** - * Platforms where this input applies. - */ - platforms?: - | Array - | null - | undefined; - /** - * Who can provide this value. - */ - providedBy: Array; - /** - * Whether a resolved value is required before deployment can proceed. - */ - required: boolean; - validation?: - | SyncReconcileResponsePreparedStackValidation - | any - | null - | undefined; -}; - -export const SyncReconcileResponsePreparedStackManagementEnum = { - Auto: "auto", -} as const; -export type SyncReconcileResponsePreparedStackManagementEnum = ClosedEnum< - typeof SyncReconcileResponsePreparedStackManagementEnum ->; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponsePreparedStackOverrideAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponsePreparedStackOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponsePreparedStackOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileResponsePreparedStackOverrideAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileResponsePreparedStackOverrideAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileResponsePreparedStackOverrideEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileResponsePreparedStackOverrideEffect = ClosedEnum< - typeof SyncReconcileResponsePreparedStackOverrideEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponsePreparedStackOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileResponsePreparedStackOverrideAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponsePreparedStackOverrideAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileResponsePreparedStackOverrideEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponsePreparedStackOverrideAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponsePreparedStackOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponsePreparedStackOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponsePreparedStackOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: - | SyncReconcileResponsePreparedStackOverrideAzureResource - | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileResponsePreparedStackOverrideAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponsePreparedStackOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileResponsePreparedStackOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponsePreparedStackOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponsePreparedStackOverrideAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponsePreparedStackOverrideConditionResource = { - expression: string; - title: string; -}; - -export type SyncReconcileResponsePreparedStackOverrideResourceConditionUnion = - | SyncReconcileResponsePreparedStackOverrideConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponsePreparedStackOverrideGcpResource = { - condition?: - | SyncReconcileResponsePreparedStackOverrideConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponsePreparedStackOverrideConditionStack = { - expression: string; - title: string; -}; - -export type SyncReconcileResponsePreparedStackOverrideStackConditionUnion = - | SyncReconcileResponsePreparedStackOverrideConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponsePreparedStackOverrideGcpStack = { - condition?: - | SyncReconcileResponsePreparedStackOverrideConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponsePreparedStackOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileResponsePreparedStackOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileResponsePreparedStackOverrideGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponsePreparedStackOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileResponsePreparedStackOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponsePreparedStackOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponsePreparedStackOverrideGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileResponsePreparedStackOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileResponsePreparedStackOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileResponsePreparedStackOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileResponsePreparedStackOverrideUnion = - | SyncReconcileResponsePreparedStackOverride - | string; - -export type SyncReconcileResponsePreparedStackManagement2 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { - [k: string]: Array; - }; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponsePreparedStackExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponsePreparedStackExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponsePreparedStackExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileResponsePreparedStackExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileResponsePreparedStackExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileResponsePreparedStackExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileResponsePreparedStackExtendEffect = ClosedEnum< - typeof SyncReconcileResponsePreparedStackExtendEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponsePreparedStackExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileResponsePreparedStackExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponsePreparedStackExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileResponsePreparedStackExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponsePreparedStackExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponsePreparedStackExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponsePreparedStackExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponsePreparedStackExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileResponsePreparedStackExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileResponsePreparedStackExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponsePreparedStackExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileResponsePreparedStackExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponsePreparedStackExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponsePreparedStackExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponsePreparedStackExtendConditionResource = { - expression: string; - title: string; -}; - -export type SyncReconcileResponsePreparedStackExtendResourceConditionUnion = - | SyncReconcileResponsePreparedStackExtendConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponsePreparedStackExtendGcpResource = { - condition?: - | SyncReconcileResponsePreparedStackExtendConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponsePreparedStackExtendConditionStack = { - expression: string; - title: string; -}; - -export type SyncReconcileResponsePreparedStackExtendStackConditionUnion = - | SyncReconcileResponsePreparedStackExtendConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponsePreparedStackExtendGcpStack = { - condition?: - | SyncReconcileResponsePreparedStackExtendConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponsePreparedStackExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileResponsePreparedStackExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileResponsePreparedStackExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponsePreparedStackExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileResponsePreparedStackExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponsePreparedStackExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponsePreparedStackExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileResponsePreparedStackExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileResponsePreparedStackExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileResponsePreparedStackExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileResponsePreparedStackExtendUnion = - | SyncReconcileResponsePreparedStackExtend - | string; - -export type SyncReconcileResponsePreparedStackManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { - [k: string]: Array; - }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type SyncReconcileResponsePreparedStackManagementUnion = - | SyncReconcileResponsePreparedStackManagement1 - | SyncReconcileResponsePreparedStackManagement2 - | SyncReconcileResponsePreparedStackManagementEnum; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponsePreparedStackProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponsePreparedStackProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponsePreparedStackProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileResponsePreparedStackProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileResponsePreparedStackProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileResponsePreparedStackProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileResponsePreparedStackProfileEffect = ClosedEnum< - typeof SyncReconcileResponsePreparedStackProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponsePreparedStackProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileResponsePreparedStackProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponsePreparedStackProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileResponsePreparedStackProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponsePreparedStackProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponsePreparedStackProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponsePreparedStackProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponsePreparedStackProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileResponsePreparedStackProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileResponsePreparedStackProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponsePreparedStackProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileResponsePreparedStackProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponsePreparedStackProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponsePreparedStackProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponsePreparedStackProfileConditionResource = { - expression: string; - title: string; -}; - -export type SyncReconcileResponsePreparedStackProfileResourceConditionUnion = - | SyncReconcileResponsePreparedStackProfileConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponsePreparedStackProfileGcpResource = { - condition?: - | SyncReconcileResponsePreparedStackProfileConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponsePreparedStackProfileConditionStack = { - expression: string; - title: string; -}; - -export type SyncReconcileResponsePreparedStackProfileStackConditionUnion = - | SyncReconcileResponsePreparedStackProfileConditionStack - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponsePreparedStackProfileGcpStack = { - condition?: - | SyncReconcileResponsePreparedStackProfileConditionStack - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponsePreparedStackProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileResponsePreparedStackProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileResponsePreparedStackProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponsePreparedStackProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileResponsePreparedStackProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponsePreparedStackProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponsePreparedStackProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileResponsePreparedStackProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileResponsePreparedStackProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileResponsePreparedStackProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileResponsePreparedStackProfileUnion = - | SyncReconcileResponsePreparedStackProfile - | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type SyncReconcileResponsePreparedStackPermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncReconcileResponsePreparedStackManagement1 - | SyncReconcileResponsePreparedStackManagement2 - | SyncReconcileResponsePreparedStackManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncReconcileResponsePreparedStackConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncReconcileResponsePreparedStackDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const SyncReconcileResponsePreparedStackLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type SyncReconcileResponsePreparedStackLifecycle = ClosedEnum< - typeof SyncReconcileResponsePreparedStackLifecycle ->; - -export type SyncReconcileResponsePreparedStackResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncReconcileResponsePreparedStackConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: SyncReconcileResponsePreparedStackLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileResponsePreparedStackSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileResponsePreparedStackSupportedPlatform = ClosedEnum< - typeof SyncReconcileResponsePreparedStackSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncReconcileResponsePreparedStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: SyncReconcileResponsePreparedStackPermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: SyncReconcileResponsePreparedStackResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -export type SyncReconcileResponsePreparedStackUnion = - | SyncReconcileResponsePreparedStack - | any; - -/** - * Runtime metadata for deployment - * - * @remarks - * - * Stores deployment state that needs to persist across step calls. - */ -export type SyncReconcileResponseRuntimeMetadata = { - /** - * Hash of the environment variables snapshot that was last synced to the vault - * - * @remarks - * Used to avoid redundant sync operations during incremental deployment - */ - lastSyncedEnvVarsHash?: string | null | undefined; - preparedStack?: SyncReconcileResponsePreparedStack | any | null | undefined; - /** - * Whether cross-account registry access has been successfully granted. - * - * @remarks - * Set to true after the manager successfully sets the ECR/GAR repo policy - * for this deployment's target account. Prevents redundant API calls on - * every reconcile tick. - */ - registryAccessGranted?: boolean | undefined; -}; - -export type SyncReconcileResponseRuntimeMetadataUnion = - | SyncReconcileResponseRuntimeMetadata - | any; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileResponseStackStatePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileResponseStackStatePlatform = ClosedEnum< - typeof SyncReconcileResponseStackStatePlatform ->; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncReconcileResponseStackStateConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileResponseControllerPlatformEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileResponseControllerPlatformEnum = ClosedEnum< - typeof SyncReconcileResponseControllerPlatformEnum ->; - -export type SyncReconcileResponseControllerPlatformUnion = - | SyncReconcileResponseControllerPlatformEnum - | any; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncReconcileResponseStackStateDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Canonical error container that provides a structured way to represent errors - * - * @remarks - * with rich metadata including error codes, human-readable messages, context, - * and chaining capabilities for error propagation. - * - * This struct is designed to be both machine-readable and user-friendly, - * supporting serialization for API responses and detailed error reporting - * in distributed systems. - */ -export type SyncReconcileResponseStackStateError = { - /** - * A unique identifier for the type of error. - * - * @remarks - * - * This should be a short, machine-readable string that can be used - * by clients to programmatically handle different error types. - * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" - */ - code: string; - /** - * Additional diagnostic information about the error context. - * - * @remarks - * - * This optional field can contain structured data providing more details - * about the error, such as validation errors, request parameters that - * caused the issue, or other relevant context information. - */ - context?: any | null | undefined; - /** - * Optional human-facing remediation hint. - */ - hint?: string | null | undefined; - /** - * HTTP status code for this error. - * - * @remarks - * - * Used when converting the error to an HTTP response. If None, falls back to - * the error type's default status code or 500. - */ - httpStatusCode?: number | null | undefined; - /** - * Indicates if this is an internal error that should not be exposed to users. - * - * @remarks - * - * When `true`, this error contains sensitive information or implementation - * details that should not be shown to end-users. Such errors should be - * logged for debugging but replaced with generic error messages in responses. - */ - internal: boolean; - /** - * Human-readable error message. - * - * @remarks - * - * This message should be clear and actionable for developers or end-users, - * providing context about what went wrong and potentially how to fix it. - */ - message: string; - /** - * Indicates whether the operation that caused the error should be retried. - * - * @remarks - * - * When `true`, the error is transient and the operation might succeed - * if attempted again. When `false`, retrying the same operation is - * unlikely to succeed without changes. - */ - retryable: boolean; - /** - * The underlying error that caused this error, creating an error chain. - * - * @remarks - * - * This allows for proper error propagation and debugging by maintaining - * the full context of how an error occurred through multiple layers - * of an application. - */ - source?: any | null | undefined; -}; - -export type SyncReconcileResponseStackStateErrorUnion = - | SyncReconcileResponseStackStateError - | any; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const SyncReconcileResponseStackStateLifecycleEnum = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type SyncReconcileResponseStackStateLifecycleEnum = ClosedEnum< - typeof SyncReconcileResponseStackStateLifecycleEnum ->; - -export type SyncReconcileResponseLifecycleUnion = - | SyncReconcileResponseStackStateLifecycleEnum - | any; - -/** - * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. - */ -export type SyncReconcileResponseOutputs = { - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -export type SyncReconcileResponseOutputsUnion = - | SyncReconcileResponseOutputs - | any; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncReconcileResponsePreviousConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -export type SyncReconcileResponsePreviousConfigUnion = - | SyncReconcileResponsePreviousConfig - | any; - -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export const SyncReconcileResponseStackStateStatus = { - Pending: "pending", - Provisioning: "provisioning", - ProvisionFailed: "provision-failed", - Running: "running", - Updating: "updating", - UpdateFailed: "update-failed", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - Deleted: "deleted", - RefreshFailed: "refresh-failed", -} as const; -/** - * Represents the high-level status of a resource during its lifecycle. - */ -export type SyncReconcileResponseStackStateStatus = ClosedEnum< - typeof SyncReconcileResponseStackStateStatus ->; - -/** - * Represents the state of a single resource within the stack for a specific platform. - */ -export type SyncReconcileResponseStackStateResources = { - /** - * The platform-specific resource controller that manages this resource's lifecycle. - * - * @remarks - * This is None when the resource status is Pending. - * Stored as JSON to make the struct serializable and movable to alien-core. - */ - internal?: any | null | undefined; - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncReconcileResponseStackStateConfig; - controllerPlatform?: - | SyncReconcileResponseControllerPlatformEnum - | any - | null - | undefined; - /** - * Complete list of dependencies for this resource, including infrastructure dependencies. - * - * @remarks - * This preserves the full dependency information from the stack definition. - */ - dependencies?: Array | undefined; - error?: SyncReconcileResponseStackStateError | any | null | undefined; - /** - * Stores the controller state that failed, used for manual retry operations. - * - * @remarks - * This allows resuming from the exact point where the failure occurred. - * Stored as JSON to make the struct serializable and movable to alien-core. - */ - lastFailedState?: any | null | undefined; - lifecycle?: - | SyncReconcileResponseStackStateLifecycleEnum - | any - | null - | undefined; - outputs?: SyncReconcileResponseOutputs | any | null | undefined; - previousConfig?: SyncReconcileResponsePreviousConfig | any | null | undefined; - /** - * Binding parameters for remote access. - * - * @remarks - * Only populated when the resource has `remote_access: true` in its ResourceEntry. - * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). - * Populated by controllers during provisioning using get_binding_params(). - */ - remoteBindingParams?: any | null | undefined; - /** - * Tracks consecutive retry attempts for the current state transition. - */ - retryAttempt?: number | undefined; - /** - * Represents the high-level status of a resource during its lifecycle. - */ - status: SyncReconcileResponseStackStateStatus; - /** - * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). - */ - type: string; -}; - -/** - * Represents the collective state of all resources in a stack, including platform and pending actions. - */ -export type SyncReconcileResponseStackState = { - /** - * Represents the target cloud platform. - */ - platform: SyncReconcileResponseStackStatePlatform; - /** - * A prefix used for resource naming to ensure uniqueness across deployments. - */ - resourcePrefix: string; - /** - * The state of individual resources, keyed by resource ID. - */ - resources: { [k: string]: SyncReconcileResponseStackStateResources }; -}; - -export type SyncReconcileResponseStackStateUnion = - | SyncReconcileResponseStackState - | any; - -/** - * Deployment status in the deployment lifecycle - */ -export const SyncReconcileResponseStatus = { - Pending: "pending", - PreflightsFailed: "preflights-failed", - InitialSetup: "initial-setup", - InitialSetupFailed: "initial-setup-failed", - Provisioning: "provisioning", - ProvisioningFailed: "provisioning-failed", - Running: "running", - RefreshFailed: "refresh-failed", - UpdatePending: "update-pending", - Updating: "updating", - UpdateFailed: "update-failed", - DeletePending: "delete-pending", - Deleting: "deleting", - DeleteFailed: "delete-failed", - TeardownRequired: "teardown-required", - TeardownFailed: "teardown-failed", - Deleted: "deleted", - Error: "error", -} as const; -/** - * Deployment status in the deployment lifecycle - */ -export type SyncReconcileResponseStatus = ClosedEnum< - typeof SyncReconcileResponseStatus ->; - -export const SyncReconcileResponseTargetReleaseTypeStringList = { - StringList: "stringList", -} as const; -export type SyncReconcileResponseTargetReleaseTypeStringList = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseTypeStringList ->; - -export type SyncReconcileResponseTargetReleaseDefaultStringList = { - type: SyncReconcileResponseTargetReleaseTypeStringList; - /** - * String list default. - */ - value: Array; -}; - -export const SyncReconcileResponseTargetReleaseTypeBoolean = { - Boolean: "boolean", -} as const; -export type SyncReconcileResponseTargetReleaseTypeBoolean = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseTypeBoolean ->; - -export type SyncReconcileResponseTargetReleaseDefaultBoolean = { - type: SyncReconcileResponseTargetReleaseTypeBoolean; - /** - * Boolean default. - */ - value: boolean; -}; - -export const SyncReconcileResponseTargetReleaseTypeNumber = { - Number: "number", -} as const; -export type SyncReconcileResponseTargetReleaseTypeNumber = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseTypeNumber ->; - -export type SyncReconcileResponseTargetReleaseDefaultNumber = { - type: SyncReconcileResponseTargetReleaseTypeNumber; - /** - * Number default. - */ - value: string; -}; - -export const SyncReconcileResponseTargetReleaseTypeString = { - String: "string", -} as const; -export type SyncReconcileResponseTargetReleaseTypeString = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseTypeString ->; - -export type SyncReconcileResponseTargetReleaseDefaultString = { - type: SyncReconcileResponseTargetReleaseTypeString; - /** - * String default. - */ - value: string; -}; - -export type SyncReconcileResponseTargetReleaseDefaultUnion = - | SyncReconcileResponseTargetReleaseDefaultString - | SyncReconcileResponseTargetReleaseDefaultNumber - | SyncReconcileResponseTargetReleaseDefaultBoolean - | SyncReconcileResponseTargetReleaseDefaultStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const SyncReconcileResponseTargetReleaseTypeEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type SyncReconcileResponseTargetReleaseTypeEnvEnum = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseTypeEnvEnum ->; - -export type SyncReconcileResponseTargetReleaseTypeUnion = - | SyncReconcileResponseTargetReleaseTypeEnvEnum - | any; - -/** - * How a resolved stack input is injected into runtime environment variables. - */ -export type SyncReconcileResponseTargetReleaseEnv = { - /** - * Environment variable name. - */ - name: string; - /** - * Target resource IDs or patterns. None means every env-capable resource. - */ - targetResources?: Array | null | undefined; - type?: SyncReconcileResponseTargetReleaseTypeEnvEnum | any | null | undefined; -}; - -/** - * Primitive stack input kind. - */ -export const SyncReconcileResponseTargetReleaseKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type SyncReconcileResponseTargetReleaseKind = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseKind ->; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileResponseTargetReleasePlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileResponseTargetReleasePlatform = ClosedEnum< - typeof SyncReconcileResponseTargetReleasePlatform ->; - -/** - * Who can provide a stack input value. - */ -export const SyncReconcileResponseTargetReleaseProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type SyncReconcileResponseTargetReleaseProvidedBy = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseProvidedBy ->; - -/** - * Portable stack input validation constraints. - */ -export type SyncReconcileResponseTargetReleaseValidation = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; - /** - * Minimum string-list items. - */ - minItems?: number | null | undefined; - /** - * Minimum string length. - */ - minLength?: number | null | undefined; - /** - * Portable whole-value regex pattern. - */ - pattern?: string | null | undefined; - /** - * Allowed string enum values. - */ - values?: Array | null | undefined; -}; - -export type SyncReconcileResponseTargetReleaseValidationUnion = - | SyncReconcileResponseTargetReleaseValidation - | any; - -/** - * Stack input definition serialized into a release stack. - */ -export type SyncReconcileResponseTargetReleaseInput = { - default?: - | SyncReconcileResponseTargetReleaseDefaultString - | SyncReconcileResponseTargetReleaseDefaultNumber - | SyncReconcileResponseTargetReleaseDefaultBoolean - | SyncReconcileResponseTargetReleaseDefaultStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; - /** - * Stable input ID used by CLI/API calls. - */ - id: string; - /** - * Primitive stack input kind. - */ - kind: SyncReconcileResponseTargetReleaseKind; - /** - * Human-facing field label. - */ - label: string; - /** - * Example placeholder shown in UI. - */ - placeholder?: string | null | undefined; - /** - * Platforms where this input applies. - */ - platforms?: - | Array - | null - | undefined; - /** - * Who can provide this value. - */ - providedBy: Array; - /** - * Whether a resolved value is required before deployment can proceed. - */ - required: boolean; - validation?: - | SyncReconcileResponseTargetReleaseValidation - | any - | null - | undefined; -}; - -export const SyncReconcileResponseTargetReleaseManagementEnum = { - Auto: "auto", -} as const; -export type SyncReconcileResponseTargetReleaseManagementEnum = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseManagementEnum ->; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseOverrideAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseOverrideAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseTargetReleaseOverrideAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileResponseTargetReleaseOverrideAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileResponseTargetReleaseOverrideAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileResponseTargetReleaseOverrideEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileResponseTargetReleaseOverrideEffect = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseOverrideEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseOverrideAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileResponseTargetReleaseOverrideAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseTargetReleaseOverrideAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileResponseTargetReleaseOverrideEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseTargetReleaseOverrideAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseOverrideAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseOverrideAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseTargetReleaseOverrideAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: - | SyncReconcileResponseTargetReleaseOverrideAzureResource - | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileResponseTargetReleaseOverrideAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseOverrideAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileResponseTargetReleaseOverrideAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseTargetReleaseOverrideAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseTargetReleaseOverrideAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseTargetReleaseOverrideConditionResource = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion = - | SyncReconcileResponseTargetReleaseOverrideConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseOverrideGcpResource = { - condition?: - | SyncReconcileResponseTargetReleaseOverrideConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseTargetReleaseOverrideCondition = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseTargetReleaseOverrideConditionUnion = - | SyncReconcileResponseTargetReleaseOverrideCondition - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseOverrideGcpStack = { - condition?: - | SyncReconcileResponseTargetReleaseOverrideCondition - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseTargetReleaseOverrideGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileResponseTargetReleaseOverrideGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileResponseTargetReleaseOverrideGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseOverrideGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileResponseTargetReleaseOverrideGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseTargetReleaseOverrideGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseTargetReleaseOverrideGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileResponseTargetReleaseOverridePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileResponseTargetReleaseOverride = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileResponseTargetReleaseOverridePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileResponseTargetReleaseOverrideUnion = - | SyncReconcileResponseTargetReleaseOverride - | string; - -export type SyncReconcileResponseTargetReleaseManagement2 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { - [k: string]: Array; - }; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseExtendAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseExtendAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseTargetReleaseExtendAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileResponseTargetReleaseExtendAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileResponseTargetReleaseExtendAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileResponseTargetReleaseExtendEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileResponseTargetReleaseExtendEffect = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseExtendEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseExtendAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileResponseTargetReleaseExtendAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseTargetReleaseExtendAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileResponseTargetReleaseExtendEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseTargetReleaseExtendAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseExtendAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseExtendAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseTargetReleaseExtendAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileResponseTargetReleaseExtendAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileResponseTargetReleaseExtendAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseExtendAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileResponseTargetReleaseExtendAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseTargetReleaseExtendAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseTargetReleaseExtendAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseTargetReleaseExtendConditionResource = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseTargetReleaseExtendResourceConditionUnion = - | SyncReconcileResponseTargetReleaseExtendConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseExtendGcpResource = { - condition?: - | SyncReconcileResponseTargetReleaseExtendConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseTargetReleaseExtendCondition = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseTargetReleaseExtendConditionUnion = - | SyncReconcileResponseTargetReleaseExtendCondition - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseExtendGcpStack = { - condition?: - | SyncReconcileResponseTargetReleaseExtendCondition - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseTargetReleaseExtendGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileResponseTargetReleaseExtendGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileResponseTargetReleaseExtendGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseExtendGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileResponseTargetReleaseExtendGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseTargetReleaseExtendGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseTargetReleaseExtendGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileResponseTargetReleaseExtendPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileResponseTargetReleaseExtend = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileResponseTargetReleaseExtendPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileResponseTargetReleaseExtendUnion = - | SyncReconcileResponseTargetReleaseExtend - | string; - -export type SyncReconcileResponseTargetReleaseManagement1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { - [k: string]: Array; - }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type SyncReconcileResponseTargetReleaseManagementUnion = - | SyncReconcileResponseTargetReleaseManagement1 - | SyncReconcileResponseTargetReleaseManagement2 - | SyncReconcileResponseTargetReleaseManagementEnum; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseProfileAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseProfileAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseTargetReleaseProfileAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: SyncReconcileResponseTargetReleaseProfileAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: SyncReconcileResponseTargetReleaseProfileAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const SyncReconcileResponseTargetReleaseProfileEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type SyncReconcileResponseTargetReleaseProfileEffect = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseProfileEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseProfileAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type SyncReconcileResponseTargetReleaseProfileAw = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseTargetReleaseProfileAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: SyncReconcileResponseTargetReleaseProfileEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseTargetReleaseProfileAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseProfileAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseProfileAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseTargetReleaseProfileAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: SyncReconcileResponseTargetReleaseProfileAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: SyncReconcileResponseTargetReleaseProfileAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseProfileAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type SyncReconcileResponseTargetReleaseProfileAzure = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseTargetReleaseProfileAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseTargetReleaseProfileAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseTargetReleaseProfileConditionResource = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseTargetReleaseProfileResourceConditionUnion = - | SyncReconcileResponseTargetReleaseProfileConditionResource - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseProfileGcpResource = { - condition?: - | SyncReconcileResponseTargetReleaseProfileConditionResource - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type SyncReconcileResponseTargetReleaseProfileCondition = { - expression: string; - title: string; -}; - -export type SyncReconcileResponseTargetReleaseProfileConditionUnion = - | SyncReconcileResponseTargetReleaseProfileCondition - | any; - -/** - * GCP-specific binding specification - */ -export type SyncReconcileResponseTargetReleaseProfileGcpStack = { - condition?: - | SyncReconcileResponseTargetReleaseProfileCondition - | any - | null - | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type SyncReconcileResponseTargetReleaseProfileGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: SyncReconcileResponseTargetReleaseProfileGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: SyncReconcileResponseTargetReleaseProfileGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type SyncReconcileResponseTargetReleaseProfileGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type SyncReconcileResponseTargetReleaseProfileGcp = { - /** - * Generic binding configuration for permissions - */ - binding: SyncReconcileResponseTargetReleaseProfileGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: SyncReconcileResponseTargetReleaseProfileGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type SyncReconcileResponseTargetReleaseProfilePlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: - | Array - | null - | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type SyncReconcileResponseTargetReleaseProfile = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: SyncReconcileResponseTargetReleaseProfilePlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type SyncReconcileResponseTargetReleaseProfileUnion = - | SyncReconcileResponseTargetReleaseProfile - | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type SyncReconcileResponseTargetReleasePermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | SyncReconcileResponseTargetReleaseManagement1 - | SyncReconcileResponseTargetReleaseManagement2 - | SyncReconcileResponseTargetReleaseManagementEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { - [k: string]: Array; - }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type SyncReconcileResponseTargetReleaseConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type SyncReconcileResponseTargetReleaseDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const SyncReconcileResponseTargetReleaseLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type SyncReconcileResponseTargetReleaseLifecycle = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseLifecycle ->; - -export type SyncReconcileResponseTargetReleaseResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: SyncReconcileResponseTargetReleaseConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: SyncReconcileResponseTargetReleaseLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileResponseTargetReleaseSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileResponseTargetReleaseSupportedPlatform = ClosedEnum< - typeof SyncReconcileResponseTargetReleaseSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type SyncReconcileResponseTargetReleaseStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: SyncReconcileResponseTargetReleasePermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: SyncReconcileResponseTargetReleaseResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: - | Array - | null - | undefined; -}; - -/** - * Release metadata - * - * @remarks - * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. - */ -export type SyncReconcileResponseTargetRelease = { - /** - * Short description of the release - */ - description?: string | null | undefined; - /** - * Release ID (e.g., rel_xyz) - */ - releaseId: string; - /** - * A bag of resources, unaware of any cloud. - */ - stack: SyncReconcileResponseTargetReleaseStack; - /** - * Version string (e.g., 2.1.0) - */ - version?: string | null | undefined; -}; - -export type SyncReconcileResponseTargetReleaseUnion = - | SyncReconcileResponseTargetRelease - | any; - -/** - * Current deployment state after reconciliation - */ -export type SyncReconcileResponseCurrent = { - currentRelease?: SyncReconcileResponseCurrentRelease | any | null | undefined; - environmentInfo?: - | SyncReconcileResponseEnvironmentInfoGcp - | SyncReconcileResponseEnvironmentInfoAzure - | SyncReconcileResponseEnvironmentInfoLocal - | SyncReconcileResponseEnvironmentInfoAws - | SyncReconcileResponseEnvironmentInfoTest - | any - | null - | undefined; - error?: SyncReconcileResponseError | any | null | undefined; - /** - * Represents the target cloud platform. - */ - platform: SyncReconcileResponseCurrentPlatform; - /** - * Protocol version for cross-actor compatibility. - * - * @remarks - * All actors (manager, push client, agent) check this before stepping. - * Mismatched versions produce a clear error instead of silent corruption. - * See docs/02-manager/10-deployment-protocol.md. - */ - protocolVersion: number; - /** - * Whether a retry has been requested for a failed deployment - * - * @remarks - * When true and status is a failed state, the deployment system will retry failed resources - */ - retryRequested?: boolean | undefined; - runtimeMetadata?: - | SyncReconcileResponseRuntimeMetadata - | any - | null - | undefined; - stackState?: SyncReconcileResponseStackState | any | null | undefined; - /** - * Deployment status in the deployment lifecycle - */ - status: SyncReconcileResponseStatus; - targetRelease?: SyncReconcileResponseTargetRelease | any | null | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const SyncReconcileResponseBasePlatformEnum = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type SyncReconcileResponseBasePlatformEnum = ClosedEnum< - typeof SyncReconcileResponseBasePlatformEnum ->; - -export type SyncReconcileResponseBasePlatformUnion = - | SyncReconcileResponseBasePlatformEnum - | any; - -/** - * Configuration for a single container worker cluster. - * - * @remarks - * - * Contains the cluster ID and management token needed to interact with - * the managed container control plane API for container operations. - */ -export type SyncReconcileResponseClusters = { - /** - * Cluster ID (deterministic: workspace/project/deployment/resourceid) - */ - clusterId: string; - /** - * Management token for API access (hm_...) - * - * @remarks - * Used by alien-deployment controllers to create/update containers - */ - managementToken: string; -}; - -/** - * AWS Horizon machine image catalog. - */ -export type SyncReconcileResponseHorizonMachineImageAws = { - /** - * AMI IDs by architecture, then AWS region. - */ - amis: { [k: string]: { [k: string]: string } }; -}; - -export type SyncReconcileResponseHorizonMachineImageAwsUnion = - | SyncReconcileResponseHorizonMachineImageAws - | any; - -/** - * Azure Horizon machine image entry. - */ -export type SyncReconcileResponseAzureImages = { - /** - * Azure Compute Gallery image version ID. - */ - imageVersionId: string; -}; - -/** - * Azure Horizon machine image catalog. - */ -export type HorizonMachineImageAzureTarget = { - /** - * Images by architecture. - */ - images: { [k: string]: SyncReconcileResponseAzureImages }; -}; - -export type HorizonMachineImageTargetAzureUnion = - | HorizonMachineImageAzureTarget - | any; - -/** - * Base image metadata for the Horizon machine image. - */ -export type SyncReconcileResponseBaseImage = { - /** - * Base OS image name. - */ - name: string; - /** - * Base OS image version or channel. - */ - version: string; -}; - -/** - * GCP Horizon machine image entry. - */ -export type SyncReconcileResponseGcpImages = { - /** - * Source image self link or image-family URL. - */ - sourceImage: string; -}; - -/** - * GCP Horizon machine image catalog. - */ -export type HorizonMachineImageGcpTarget = { - /** - * Images by architecture. - */ - images: { [k: string]: SyncReconcileResponseGcpImages }; -}; - -export type HorizonMachineImageTargetGcpUnion = - | HorizonMachineImageGcpTarget - | any; - -/** - * Horizon machine image catalog. - * - * @remarks - * - * Platform resolves concrete provider images from this catalog during rollout. - */ -export type SyncReconcileResponseHorizonMachineImage = { - aws?: SyncReconcileResponseHorizonMachineImageAws | any | null | undefined; - azure?: HorizonMachineImageAzureTarget | any | null | undefined; - /** - * Base image metadata for the Horizon machine image. - */ - baseImage: SyncReconcileResponseBaseImage; - /** - * Logical image channel, such as prod, staging, or canary. - */ - channel: string; - /** - * Image manifest creation timestamp. - */ - createdAt: string; - gcp?: HorizonMachineImageGcpTarget | any | null | undefined; - /** - * Git commit SHA used to build the image. - */ - gitSha: string; - /** - * horizond daemon version baked into the image. - */ - horizondVersion: string; - /** - * Published immutable machine image version. - */ - machineImageVersion: string; -}; - -export type SyncReconcileResponseHorizonMachineImageUnion = - | SyncReconcileResponseHorizonMachineImage - | any; - -export const ComputeBackendTargetType = { - Horizon: "horizon", -} as const; -export type ComputeBackendTargetType = ClosedEnum< - typeof ComputeBackendTargetType ->; - -/** - * Compute backend for Container and Worker resources. - * - * @remarks - * - * Determines how compute workloads are orchestrated on cloud platforms. - * When None, the platform default is used for cloud platforms. - */ -export type SyncReconcileResponseComputeBackendHorizon = { - /** - * Cluster configurations (one per ComputeCluster resource) - * - * @remarks - * Key: ComputeCluster resource ID from stack - * Value: Cluster ID and management token for that cluster - */ - clusters: { [k: string]: SyncReconcileResponseClusters }; - horizonMachineImage?: - | SyncReconcileResponseHorizonMachineImage - | any - | null - | undefined; - /** - * Horizon control-plane API base URL. - */ - url: string; - type: ComputeBackendTargetType; -}; - -export type SyncReconcileResponseComputeBackendUnion = - | SyncReconcileResponseComputeBackendHorizon - | any; - -/** - * Certificate status in the certificate lifecycle - */ -export const SyncReconcileResponseAliasCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; -/** - * Certificate status in the certificate lifecycle - */ -export type SyncReconcileResponseAliasCertificateStatus = ClosedEnum< - typeof SyncReconcileResponseAliasCertificateStatus ->; - -/** - * DNS record status in the DNS lifecycle - */ -export const SyncReconcileResponseAliasDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", -} as const; -/** - * DNS record status in the DNS lifecycle - */ -export type SyncReconcileResponseAliasDnsStatus = ClosedEnum< - typeof SyncReconcileResponseAliasDnsStatus ->; - -/** - * Certificate and DNS metadata for a managed hostname. - * - * @remarks - * - * Includes decrypted certificate data for issued certificates. - * Private keys are deployment-scoped secrets (like environment variables). - */ -export type SyncReconcileResponseAlias = { - /** - * Full PEM certificate chain (only present if status is "issued"). - */ - certificateChain?: string | null | undefined; - /** - * Certificate ID (for tracking/logging). - */ - certificateId: string; - /** - * Certificate status in the certificate lifecycle - */ - certificateStatus: SyncReconcileResponseAliasCertificateStatus; - /** - * Last DNS error message. Present when DNS previously failed, even if status - * - * @remarks - * was reset to pending for retry. Used to surface actionable error context - * in WaitingForDns failure messages. - */ - dnsError?: string | null | undefined; - /** - * DNS record status in the DNS lifecycle - */ - dnsStatus: SyncReconcileResponseAliasDnsStatus; - /** - * Fully qualified domain name. - */ - fqdn: string; - /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). - */ - issuedAt?: string | null | undefined; - /** - * Decrypted private key (only present if status is "issued"). - */ - privateKey?: string | null | undefined; -}; - -/** - * Certificate status in the certificate lifecycle - */ -export const SyncReconcileResponseCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; -/** - * Certificate status in the certificate lifecycle - */ -export type SyncReconcileResponseCertificateStatus = ClosedEnum< - typeof SyncReconcileResponseCertificateStatus ->; - -/** - * DNS record status in the DNS lifecycle - */ -export const SyncReconcileResponseDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", -} as const; -/** - * DNS record status in the DNS lifecycle - */ -export type SyncReconcileResponseDnsStatus = ClosedEnum< - typeof SyncReconcileResponseDnsStatus ->; - -/** - * Certificate status in the certificate lifecycle - */ -export const SyncReconcileResponseEndpointsCertificateStatus = { - Pending: "pending", - Issued: "issued", - Renewing: "renewing", - RenewalFailed: "renewal-failed", - Failed: "failed", - Deleting: "deleting", -} as const; -/** - * Certificate status in the certificate lifecycle - */ -export type SyncReconcileResponseEndpointsCertificateStatus = ClosedEnum< - typeof SyncReconcileResponseEndpointsCertificateStatus ->; - -/** - * DNS record status in the DNS lifecycle - */ -export const SyncReconcileResponseEndpointsDnsStatus = { - Pending: "pending", - Active: "active", - Updating: "updating", - Deleting: "deleting", - Failed: "failed", -} as const; -/** - * DNS record status in the DNS lifecycle - */ -export type SyncReconcileResponseEndpointsDnsStatus = ClosedEnum< - typeof SyncReconcileResponseEndpointsDnsStatus ->; - -/** - * Certificate and DNS metadata for a managed hostname. - * - * @remarks - * - * Includes decrypted certificate data for issued certificates. - * Private keys are deployment-scoped secrets (like environment variables). - */ -export type SyncReconcileResponseEndpoints = { - /** - * Full PEM certificate chain (only present if status is "issued"). - */ - certificateChain?: string | null | undefined; - /** - * Certificate ID (for tracking/logging). - */ - certificateId: string; - /** - * Certificate status in the certificate lifecycle - */ - certificateStatus: SyncReconcileResponseEndpointsCertificateStatus; - /** - * Last DNS error message. Present when DNS previously failed, even if status - * - * @remarks - * was reset to pending for retry. Used to surface actionable error context - * in WaitingForDns failure messages. - */ - dnsError?: string | null | undefined; - /** - * DNS record status in the DNS lifecycle - */ - dnsStatus: SyncReconcileResponseEndpointsDnsStatus; - /** - * Fully qualified domain name. - */ - fqdn: string; - /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). - */ - issuedAt?: string | null | undefined; - /** - * Decrypted private key (only present if status is "issued"). - */ - privateKey?: string | null | undefined; -}; - -/** - * Certificate and DNS metadata for a public resource. - * - * @remarks - * - * The direct fields describe the primary endpoint hostname. `endpoints` - * contains endpoint-scoped metadata keyed by endpoint name. `aliases` contains - * additional managed hostnames that route directly to the primary endpoint. - */ -export type DomainMetadataTargetResources = { - /** - * Additional managed hostnames for the resource. - */ - aliases?: Array | undefined; - /** - * Full PEM certificate chain (only present if status is "issued"). - */ - certificateChain?: string | null | undefined; - /** - * Certificate ID (for tracking/logging). - */ - certificateId: string; - /** - * Certificate status in the certificate lifecycle - */ - certificateStatus: SyncReconcileResponseCertificateStatus; - /** - * Last DNS error message. - */ - dnsError?: string | null | undefined; - /** - * DNS record status in the DNS lifecycle - */ - dnsStatus: SyncReconcileResponseDnsStatus; - /** - * Endpoint-scoped metadata keyed by endpoint name. - */ - endpoints?: { [k: string]: SyncReconcileResponseEndpoints } | undefined; - /** - * Fully qualified domain name. - */ - fqdn: string; - /** - * ISO 8601 timestamp when certificate was issued (for renewal detection). - */ - issuedAt?: string | null | undefined; - /** - * Decrypted private key (only present if status is "issued"). - */ - privateKey?: string | null | undefined; -}; - -/** - * Domain metadata for auto-managed public resources (no private keys). - */ -export type SyncReconcileResponseDomainMetadata = { - /** - * Base domain for auto-generated domains (e.g., "vpc.direct"). - */ - baseDomain: string; - /** - * Hosted zone ID for DNS records. - */ - hostedZoneId: string; - /** - * Deployment public subdomain (e.g., "k8f2j3"). - */ - publicSubdomain: string; - /** - * Metadata per resource ID. - */ - resources: { [k: string]: DomainMetadataTargetResources }; -}; - -export type SyncReconcileResponseDomainMetadataUnion = - | SyncReconcileResponseDomainMetadata - | any; - -/** - * Type of environment variable - */ -export const TargetEnvironmentVariablesType = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Type of environment variable - */ -export type TargetEnvironmentVariablesType = ClosedEnum< - typeof TargetEnvironmentVariablesType ->; - -/** - * Environment variable for deployment - */ -export type SyncReconcileResponseVariable = { - /** - * Variable name - */ - name: string; - /** - * Target resource patterns (null = all resources, Some = wildcard patterns) - */ - targetResources?: Array | null | undefined; - /** - * Type of environment variable - */ - type: TargetEnvironmentVariablesType; - /** - * Variable value (decrypted - deployment has access to decryption keys) - */ - value: string; -}; - -/** - * Snapshot of environment variables at a point in time - */ -export type SyncReconcileResponseEnvironmentVariables = { - /** - * ISO 8601 timestamp when snapshot was created - */ - createdAt: string; - /** - * Deterministic hash of all variables (for change detection) - */ - hash: string; - /** - * Environment variables in the snapshot - */ - variables: Array; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDefaultDomainSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDefaultDomain = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseDefaultDomainSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDefaultDomainUnion = - | SyncReconcileResponseDefaultDomain - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseEnvironmentNameSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseEnvironmentName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseEnvironmentNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseEnvironmentNameUnion = - | SyncReconcileResponseEnvironmentName - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseResourceGroupNameSecretRef3 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseResourceGroupName3 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseResourceGroupNameSecretRef3; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseResourceGroupNameUnion3 = - | SyncReconcileResponseResourceGroupName3 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseResourceIdSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseResourceId = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseResourceIdSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseResourceIdUnion = - | SyncReconcileResponseResourceId - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseStaticIpSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseStaticIp = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseStaticIpSecretRef; -}; - -export const TargetTypeContainerAppsEnvironment = { - ContainerAppsEnvironment: "container_apps_environment", -} as const; -export type TargetTypeContainerAppsEnvironment = ClosedEnum< - typeof TargetTypeContainerAppsEnvironment ->; - -/** - * Binding configuration for a pre-existing Azure Container Apps Environment. - * - * @remarks - * - * Used when deploying to an existing environment instead of having Alien provision one. - * This is useful for shared environments (e.g., test infrastructure) or enterprise - * setups where environments are managed by a separate team. - */ -export type SyncReconcileResponseExternalBindingsContainerAppsEnvironment = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - defaultDomain?: - | SyncReconcileResponseDefaultDomain - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - environmentName?: - | SyncReconcileResponseEnvironmentName - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - resourceGroupName?: - | SyncReconcileResponseResourceGroupName3 - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - resourceId?: - | SyncReconcileResponseResourceId - | any - | string - | null - | undefined; - staticIp?: any | null | undefined; - type: TargetTypeContainerAppsEnvironment; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDataDirSecretRef3 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDataDir3 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseDataDirSecretRef3; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDataDirUnion2 = - | SyncReconcileResponseDataDir3 - | any - | string; - -export const TargetTypeVault5 = { - Vault: "vault", -} as const; -export type TargetTypeVault5 = ClosedEnum; - -/** - * Local development vault binding (for testing/development) - */ -export type SyncReconcileResponseExternalBindingsLocalVault = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - dataDir?: SyncReconcileResponseDataDir3 | any | string | null | undefined; - /** - * The vault name for local storage - */ - vaultName: string; - service: "local-vault"; - type: TargetTypeVault5; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseNamespaceSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseNamespace2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseNamespaceSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseNamespaceUnion2 = - | SyncReconcileResponseNamespace2 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseVaultPrefixSecretRef3 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseVaultPrefix3 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseVaultPrefixSecretRef3; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseVaultPrefixUnion3 = - | SyncReconcileResponseVaultPrefix3 - | any - | string; - -export const TargetTypeVault4 = { - Vault: "vault", -} as const; -export type TargetTypeVault4 = ClosedEnum; - -/** - * Kubernetes Secrets vault binding configuration - */ -export type SyncReconcileResponseExternalBindingsKubernetesSecret = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - namespace?: SyncReconcileResponseNamespace2 | any | string | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - vaultPrefix?: - | SyncReconcileResponseVaultPrefix3 - | any - | string - | null - | undefined; - service: "kubernetes-secret"; - type: TargetTypeVault4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseVaultNameSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseVaultName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseVaultNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseVaultNameUnion = - | SyncReconcileResponseVaultName - | any - | string; - -export const TargetTypeVault3 = { - Vault: "vault", -} as const; -export type TargetTypeVault3 = ClosedEnum; - -/** - * Azure Key Vault binding configuration - */ -export type SyncReconcileResponseExternalBindingsKeyVault = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - vaultName?: SyncReconcileResponseVaultName | any | string | null | undefined; - service: "key-vault"; - type: TargetTypeVault3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseVaultPrefixSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseVaultPrefix2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseVaultPrefixSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseVaultPrefixUnion2 = - | SyncReconcileResponseVaultPrefix2 - | any - | string; - -export const TargetTypeVault2 = { - Vault: "vault", -} as const; -export type TargetTypeVault2 = ClosedEnum; - -/** - * GCP Secret Manager vault binding configuration - */ -export type SyncReconcileResponseExternalBindingsSecretManager = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - vaultPrefix?: - | SyncReconcileResponseVaultPrefix2 - | any - | string - | null - | undefined; - service: "secret-manager"; - type: TargetTypeVault2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseVaultPrefixSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseVaultPrefix1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseVaultPrefixSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseVaultPrefixUnion1 = - | SyncReconcileResponseVaultPrefix1 - | any - | string; - -export const TargetTypeVault1 = { - Vault: "vault", -} as const; -export type TargetTypeVault1 = ClosedEnum; - -/** - * AWS SSM Parameter Store vault binding configuration - */ -export type SyncReconcileResponseExternalBindingsParameterStore = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - vaultPrefix?: - | SyncReconcileResponseVaultPrefix1 - | any - | string - | null - | undefined; - service: "parameter-store"; - type: TargetTypeVault1; -}; - -/** - * Represents a vault binding for secure secret management - */ -export type SyncReconcileResponseExternalBindingsUnion5 = - | SyncReconcileResponseExternalBindingsParameterStore - | SyncReconcileResponseExternalBindingsSecretManager - | SyncReconcileResponseExternalBindingsKeyVault - | SyncReconcileResponseExternalBindingsKubernetesSecret - | SyncReconcileResponseExternalBindingsLocalVault; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDataDirSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDataDir2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseDataDirSecretRef2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRegistryUrlSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseRegistryUrl = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseRegistryUrlSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRegistryUrlUnion = - | SyncReconcileResponseRegistryUrl - | any - | string; - -export const TargetTypeArtifactRegistry4 = { - ArtifactRegistry: "artifact_registry", -} as const; -export type TargetTypeArtifactRegistry4 = ClosedEnum< - typeof TargetTypeArtifactRegistry4 ->; - -/** - * Local container registry binding configuration. - * - * @remarks - * - * The local registry runs on localhost only and does not require authentication. - * Security boundary is the OS process isolation on the customer's machine. - * External image access is secured by the manager's registry proxy (deployment tokens). - */ -export type SyncReconcileResponseExternalBindingsLocal = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - dataDir?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - registryUrl?: - | SyncReconcileResponseRegistryUrl - | any - | string - | null - | undefined; - service: "local"; - type: TargetTypeArtifactRegistry4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponsePullServiceAccountEmailSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePullServiceAccountEmail = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponsePullServiceAccountEmailSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponsePushServiceAccountEmailSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePushServiceAccountEmail = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponsePushServiceAccountEmailSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRepositoryNameSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseRepositoryName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseRepositoryNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRepositoryNameUnion = - | SyncReconcileResponseRepositoryName - | any - | string; - -export const TargetTypeArtifactRegistry3 = { - ArtifactRegistry: "artifact_registry", -} as const; -export type TargetTypeArtifactRegistry3 = ClosedEnum< - typeof TargetTypeArtifactRegistry3 ->; - -/** - * Google Artifact Registry binding configuration - */ -export type SyncReconcileResponseExternalBindingsGar = { - pullServiceAccountEmail?: any | null | undefined; - pushServiceAccountEmail?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - repositoryName?: - | SyncReconcileResponseRepositoryName - | any - | string - | null - | undefined; - service: "gar"; - type: TargetTypeArtifactRegistry3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRegistryNameSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseRegistryName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseRegistryNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRegistryNameUnion = - | SyncReconcileResponseRegistryName - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRepositoryPrefixSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseRepositoryPrefix2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseRepositoryPrefixSecretRef2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseResourceGroupNameSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseResourceGroupName2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseResourceGroupNameSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseResourceGroupNameUnion2 = - | SyncReconcileResponseResourceGroupName2 - | any - | string; - -export const TargetTypeArtifactRegistry2 = { - ArtifactRegistry: "artifact_registry", -} as const; -export type TargetTypeArtifactRegistry2 = ClosedEnum< - typeof TargetTypeArtifactRegistry2 ->; - -/** - * Azure Container Registry binding configuration - */ -export type SyncReconcileResponseExternalBindingsAcr = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - registryName?: - | SyncReconcileResponseRegistryName - | any - | string - | null - | undefined; - repositoryPrefix?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - resourceGroupName?: - | SyncReconcileResponseResourceGroupName2 - | any - | string - | null - | undefined; - service: "acr"; - type: TargetTypeArtifactRegistry2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponsePullRoleArnSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePullRoleArn = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponsePullRoleArnSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponsePushRoleArnSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponsePushRoleArn = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponsePushRoleArnSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRepositoryPrefixSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseRepositoryPrefix1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseRepositoryPrefixSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRepositoryPrefixUnion = - | SyncReconcileResponseRepositoryPrefix1 - | any - | string; - -export const TargetTypeArtifactRegistry1 = { - ArtifactRegistry: "artifact_registry", -} as const; -export type TargetTypeArtifactRegistry1 = ClosedEnum< - typeof TargetTypeArtifactRegistry1 ->; - -/** - * AWS ECR (Elastic Container Registry) binding configuration - */ -export type SyncReconcileResponseExternalBindingsEcr = { - pullRoleArn?: any | null | undefined; - pushRoleArn?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - repositoryPrefix?: - | SyncReconcileResponseRepositoryPrefix1 - | any - | string - | null - | undefined; - service: "ecr"; - type: TargetTypeArtifactRegistry1; -}; - -/** - * Service-type based artifact registry binding that supports multiple registry providers - */ -export type SyncReconcileResponseExternalBindingsUnion4 = - | SyncReconcileResponseExternalBindingsEcr - | SyncReconcileResponseExternalBindingsAcr - | SyncReconcileResponseExternalBindingsGar - | SyncReconcileResponseExternalBindingsLocal; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDataDirSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDataDir1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseDataDirSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDataDirUnion1 = - | SyncReconcileResponseDataDir1 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseKeyPrefixSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseKeyPrefix2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseKeyPrefixSecretRef2; -}; - -export const TargetTypeKv5 = { - Kv: "kv", -} as const; -export type TargetTypeKv5 = ClosedEnum; - -/** - * Local development KV binding configuration - */ -export type SyncReconcileResponseExternalBindingsLocalKv = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - dataDir?: SyncReconcileResponseDataDir1 | any | string | null | undefined; - keyPrefix?: any | null | undefined; - service: "local-kv"; - type: TargetTypeKv5; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseConnectionUrlSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseConnectionUrl = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseConnectionUrlSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseConnectionUrlUnion = - | SyncReconcileResponseConnectionUrl - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDatabaseSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDatabase = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseDatabaseSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseKeyPrefixSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseKeyPrefix1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseKeyPrefixSecretRef1; -}; - -export const TargetTypeKv4 = { - Kv: "kv", -} as const; -export type TargetTypeKv4 = ClosedEnum; - -/** - * Redis KV binding configuration - */ -export type SyncReconcileResponseExternalBindingsRedis = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - connectionUrl?: - | SyncReconcileResponseConnectionUrl - | any - | string - | null - | undefined; - database?: any | null | undefined; - keyPrefix?: any | null | undefined; - service: "redis"; - type: TargetTypeKv4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseAccountNameSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseAccountName2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseAccountNameSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseAccountNameUnion2 = - | SyncReconcileResponseAccountName2 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseResourceGroupNameSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseResourceGroupName1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseResourceGroupNameSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseResourceGroupNameUnion1 = - | SyncReconcileResponseResourceGroupName1 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseTableNameSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseTableName2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseTableNameSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseTableNameUnion2 = - | SyncReconcileResponseTableName2 - | any - | string; - -export const TargetTypeKv3 = { - Kv: "kv", -} as const; -export type TargetTypeKv3 = ClosedEnum; - -/** - * Azure Table Storage KV binding configuration - */ -export type SyncReconcileResponseExternalBindingsTablestorage = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - accountName?: - | SyncReconcileResponseAccountName2 - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - resourceGroupName?: - | SyncReconcileResponseResourceGroupName1 - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - tableName?: SyncReconcileResponseTableName2 | any | string | null | undefined; - service: "tablestorage"; - type: TargetTypeKv3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseCollectionNameSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseCollectionName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseCollectionNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseCollectionNameUnion = - | SyncReconcileResponseCollectionName - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDatabaseIdSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseDatabaseId = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseDatabaseIdSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseDatabaseIdUnion = - | SyncReconcileResponseDatabaseId - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseProjectIdSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseProjectId = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseProjectIdSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseProjectIdUnion = - | SyncReconcileResponseProjectId - | any - | string; - -export const TargetTypeKv2 = { - Kv: "kv", -} as const; -export type TargetTypeKv2 = ClosedEnum; - -/** - * GCP Firestore KV binding configuration - */ -export type SyncReconcileResponseExternalBindingsFirestore = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - collectionName?: - | SyncReconcileResponseCollectionName - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - databaseId?: - | SyncReconcileResponseDatabaseId - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - projectId?: SyncReconcileResponseProjectId | any | string | null | undefined; - service: "firestore"; - type: TargetTypeKv2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseEndpointUrlSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseEndpointUrl = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseEndpointUrlSecretRef; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRegionSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseRegion = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseRegionSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseRegionUnion = - | SyncReconcileResponseRegion - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseTableNameSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseTableName1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseTableNameSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseTableNameUnion1 = - | SyncReconcileResponseTableName1 - | any - | string; - -export const TargetTypeKv1 = { - Kv: "kv", -} as const; -export type TargetTypeKv1 = ClosedEnum; - -/** - * AWS DynamoDB KV binding configuration - */ -export type SyncReconcileResponseExternalBindingsDynamodb = { - endpointUrl?: any | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - region?: SyncReconcileResponseRegion | any | string | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - tableName?: SyncReconcileResponseTableName1 | any | string | null | undefined; - service: "dynamodb"; - type: TargetTypeKv1; -}; - -/** - * Represents a KV binding for key-value storage across platforms - */ -export type SyncReconcileResponseExternalBindingsUnion3 = - | SyncReconcileResponseExternalBindingsDynamodb - | SyncReconcileResponseExternalBindingsFirestore - | SyncReconcileResponseExternalBindingsTablestorage - | SyncReconcileResponseExternalBindingsRedis - | SyncReconcileResponseExternalBindingsLocalKv; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseQueuePathSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseQueuePath = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseQueuePathSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseQueuePathUnion = - | SyncReconcileResponseQueuePath - | any - | string; - -export const TargetTypeQueue4 = { - Queue: "queue", -} as const; -export type TargetTypeQueue4 = ClosedEnum; - -/** - * Local queue parameters - */ -export type SyncReconcileResponseExternalBindingsLocalQueue = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - queuePath?: SyncReconcileResponseQueuePath | any | string | null | undefined; - service: "local-queue"; - type: TargetTypeQueue4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseNamespaceSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseNamespace1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseNamespaceSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseNamespaceUnion1 = - | SyncReconcileResponseNamespace1 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseQueueNameSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseQueueName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseQueueNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseQueueNameUnion = - | SyncReconcileResponseQueueName - | any - | string; - -export const TargetTypeQueue3 = { - Queue: "queue", -} as const; -export type TargetTypeQueue3 = ClosedEnum; - -/** - * Azure Service Bus parameters - */ -export type SyncReconcileResponseExternalBindingsServicebus = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - namespace?: SyncReconcileResponseNamespace1 | any | string | null | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - queueName?: SyncReconcileResponseQueueName | any | string | null | undefined; - service: "servicebus"; - type: TargetTypeQueue3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseSubscriptionSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseSubscription = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseSubscriptionSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseSubscriptionUnion = - | SyncReconcileResponseSubscription - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseTopicSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseTopic = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseTopicSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseTopicUnion = - | SyncReconcileResponseTopic - | any - | string; - -export const TargetTypeQueue2 = { - Queue: "queue", -} as const; -export type TargetTypeQueue2 = ClosedEnum; - -/** - * GCP Pub/Sub parameters - */ -export type SyncReconcileResponseExternalBindingsPubsub = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - subscription?: - | SyncReconcileResponseSubscription - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - topic?: SyncReconcileResponseTopic | any | string | null | undefined; - service: "pubsub"; - type: TargetTypeQueue2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseQueueUrlSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseQueueUrl = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseQueueUrlSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseQueueUrlUnion = - | SyncReconcileResponseQueueUrl - | any - | string; - -export const TargetTypeQueue1 = { - Queue: "queue", -} as const; -export type TargetTypeQueue1 = ClosedEnum; - -/** - * AWS SQS queue parameters - */ -export type SyncReconcileResponseExternalBindingsSqs = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - queueUrl?: SyncReconcileResponseQueueUrl | any | string | null | undefined; - service: "sqs"; - type: TargetTypeQueue1; -}; - -/** - * Binding parameters for Queue at runtime or in templates. - */ -export type SyncReconcileResponseExternalBindingsUnion2 = - | SyncReconcileResponseExternalBindingsSqs - | SyncReconcileResponseExternalBindingsPubsub - | SyncReconcileResponseExternalBindingsServicebus - | SyncReconcileResponseExternalBindingsLocalQueue; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseStoragePathSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseStoragePath = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseStoragePathSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseStoragePathUnion = - | SyncReconcileResponseStoragePath - | any - | string; - -export const TargetTypeStorage4 = { - Storage: "storage", -} as const; -export type TargetTypeStorage4 = ClosedEnum; - -/** - * Local filesystem storage binding configuration - */ -export type SyncReconcileResponseExternalBindingsLocalStorage = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - storagePath?: - | SyncReconcileResponseStoragePath - | any - | string - | null - | undefined; - service: "local-storage"; - type: TargetTypeStorage4; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseBucketNameSecretRef2 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseBucketName2 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseBucketNameSecretRef2; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseBucketNameUnion2 = - | SyncReconcileResponseBucketName2 - | any - | string; - -export const TargetTypeStorage3 = { - Storage: "storage", -} as const; -export type TargetTypeStorage3 = ClosedEnum; - -/** - * Google Cloud Storage binding configuration - */ -export type SyncReconcileResponseExternalBindingsGcs = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - bucketName?: - | SyncReconcileResponseBucketName2 - | any - | string - | null - | undefined; - service: "gcs"; - type: TargetTypeStorage3; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseAccountNameSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseAccountName1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseAccountNameSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseAccountNameUnion1 = - | SyncReconcileResponseAccountName1 - | any - | string; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseContainerNameSecretRef = { - key: string; - name: string; -}; - -export type SyncReconcileResponseContainerName = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseContainerNameSecretRef; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseContainerNameUnion = - | SyncReconcileResponseContainerName - | any - | string; - -export const TargetTypeStorage2 = { - Storage: "storage", -} as const; -export type TargetTypeStorage2 = ClosedEnum; - -/** - * Azure Blob Storage binding configuration - */ -export type SyncReconcileResponseExternalBindingsBlob = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - accountName?: - | SyncReconcileResponseAccountName1 - | any - | string - | null - | undefined; - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - containerName?: - | SyncReconcileResponseContainerName - | any - | string - | null - | undefined; - service: "blob"; - type: TargetTypeStorage2; -}; - -/** - * Reference to a Kubernetes Secret - */ -export type SyncReconcileResponseBucketNameSecretRef1 = { - key: string; - name: string; -}; - -export type SyncReconcileResponseBucketName1 = { - /** - * Reference to a Kubernetes Secret - */ - secretRef: SyncReconcileResponseBucketNameSecretRef1; -}; - -/** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ -export type SyncReconcileResponseBucketNameUnion1 = - | SyncReconcileResponseBucketName1 - | any - | string; - -export const TargetTypeStorage1 = { - Storage: "storage", -} as const; -export type TargetTypeStorage1 = ClosedEnum; - -/** - * AWS S3 storage binding configuration - */ -export type SyncReconcileResponseExternalBindingsS3 = { - /** - * Represents a value that can be either a concrete value, a template expression, - * - * @remarks - * or a reference to a Kubernetes Secret - */ - bucketName?: - | SyncReconcileResponseBucketName1 - | any - | string - | null - | undefined; - service: "s3"; - type: TargetTypeStorage1; -}; - -/** - * Service-type based storage binding that supports multiple storage providers - */ -export type SyncReconcileResponseExternalBindingsUnion1 = - | SyncReconcileResponseExternalBindingsS3 - | SyncReconcileResponseExternalBindingsBlob - | SyncReconcileResponseExternalBindingsGcs - | SyncReconcileResponseExternalBindingsLocalStorage; - -/** - * Represents a binding to pre-existing infrastructure. - * - * @remarks - * - * The binding type must match the resource type it's applied to. - * Validated at runtime by the executor. - */ -export type SyncReconcileResponseExternalBindingsUnion6 = - | SyncReconcileResponseExternalBindingsContainerAppsEnvironment - | SyncReconcileResponseExternalBindingsS3 - | SyncReconcileResponseExternalBindingsBlob - | SyncReconcileResponseExternalBindingsGcs - | SyncReconcileResponseExternalBindingsLocalStorage - | SyncReconcileResponseExternalBindingsSqs - | SyncReconcileResponseExternalBindingsPubsub - | SyncReconcileResponseExternalBindingsServicebus - | SyncReconcileResponseExternalBindingsLocalQueue - | SyncReconcileResponseExternalBindingsDynamodb - | SyncReconcileResponseExternalBindingsFirestore - | SyncReconcileResponseExternalBindingsTablestorage - | SyncReconcileResponseExternalBindingsRedis - | SyncReconcileResponseExternalBindingsLocalKv - | SyncReconcileResponseExternalBindingsEcr - | SyncReconcileResponseExternalBindingsAcr - | SyncReconcileResponseExternalBindingsGar - | SyncReconcileResponseExternalBindingsLocal - | SyncReconcileResponseExternalBindingsParameterStore - | SyncReconcileResponseExternalBindingsSecretManager - | SyncReconcileResponseExternalBindingsKeyVault - | SyncReconcileResponseExternalBindingsKubernetesSecret - | SyncReconcileResponseExternalBindingsLocalVault; - -export const TargetPlatformKubernetes = { - Kubernetes: "kubernetes", -} as const; -export type TargetPlatformKubernetes = ClosedEnum< - typeof TargetPlatformKubernetes ->; - -export type SyncReconcileResponseManagementConfigKubernetes = { - platform: TargetPlatformKubernetes; -}; - -export const TargetPlatformAzure = { - Azure: "azure", -} as const; -export type TargetPlatformAzure = ClosedEnum; - -/** - * Azure management configuration extracted from stack settings - */ -export type SyncReconcileResponseManagementConfigAzure = { - /** - * The managing Azure Tenant ID for cross-tenant access - */ - managingTenantId: string; - /** - * OIDC issuer URL trusted by the target-side managed identity. - */ - oidcIssuer: string; - /** - * OIDC subject claim trusted by the target-side managed identity. - */ - oidcSubject: string; - platform: TargetPlatformAzure; -}; - -export const TargetPlatformGcp = { - Gcp: "gcp", -} as const; -export type TargetPlatformGcp = ClosedEnum; - -/** - * GCP management configuration extracted from stack settings - */ -export type SyncReconcileResponseManagementConfigGcp = { - /** - * Service account email for management roles - */ - serviceAccountEmail: string; - platform: TargetPlatformGcp; -}; - -export const TargetPlatformAws = { - Aws: "aws", -} as const; -export type TargetPlatformAws = ClosedEnum; - -/** - * AWS management configuration extracted from stack settings - */ -export type SyncReconcileResponseManagementConfigAws = { - /** - * The managing AWS IAM role ARN that can assume cross-account roles - */ - managingRoleArn: string; - platform: TargetPlatformAws; -}; - -export type SyncReconcileResponseManagementConfigUnion = - | SyncReconcileResponseManagementConfigAzure - | SyncReconcileResponseManagementConfigAws - | SyncReconcileResponseManagementConfigGcp - | SyncReconcileResponseManagementConfigKubernetes - | any; - -/** - * OTLP log export configuration for a deployment. - * - * @remarks - * - * When set, injected compute runtimes export captured application logs - * through the given endpoint via OTLP/HTTP; which resources are injected - * is platform-dependent. Workers and daemons read auth headers from a - * runtime-only secret — never from application environment variables. - * Containers have no runtime wrapper, so they get the endpoint and auth - * header as plain OTEL env vars for the application's own exporter. - */ -export type SyncReconcileResponseMonitoring = { - /** - * Auth header value in "key=value,..." format. - * - * @remarks - * Example: "authorization=Bearer " - */ - logsAuthHeader: string; - /** - * Full OTLP logs endpoint URL. - * - * @remarks - * Example: "https:///v1/logs" - */ - logsEndpoint: string; - /** - * Auth header value for the metrics endpoint in "key=value,..." format (optional). - * - * @remarks - * - * When absent, `logs_auth_header` is reused for metrics -- suitable when the same - * credential covers both signals. When present (e.g. Axiom with separate datasets), - * this value is used exclusively for metrics. - * - * Example: "authorization=Bearer ,x-axiom-dataset=" - */ - metricsAuthHeader?: string | null | undefined; - /** - * Full OTLP metrics endpoint URL (optional). - * - * @remarks - * When set, the worker runtime exports its own VM/container orchestration metrics here. - * Example: "https://api.axiom.co/v1/metrics" - */ - metricsEndpoint?: string | null | undefined; - /** - * Resource attributes attached to every OTLP signal emitted for this deployment. - * - * @remarks - * - * Platform managers use this for stable identity such as `alien.workspace_id`, - * `alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`. - * Runtime-specific resource attributes such as `service.name` remain owned by - * the runtime/exporter. - */ - resourceAttributes?: { [k: string]: string } | undefined; -}; - -export type SyncReconcileResponseMonitoringUnion = - | SyncReconcileResponseMonitoring - | any; - -export type SyncReconcileResponsePoolsAutoscale = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Maximum machine count. - */ - max: number; - /** - * Minimum machine count. - */ - min: number; - mode: "autoscale"; -}; - -export type SyncReconcileResponsePoolsFixed = { - /** - * Provider machine type selected for this deployment. - */ - machine?: string | null | undefined; - /** - * Number of machines to run. - */ - machines: number; - mode: "fixed"; -}; - -/** - * User-selected deployment settings for one compute pool. - */ -export type SyncReconcileResponsePoolsUnion = - | SyncReconcileResponsePoolsFixed - | SyncReconcileResponsePoolsAutoscale; - -/** - * Deployment-time compute choices for Alien-managed compute pools. - * - * @remarks - * - * Application source declares portable pool requirements. This settings - * object stores the concrete choices made for one deployment, such as the - * provider machine type and selected machine counts. - */ -export type SyncReconcileResponseCompute = { - /** - * Selected compute choices keyed by pool ID. - */ - pools?: { - [k: string]: - | SyncReconcileResponsePoolsFixed - | SyncReconcileResponsePoolsAutoscale; - } | undefined; -}; - -export type SyncReconcileResponseComputeUnion = - | SyncReconcileResponseCompute - | any; - -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export const SyncReconcileResponseDeploymentModel = { - Push: "push", - Pull: "pull", -} as const; -/** - * Deployment model: how updates are delivered to the remote environment. - */ -export type SyncReconcileResponseDeploymentModel = ClosedEnum< - typeof SyncReconcileResponseDeploymentModel ->; - -export type SyncReconcileResponseAwsStackSettings = { - certificateArn: string; -}; - -export type SyncReconcileResponseStackSettingsAwsUnion = - | SyncReconcileResponseAwsStackSettings - | any; - -export type AzureTargetStackSettings = { - keyVaultCertificateId: string; - keyVaultResourceId?: string | null | undefined; -}; - -export type TargetStackSettingsAzureUnion = AzureTargetStackSettings | any; - -export type GcpTargetStackSettings = { - certificateName: string; -}; - -export type TargetStackSettingsGcpUnion = GcpTargetStackSettings | any; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type SyncReconcileResponseTlsSecretRef = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; -}; - -export type SyncReconcileResponseDomainsKubernetes = { - /** - * Namespace-scoped Kubernetes TLS Secret reference. - */ - tlsSecretRef: SyncReconcileResponseTlsSecretRef; -}; - -export type SyncReconcileResponseDomainsKubernetesUnion = - | SyncReconcileResponseDomainsKubernetes - | any; - -/** - * Platform-specific certificate references for custom domains. - */ -export type SyncReconcileResponseDomainsCertificate = { - aws?: SyncReconcileResponseAwsStackSettings | any | null | undefined; - azure?: AzureTargetStackSettings | any | null | undefined; - gcp?: GcpTargetStackSettings | any | null | undefined; - kubernetes?: SyncReconcileResponseDomainsKubernetes | any | null | undefined; -}; - -/** - * Custom domain configuration for a single resource. - */ -export type SyncReconcileResponseCustomDomains = { - /** - * Platform-specific certificate references for custom domains. - */ - certificate: SyncReconcileResponseDomainsCertificate; - /** - * Fully qualified domain name to use. - */ - domain: string; -}; - -/** - * Domain configuration for the stack. - * - * @remarks - * - * When `custom_domains` is set, the specified resources use customer-provided - * domains and certificates. Otherwise, Alien auto-generates domains. - */ -export type SyncReconcileResponseDomains = { - /** - * Custom domain configuration per resource ID. - */ - customDomains?: - | { [k: string]: SyncReconcileResponseCustomDomains } - | null - | undefined; -}; - -export type SyncReconcileResponseDomainsUnion = - | SyncReconcileResponseDomains - | any; - -/** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ -export type SyncReconcileResponseStackSettingsExternalBindings = {}; - -/** - * How heartbeat health checks are handled. - */ -export const SyncReconcileResponseHeartbeats = { - Off: "off", - On: "on", -} as const; -/** - * How heartbeat health checks are handled. - */ -export type SyncReconcileResponseHeartbeats = ClosedEnum< - typeof SyncReconcileResponseHeartbeats ->; - -/** - * Optional provider-specific identity for a cloud-backed Kubernetes cluster. - */ -export type SyncReconcileResponseCloud = { - accountId?: string | null | undefined; - clusterId?: string | null | undefined; - clusterName?: string | null | undefined; - projectId?: string | null | undefined; - region?: string | null | undefined; - resourceGroup?: string | null | undefined; - subscriptionId?: string | null | undefined; -}; - -export type SyncReconcileResponseCloudUnion = SyncReconcileResponseCloud | any; - -/** - * Ownership model for the Kubernetes cluster. - */ -export const SyncReconcileResponseOwnership = { - Managed: "managed", - Existing: "existing", - External: "external", -} as const; -/** - * Ownership model for the Kubernetes cluster. - */ -export type SyncReconcileResponseOwnership = ClosedEnum< - typeof SyncReconcileResponseOwnership ->; - -/** - * Kubernetes cluster setup settings. - */ -export type SyncReconcileResponseCluster = { - cloud?: SyncReconcileResponseCloud | any | null | undefined; - /** - * Namespace where the Alien chart and application resources run. - */ - namespace?: string | null | undefined; - /** - * Ownership model for the Kubernetes cluster. - */ - ownership: SyncReconcileResponseOwnership; -}; - -export type SyncReconcileResponseClusterUnion = - | SyncReconcileResponseCluster - | any; - -export type SyncReconcileResponseCertificateNone2 = { - mode: "none"; -}; - -export type SyncReconcileResponseCertificateManagedTLSSecret2 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; -}; - -export type SyncReconcileResponseCertificateAwsAcmArn2 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; -}; - -export type SyncReconcileResponseCertificateManagedAcmImport2 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; - /** - * Tags applied to runtime-imported ACM certificates. - */ - tags?: { [k: string]: string } | undefined; -}; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type SyncReconcileResponseCertificateTLSSecretRef2 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; - mode: "tlsSecretRef"; -}; - -/** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ -export type SyncReconcileResponseCertificateUnion2 = - | SyncReconcileResponseCertificateTLSSecretRef2 - | SyncReconcileResponseCertificateManagedAcmImport2 - | SyncReconcileResponseCertificateAwsAcmArn2 - | SyncReconcileResponseCertificateManagedTLSSecret2 - | SyncReconcileResponseCertificateNone2; - -export const SyncReconcileResponseModeCustom = { - Custom: "custom", -} as const; -export type SyncReconcileResponseModeCustom = ClosedEnum< - typeof SyncReconcileResponseModeCustom ->; - -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 = - ClosedEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 - >; - -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4; - }; - -export const SyncReconcileResponseProviderGkeGatewayEnum4 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncReconcileResponseProviderGkeGatewayEnum4 = ClosedEnum< - typeof SyncReconcileResponseProviderGkeGatewayEnum4 ->; - -export type SyncReconcileResponseProviderGkeGateway4 = { - provider: SyncReconcileResponseProviderGkeGatewayEnum4; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const SyncReconcileResponseProviderAwsAlbEnum4 = { - AwsAlb: "awsAlb", -} as const; -export type SyncReconcileResponseProviderAwsAlbEnum4 = ClosedEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum4 ->; - -export type SyncReconcileResponseProviderAwsAlb4 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncReconcileResponseProviderAwsAlbEnum4; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type SyncReconcileResponseProviderUnion4 = - | SyncReconcileResponseProviderAwsAlb4 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 - | SyncReconcileResponseProviderGkeGateway4 - | any; - -/** - * Shared Gateway API route profile values. - */ -export type SyncReconcileResponseRouteGateway2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - /** - * Listener port, usually 443. - */ - listenerPort: number; - provider?: - | SyncReconcileResponseProviderAwsAlb4 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 - | SyncReconcileResponseProviderGkeGateway4 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 = - ClosedEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 - >; - -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3; - }; - -export const SyncReconcileResponseProviderGkeGatewayEnum3 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncReconcileResponseProviderGkeGatewayEnum3 = ClosedEnum< - typeof SyncReconcileResponseProviderGkeGatewayEnum3 ->; - -export type SyncReconcileResponseProviderGkeGateway3 = { - provider: SyncReconcileResponseProviderGkeGatewayEnum3; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const SyncReconcileResponseProviderAwsAlbEnum3 = { - AwsAlb: "awsAlb", -} as const; -export type SyncReconcileResponseProviderAwsAlbEnum3 = ClosedEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum3 ->; - -export type SyncReconcileResponseProviderAwsAlb3 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncReconcileResponseProviderAwsAlbEnum3; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type SyncReconcileResponseProviderUnion3 = - | SyncReconcileResponseProviderAwsAlb3 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 - | SyncReconcileResponseProviderGkeGateway3 - | any; - -/** - * Shared Ingress route profile values. - */ -export type SyncReconcileResponseRouteIngress2 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - provider?: - | SyncReconcileResponseProviderAwsAlb3 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers3 - | SyncReconcileResponseProviderGkeGateway3 - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** - * Kubernetes route API selected for public endpoints. - */ -export type SyncReconcileResponseRouteUnion2 = - | SyncReconcileResponseRouteIngress2 - | SyncReconcileResponseRouteGateway2; - -export type SyncReconcileResponseExposureCustom = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | SyncReconcileResponseCertificateTLSSecretRef2 - | SyncReconcileResponseCertificateManagedAcmImport2 - | SyncReconcileResponseCertificateAwsAcmArn2 - | SyncReconcileResponseCertificateManagedTLSSecret2 - | SyncReconcileResponseCertificateNone2; - /** - * Hostname routed by the Kubernetes public endpoint. - */ - domain: string; - mode: SyncReconcileResponseModeCustom; - /** - * Kubernetes route API selected for public endpoints. - */ - route: - | SyncReconcileResponseRouteIngress2 - | SyncReconcileResponseRouteGateway2; -}; - -export type SyncReconcileResponseCertificateNone1 = { - mode: "none"; -}; - -export type SyncReconcileResponseCertificateManagedTLSSecret1 = { - mode: "managedTlsSecret"; - /** - * Secret name template. Runtime may substitute resource/deployment tokens. - */ - secretNameTemplate: string; -}; - -export type SyncReconcileResponseCertificateAwsAcmArn1 = { - /** - * Existing ACM certificate ARN. - */ - certificateArn: string; - mode: "awsAcmArn"; -}; - -export type SyncReconcileResponseCertificateManagedAcmImport1 = { - mode: "managedAcmImport"; - /** - * ACM region. Defaults to the deployment region when omitted. - */ - region?: string | null | undefined; - /** - * Tags applied to runtime-imported ACM certificates. - */ - tags?: { [k: string]: string } | undefined; -}; - -/** - * Namespace-scoped Kubernetes TLS Secret reference. - */ -export type SyncReconcileResponseCertificateTLSSecretRef1 = { - /** - * Secret namespace. Defaults to the release namespace when omitted. - */ - namespace?: string | null | undefined; - /** - * Secret name. - */ - secretName: string; - mode: "tlsSecretRef"; -}; - -/** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ -export type SyncReconcileResponseCertificateUnion1 = - | SyncReconcileResponseCertificateTLSSecretRef1 - | SyncReconcileResponseCertificateManagedAcmImport1 - | SyncReconcileResponseCertificateAwsAcmArn1 - | SyncReconcileResponseCertificateManagedTLSSecret1 - | SyncReconcileResponseCertificateNone1; - -export const SyncReconcileResponseModeGenerated = { - Generated: "generated", -} as const; -export type SyncReconcileResponseModeGenerated = ClosedEnum< - typeof SyncReconcileResponseModeGenerated ->; - -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 = - ClosedEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 - >; - -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2; - }; - -export const SyncReconcileResponseProviderGkeGatewayEnum2 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncReconcileResponseProviderGkeGatewayEnum2 = ClosedEnum< - typeof SyncReconcileResponseProviderGkeGatewayEnum2 ->; - -export type SyncReconcileResponseProviderGkeGateway2 = { - provider: SyncReconcileResponseProviderGkeGatewayEnum2; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const SyncReconcileResponseProviderAwsAlbEnum2 = { - AwsAlb: "awsAlb", -} as const; -export type SyncReconcileResponseProviderAwsAlbEnum2 = ClosedEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum2 ->; - -export type SyncReconcileResponseProviderAwsAlb2 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncReconcileResponseProviderAwsAlbEnum2; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type SyncReconcileResponseProviderUnion2 = - | SyncReconcileResponseProviderAwsAlb2 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 - | SyncReconcileResponseProviderGkeGateway2 - | any; - -/** - * Shared Gateway API route profile values. - */ -export type SyncReconcileResponseRouteGateway1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example a cloud Gateway controller. - */ - controller?: string | null | undefined; - /** - * GatewayClass selected for generated Gateways. - */ - gatewayClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - /** - * Listener port, usually 443. - */ - listenerPort: number; - provider?: - | SyncReconcileResponseProviderAwsAlb2 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers2 - | SyncReconcileResponseProviderGkeGateway2 - | any - | null - | undefined; - routeApi: "gateway"; -}; - -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 = - { - AzureApplicationGatewayForContainers: - "azureApplicationGatewayForContainers", - } as const; -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 = - ClosedEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 - >; - -export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 = - { - /** - * Optional ALB name when using BYO Application Gateway resources. - */ - albName?: string | null | undefined; - /** - * Optional ALB namespace when using BYO Application Gateway resources. - */ - albNamespace?: string | null | undefined; - /** - * Public or internal frontend exposure. - */ - frontend: string; - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1; - }; - -export const SyncReconcileResponseProviderGkeGatewayEnum1 = { - GkeGateway: "gkeGateway", -} as const; -export type SyncReconcileResponseProviderGkeGatewayEnum1 = ClosedEnum< - typeof SyncReconcileResponseProviderGkeGatewayEnum1 ->; - -export type SyncReconcileResponseProviderGkeGateway1 = { - provider: SyncReconcileResponseProviderGkeGatewayEnum1; - /** - * Optional static address name for the Gateway frontend. - */ - staticAddressName?: string | null | undefined; -}; - -export const SyncReconcileResponseProviderAwsAlbEnum1 = { - AwsAlb: "awsAlb", -} as const; -export type SyncReconcileResponseProviderAwsAlbEnum1 = ClosedEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum1 ->; - -export type SyncReconcileResponseProviderAwsAlb1 = { - /** - * Optional ALB IP address type, such as `dualstack`. - */ - ipAddressType?: string | null | undefined; - provider: SyncReconcileResponseProviderAwsAlbEnum1; - /** - * Internet-facing or internal ALB scheme. - */ - scheme: string; - /** - * Explicit subnet IDs when the profile cannot rely on controller discovery. - */ - subnetIds?: Array | undefined; - /** - * ALB target type, usually `ip`. - */ - targetType: string; -}; - -export type SyncReconcileResponseProviderUnion1 = - | SyncReconcileResponseProviderAwsAlb1 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 - | SyncReconcileResponseProviderGkeGateway1 - | any; - -/** - * Shared Ingress route profile values. - */ -export type SyncReconcileResponseRouteIngress1 = { - /** - * Annotations applied to route objects. - */ - annotations?: { [k: string]: string } | undefined; - /** - * Route controller identifier, for example `eks.amazonaws.com/alb`. - */ - controller?: string | null | undefined; - /** - * `spec.ingressClassName` for generated Ingresses. - */ - ingressClassName: string; - /** - * Labels applied to route objects. - */ - labels?: { [k: string]: string } | undefined; - provider?: - | SyncReconcileResponseProviderAwsAlb1 - | SyncReconcileResponseProviderAzureApplicationGatewayForContainers1 - | SyncReconcileResponseProviderGkeGateway1 - | any - | null - | undefined; - routeApi: "ingress"; -}; - -/** - * Kubernetes route API selected for public endpoints. - */ -export type SyncReconcileResponseRouteUnion1 = - | SyncReconcileResponseRouteIngress1 - | SyncReconcileResponseRouteGateway1; - -export type SyncReconcileResponseExposureGenerated = { - /** - * Certificate publication or reference mode for Kubernetes public endpoints. - */ - certificate: - | SyncReconcileResponseCertificateTLSSecretRef1 - | SyncReconcileResponseCertificateManagedAcmImport1 - | SyncReconcileResponseCertificateAwsAcmArn1 - | SyncReconcileResponseCertificateManagedTLSSecret1 - | SyncReconcileResponseCertificateNone1; - mode: SyncReconcileResponseModeGenerated; - /** - * Kubernetes route API selected for public endpoints. - */ - route: - | SyncReconcileResponseRouteIngress1 - | SyncReconcileResponseRouteGateway1; -}; - -export const SyncReconcileResponseModeDisabled = { - Disabled: "disabled", -} as const; -export type SyncReconcileResponseModeDisabled = ClosedEnum< - typeof SyncReconcileResponseModeDisabled ->; - -export type SyncReconcileResponseExposureDisabled = { - mode: SyncReconcileResponseModeDisabled; -}; - -export type SyncReconcileResponseExposureUnion = - | SyncReconcileResponseExposureCustom - | SyncReconcileResponseExposureGenerated - | SyncReconcileResponseExposureDisabled - | any; - -/** - * Kubernetes runtime substrate configuration. - * - * @remarks - * - * This controls how setup chooses the cluster backing `Platform::Kubernetes` - * deployments. When omitted, cloud-backed Kubernetes deployments default to a - * managed cluster and generic/on-prem Kubernetes defaults to an external - * cluster. - */ -export type SyncReconcileResponseKubernetes = { - cluster?: SyncReconcileResponseCluster | any | null | undefined; - exposure?: - | SyncReconcileResponseExposureCustom - | SyncReconcileResponseExposureGenerated - | SyncReconcileResponseExposureDisabled - | any - | null - | undefined; -}; - -export type SyncReconcileResponseKubernetesUnion = - | SyncReconcileResponseKubernetes - | any; - -export const TargetTypeByoVnetAzure = { - ByoVnetAzure: "byo-vnet-azure", -} as const; -export type TargetTypeByoVnetAzure = ClosedEnum; - -export type SyncReconcileResponseNetworkByoVnetAzure = { - /** - * Name of the dedicated classic Application Gateway subnet within the VNet. - */ - applicationGatewaySubnetName?: string | null | undefined; - /** - * Name of the private subnet within the VNet - */ - privateSubnetName: string; - /** - * Name of the public subnet within the VNet - */ - publicSubnetName: string; - type: TargetTypeByoVnetAzure; - /** - * The full resource ID of the existing VNet - */ - vnetResourceId: string; -}; - -export const TargetTypeByoVpcGcp = { - ByoVpcGcp: "byo-vpc-gcp", -} as const; -export type TargetTypeByoVpcGcp = ClosedEnum; - -export type SyncReconcileResponseNetworkByoVpcGcp = { - /** - * The name of the existing VPC network - */ - networkName: string; - /** - * The region of the subnet - */ - region: string; - /** - * The name of the subnet to use - */ - subnetName: string; - type: TargetTypeByoVpcGcp; -}; - -export const TargetTypeByoVpcAws = { - ByoVpcAws: "byo-vpc-aws", -} as const; -export type TargetTypeByoVpcAws = ClosedEnum; - -export type SyncReconcileResponseNetworkByoVpcAws = { - /** - * IDs of private subnets - */ - privateSubnetIds: Array; - /** - * IDs of public subnets (required for public ingress) - */ - publicSubnetIds: Array; - /** - * Optional security group IDs to use - */ - securityGroupIds?: Array | undefined; - type: TargetTypeByoVpcAws; - /** - * The ID of the existing VPC - */ - vpcId: string; -}; - -export const TargetTypeCreate = { - Create: "create", -} as const; -export type TargetTypeCreate = ClosedEnum; - -export type SyncReconcileResponseNetworkCreate = { - /** - * Number of availability zones (default: 2). - */ - availabilityZones?: number | undefined; - /** - * VPC/VNet CIDR block. If not specified, auto-generated from stack ID - * - * @remarks - * to reduce conflicts (e.g., "10.{hash}.0.0/16"). - */ - cidr?: string | null | undefined; - type: TargetTypeCreate; -}; - -export const TargetTypeUseDefault = { - UseDefault: "use-default", -} as const; -export type TargetTypeUseDefault = ClosedEnum; - -export type SyncReconcileResponseNetworkUseDefault = { - type: TargetTypeUseDefault; -}; - -export type SyncReconcileResponseNetworkUnion = - | SyncReconcileResponseNetworkByoVpcAws - | SyncReconcileResponseNetworkByoVpcGcp - | SyncReconcileResponseNetworkByoVnetAzure - | SyncReconcileResponseNetworkUseDefault - | SyncReconcileResponseNetworkCreate - | any; - -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export const SyncReconcileResponseTelemetry = { - Off: "off", - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How telemetry (logs, metrics, traces) is handled. - */ -export type SyncReconcileResponseTelemetry = ClosedEnum< - typeof SyncReconcileResponseTelemetry ->; - -/** - * How updates are delivered to the deployment. - */ -export const SyncReconcileResponseUpdates = { - Auto: "auto", - ApprovalRequired: "approval-required", -} as const; -/** - * How updates are delivered to the deployment. - */ -export type SyncReconcileResponseUpdates = ClosedEnum< - typeof SyncReconcileResponseUpdates ->; - -/** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ -export type SyncReconcileResponseStackSettings = { - compute?: SyncReconcileResponseCompute | any | null | undefined; - /** - * Deployment model: how updates are delivered to the remote environment. - */ - deploymentModel?: SyncReconcileResponseDeploymentModel | undefined; - domains?: SyncReconcileResponseDomains | any | null | undefined; - /** - * External bindings for pre-existing infrastructure. - * - * @remarks - * Allows using existing resources (MinIO, Redis, shared Container Apps - * Environment, etc.) instead of having Alien provision them. - * Required for Kubernetes platform, optional for cloud platforms. - */ - externalBindings?: - | SyncReconcileResponseStackSettingsExternalBindings - | null - | undefined; - /** - * How heartbeat health checks are handled. - */ - heartbeats?: SyncReconcileResponseHeartbeats | undefined; - kubernetes?: SyncReconcileResponseKubernetes | any | null | undefined; - network?: - | SyncReconcileResponseNetworkByoVpcAws - | SyncReconcileResponseNetworkByoVpcGcp - | SyncReconcileResponseNetworkByoVnetAzure - | SyncReconcileResponseNetworkUseDefault - | SyncReconcileResponseNetworkCreate - | any - | null - | undefined; - /** - * How telemetry (logs, metrics, traces) is handled. - */ - telemetry?: SyncReconcileResponseTelemetry | undefined; - /** - * How updates are delivered to the deployment. - */ - updates?: SyncReconcileResponseUpdates | undefined; -}; - -/** - * Deployment configuration - * - * @remarks - * - * Configuration for how to perform the deployment. - * Note: Credentials (ClientConfig) are passed separately to step() function. - */ -export type TargetConfig = { - /** - * Allow frozen resource changes during updates - * - * @remarks - * When true, skips the frozen resources compatibility check. - * This requires running with elevated cloud credentials. - */ - allowFrozenChanges?: boolean | undefined; - basePlatform?: SyncReconcileResponseBasePlatformEnum | any | null | undefined; - computeBackend?: - | SyncReconcileResponseComputeBackendHorizon - | any - | null - | undefined; - /** - * Human-readable deployment name for cloud console metadata. - * - * @remarks - * - * This is separate from the physical resource prefix in StackState. It is - * used only for display text such as IAM role descriptions, service - * account descriptions, and custom role titles. - */ - deploymentName?: string | null | undefined; - /** - * Deployment token for pull authentication with the manager's registry. - * - * @remarks - * - * Used by controllers to configure registry credentials so cloud platforms - * and K8s can pull images from the manager's `/v2/` endpoint. - */ - deploymentToken?: string | null | undefined; - domainMetadata?: SyncReconcileResponseDomainMetadata | any | null | undefined; - /** - * Snapshot of environment variables at a point in time - */ - environmentVariables: SyncReconcileResponseEnvironmentVariables; - /** - * Map from resource ID to external binding. - * - * @remarks - * - * Validated at runtime: binding type must match resource type. - */ - externalBindings?: { - [k: string]: - | SyncReconcileResponseExternalBindingsContainerAppsEnvironment - | SyncReconcileResponseExternalBindingsS3 - | SyncReconcileResponseExternalBindingsBlob - | SyncReconcileResponseExternalBindingsGcs - | SyncReconcileResponseExternalBindingsLocalStorage - | SyncReconcileResponseExternalBindingsSqs - | SyncReconcileResponseExternalBindingsPubsub - | SyncReconcileResponseExternalBindingsServicebus - | SyncReconcileResponseExternalBindingsLocalQueue - | SyncReconcileResponseExternalBindingsDynamodb - | SyncReconcileResponseExternalBindingsFirestore - | SyncReconcileResponseExternalBindingsTablestorage - | SyncReconcileResponseExternalBindingsRedis - | SyncReconcileResponseExternalBindingsLocalKv - | SyncReconcileResponseExternalBindingsEcr - | SyncReconcileResponseExternalBindingsAcr - | SyncReconcileResponseExternalBindingsGar - | SyncReconcileResponseExternalBindingsLocal - | SyncReconcileResponseExternalBindingsParameterStore - | SyncReconcileResponseExternalBindingsSecretManager - | SyncReconcileResponseExternalBindingsKeyVault - | SyncReconcileResponseExternalBindingsKubernetesSecret - | SyncReconcileResponseExternalBindingsLocalVault; - } | undefined; - managementConfig?: - | SyncReconcileResponseManagementConfigAzure - | SyncReconcileResponseManagementConfigAws - | SyncReconcileResponseManagementConfigGcp - | SyncReconcileResponseManagementConfigKubernetes - | any - | null - | undefined; - /** - * Manager base URL (e.g., "https://manager.alien.dev"). - * - * @remarks - * - * The manager IS the container registry — its `/v2/` endpoint serves as - * the OCI Distribution API. Controllers derive the proxy host from this - * to configure pull auth (RegistryCredentials, imagePullSecrets). - * - * When None (e.g., `alien dev`), controllers use image URIs as-is. - */ - managerUrl?: string | null | undefined; - monitoring?: SyncReconcileResponseMonitoring | any | null | undefined; - /** - * Native image registry host+prefix for platforms that require it. - * - * @remarks - * - * Lambda (ECR) and Cloud Run (GAR) require native registry URIs. Other - * runtimes, including Azure Container Apps, pull through the manager's - * registry proxy. - * - * Derived by the manager from the artifact registry binding: - * - ECR: `{account_id}.dkr.ecr.{region}.amazonaws.com/{repository_prefix}` - * - GAR: `{region}-docker.pkg.dev/{project_id}/{repository_name}` - */ - nativeImageHost?: string | null | undefined; - /** - * Public endpoint URLs for exposed resources (optional override). - * - * @remarks - * - * Use this only when a caller already knows the public URL. Managed public - * endpoint flows should prefer `domain_metadata` plus controller-reported - * load balancer outputs so DNS, certificate renewal, and route readiness - * stay tied to the resource state. - * - * If not set, platforms determine public endpoint URLs from other sources: - * - Managed DNS/TLS flows: `domain_metadata` FQDN or load balancer DNS - * - Local: `http://localhost:{allocated_port}` - * - Custom or disabled exposure: no public endpoint URL unless a controller reports one - * - * Outer key: resource ID. Inner key: endpoint name. Value: public URL. - */ - publicEndpoints?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * User-customizable deployment settings specified at deploy time. - * - * @remarks - * - * These settings are provided by the customer via CloudFormation parameters, - * Terraform attributes, CLI flags, or Helm values. They customize how the - * deployment runs and what capabilities are enabled. - * - * **Key distinction**: StackSettings is user-customizable, while ManagementConfig - * is platform-derived (from the Manager's ServiceAccount). - */ - stackSettings?: SyncReconcileResponseStackSettings | undefined; -}; - -export const ReleaseInfoTypeStringList = { - StringList: "stringList", -} as const; -export type ReleaseInfoTypeStringList = ClosedEnum< - typeof ReleaseInfoTypeStringList ->; - -export type DefaultReleaseInfoStringList = { - type: ReleaseInfoTypeStringList; - /** - * String list default. - */ - value: Array; -}; - -export const ReleaseInfoTypeBoolean = { - Boolean: "boolean", -} as const; -export type ReleaseInfoTypeBoolean = ClosedEnum; - -export type DefaultReleaseInfoBoolean = { - type: ReleaseInfoTypeBoolean; - /** - * Boolean default. - */ - value: boolean; -}; - -export const ReleaseInfoTypeNumber = { - Number: "number", -} as const; -export type ReleaseInfoTypeNumber = ClosedEnum; - -export type DefaultReleaseInfoNumber = { - type: ReleaseInfoTypeNumber; - /** - * Number default. - */ - value: string; -}; - -export const ReleaseInfoTypeString = { - String: "string", -} as const; -export type ReleaseInfoTypeString = ClosedEnum; - -export type DefaultReleaseInfoString = { - type: ReleaseInfoTypeString; - /** - * String default. - */ - value: string; -}; - -export type ReleaseInfoDefaultUnion = - | DefaultReleaseInfoString - | DefaultReleaseInfoNumber - | DefaultReleaseInfoBoolean - | DefaultReleaseInfoStringList - | any; - -/** - * Environment variable handling for a stack input mapping. - */ -export const TypeReleaseInfoEnvEnum = { - Plain: "plain", - Secret: "secret", -} as const; -/** - * Environment variable handling for a stack input mapping. - */ -export type TypeReleaseInfoEnvEnum = ClosedEnum; - -export type ReleaseInfoTypeUnion = TypeReleaseInfoEnvEnum | any; - -/** - * How a resolved stack input is injected into runtime environment variables. - */ -export type ReleaseInfoEnv = { - /** - * Environment variable name. - */ - name: string; - /** - * Target resource IDs or patterns. None means every env-capable resource. - */ - targetResources?: Array | null | undefined; - type?: TypeReleaseInfoEnvEnum | any | null | undefined; -}; - -/** - * Primitive stack input kind. - */ -export const ReleaseInfoKind = { - String: "string", - Secret: "secret", - Number: "number", - Integer: "integer", - Boolean: "boolean", - Enum: "enum", - StringList: "stringList", -} as const; -/** - * Primitive stack input kind. - */ -export type ReleaseInfoKind = ClosedEnum; - -/** - * Represents the target cloud platform. - */ -export const ReleaseInfoPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type ReleaseInfoPlatform = ClosedEnum; - -/** - * Who can provide a stack input value. - */ -export const ReleaseInfoProvidedBy = { - Developer: "developer", - Deployer: "deployer", -} as const; -/** - * Who can provide a stack input value. - */ -export type ReleaseInfoProvidedBy = ClosedEnum; - -/** - * Portable stack input validation constraints. - */ -export type ValidationReleaseInfo = { - /** - * Semantic format hint such as url. - */ - format?: string | null | undefined; - /** - * Maximum number. - */ - max?: string | null | undefined; - /** - * Maximum string-list items. - */ - maxItems?: number | null | undefined; - /** - * Maximum string length. - */ - maxLength?: number | null | undefined; - /** - * Minimum number. - */ - min?: string | null | undefined; - /** - * Minimum string-list items. - */ - minItems?: number | null | undefined; - /** - * Minimum string length. - */ - minLength?: number | null | undefined; - /** - * Portable whole-value regex pattern. - */ - pattern?: string | null | undefined; - /** - * Allowed string enum values. - */ - values?: Array | null | undefined; -}; - -export type ReleaseInfoValidationUnion = ValidationReleaseInfo | any; - -/** - * Stack input definition serialized into a release stack. - */ -export type ReleaseInfoInput = { - default?: - | DefaultReleaseInfoString - | DefaultReleaseInfoNumber - | DefaultReleaseInfoBoolean - | DefaultReleaseInfoStringList - | any - | null - | undefined; - /** - * Human-facing helper text. - */ - description: string; - /** - * Runtime env-var mappings for v1 input resolution. - */ - env?: Array | undefined; - /** - * Stable input ID used by CLI/API calls. - */ - id: string; - /** - * Primitive stack input kind. - */ - kind: ReleaseInfoKind; - /** - * Human-facing field label. - */ - label: string; - /** - * Example placeholder shown in UI. - */ - placeholder?: string | null | undefined; - /** - * Platforms where this input applies. - */ - platforms?: Array | null | undefined; - /** - * Who can provide this value. - */ - providedBy: Array; - /** - * Whether a resolved value is required before deployment can proceed. - */ - required: boolean; - validation?: ValidationReleaseInfo | any | null | undefined; -}; - -export const ManagementReleaseInfoEnum = { - Auto: "auto", -} as const; -export type ManagementReleaseInfoEnum = ClosedEnum< - typeof ManagementReleaseInfoEnum ->; - -/** - * AWS-specific binding specification - */ -export type OverrideReleaseInfoAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type OverrideReleaseInfoAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type OverrideReleaseInfoAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: OverrideReleaseInfoAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: OverrideReleaseInfoAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const OverrideReleaseInfoEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type OverrideReleaseInfoEffect = ClosedEnum< - typeof OverrideReleaseInfoEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type OverrideReleaseInfoAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type OverrideReleaseInfoAw = { - /** - * Generic binding configuration for permissions - */ - binding: OverrideReleaseInfoAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: OverrideReleaseInfoEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: OverrideReleaseInfoAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type OverrideReleaseInfoAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type OverrideReleaseInfoAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type OverrideReleaseInfoAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: OverrideReleaseInfoAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: OverrideReleaseInfoAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type OverrideReleaseInfoAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type OverrideReleaseInfoAzure = { - /** - * Generic binding configuration for permissions - */ - binding: OverrideReleaseInfoAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: OverrideReleaseInfoAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type OverrideConditionReleaseInfoResource = { - expression: string; - title: string; -}; - -export type OverrideReleaseInfoResourceConditionUnion = - | OverrideConditionReleaseInfoResource - | any; - -/** - * GCP-specific binding specification - */ -export type OverrideReleaseInfoGcpResource = { - condition?: OverrideConditionReleaseInfoResource | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type OverrideConditionReleaseInfo = { - expression: string; - title: string; -}; - -export type OverrideReleaseInfoConditionUnion = - | OverrideConditionReleaseInfo - | any; - -/** - * GCP-specific binding specification - */ -export type OverrideReleaseInfoGcpStack = { - condition?: OverrideConditionReleaseInfo | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type OverrideReleaseInfoGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: OverrideReleaseInfoGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: OverrideReleaseInfoGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type OverrideReleaseInfoGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type OverrideReleaseInfoGcp = { - /** - * Generic binding configuration for permissions - */ - binding: OverrideReleaseInfoGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: OverrideReleaseInfoGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type OverrideReleaseInfoPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type OverrideReleaseInfo = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: OverrideReleaseInfoPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type ReleaseInfoOverrideUnion = OverrideReleaseInfo | string; - -export type ManagementReleaseInfo2 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - override: { [k: string]: Array }; -}; - -/** - * AWS-specific binding specification - */ -export type ExtendReleaseInfoAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type ExtendReleaseInfoAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type ExtendReleaseInfoAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: ExtendReleaseInfoAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: ExtendReleaseInfoAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const ExtendReleaseInfoEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type ExtendReleaseInfoEffect = ClosedEnum< - typeof ExtendReleaseInfoEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type ExtendReleaseInfoAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type ExtendReleaseInfoAw = { - /** - * Generic binding configuration for permissions - */ - binding: ExtendReleaseInfoAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: ExtendReleaseInfoEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: ExtendReleaseInfoAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type ExtendReleaseInfoAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type ExtendReleaseInfoAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type ExtendReleaseInfoAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: ExtendReleaseInfoAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: ExtendReleaseInfoAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type ExtendReleaseInfoAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type ExtendReleaseInfoAzure = { - /** - * Generic binding configuration for permissions - */ - binding: ExtendReleaseInfoAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: ExtendReleaseInfoAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type ExtendConditionReleaseInfoResource = { - expression: string; - title: string; -}; - -export type ExtendReleaseInfoResourceConditionUnion = - | ExtendConditionReleaseInfoResource - | any; - -/** - * GCP-specific binding specification - */ -export type ExtendReleaseInfoGcpResource = { - condition?: ExtendConditionReleaseInfoResource | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type ExtendConditionReleaseInfo = { - expression: string; - title: string; -}; - -export type ExtendReleaseInfoConditionUnion = ExtendConditionReleaseInfo | any; - -/** - * GCP-specific binding specification - */ -export type ExtendReleaseInfoGcpStack = { - condition?: ExtendConditionReleaseInfo | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type ExtendReleaseInfoGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: ExtendReleaseInfoGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: ExtendReleaseInfoGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type ExtendReleaseInfoGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type ExtendReleaseInfoGcp = { - /** - * Generic binding configuration for permissions - */ - binding: ExtendReleaseInfoGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: ExtendReleaseInfoGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type ExtendReleaseInfoPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type ExtendReleaseInfo = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: ExtendReleaseInfoPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type ReleaseInfoExtendUnion = ExtendReleaseInfo | string; - -export type ManagementReleaseInfo1 = { - /** - * Permission profile that maps resources to permission sets - * - * @remarks - * Key can be "*" for all resources or resource name for specific resource - */ - extend: { [k: string]: Array }; -}; - -/** - * Management permissions configuration for stack management access - */ -export type ReleaseInfoManagementUnion = - | ManagementReleaseInfo1 - | ManagementReleaseInfo2 - | ManagementReleaseInfoEnum; - -/** - * AWS-specific binding specification - */ -export type ProfileReleaseInfoAwResource = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * AWS-specific binding specification - */ -export type ProfileReleaseInfoAwStack = { - /** - * Optional condition for additional filtering (rare) - */ - condition?: { [k: string]: { [k: string]: string } } | null | undefined; - /** - * Resource ARNs to bind to - */ - resources: Array; -}; - -/** - * Generic binding configuration for permissions - */ -export type ProfileReleaseInfoAwBinding = { - /** - * AWS-specific binding specification - */ - resource?: ProfileReleaseInfoAwResource | undefined; - /** - * AWS-specific binding specification - */ - stack?: ProfileReleaseInfoAwStack | undefined; -}; - -/** - * IAM effect. Defaults to Allow. - */ -export const ProfileReleaseInfoEffect = { - Allow: "Allow", - Deny: "Deny", -} as const; -/** - * IAM effect. Defaults to Allow. - */ -export type ProfileReleaseInfoEffect = ClosedEnum< - typeof ProfileReleaseInfoEffect ->; - -/** - * Grant permissions for a specific cloud platform - */ -export type ProfileReleaseInfoAwGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * AWS-specific platform permission configuration - */ -export type ProfileReleaseInfoAw = { - /** - * Generic binding configuration for permissions - */ - binding: ProfileReleaseInfoAwBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * IAM effect. Defaults to Allow. - */ - effect?: ProfileReleaseInfoEffect | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: ProfileReleaseInfoAwGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Azure-specific binding specification - */ -export type ProfileReleaseInfoAzureResource = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Azure-specific binding specification - */ -export type ProfileReleaseInfoAzureStack = { - /** - * Scope (subscription/resource group/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type ProfileReleaseInfoAzureBinding = { - /** - * Azure-specific binding specification - */ - resource?: ProfileReleaseInfoAzureResource | undefined; - /** - * Azure-specific binding specification - */ - stack?: ProfileReleaseInfoAzureStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type ProfileReleaseInfoAzureGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * Azure-specific platform permission configuration - */ -export type ProfileReleaseInfoAzure = { - /** - * Generic binding configuration for permissions - */ - binding: ProfileReleaseInfoAzureBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: ProfileReleaseInfoAzureGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * GCP IAM condition - */ -export type ProfileConditionReleaseInfoResource = { - expression: string; - title: string; -}; - -export type ProfileReleaseInfoResourceConditionUnion = - | ProfileConditionReleaseInfoResource - | any; - -/** - * GCP-specific binding specification - */ -export type ProfileReleaseInfoGcpResource = { - condition?: ProfileConditionReleaseInfoResource | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * GCP IAM condition - */ -export type ProfileConditionReleaseInfo = { - expression: string; - title: string; -}; - -export type ProfileReleaseInfoConditionUnion = - | ProfileConditionReleaseInfo - | any; - -/** - * GCP-specific binding specification - */ -export type ProfileReleaseInfoGcpStack = { - condition?: ProfileConditionReleaseInfo | any | null | undefined; - /** - * Scope (project/resource level) - */ - scope: string; -}; - -/** - * Generic binding configuration for permissions - */ -export type ProfileReleaseInfoGcpBinding = { - /** - * GCP-specific binding specification - */ - resource?: ProfileReleaseInfoGcpResource | undefined; - /** - * GCP-specific binding specification - */ - stack?: ProfileReleaseInfoGcpStack | undefined; -}; - -/** - * Grant permissions for a specific cloud platform - */ -export type ProfileReleaseInfoGcpGrant = { - /** - * AWS IAM actions (only for AWS) - */ - actions?: Array | null | undefined; - /** - * Azure actions (only for Azure) - */ - dataActions?: Array | null | undefined; - /** - * GCP permissions that require an exact residual custom role. - */ - permissions?: Array | null | undefined; - /** - * Provider predefined roles to bind directly. - */ - predefinedRoles?: Array | null | undefined; - /** - * GCP residual custom permissions to pair with predefined roles. - */ - residualPermissions?: Array | null | undefined; -}; - -/** - * GCP-specific platform permission configuration - */ -export type ProfileReleaseInfoGcp = { - /** - * Generic binding configuration for permissions - */ - binding: ProfileReleaseInfoGcpBinding; - /** - * Short admin-facing description of why this entry exists. - */ - description?: string | null | undefined; - /** - * Grant permissions for a specific cloud platform - */ - grant: ProfileReleaseInfoGcpGrant; - /** - * Stable admin-facing label for this permission entry. - */ - label?: string | null | undefined; -}; - -/** - * Platform-specific permission configurations - */ -export type ProfileReleaseInfoPlatforms = { - /** - * AWS permission configurations - */ - aws?: Array | null | undefined; - /** - * Azure permission configurations - */ - azure?: Array | null | undefined; - /** - * GCP permission configurations - */ - gcp?: Array | null | undefined; -}; - -/** - * A permission set that can be applied across different cloud platforms - */ -export type ProfileReleaseInfo = { - /** - * Human-readable description of what this permission set allows - */ - description: string; - /** - * Unique identifier for the permission set (e.g., "storage/data-read") - */ - id: string; - /** - * Platform-specific permission configurations - */ - platforms: ProfileReleaseInfoPlatforms; -}; - -/** - * Reference to a permission set - either by name or inline definition - */ -export type ReleaseInfoProfileUnion = ProfileReleaseInfo | string; - -/** - * Combined permissions configuration that contains both profiles and management - */ -export type ReleaseInfoPermissions = { - /** - * Management permissions configuration for stack management access - */ - management?: - | ManagementReleaseInfo1 - | ManagementReleaseInfo2 - | ManagementReleaseInfoEnum - | undefined; - /** - * Permission profiles that define access control for compute services - * - * @remarks - * Key is the profile name, value is the permission configuration - */ - profiles: { - [k: string]: { [k: string]: Array }; - }; -}; - -/** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ -export type ReleaseInfoConfig = { - /** - * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. - */ - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; - additionalProperties?: { [k: string]: any | null } | undefined; -}; - -/** - * New ResourceRef that works with any resource type. - * - * @remarks - * This can eventually replace the enum-based ResourceRef for full extensibility. - */ -export type ReleaseInfoDependency = { - id: string; - /** - * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. - */ - type: string; -}; - -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export const ReleaseInfoLifecycle = { - Frozen: "frozen", - Live: "live", -} as const; -/** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ -export type ReleaseInfoLifecycle = ClosedEnum; - -export type ReleaseInfoResources = { - /** - * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. - */ - config: ReleaseInfoConfig; - /** - * Additional dependencies for this resource beyond those defined in the resource itself. - * - * @remarks - * The total dependencies are: resource.get_dependencies() + this list - */ - dependencies: Array; - /** - * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. - */ - lifecycle: ReleaseInfoLifecycle; - /** - * Enable remote bindings for this resource (BYOB use case). - * - * @remarks - * When true, binding params are synced to StackState's `remote_binding_params`. - * Default: false (prevents sensitive data in synced state). - */ - remoteAccess?: boolean | undefined; -}; - -/** - * Represents the target cloud platform. - */ -export const ReleaseInfoSupportedPlatform = { - Aws: "aws", - Gcp: "gcp", - Azure: "azure", - Kubernetes: "kubernetes", - Local: "local", - Test: "test", -} as const; -/** - * Represents the target cloud platform. - */ -export type ReleaseInfoSupportedPlatform = ClosedEnum< - typeof ReleaseInfoSupportedPlatform ->; - -/** - * A bag of resources, unaware of any cloud. - */ -export type ReleaseInfoStack = { - /** - * Unique identifier for the stack - */ - id: string; - /** - * Input definitions required before setup or deployment can proceed. - */ - inputs?: Array | undefined; - /** - * Combined permissions configuration that contains both profiles and management - */ - permissions?: ReleaseInfoPermissions | undefined; - /** - * Map of resource IDs to their configurations and lifecycle settings - */ - resources: { [k: string]: ReleaseInfoResources }; - /** - * Which platforms this stack supports. When None, all platforms are supported. - */ - supportedPlatforms?: Array | null | undefined; -}; - -/** - * Release metadata - * - * @remarks - * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. - */ -export type ReleaseInfo = { - /** - * Short description of the release - */ - description?: string | null | undefined; - /** - * Release ID (e.g., rel_xyz) - */ - releaseId: string; - /** - * A bag of resources, unaware of any cloud. - */ - stack: ReleaseInfoStack; - /** - * Version string (e.g., 2.1.0) - */ - version?: string | null | undefined; -}; - -/** - * Target deployment if update is needed - */ -export type SyncReconcileResponseTarget = { - /** - * Deployment configuration - * - * @remarks - * - * Configuration for how to perform the deployment. - * Note: Credentials (ClientConfig) are passed separately to step() function. - */ - config: TargetConfig; - /** - * Release metadata - * - * @remarks - * - * Identifies a specific release version and includes the stack definition. - * The deployment engine uses this to track which release is currently deployed - * and which is the target. - */ - releaseInfo: ReleaseInfo; -}; - -/** - * State reconciliation result with optional target - */ -export type SyncReconcileResponse = { - /** - * Whether the state was reconciled - */ - success: boolean; - /** - * Current deployment state after reconciliation - */ - current: SyncReconcileResponseCurrent; - /** - * Target deployment if update is needed - */ - target?: SyncReconcileResponseTarget | undefined; -}; - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeStringList$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseTypeStringList, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseCurrentReleaseTypeStringList$inboundSchema, - value: z.array(z.string()), - }); - -export function syncReconcileResponseCurrentReleaseDefaultStringListFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseDefaultStringList, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultStringList' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeBoolean$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseTypeBoolean, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseCurrentReleaseTypeBoolean$inboundSchema, - value: z.boolean(), - }); - -export function syncReconcileResponseCurrentReleaseDefaultBooleanFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseDefaultBoolean, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultBoolean' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeNumber$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseTypeNumber, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseCurrentReleaseTypeNumber$inboundSchema, - value: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseDefaultNumberFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseDefaultNumber, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultNumber' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeString$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseTypeString, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseCurrentReleaseTypeString$inboundSchema, - value: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseDefaultStringFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseDefaultString, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultString' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseDefaultUnion$inboundSchema: - z.ZodType = z.union( - [ - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema - ), - z.any(), - ], - ); - -export function syncReconcileResponseCurrentReleaseDefaultUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseDefaultUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseDefaultUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseTypeEnvEnum, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseTypeUnion$inboundSchema: - z.ZodType = z.union([ - SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema, - z.any(), - ]); - -export function syncReconcileResponseCurrentReleaseTypeUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseTypeUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseTypeUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseTypeUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseEnv$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseEnv, - unknown -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema, - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileResponseCurrentReleaseEnvFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseEnv' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseKind$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseCurrentReleaseKind -> = z.enum(SyncReconcileResponseCurrentReleaseKind); - -/** @internal */ -export const SyncReconcileResponseCurrentReleasePlatform$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleasePlatform, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProvidedBy$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseProvidedBy, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseValidation$inboundSchema: - z.ZodType = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseCurrentReleaseValidationFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseValidation, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseValidation$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseValidation' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseValidationUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncReconcileResponseCurrentReleaseValidation$inboundSchema), - z.any(), - ]); - -export function syncReconcileResponseCurrentReleaseValidationUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseValidationUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseValidationUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseValidationUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseInput$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseInput, - unknown -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array( - z.lazy(() => SyncReconcileResponseCurrentReleaseEnv$inboundSchema), - ).optional(), - id: z.string(), - kind: SyncReconcileResponseCurrentReleaseKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncReconcileResponseCurrentReleasePlatform$inboundSchema), - ).optional(), - providedBy: z.array( - SyncReconcileResponseCurrentReleaseProvidedBy$inboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseCurrentReleaseValidation$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileResponseCurrentReleaseInputFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseInput, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseInput$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseInput' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseManagementEnum, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseCurrentReleaseOverrideAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseCurrentReleaseOverrideAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseOverrideEffect, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponseCurrentReleaseOverrideEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAw' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema: - z.ZodType = - z.object({ - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema: - z.ZodType = - z.object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema: - z.ZodType< - SyncReconcileResponseCurrentReleaseOverrideConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseCurrentReleaseOverrideResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponseCurrentReleaseOverrideConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseCurrentReleaseOverrideConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseCurrentReleaseOverrideGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema: - z.ZodType = z.object( - { - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }, - ); - -export function syncReconcileResponseCurrentReleaseOverrideGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema - )), - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseOverridePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverridePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverridePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverride$inboundSchema: - z.ZodType = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema - ), - }); - -export function syncReconcileResponseCurrentReleaseOverrideFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverride, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverride$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverride' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseOverrideUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncReconcileResponseCurrentReleaseOverride$inboundSchema), - z.string(), - ]); - -export function syncReconcileResponseCurrentReleaseOverrideUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseOverrideUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseOverrideUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseManagement2$inboundSchema: - z.ZodType = z.object( - { - override: z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseOverride$inboundSchema - ), - z.string(), - ]), - ), - ), - }, - ); - -export function syncReconcileResponseCurrentReleaseManagement2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseManagement2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseManagement2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseManagement2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseCurrentReleaseExtendAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseCurrentReleaseExtendAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseExtendAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseExtendEffect, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseCurrentReleaseExtendAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponseCurrentReleaseExtendEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseCurrentReleaseExtendAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAw' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseExtendAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseExtendAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseExtendAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseCurrentReleaseExtendAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema: - z.ZodType = z.object( - { - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }, - ); - -export function syncReconcileResponseCurrentReleaseExtendAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema: - z.ZodType< - SyncReconcileResponseCurrentReleaseExtendConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseExtendConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseCurrentReleaseExtendResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseExtendGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseExtendConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendConditionUnion$inboundSchema: - z.ZodType = - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseCurrentReleaseExtendConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseExtendGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseExtendGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseCurrentReleaseExtendGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseCurrentReleaseExtendGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema - )), - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseExtendPlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendPlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendPlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtend$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseExtend, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema - ), -}); - -export function syncReconcileResponseCurrentReleaseExtendFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtend, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtend$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtend' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseExtendUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseCurrentReleaseExtend$inboundSchema), - z.string(), - ]); - -export function syncReconcileResponseCurrentReleaseExtendUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseExtendUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseExtendUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseManagement1$inboundSchema: - z.ZodType = z.object( - { - extend: z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseExtend$inboundSchema - ), - z.string(), - ]), - ), - ), - }, - ); - -export function syncReconcileResponseCurrentReleaseManagement1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseManagement1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseManagement1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseManagement1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseManagementUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseManagement1$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseManagement2$inboundSchema - ), - SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema, - ]); - -export function syncReconcileResponseCurrentReleaseManagementUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseManagementUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseManagementUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseManagementUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseCurrentReleaseProfileAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseCurrentReleaseProfileAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseProfileAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseProfileEffect, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseCurrentReleaseProfileAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponseCurrentReleaseProfileEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseCurrentReleaseProfileAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAw' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema: - z.ZodType = - z.object({ - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseProfileAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseProfileAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseProfileAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseCurrentReleaseProfileAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseCurrentReleaseProfileAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema: - z.ZodType< - SyncReconcileResponseCurrentReleaseProfileConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseProfileConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseCurrentReleaseProfileResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseProfileGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseProfileConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileConditionUnion$inboundSchema: - z.ZodType = - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseCurrentReleaseProfileConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseProfileGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseProfileGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseCurrentReleaseProfileGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseCurrentReleaseProfileGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema - )), - ).optional(), - }); - -export function syncReconcileResponseCurrentReleaseProfilePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfilePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfilePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfile$inboundSchema: - z.ZodType = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema - ), - }); - -export function syncReconcileResponseCurrentReleaseProfileFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfile, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfile$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfile' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseProfileUnion$inboundSchema: - z.ZodType = z.union( - [ - z.lazy(() => SyncReconcileResponseCurrentReleaseProfile$inboundSchema), - z.string(), - ], - ); - -export function syncReconcileResponseCurrentReleaseProfileUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseProfileUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseProfileUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleasePermissions$inboundSchema: - z.ZodType = z.object( - { - management: z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseManagement1$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseCurrentReleaseManagement2$inboundSchema - ), - SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileResponseCurrentReleaseProfile$inboundSchema - ), - z.string(), - ]), - ), - ), - ), - }, - ); - -export function syncReconcileResponseCurrentReleasePermissionsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleasePermissions, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleasePermissions$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleasePermissions' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseConfig$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncReconcileResponseCurrentReleaseConfigFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseConfig, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseConfig$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseDependency$inboundSchema: - z.ZodType = z.object({ - id: z.string(), - type: z.string(), - }); - -export function syncReconcileResponseCurrentReleaseDependencyFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseDependency, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseDependency' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseLifecycle$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseCurrentReleaseLifecycle, - ); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseResources$inboundSchema: - z.ZodType = z.object({ - config: z.lazy(() => - SyncReconcileResponseCurrentReleaseConfig$inboundSchema - ), - dependencies: z.array( - z.lazy(() => SyncReconcileResponseCurrentReleaseDependency$inboundSchema), - ), - lifecycle: SyncReconcileResponseCurrentReleaseLifecycle$inboundSchema, - remoteAccess: z.boolean().optional(), - }); - -export function syncReconcileResponseCurrentReleaseResourcesFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseResources, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseResources$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseResources' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseSupportedPlatform$inboundSchema: - z.ZodEnum = z - .enum(SyncReconcileResponseCurrentReleaseSupportedPlatform); - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseStack$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseStack, - unknown -> = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncReconcileResponseCurrentReleaseInput$inboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncReconcileResponseCurrentReleasePermissions$inboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileResponseCurrentReleaseResources$inboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncReconcileResponseCurrentReleaseSupportedPlatform$inboundSchema), - ).optional(), -}); - -export function syncReconcileResponseCurrentReleaseStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentRelease$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentRelease, - unknown -> = z.object({ - description: z.nullable(z.string()).optional(), - releaseId: z.string(), - stack: z.lazy(() => SyncReconcileResponseCurrentReleaseStack$inboundSchema), - version: z.nullable(z.string()).optional(), -}); - -export function syncReconcileResponseCurrentReleaseFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentRelease$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrentRelease' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentReleaseUnion$inboundSchema: z.ZodType< - SyncReconcileResponseCurrentReleaseUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseCurrentRelease$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseCurrentReleaseUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCurrentReleaseUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCurrentReleaseUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCurrentReleaseUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePlatformTest$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponsePlatformTest -> = z.enum(SyncReconcileResponsePlatformTest); - -/** @internal */ -export const SyncReconcileResponseEnvironmentInfoTest$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoTest, - unknown -> = z.object({ - testId: z.string(), - platform: SyncReconcileResponsePlatformTest$inboundSchema, -}); - -export function syncReconcileResponseEnvironmentInfoTestFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseEnvironmentInfoTest, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseEnvironmentInfoTest$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoTest' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePlatformLocal$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponsePlatformLocal -> = z.enum(SyncReconcileResponsePlatformLocal); - -/** @internal */ -export const SyncReconcileResponseEnvironmentInfoLocal$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoLocal, - unknown -> = z.object({ - arch: z.string(), - hostname: z.string(), - os: z.string(), - platform: SyncReconcileResponsePlatformLocal$inboundSchema, -}); - -export function syncReconcileResponseEnvironmentInfoLocalFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseEnvironmentInfoLocal, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseEnvironmentInfoLocal$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoLocal' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentPlatformAzure$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseCurrentPlatformAzure -> = z.enum(SyncReconcileResponseCurrentPlatformAzure); - -/** @internal */ -export const SyncReconcileResponseEnvironmentInfoAzure$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoAzure, - unknown -> = z.object({ - location: z.string(), - subscriptionId: z.string(), - tenantId: z.string(), - platform: SyncReconcileResponseCurrentPlatformAzure$inboundSchema, -}); - -export function syncReconcileResponseEnvironmentInfoAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseEnvironmentInfoAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseEnvironmentInfoAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentPlatformGcp$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseCurrentPlatformGcp -> = z.enum(SyncReconcileResponseCurrentPlatformGcp); - -/** @internal */ -export const SyncReconcileResponseEnvironmentInfoGcp$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoGcp, - unknown -> = z.object({ - projectId: z.string(), - projectNumber: z.string(), - region: z.string(), - platform: SyncReconcileResponseCurrentPlatformGcp$inboundSchema, -}); - -export function syncReconcileResponseEnvironmentInfoGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseEnvironmentInfoGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseEnvironmentInfoGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentPlatformAws$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseCurrentPlatformAws -> = z.enum(SyncReconcileResponseCurrentPlatformAws); - -/** @internal */ -export const SyncReconcileResponseEnvironmentInfoAws$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoAws, - unknown -> = z.object({ - accountId: z.string(), - region: z.string(), - platform: SyncReconcileResponseCurrentPlatformAws$inboundSchema, -}); - -export function syncReconcileResponseEnvironmentInfoAwsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseEnvironmentInfoAws, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseEnvironmentInfoAws$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoAws' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseEnvironmentInfoUnion$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentInfoUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseEnvironmentInfoGcp$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoAzure$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoLocal$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoAws$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoTest$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseEnvironmentInfoUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseEnvironmentInfoUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseEnvironmentInfoUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseEnvironmentInfoUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseError$inboundSchema: z.ZodType< - SyncReconcileResponseError, - unknown -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); - -export function syncReconcileResponseErrorFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseError$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseError' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseErrorUnion$inboundSchema: z.ZodType< - SyncReconcileResponseErrorUnion, - unknown -> = z.union([z.lazy(() => SyncReconcileResponseError$inboundSchema), z.any()]); - -export function syncReconcileResponseErrorUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseErrorUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrentPlatform$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseCurrentPlatform -> = z.enum(SyncReconcileResponseCurrentPlatform); - -/** @internal */ -export const SyncReconcileResponsePreparedStackTypeStringList$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackTypeStringList, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackDefaultStringList$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponsePreparedStackTypeStringList$inboundSchema, - value: z.array(z.string()), - }); - -export function syncReconcileResponsePreparedStackDefaultStringListFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackDefaultStringList, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackDefaultStringList$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackDefaultStringList' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackTypeBoolean$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackTypeBoolean, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackDefaultBoolean$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponsePreparedStackTypeBoolean$inboundSchema, - value: z.boolean(), - }); - -export function syncReconcileResponsePreparedStackDefaultBooleanFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackDefaultBoolean, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackDefaultBoolean$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackDefaultBoolean' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackTypeNumber$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackTypeNumber, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackDefaultNumber$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponsePreparedStackTypeNumber$inboundSchema, - value: z.string(), - }); - -export function syncReconcileResponsePreparedStackDefaultNumberFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackDefaultNumber, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackDefaultNumber$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackDefaultNumber' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackTypeString$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackTypeString, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackDefaultString$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponsePreparedStackTypeString$inboundSchema, - value: z.string(), - }); - -export function syncReconcileResponsePreparedStackDefaultStringFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackDefaultString, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackDefaultString$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackDefaultString' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackDefaultUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponsePreparedStackDefaultString$inboundSchema), - z.lazy(() => SyncReconcileResponsePreparedStackDefaultNumber$inboundSchema), - z.lazy(() => - SyncReconcileResponsePreparedStackDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncReconcileResponsePreparedStackDefaultStringList$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponsePreparedStackDefaultUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackDefaultUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackDefaultUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackDefaultUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackTypeEnvEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackTypeEnvEnum, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackTypeUnion$inboundSchema: - z.ZodType = z.union([ - SyncReconcileResponsePreparedStackTypeEnvEnum$inboundSchema, - z.any(), - ]); - -export function syncReconcileResponsePreparedStackTypeUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackTypeUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackTypeUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackTypeUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackEnv$inboundSchema: z.ZodType< - SyncReconcileResponsePreparedStackEnv, - unknown -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncReconcileResponsePreparedStackTypeEnvEnum$inboundSchema, - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileResponsePreparedStackEnvFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackEnv' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackKind$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponsePreparedStackKind -> = z.enum(SyncReconcileResponsePreparedStackKind); - -/** @internal */ -export const SyncReconcileResponsePreparedStackPlatform$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackPlatform, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackProvidedBy$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackProvidedBy, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackValidation$inboundSchema: - z.ZodType = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponsePreparedStackValidationFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackValidation, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackValidation$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackValidation' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackValidationUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncReconcileResponsePreparedStackValidation$inboundSchema), - z.any(), - ]); - -export function syncReconcileResponsePreparedStackValidationUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackValidationUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackValidationUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackValidationUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackInput$inboundSchema: z.ZodType< - SyncReconcileResponsePreparedStackInput, - unknown -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackDefaultString$inboundSchema - ), - z.lazy(() => - SyncReconcileResponsePreparedStackDefaultNumber$inboundSchema - ), - z.lazy(() => - SyncReconcileResponsePreparedStackDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncReconcileResponsePreparedStackDefaultStringList$inboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array( - z.lazy(() => SyncReconcileResponsePreparedStackEnv$inboundSchema), - ).optional(), - id: z.string(), - kind: SyncReconcileResponsePreparedStackKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncReconcileResponsePreparedStackPlatform$inboundSchema), - ).optional(), - providedBy: z.array( - SyncReconcileResponsePreparedStackProvidedBy$inboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponsePreparedStackValidation$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileResponsePreparedStackInputFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackInput, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackInput$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackInput' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackManagementEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackManagementEnum, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponsePreparedStackOverrideAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponsePreparedStackOverrideAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideAwStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponsePreparedStackOverrideAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackOverrideEffect, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponsePreparedStackOverrideAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponsePreparedStackOverrideEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponsePreparedStackOverrideAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAw' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideAzureResource$inboundSchema: - z.ZodType = - z.object({ - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackOverrideAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideAzureResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackOverrideAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideAzureStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponsePreparedStackOverrideAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideAzureBinding$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponsePreparedStackOverrideAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideAzure$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponsePreparedStackOverrideAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideConditionResource$inboundSchema: - z.ZodType< - SyncReconcileResponsePreparedStackOverrideConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponsePreparedStackOverrideConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideResourceConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponsePreparedStackOverrideResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackOverrideConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponsePreparedStackOverrideResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackOverrideConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackOverrideGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideConditionStack$inboundSchema: - z.ZodType = - z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponsePreparedStackOverrideConditionStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideConditionStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideConditionStack$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideConditionStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideStackConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponsePreparedStackOverrideStackConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackOverrideConditionStack$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponsePreparedStackOverrideStackConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideStackConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideStackConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideStackConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackOverrideConditionStack$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackOverrideGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideGcpStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponsePreparedStackOverrideGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponsePreparedStackOverrideGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponsePreparedStackOverrideGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponsePreparedStackOverrideGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverridePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponsePreparedStackOverrideAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponsePreparedStackOverrideAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponsePreparedStackOverrideGcp$inboundSchema - )), - ).optional(), - }); - -export function syncReconcileResponsePreparedStackOverridePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverridePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverridePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverridePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverride$inboundSchema: - z.ZodType = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponsePreparedStackOverridePlatforms$inboundSchema - ), - }); - -export function syncReconcileResponsePreparedStackOverrideFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverride, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverride$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverride' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackOverrideUnion$inboundSchema: - z.ZodType = z.union( - [ - z.lazy(() => SyncReconcileResponsePreparedStackOverride$inboundSchema), - z.string(), - ], - ); - -export function syncReconcileResponsePreparedStackOverrideUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackOverrideUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackOverrideUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackOverrideUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackManagement2$inboundSchema: - z.ZodType = z.object({ - override: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileResponsePreparedStackOverride$inboundSchema), - z.string(), - ])), - ), - }); - -export function syncReconcileResponsePreparedStackManagement2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackManagement2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackManagement2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackManagement2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponsePreparedStackExtendAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponsePreparedStackExtendAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponsePreparedStackExtendAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponsePreparedStackExtendAwStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponsePreparedStackExtendAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackExtendEffect, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponsePreparedStackExtendAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponsePreparedStackExtendAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponsePreparedStackExtendEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponsePreparedStackExtendAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponsePreparedStackExtendAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendAw' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackExtendAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackExtendAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponsePreparedStackExtendAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponsePreparedStackExtendAzureStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponsePreparedStackExtendAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponsePreparedStackExtendAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendAzure$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponsePreparedStackExtendAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponsePreparedStackExtendAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponsePreparedStackExtendAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendConditionResource$inboundSchema: - z.ZodType< - SyncReconcileResponsePreparedStackExtendConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponsePreparedStackExtendConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendResourceConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponsePreparedStackExtendResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackExtendConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponsePreparedStackExtendResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackExtendConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackExtendGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendConditionStack$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponsePreparedStackExtendConditionStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendConditionStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendConditionStack$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendConditionStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendStackConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponsePreparedStackExtendStackConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackExtendConditionStack$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponsePreparedStackExtendStackConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendStackConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendStackConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendStackConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackExtendConditionStack$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackExtendGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponsePreparedStackExtendGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponsePreparedStackExtendGcpStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponsePreparedStackExtendGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponsePreparedStackExtendGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponsePreparedStackExtendGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponsePreparedStackExtendGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponsePreparedStackExtendGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendPlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponsePreparedStackExtendAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponsePreparedStackExtendAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponsePreparedStackExtendGcp$inboundSchema - )), - ).optional(), - }); - -export function syncReconcileResponsePreparedStackExtendPlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendPlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendPlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendPlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtend$inboundSchema: z.ZodType< - SyncReconcileResponsePreparedStackExtend, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponsePreparedStackExtendPlatforms$inboundSchema - ), -}); - -export function syncReconcileResponsePreparedStackExtendFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtend, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtend$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtend' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackExtendUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponsePreparedStackExtend$inboundSchema), - z.string(), - ]); - -export function syncReconcileResponsePreparedStackExtendUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackExtendUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackExtendUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackExtendUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackManagement1$inboundSchema: - z.ZodType = z.object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileResponsePreparedStackExtend$inboundSchema), - z.string(), - ])), - ), - }); - -export function syncReconcileResponsePreparedStackManagement1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackManagement1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackManagement1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackManagement1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackManagementUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncReconcileResponsePreparedStackManagement1$inboundSchema), - z.lazy(() => SyncReconcileResponsePreparedStackManagement2$inboundSchema), - SyncReconcileResponsePreparedStackManagementEnum$inboundSchema, - ]); - -export function syncReconcileResponsePreparedStackManagementUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackManagementUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackManagementUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackManagementUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponsePreparedStackProfileAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponsePreparedStackProfileAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponsePreparedStackProfileAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponsePreparedStackProfileAwStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponsePreparedStackProfileAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackProfileEffect, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponsePreparedStackProfileAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponsePreparedStackProfileAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponsePreparedStackProfileEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponsePreparedStackProfileAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponsePreparedStackProfileAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileAw' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackProfileAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileAzureResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackProfileAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponsePreparedStackProfileAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponsePreparedStackProfileAzureStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponsePreparedStackProfileAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponsePreparedStackProfileAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileAzure$inboundSchema: - z.ZodType = z.object( - { - binding: z.lazy(() => - SyncReconcileResponsePreparedStackProfileAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponsePreparedStackProfileAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }, - ); - -export function syncReconcileResponsePreparedStackProfileAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileConditionResource$inboundSchema: - z.ZodType< - SyncReconcileResponsePreparedStackProfileConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponsePreparedStackProfileConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileResourceConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponsePreparedStackProfileResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackProfileConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponsePreparedStackProfileResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackProfileConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackProfileGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileConditionStack$inboundSchema: - z.ZodType = - z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponsePreparedStackProfileConditionStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileConditionStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileConditionStack$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileConditionStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileStackConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponsePreparedStackProfileStackConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackProfileConditionStack$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponsePreparedStackProfileStackConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileStackConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileStackConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileStackConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackProfileConditionStack$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponsePreparedStackProfileGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponsePreparedStackProfileGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponsePreparedStackProfileGcpStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponsePreparedStackProfileGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponsePreparedStackProfileGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponsePreparedStackProfileGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponsePreparedStackProfileGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponsePreparedStackProfileGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfilePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponsePreparedStackProfileAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponsePreparedStackProfileAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponsePreparedStackProfileGcp$inboundSchema - )), - ).optional(), - }); - -export function syncReconcileResponsePreparedStackProfilePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfilePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfilePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfilePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfile$inboundSchema: z.ZodType< - SyncReconcileResponsePreparedStackProfile, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponsePreparedStackProfilePlatforms$inboundSchema - ), -}); - -export function syncReconcileResponsePreparedStackProfileFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfile, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfile$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfile' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackProfileUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponsePreparedStackProfile$inboundSchema), - z.string(), - ]); - -export function syncReconcileResponsePreparedStackProfileUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackProfileUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackProfileUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackProfileUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackPermissions$inboundSchema: - z.ZodType = z.object({ - management: z.union([ - z.lazy(() => SyncReconcileResponsePreparedStackManagement1$inboundSchema), - z.lazy(() => SyncReconcileResponsePreparedStackManagement2$inboundSchema), - SyncReconcileResponsePreparedStackManagementEnum$inboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileResponsePreparedStackProfile$inboundSchema - ), - z.string(), - ]), - ), - ), - ), - }); - -export function syncReconcileResponsePreparedStackPermissionsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackPermissions, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackPermissions$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackPermissions' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackConfig$inboundSchema: z.ZodType< - SyncReconcileResponsePreparedStackConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncReconcileResponsePreparedStackConfigFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackConfig, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackConfig$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackDependency$inboundSchema: - z.ZodType = z.object({ - id: z.string(), - type: z.string(), - }); - -export function syncReconcileResponsePreparedStackDependencyFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackDependency, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackDependency' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackLifecycle$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponsePreparedStackLifecycle, - ); - -/** @internal */ -export const SyncReconcileResponsePreparedStackResources$inboundSchema: - z.ZodType = z.object({ - config: z.lazy(() => - SyncReconcileResponsePreparedStackConfig$inboundSchema - ), - dependencies: z.array( - z.lazy(() => SyncReconcileResponsePreparedStackDependency$inboundSchema), - ), - lifecycle: SyncReconcileResponsePreparedStackLifecycle$inboundSchema, - remoteAccess: z.boolean().optional(), - }); - -export function syncReconcileResponsePreparedStackResourcesFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackResources, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackResources$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackResources' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackSupportedPlatform$inboundSchema: - z.ZodEnum = z - .enum(SyncReconcileResponsePreparedStackSupportedPlatform); - -/** @internal */ -export const SyncReconcileResponsePreparedStack$inboundSchema: z.ZodType< - SyncReconcileResponsePreparedStack, - unknown -> = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncReconcileResponsePreparedStackInput$inboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncReconcileResponsePreparedStackPermissions$inboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileResponsePreparedStackResources$inboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncReconcileResponsePreparedStackSupportedPlatform$inboundSchema), - ).optional(), -}); - -export function syncReconcileResponsePreparedStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreparedStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreparedStackUnion$inboundSchema: z.ZodType< - SyncReconcileResponsePreparedStackUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponsePreparedStack$inboundSchema), - z.any(), -]); - -export function syncReconcileResponsePreparedStackUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreparedStackUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreparedStackUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreparedStackUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRuntimeMetadata$inboundSchema: z.ZodType< - SyncReconcileResponseRuntimeMetadata, - unknown -> = z.object({ - lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), - preparedStack: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponsePreparedStack$inboundSchema), - z.any(), - ]), - ).optional(), - registryAccessGranted: z.boolean().optional(), -}); - -export function syncReconcileResponseRuntimeMetadataFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRuntimeMetadata$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRuntimeMetadata' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRuntimeMetadataUnion$inboundSchema: z.ZodType< - SyncReconcileResponseRuntimeMetadataUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseRuntimeMetadata$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseRuntimeMetadataUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseRuntimeMetadataUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRuntimeMetadataUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseRuntimeMetadataUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStackStatePlatform$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseStackStatePlatform -> = z.enum(SyncReconcileResponseStackStatePlatform); - -/** @internal */ -export const SyncReconcileResponseStackStateConfig$inboundSchema: z.ZodType< - SyncReconcileResponseStackStateConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncReconcileResponseStackStateConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStackStateConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseStackStateConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseControllerPlatformEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseControllerPlatformEnum, - ); - -/** @internal */ -export const SyncReconcileResponseControllerPlatformUnion$inboundSchema: - z.ZodType = z.union([ - SyncReconcileResponseControllerPlatformEnum$inboundSchema, - z.any(), - ]); - -export function syncReconcileResponseControllerPlatformUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseControllerPlatformUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseControllerPlatformUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseControllerPlatformUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStackStateDependency$inboundSchema: z.ZodType< - SyncReconcileResponseStackStateDependency, - unknown -> = z.object({ - id: z.string(), - type: z.string(), -}); - -export function syncReconcileResponseStackStateDependencyFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseStackStateDependency, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStackStateDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseStackStateDependency' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStackStateError$inboundSchema: z.ZodType< - SyncReconcileResponseStackStateError, - unknown -> = z.object({ - code: z.string(), - context: z.nullable(z.any()).optional(), - hint: z.nullable(z.string()).optional(), - httpStatusCode: z.nullable(z.int()).optional(), - internal: z.boolean(), - message: z.string(), - retryable: z.boolean().default(false), - source: z.nullable(z.any()).optional(), -}); - -export function syncReconcileResponseStackStateErrorFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStackStateError$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseStackStateError' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStackStateErrorUnion$inboundSchema: z.ZodType< - SyncReconcileResponseStackStateErrorUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseStackStateError$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseStackStateErrorUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseStackStateErrorUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStackStateErrorUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseStackStateErrorUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStackStateLifecycleEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseStackStateLifecycleEnum, - ); - -/** @internal */ -export const SyncReconcileResponseLifecycleUnion$inboundSchema: z.ZodType< - SyncReconcileResponseLifecycleUnion, - unknown -> = z.union([ - SyncReconcileResponseStackStateLifecycleEnum$inboundSchema, - z.any(), -]); - -export function syncReconcileResponseLifecycleUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseLifecycleUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseOutputs$inboundSchema: z.ZodType< - SyncReconcileResponseOutputs, - unknown -> = collectExtraKeys$( - z.object({ - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncReconcileResponseOutputsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseOutputs$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseOutputs' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseOutputsUnion$inboundSchema: z.ZodType< - SyncReconcileResponseOutputsUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseOutputs$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseOutputsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseOutputsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreviousConfig$inboundSchema: z.ZodType< - SyncReconcileResponsePreviousConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncReconcileResponsePreviousConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePreviousConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePreviousConfigUnion$inboundSchema: z.ZodType< - SyncReconcileResponsePreviousConfigUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponsePreviousConfig$inboundSchema), - z.any(), -]); - -export function syncReconcileResponsePreviousConfigUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePreviousConfigUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePreviousConfigUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePreviousConfigUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStackStateStatus$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseStackStateStatus -> = z.enum(SyncReconcileResponseStackStateStatus); - -/** @internal */ -export const SyncReconcileResponseStackStateResources$inboundSchema: z.ZodType< - SyncReconcileResponseStackStateResources, - unknown -> = z.object({ - _internal: z.nullable(z.any()).optional(), - config: z.lazy(() => SyncReconcileResponseStackStateConfig$inboundSchema), - controllerPlatform: z.nullable( - z.union([ - SyncReconcileResponseControllerPlatformEnum$inboundSchema, - z.any(), - ]), - ).optional(), - dependencies: z.array( - z.lazy(() => SyncReconcileResponseStackStateDependency$inboundSchema), - ).optional(), - error: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseStackStateError$inboundSchema), - z.any(), - ]), - ).optional(), - lastFailedState: z.nullable(z.any()).optional(), - lifecycle: z.nullable( - z.union([ - SyncReconcileResponseStackStateLifecycleEnum$inboundSchema, - z.any(), - ]), - ).optional(), - outputs: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseOutputs$inboundSchema), - z.any(), - ]), - ).optional(), - previousConfig: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponsePreviousConfig$inboundSchema), - z.any(), - ]), - ).optional(), - remoteBindingParams: z.nullable(z.any()).optional(), - retryAttempt: z.int().optional(), - status: SyncReconcileResponseStackStateStatus$inboundSchema, - type: z.string(), -}).transform((v) => { - return remap$(v, { - "_internal": "internal", - }); -}); - -export function syncReconcileResponseStackStateResourcesFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseStackStateResources, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStackStateResources$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseStackStateResources' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStackState$inboundSchema: z.ZodType< - SyncReconcileResponseStackState, - unknown -> = z.object({ - platform: SyncReconcileResponseStackStatePlatform$inboundSchema, - resourcePrefix: z.string(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileResponseStackStateResources$inboundSchema), - ), -}); - -export function syncReconcileResponseStackStateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseStackState$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseStackState' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStackStateUnion$inboundSchema: z.ZodType< - SyncReconcileResponseStackStateUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseStackState$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseStackStateUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStackStateUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseStackStateUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStatus$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseStatus -> = z.enum(SyncReconcileResponseStatus); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseTypeStringList$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleaseTypeStringList, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseDefaultStringList$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseTargetReleaseTypeStringList$inboundSchema, - value: z.array(z.string()), - }); - -export function syncReconcileResponseTargetReleaseDefaultStringListFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseDefaultStringList, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseDefaultStringList$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseDefaultStringList' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseTypeBoolean$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleaseTypeBoolean, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseDefaultBoolean$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseTargetReleaseTypeBoolean$inboundSchema, - value: z.boolean(), - }); - -export function syncReconcileResponseTargetReleaseDefaultBooleanFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseDefaultBoolean, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseDefaultBoolean$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseDefaultBoolean' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseTypeNumber$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleaseTypeNumber, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseDefaultNumber$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseTargetReleaseTypeNumber$inboundSchema, - value: z.string(), - }); - -export function syncReconcileResponseTargetReleaseDefaultNumberFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseDefaultNumber, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseDefaultNumber$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseDefaultNumber' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseTypeString$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleaseTypeString, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseDefaultString$inboundSchema: - z.ZodType = z - .object({ - type: SyncReconcileResponseTargetReleaseTypeString$inboundSchema, - value: z.string(), - }); - -export function syncReconcileResponseTargetReleaseDefaultStringFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseDefaultString, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseDefaultString$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseDefaultString' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseDefaultUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseTargetReleaseDefaultString$inboundSchema), - z.lazy(() => SyncReconcileResponseTargetReleaseDefaultNumber$inboundSchema), - z.lazy(() => - SyncReconcileResponseTargetReleaseDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseTargetReleaseDefaultStringList$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseTargetReleaseDefaultUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseDefaultUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseDefaultUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseDefaultUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseTypeEnvEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleaseTypeEnvEnum, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseTypeUnion$inboundSchema: - z.ZodType = z.union([ - SyncReconcileResponseTargetReleaseTypeEnvEnum$inboundSchema, - z.any(), - ]); - -export function syncReconcileResponseTargetReleaseTypeUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseTypeUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseTypeUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseTypeUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseEnv$inboundSchema: z.ZodType< - SyncReconcileResponseTargetReleaseEnv, - unknown -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable( - z.union([ - SyncReconcileResponseTargetReleaseTypeEnvEnum$inboundSchema, - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileResponseTargetReleaseEnvFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseEnv' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseKind$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseTargetReleaseKind -> = z.enum(SyncReconcileResponseTargetReleaseKind); - -/** @internal */ -export const SyncReconcileResponseTargetReleasePlatform$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleasePlatform, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProvidedBy$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleaseProvidedBy, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseValidation$inboundSchema: - z.ZodType = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseTargetReleaseValidationFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseValidation, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseValidation$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseValidation' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseValidationUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncReconcileResponseTargetReleaseValidation$inboundSchema), - z.any(), - ]); - -export function syncReconcileResponseTargetReleaseValidationUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseValidationUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseValidationUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseValidationUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseInput$inboundSchema: z.ZodType< - SyncReconcileResponseTargetReleaseInput, - unknown -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseDefaultString$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseTargetReleaseDefaultNumber$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseTargetReleaseDefaultBoolean$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseTargetReleaseDefaultStringList$inboundSchema - ), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array( - z.lazy(() => SyncReconcileResponseTargetReleaseEnv$inboundSchema), - ).optional(), - id: z.string(), - kind: SyncReconcileResponseTargetReleaseKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable( - z.array(SyncReconcileResponseTargetReleasePlatform$inboundSchema), - ).optional(), - providedBy: z.array( - SyncReconcileResponseTargetReleaseProvidedBy$inboundSchema, - ), - required: z.boolean(), - validation: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseTargetReleaseValidation$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileResponseTargetReleaseInputFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseInput, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseInput$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseInput' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseManagementEnum$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleaseManagementEnum, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseTargetReleaseOverrideAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseTargetReleaseOverrideAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideAwStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseOverrideAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleaseOverrideEffect, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseTargetReleaseOverrideAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponseTargetReleaseOverrideEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseTargetReleaseOverrideAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAw' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideAzureResource$inboundSchema: - z.ZodType = - z.object({ - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseOverrideAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideAzureResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseOverrideAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideAzureStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseOverrideAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideAzureBinding$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseTargetReleaseOverrideAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideAzure$inboundSchema: - z.ZodType = z - .object({ - binding: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseTargetReleaseOverrideAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideConditionResource$inboundSchema: - z.ZodType< - SyncReconcileResponseTargetReleaseOverrideConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseTargetReleaseOverrideConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseTargetReleaseOverrideResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseOverrideGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseTargetReleaseOverrideConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideConditionUnion$inboundSchema: - z.ZodType = - z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseTargetReleaseOverrideConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseOverrideGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideGcpStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseOverrideGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseTargetReleaseOverrideGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseTargetReleaseOverrideGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverridePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseTargetReleaseOverrideGcp$inboundSchema - )), - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseOverridePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverridePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverridePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverridePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverride$inboundSchema: - z.ZodType = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponseTargetReleaseOverridePlatforms$inboundSchema - ), - }); - -export function syncReconcileResponseTargetReleaseOverrideFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverride, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverride$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverride' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseOverrideUnion$inboundSchema: - z.ZodType = z.union( - [ - z.lazy(() => SyncReconcileResponseTargetReleaseOverride$inboundSchema), - z.string(), - ], - ); - -export function syncReconcileResponseTargetReleaseOverrideUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseOverrideUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseOverrideUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseManagement2$inboundSchema: - z.ZodType = z.object({ - override: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileResponseTargetReleaseOverride$inboundSchema), - z.string(), - ])), - ), - }); - -export function syncReconcileResponseTargetReleaseManagement2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseManagement2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseManagement2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseManagement2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseTargetReleaseExtendAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseTargetReleaseExtendAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendAwStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseExtendAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleaseExtendEffect, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseTargetReleaseExtendAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponseTargetReleaseExtendEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseTargetReleaseExtendAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAw' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseExtendAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendAzureResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseExtendAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendAzureStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseExtendAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseTargetReleaseExtendAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendAzure$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseTargetReleaseExtendAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendConditionResource$inboundSchema: - z.ZodType< - SyncReconcileResponseTargetReleaseExtendConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseTargetReleaseExtendConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendResourceConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponseTargetReleaseExtendResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseTargetReleaseExtendResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseExtendConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseExtendGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseTargetReleaseExtendConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendConditionUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseExtendCondition$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseTargetReleaseExtendConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseExtendCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseExtendGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendGcpStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseExtendGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseTargetReleaseExtendGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseTargetReleaseExtendGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendPlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseTargetReleaseExtendAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseTargetReleaseExtendAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseTargetReleaseExtendGcp$inboundSchema - )), - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseExtendPlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendPlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendPlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendPlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtend$inboundSchema: z.ZodType< - SyncReconcileResponseTargetReleaseExtend, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponseTargetReleaseExtendPlatforms$inboundSchema - ), -}); - -export function syncReconcileResponseTargetReleaseExtendFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtend, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtend$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtend' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseExtendUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseTargetReleaseExtend$inboundSchema), - z.string(), - ]); - -export function syncReconcileResponseTargetReleaseExtendUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseExtendUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseExtendUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseExtendUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseManagement1$inboundSchema: - z.ZodType = z.object({ - extend: z.record( - z.string(), - z.array(z.union([ - z.lazy(() => SyncReconcileResponseTargetReleaseExtend$inboundSchema), - z.string(), - ])), - ), - }); - -export function syncReconcileResponseTargetReleaseManagement1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseManagement1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseManagement1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseManagement1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseManagementUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncReconcileResponseTargetReleaseManagement1$inboundSchema), - z.lazy(() => SyncReconcileResponseTargetReleaseManagement2$inboundSchema), - SyncReconcileResponseTargetReleaseManagementEnum$inboundSchema, - ]); - -export function syncReconcileResponseTargetReleaseManagementUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseManagementUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseManagementUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseManagementUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileAwResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseTargetReleaseProfileAwResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileAwResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileAwResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAwResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileAwStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - resources: z.array(z.string()), - }); - -export function syncReconcileResponseTargetReleaseProfileAwStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileAwStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileAwStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAwStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileAwBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileAwResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileAwStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseProfileAwBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileAwBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileAwBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAwBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileEffect$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleaseProfileEffect, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileAwGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseTargetReleaseProfileAwGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileAwGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileAwGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAwGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileAw$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileAwBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - effect: SyncReconcileResponseTargetReleaseProfileEffect$inboundSchema - .optional(), - grant: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileAwGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseTargetReleaseProfileAwFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileAw, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileAw$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAw' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileAzureResource$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseProfileAzureResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileAzureResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileAzureResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAzureResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileAzureStack$inboundSchema: - z.ZodType = z - .object({ - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseProfileAzureStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileAzureStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileAzureStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAzureStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileAzureBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileAzureResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileAzureStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseProfileAzureBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileAzureBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileAzureBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileAzureGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseTargetReleaseProfileAzureGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileAzureGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileAzureGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileAzure$inboundSchema: - z.ZodType = z.object( - { - binding: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileAzureBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileAzureGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }, - ); - -export function syncReconcileResponseTargetReleaseProfileAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAzure' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileConditionResource$inboundSchema: - z.ZodType< - SyncReconcileResponseTargetReleaseProfileConditionResource, - unknown - > = z.object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseTargetReleaseProfileConditionResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileConditionResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileConditionResource$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileConditionResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileResourceConditionUnion$inboundSchema: - z.ZodType< - SyncReconcileResponseTargetReleaseProfileResourceConditionUnion, - unknown - > = z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseProfileConditionResource$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseTargetReleaseProfileResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileResourceConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileGcpResource$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseProfileConditionResource$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseProfileGcpResourceFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileGcpResource, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileGcpResource$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileGcpResource' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileCondition$inboundSchema: - z.ZodType = z - .object({ - expression: z.string(), - title: z.string(), - }); - -export function syncReconcileResponseTargetReleaseProfileConditionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileCondition, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileCondition$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileCondition' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileConditionUnion$inboundSchema: - z.ZodType = - z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseProfileCondition$inboundSchema - ), - z.any(), - ]); - -export function syncReconcileResponseTargetReleaseProfileConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileConditionUnion$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileGcpStack$inboundSchema: - z.ZodType = z - .object({ - condition: z.nullable( - z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseProfileCondition$inboundSchema - ), - z.any(), - ]), - ).optional(), - scope: z.string(), - }); - -export function syncReconcileResponseTargetReleaseProfileGcpStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileGcpStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileGcpStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileGcpStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileGcpBinding$inboundSchema: - z.ZodType = z - .object({ - resource: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileGcpResource$inboundSchema - ).optional(), - stack: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileGcpStack$inboundSchema - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseProfileGcpBindingFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileGcpBinding, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileGcpBinding$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileGcpGrant$inboundSchema: - z.ZodType = z - .object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), - }); - -export function syncReconcileResponseTargetReleaseProfileGcpGrantFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileGcpGrant, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileGcpGrant$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileGcp$inboundSchema: - z.ZodType = z.object({ - binding: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileGcpBinding$inboundSchema - ), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => - SyncReconcileResponseTargetReleaseProfileGcpGrant$inboundSchema - ), - label: z.nullable(z.string()).optional(), - }); - -export function syncReconcileResponseTargetReleaseProfileGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileGcp' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfilePlatforms$inboundSchema: - z.ZodType = z - .object({ - aws: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseTargetReleaseProfileAw$inboundSchema - )), - ).optional(), - azure: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseTargetReleaseProfileAzure$inboundSchema - )), - ).optional(), - gcp: z.nullable( - z.array(z.lazy(() => - SyncReconcileResponseTargetReleaseProfileGcp$inboundSchema - )), - ).optional(), - }); - -export function syncReconcileResponseTargetReleaseProfilePlatformsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfilePlatforms, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfilePlatforms$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfilePlatforms' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfile$inboundSchema: z.ZodType< - SyncReconcileResponseTargetReleaseProfile, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => - SyncReconcileResponseTargetReleaseProfilePlatforms$inboundSchema - ), -}); - -export function syncReconcileResponseTargetReleaseProfileFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfile, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfile$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfile' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseProfileUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseTargetReleaseProfile$inboundSchema), - z.string(), - ]); - -export function syncReconcileResponseTargetReleaseProfileUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseProfileUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseProfileUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseProfileUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleasePermissions$inboundSchema: - z.ZodType = z.object({ - management: z.union([ - z.lazy(() => SyncReconcileResponseTargetReleaseManagement1$inboundSchema), - z.lazy(() => SyncReconcileResponseTargetReleaseManagement2$inboundSchema), - SyncReconcileResponseTargetReleaseManagementEnum$inboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([ - z.lazy(() => - SyncReconcileResponseTargetReleaseProfile$inboundSchema - ), - z.string(), - ]), - ), - ), - ), - }); - -export function syncReconcileResponseTargetReleasePermissionsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleasePermissions, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleasePermissions$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleasePermissions' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseConfig$inboundSchema: z.ZodType< - SyncReconcileResponseTargetReleaseConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function syncReconcileResponseTargetReleaseConfigFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseConfig, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseConfig$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseConfig' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseDependency$inboundSchema: - z.ZodType = z.object({ - id: z.string(), - type: z.string(), - }); - -export function syncReconcileResponseTargetReleaseDependencyFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseDependency, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseDependency$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseDependency' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseLifecycle$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseTargetReleaseLifecycle, - ); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseResources$inboundSchema: - z.ZodType = z.object({ - config: z.lazy(() => - SyncReconcileResponseTargetReleaseConfig$inboundSchema - ), - dependencies: z.array( - z.lazy(() => SyncReconcileResponseTargetReleaseDependency$inboundSchema), - ), - lifecycle: SyncReconcileResponseTargetReleaseLifecycle$inboundSchema, - remoteAccess: z.boolean().optional(), - }); - -export function syncReconcileResponseTargetReleaseResourcesFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseResources, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseResources$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseResources' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseSupportedPlatform$inboundSchema: - z.ZodEnum = z - .enum(SyncReconcileResponseTargetReleaseSupportedPlatform); - -/** @internal */ -export const SyncReconcileResponseTargetReleaseStack$inboundSchema: z.ZodType< - SyncReconcileResponseTargetReleaseStack, - unknown -> = z.object({ - id: z.string(), - inputs: z.array( - z.lazy(() => SyncReconcileResponseTargetReleaseInput$inboundSchema), - ).optional(), - permissions: z.lazy(() => - SyncReconcileResponseTargetReleasePermissions$inboundSchema - ).optional(), - resources: z.record( - z.string(), - z.lazy(() => SyncReconcileResponseTargetReleaseResources$inboundSchema), - ), - supportedPlatforms: z.nullable( - z.array(SyncReconcileResponseTargetReleaseSupportedPlatform$inboundSchema), - ).optional(), -}); - -export function syncReconcileResponseTargetReleaseStackFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseStack, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseStack$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseStack' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetRelease$inboundSchema: z.ZodType< - SyncReconcileResponseTargetRelease, - unknown -> = z.object({ - description: z.nullable(z.string()).optional(), - releaseId: z.string(), - stack: z.lazy(() => SyncReconcileResponseTargetReleaseStack$inboundSchema), - version: z.nullable(z.string()).optional(), -}); - -export function syncReconcileResponseTargetReleaseFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetRelease$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTargetRelease' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTargetReleaseUnion$inboundSchema: z.ZodType< - SyncReconcileResponseTargetReleaseUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseTargetRelease$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseTargetReleaseUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTargetReleaseUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTargetReleaseUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTargetReleaseUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCurrent$inboundSchema: z.ZodType< - SyncReconcileResponseCurrent, - unknown -> = z.object({ - currentRelease: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseCurrentRelease$inboundSchema), - z.any(), - ]), - ).optional(), - environmentInfo: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseEnvironmentInfoGcp$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoAzure$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoLocal$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoAws$inboundSchema), - z.lazy(() => SyncReconcileResponseEnvironmentInfoTest$inboundSchema), - z.any(), - ]), - ).optional(), - error: z.nullable( - z.union([z.lazy(() => SyncReconcileResponseError$inboundSchema), z.any()]), - ).optional(), - platform: SyncReconcileResponseCurrentPlatform$inboundSchema, - protocolVersion: z.int(), - retryRequested: z.boolean().optional(), - runtimeMetadata: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseRuntimeMetadata$inboundSchema), - z.any(), - ]), - ).optional(), - stackState: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseStackState$inboundSchema), - z.any(), - ]), - ).optional(), - status: SyncReconcileResponseStatus$inboundSchema, - targetRelease: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseTargetRelease$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileResponseCurrentFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseCurrent$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCurrent' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseBasePlatformEnum$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseBasePlatformEnum -> = z.enum(SyncReconcileResponseBasePlatformEnum); - -/** @internal */ -export const SyncReconcileResponseBasePlatformUnion$inboundSchema: z.ZodType< - SyncReconcileResponseBasePlatformUnion, - unknown -> = z.union([SyncReconcileResponseBasePlatformEnum$inboundSchema, z.any()]); - -export function syncReconcileResponseBasePlatformUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseBasePlatformUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseBasePlatformUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseClusters$inboundSchema: z.ZodType< - SyncReconcileResponseClusters, - unknown -> = z.object({ - clusterId: z.string(), - managementToken: z.string(), -}); - -export function syncReconcileResponseClustersFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseClusters$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseClusters' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseHorizonMachineImageAws$inboundSchema: - z.ZodType = z.object({ - amis: z.record(z.string(), z.record(z.string(), z.string())), - }); - -export function syncReconcileResponseHorizonMachineImageAwsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseHorizonMachineImageAws, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseHorizonMachineImageAws$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseHorizonMachineImageAws' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseHorizonMachineImageAwsUnion$inboundSchema: - z.ZodType = z - .union([ - z.lazy(() => SyncReconcileResponseHorizonMachineImageAws$inboundSchema), - z.any(), - ]); - -export function syncReconcileResponseHorizonMachineImageAwsUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseHorizonMachineImageAwsUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseHorizonMachineImageAwsUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseHorizonMachineImageAwsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseAzureImages$inboundSchema: z.ZodType< - SyncReconcileResponseAzureImages, - unknown -> = z.object({ - imageVersionId: z.string(), -}); - -export function syncReconcileResponseAzureImagesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseAzureImages$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseAzureImages' from JSON`, - ); -} - -/** @internal */ -export const HorizonMachineImageAzureTarget$inboundSchema: z.ZodType< - HorizonMachineImageAzureTarget, - unknown -> = z.object({ - images: z.record( - z.string(), - z.lazy(() => SyncReconcileResponseAzureImages$inboundSchema), - ), -}); - -export function horizonMachineImageAzureTargetFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => HorizonMachineImageAzureTarget$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'HorizonMachineImageAzureTarget' from JSON`, - ); -} - -/** @internal */ -export const HorizonMachineImageTargetAzureUnion$inboundSchema: z.ZodType< - HorizonMachineImageTargetAzureUnion, - unknown -> = z.union([ - z.lazy(() => HorizonMachineImageAzureTarget$inboundSchema), - z.any(), -]); - -export function horizonMachineImageTargetAzureUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - HorizonMachineImageTargetAzureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'HorizonMachineImageTargetAzureUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseBaseImage$inboundSchema: z.ZodType< - SyncReconcileResponseBaseImage, - unknown -> = z.object({ - name: z.string(), - version: z.string(), -}); - -export function syncReconcileResponseBaseImageFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseBaseImage$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseBaseImage' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseGcpImages$inboundSchema: z.ZodType< - SyncReconcileResponseGcpImages, - unknown -> = z.object({ - sourceImage: z.string(), -}); - -export function syncReconcileResponseGcpImagesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseGcpImages$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseGcpImages' from JSON`, - ); -} - -/** @internal */ -export const HorizonMachineImageGcpTarget$inboundSchema: z.ZodType< - HorizonMachineImageGcpTarget, - unknown -> = z.object({ - images: z.record( - z.string(), - z.lazy(() => SyncReconcileResponseGcpImages$inboundSchema), - ), -}); - -export function horizonMachineImageGcpTargetFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => HorizonMachineImageGcpTarget$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'HorizonMachineImageGcpTarget' from JSON`, - ); -} - -/** @internal */ -export const HorizonMachineImageTargetGcpUnion$inboundSchema: z.ZodType< - HorizonMachineImageTargetGcpUnion, - unknown -> = z.union([ - z.lazy(() => HorizonMachineImageGcpTarget$inboundSchema), - z.any(), -]); - -export function horizonMachineImageTargetGcpUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => HorizonMachineImageTargetGcpUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'HorizonMachineImageTargetGcpUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseHorizonMachineImage$inboundSchema: z.ZodType< - SyncReconcileResponseHorizonMachineImage, - unknown -> = z.object({ - aws: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseHorizonMachineImageAws$inboundSchema), - z.any(), - ]), - ).optional(), - azure: z.nullable( - z.union([ - z.lazy(() => HorizonMachineImageAzureTarget$inboundSchema), - z.any(), - ]), - ).optional(), - baseImage: z.lazy(() => SyncReconcileResponseBaseImage$inboundSchema), - channel: z.string(), - createdAt: z.string(), - gcp: z.nullable( - z.union([ - z.lazy(() => HorizonMachineImageGcpTarget$inboundSchema), - z.any(), - ]), - ).optional(), - gitSha: z.string(), - horizondVersion: z.string(), - machineImageVersion: z.string(), -}); - -export function syncReconcileResponseHorizonMachineImageFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseHorizonMachineImage, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseHorizonMachineImage$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseHorizonMachineImage' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseHorizonMachineImageUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseHorizonMachineImage$inboundSchema), - z.any(), - ]); - -export function syncReconcileResponseHorizonMachineImageUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseHorizonMachineImageUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseHorizonMachineImageUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseHorizonMachineImageUnion' from JSON`, - ); -} - -/** @internal */ -export const ComputeBackendTargetType$inboundSchema: z.ZodEnum< - typeof ComputeBackendTargetType -> = z.enum(ComputeBackendTargetType); - -/** @internal */ -export const SyncReconcileResponseComputeBackendHorizon$inboundSchema: - z.ZodType = z.object({ - clusters: z.record( - z.string(), - z.lazy(() => SyncReconcileResponseClusters$inboundSchema), - ), - horizonMachineImage: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseHorizonMachineImage$inboundSchema), - z.any(), - ]), - ).optional(), - url: z.string(), - type: ComputeBackendTargetType$inboundSchema, - }); - -export function syncReconcileResponseComputeBackendHorizonFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseComputeBackendHorizon, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseComputeBackendHorizon$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseComputeBackendHorizon' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseComputeBackendUnion$inboundSchema: z.ZodType< - SyncReconcileResponseComputeBackendUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseComputeBackendHorizon$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseComputeBackendUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseComputeBackendUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseComputeBackendUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseComputeBackendUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseAliasCertificateStatus$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseAliasCertificateStatus, - ); - -/** @internal */ -export const SyncReconcileResponseAliasDnsStatus$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseAliasDnsStatus -> = z.enum(SyncReconcileResponseAliasDnsStatus); - -/** @internal */ -export const SyncReconcileResponseAlias$inboundSchema: z.ZodType< - SyncReconcileResponseAlias, - unknown -> = z.object({ - certificateChain: z.nullable(z.string()).optional(), - certificateId: z.string(), - certificateStatus: SyncReconcileResponseAliasCertificateStatus$inboundSchema, - dnsError: z.nullable(z.string()).optional(), - dnsStatus: SyncReconcileResponseAliasDnsStatus$inboundSchema, - fqdn: z.string(), - issuedAt: z.nullable(z.string()).optional(), - privateKey: z.nullable(z.string()).optional(), -}); - -export function syncReconcileResponseAliasFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseAlias$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseAlias' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateStatus$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseCertificateStatus -> = z.enum(SyncReconcileResponseCertificateStatus); - -/** @internal */ -export const SyncReconcileResponseDnsStatus$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseDnsStatus -> = z.enum(SyncReconcileResponseDnsStatus); - -/** @internal */ -export const SyncReconcileResponseEndpointsCertificateStatus$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseEndpointsCertificateStatus, - ); - -/** @internal */ -export const SyncReconcileResponseEndpointsDnsStatus$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseEndpointsDnsStatus -> = z.enum(SyncReconcileResponseEndpointsDnsStatus); - -/** @internal */ -export const SyncReconcileResponseEndpoints$inboundSchema: z.ZodType< - SyncReconcileResponseEndpoints, - unknown -> = z.object({ - certificateChain: z.nullable(z.string()).optional(), - certificateId: z.string(), - certificateStatus: - SyncReconcileResponseEndpointsCertificateStatus$inboundSchema, - dnsError: z.nullable(z.string()).optional(), - dnsStatus: SyncReconcileResponseEndpointsDnsStatus$inboundSchema, - fqdn: z.string(), - issuedAt: z.nullable(z.string()).optional(), - privateKey: z.nullable(z.string()).optional(), -}); - -export function syncReconcileResponseEndpointsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseEndpoints$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseEndpoints' from JSON`, - ); -} - -/** @internal */ -export const DomainMetadataTargetResources$inboundSchema: z.ZodType< - DomainMetadataTargetResources, - unknown -> = z.object({ - aliases: z.array(z.lazy(() => SyncReconcileResponseAlias$inboundSchema)) - .optional(), - certificateChain: z.nullable(z.string()).optional(), - certificateId: z.string(), - certificateStatus: SyncReconcileResponseCertificateStatus$inboundSchema, - dnsError: z.nullable(z.string()).optional(), - dnsStatus: SyncReconcileResponseDnsStatus$inboundSchema, - endpoints: z.record( - z.string(), - z.lazy(() => SyncReconcileResponseEndpoints$inboundSchema), - ).optional(), - fqdn: z.string(), - issuedAt: z.nullable(z.string()).optional(), - privateKey: z.nullable(z.string()).optional(), -}); - -export function domainMetadataTargetResourcesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DomainMetadataTargetResources$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DomainMetadataTargetResources' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDomainMetadata$inboundSchema: z.ZodType< - SyncReconcileResponseDomainMetadata, - unknown -> = z.object({ - baseDomain: z.string(), - hostedZoneId: z.string(), - publicSubdomain: z.string(), - resources: z.record( - z.string(), - z.lazy(() => DomainMetadataTargetResources$inboundSchema), - ), -}); - -export function syncReconcileResponseDomainMetadataFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDomainMetadata$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDomainMetadata' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDomainMetadataUnion$inboundSchema: z.ZodType< - SyncReconcileResponseDomainMetadataUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseDomainMetadata$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseDomainMetadataUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseDomainMetadataUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDomainMetadataUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseDomainMetadataUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetEnvironmentVariablesType$inboundSchema: z.ZodEnum< - typeof TargetEnvironmentVariablesType -> = z.enum(TargetEnvironmentVariablesType); - -/** @internal */ -export const SyncReconcileResponseVariable$inboundSchema: z.ZodType< - SyncReconcileResponseVariable, - unknown -> = z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: TargetEnvironmentVariablesType$inboundSchema, - value: z.string(), -}); - -export function syncReconcileResponseVariableFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseVariable$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseVariable' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseEnvironmentVariables$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentVariables, - unknown -> = z.object({ - createdAt: z.string(), - hash: z.string(), - variables: z.array(z.lazy(() => SyncReconcileResponseVariable$inboundSchema)), -}); - -export function syncReconcileResponseEnvironmentVariablesFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseEnvironmentVariables, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseEnvironmentVariables$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseEnvironmentVariables' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDefaultDomainSecretRef$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseDefaultDomainSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseDefaultDomainSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDefaultDomainSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseDefaultDomainSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDefaultDomain$inboundSchema: z.ZodType< - SyncReconcileResponseDefaultDomain, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseDefaultDomainSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseDefaultDomainFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDefaultDomain$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDefaultDomain' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDefaultDomainUnion$inboundSchema: z.ZodType< - SyncReconcileResponseDefaultDomainUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseDefaultDomain$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseDefaultDomainUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseDefaultDomainUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDefaultDomainUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseDefaultDomainUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseEnvironmentNameSecretRef$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseEnvironmentNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseEnvironmentNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseEnvironmentNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseEnvironmentNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseEnvironmentName$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseEnvironmentNameSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseEnvironmentNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseEnvironmentName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseEnvironmentName' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseEnvironmentNameUnion$inboundSchema: z.ZodType< - SyncReconcileResponseEnvironmentNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseEnvironmentName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseEnvironmentNameUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseEnvironmentNameUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseEnvironmentNameUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseEnvironmentNameUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceGroupNameSecretRef3$inboundSchema: - z.ZodType = z - .object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseResourceGroupNameSecretRef3FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseResourceGroupNameSecretRef3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseResourceGroupNameSecretRef3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseResourceGroupNameSecretRef3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceGroupName3$inboundSchema: z.ZodType< - SyncReconcileResponseResourceGroupName3, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseResourceGroupNameSecretRef3$inboundSchema - ), -}); - -export function syncReconcileResponseResourceGroupName3FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseResourceGroupName3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseResourceGroupName3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseResourceGroupName3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceGroupNameUnion3$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseResourceGroupName3$inboundSchema), - z.any(), - z.string(), - ]); - -export function syncReconcileResponseResourceGroupNameUnion3FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseResourceGroupNameUnion3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseResourceGroupNameUnion3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseResourceGroupNameUnion3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceIdSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseResourceIdSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseResourceIdSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseResourceIdSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseResourceIdSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseResourceIdSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceId$inboundSchema: z.ZodType< - SyncReconcileResponseResourceId, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseResourceIdSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseResourceIdFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseResourceId$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseResourceId' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceIdUnion$inboundSchema: z.ZodType< - SyncReconcileResponseResourceIdUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseResourceId$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseResourceIdUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseResourceIdUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseResourceIdUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStaticIpSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseStaticIpSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseStaticIpSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStaticIpSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseStaticIpSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStaticIp$inboundSchema: z.ZodType< - SyncReconcileResponseStaticIp, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncReconcileResponseStaticIpSecretRef$inboundSchema), -}); - -export function syncReconcileResponseStaticIpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseStaticIp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseStaticIp' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeContainerAppsEnvironment$inboundSchema: z.ZodEnum< - typeof TargetTypeContainerAppsEnvironment -> = z.enum(TargetTypeContainerAppsEnvironment); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsContainerAppsEnvironment$inboundSchema: - z.ZodType< - SyncReconcileResponseExternalBindingsContainerAppsEnvironment, - unknown - > = z.object({ - defaultDomain: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseDefaultDomain$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - environmentName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseEnvironmentName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - resourceGroupName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseResourceGroupName3$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - resourceId: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseResourceId$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - staticIp: z.nullable(z.any()).optional(), - type: TargetTypeContainerAppsEnvironment$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsContainerAppsEnvironmentFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsContainerAppsEnvironment, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsContainerAppsEnvironment$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseExternalBindingsContainerAppsEnvironment' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDataDirSecretRef3$inboundSchema: z.ZodType< - SyncReconcileResponseDataDirSecretRef3, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseDataDirSecretRef3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDataDirSecretRef3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDataDirSecretRef3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDataDir3$inboundSchema: z.ZodType< - SyncReconcileResponseDataDir3, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncReconcileResponseDataDirSecretRef3$inboundSchema), -}); - -export function syncReconcileResponseDataDir3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseDataDir3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDataDir3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDataDirUnion2$inboundSchema: z.ZodType< - SyncReconcileResponseDataDirUnion2, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseDataDir3$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseDataDirUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDataDirUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDataDirUnion2' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeVault5$inboundSchema: z.ZodEnum< - typeof TargetTypeVault5 -> = z.enum(TargetTypeVault5); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsLocalVault$inboundSchema: - z.ZodType = z - .object({ - dataDir: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseDataDir3$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - vaultName: z.string(), - service: z.literal("local-vault"), - type: TargetTypeVault5$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsLocalVaultFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsLocalVault, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsLocalVault$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsLocalVault' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseNamespaceSecretRef2$inboundSchema: z.ZodType< - SyncReconcileResponseNamespaceSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseNamespaceSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseNamespaceSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseNamespaceSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseNamespaceSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseNamespace2$inboundSchema: z.ZodType< - SyncReconcileResponseNamespace2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseNamespaceSecretRef2$inboundSchema - ), -}); - -export function syncReconcileResponseNamespace2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseNamespace2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseNamespace2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseNamespaceUnion2$inboundSchema: z.ZodType< - SyncReconcileResponseNamespaceUnion2, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseNamespace2$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseNamespaceUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseNamespaceUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseNamespaceUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultPrefixSecretRef3$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseVaultPrefixSecretRef3FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseVaultPrefixSecretRef3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseVaultPrefixSecretRef3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseVaultPrefixSecretRef3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultPrefix3$inboundSchema: z.ZodType< - SyncReconcileResponseVaultPrefix3, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseVaultPrefixSecretRef3$inboundSchema - ), -}); - -export function syncReconcileResponseVaultPrefix3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseVaultPrefix3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseVaultPrefix3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultPrefixUnion3$inboundSchema: z.ZodType< - SyncReconcileResponseVaultPrefixUnion3, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseVaultPrefix3$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseVaultPrefixUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseVaultPrefixUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseVaultPrefixUnion3' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeVault4$inboundSchema: z.ZodEnum< - typeof TargetTypeVault4 -> = z.enum(TargetTypeVault4); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsKubernetesSecret$inboundSchema: - z.ZodType = z - .object({ - namespace: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseNamespace2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - vaultPrefix: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseVaultPrefix3$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("kubernetes-secret"), - type: TargetTypeVault4$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsKubernetesSecretFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsKubernetesSecret, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsKubernetesSecret$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsKubernetesSecret' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultNameSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseVaultNameSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseVaultNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseVaultNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseVaultNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseVaultNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultName$inboundSchema: z.ZodType< - SyncReconcileResponseVaultName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseVaultNameSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseVaultNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseVaultName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseVaultName' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultNameUnion$inboundSchema: z.ZodType< - SyncReconcileResponseVaultNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseVaultName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseVaultNameUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseVaultNameUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseVaultNameUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeVault3$inboundSchema: z.ZodEnum< - typeof TargetTypeVault3 -> = z.enum(TargetTypeVault3); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsKeyVault$inboundSchema: - z.ZodType = z.object({ - vaultName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseVaultName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("key-vault"), - type: TargetTypeVault3$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsKeyVaultFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsKeyVault, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsKeyVault$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsKeyVault' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultPrefixSecretRef2$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseVaultPrefixSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseVaultPrefixSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseVaultPrefixSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseVaultPrefixSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultPrefix2$inboundSchema: z.ZodType< - SyncReconcileResponseVaultPrefix2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseVaultPrefixSecretRef2$inboundSchema - ), -}); - -export function syncReconcileResponseVaultPrefix2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseVaultPrefix2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseVaultPrefix2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultPrefixUnion2$inboundSchema: z.ZodType< - SyncReconcileResponseVaultPrefixUnion2, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseVaultPrefix2$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseVaultPrefixUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseVaultPrefixUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseVaultPrefixUnion2' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeVault2$inboundSchema: z.ZodEnum< - typeof TargetTypeVault2 -> = z.enum(TargetTypeVault2); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsSecretManager$inboundSchema: - z.ZodType = z - .object({ - vaultPrefix: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseVaultPrefix2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("secret-manager"), - type: TargetTypeVault2$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsSecretManagerFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsSecretManager, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsSecretManager$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsSecretManager' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultPrefixSecretRef1$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseVaultPrefixSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseVaultPrefixSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseVaultPrefixSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseVaultPrefixSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultPrefix1$inboundSchema: z.ZodType< - SyncReconcileResponseVaultPrefix1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseVaultPrefixSecretRef1$inboundSchema - ), -}); - -export function syncReconcileResponseVaultPrefix1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseVaultPrefix1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseVaultPrefix1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseVaultPrefixUnion1$inboundSchema: z.ZodType< - SyncReconcileResponseVaultPrefixUnion1, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseVaultPrefix1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseVaultPrefixUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseVaultPrefixUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseVaultPrefixUnion1' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeVault1$inboundSchema: z.ZodEnum< - typeof TargetTypeVault1 -> = z.enum(TargetTypeVault1); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsParameterStore$inboundSchema: - z.ZodType = z - .object({ - vaultPrefix: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseVaultPrefix1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("parameter-store"), - type: TargetTypeVault1$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsParameterStoreFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsParameterStore, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsParameterStore$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsParameterStore' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseExternalBindingsUnion5$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => - SyncReconcileResponseExternalBindingsParameterStore$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsSecretManager$inboundSchema - ), - z.lazy(() => SyncReconcileResponseExternalBindingsKeyVault$inboundSchema), - z.lazy(() => - SyncReconcileResponseExternalBindingsKubernetesSecret$inboundSchema - ), - z.lazy(() => SyncReconcileResponseExternalBindingsLocalVault$inboundSchema), - ]); - -export function syncReconcileResponseExternalBindingsUnion5FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsUnion5, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsUnion5$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsUnion5' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDataDirSecretRef2$inboundSchema: z.ZodType< - SyncReconcileResponseDataDirSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseDataDirSecretRef2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDataDirSecretRef2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDataDirSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDataDir2$inboundSchema: z.ZodType< - SyncReconcileResponseDataDir2, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncReconcileResponseDataDirSecretRef2$inboundSchema), -}); - -export function syncReconcileResponseDataDir2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseDataDir2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDataDir2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRegistryUrlSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseRegistryUrlSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseRegistryUrlSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseRegistryUrlSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRegistryUrlSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseRegistryUrlSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRegistryUrl$inboundSchema: z.ZodType< - SyncReconcileResponseRegistryUrl, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseRegistryUrlSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseRegistryUrlFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseRegistryUrl$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRegistryUrl' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRegistryUrlUnion$inboundSchema: z.ZodType< - SyncReconcileResponseRegistryUrlUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseRegistryUrl$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseRegistryUrlUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRegistryUrlUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRegistryUrlUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeArtifactRegistry4$inboundSchema: z.ZodEnum< - typeof TargetTypeArtifactRegistry4 -> = z.enum(TargetTypeArtifactRegistry4); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsLocal$inboundSchema: - z.ZodType = z.object({ - dataDir: z.nullable(z.any()).optional(), - registryUrl: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseRegistryUrl$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("local"), - type: TargetTypeArtifactRegistry4$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsLocalFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsLocal, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsLocal$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsLocal' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePullServiceAccountEmailSecretRef$inboundSchema: - z.ZodType = z - .object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponsePullServiceAccountEmailSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePullServiceAccountEmailSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePullServiceAccountEmailSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePullServiceAccountEmailSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePullServiceAccountEmail$inboundSchema: - z.ZodType = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponsePullServiceAccountEmailSecretRef$inboundSchema - ), - }); - -export function syncReconcileResponsePullServiceAccountEmailFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePullServiceAccountEmail, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePullServiceAccountEmail$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePullServiceAccountEmail' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePushServiceAccountEmailSecretRef$inboundSchema: - z.ZodType = z - .object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponsePushServiceAccountEmailSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePushServiceAccountEmailSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePushServiceAccountEmailSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePushServiceAccountEmailSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePushServiceAccountEmail$inboundSchema: - z.ZodType = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponsePushServiceAccountEmailSecretRef$inboundSchema - ), - }); - -export function syncReconcileResponsePushServiceAccountEmailFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePushServiceAccountEmail, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePushServiceAccountEmail$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePushServiceAccountEmail' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRepositoryNameSecretRef$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseRepositoryNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseRepositoryNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRepositoryNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseRepositoryNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRepositoryName$inboundSchema: z.ZodType< - SyncReconcileResponseRepositoryName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseRepositoryNameSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseRepositoryNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRepositoryName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRepositoryName' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRepositoryNameUnion$inboundSchema: z.ZodType< - SyncReconcileResponseRepositoryNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseRepositoryName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseRepositoryNameUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseRepositoryNameUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRepositoryNameUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseRepositoryNameUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeArtifactRegistry3$inboundSchema: z.ZodEnum< - typeof TargetTypeArtifactRegistry3 -> = z.enum(TargetTypeArtifactRegistry3); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsGar$inboundSchema: z.ZodType< - SyncReconcileResponseExternalBindingsGar, - unknown -> = z.object({ - pullServiceAccountEmail: z.nullable(z.any()).optional(), - pushServiceAccountEmail: z.nullable(z.any()).optional(), - repositoryName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseRepositoryName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("gar"), - type: TargetTypeArtifactRegistry3$inboundSchema, -}); - -export function syncReconcileResponseExternalBindingsGarFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsGar, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsGar$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsGar' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRegistryNameSecretRef$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseRegistryNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseRegistryNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRegistryNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseRegistryNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRegistryName$inboundSchema: z.ZodType< - SyncReconcileResponseRegistryName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseRegistryNameSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseRegistryNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseRegistryName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRegistryName' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRegistryNameUnion$inboundSchema: z.ZodType< - SyncReconcileResponseRegistryNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseRegistryName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseRegistryNameUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRegistryNameUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRegistryNameUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRepositoryPrefixSecretRef2$inboundSchema: - z.ZodType = z - .object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseRepositoryPrefixSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseRepositoryPrefixSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRepositoryPrefixSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseRepositoryPrefixSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRepositoryPrefix2$inboundSchema: z.ZodType< - SyncReconcileResponseRepositoryPrefix2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseRepositoryPrefixSecretRef2$inboundSchema - ), -}); - -export function syncReconcileResponseRepositoryPrefix2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRepositoryPrefix2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRepositoryPrefix2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceGroupNameSecretRef2$inboundSchema: - z.ZodType = z - .object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseResourceGroupNameSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseResourceGroupNameSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseResourceGroupNameSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseResourceGroupNameSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceGroupName2$inboundSchema: z.ZodType< - SyncReconcileResponseResourceGroupName2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseResourceGroupNameSecretRef2$inboundSchema - ), -}); - -export function syncReconcileResponseResourceGroupName2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseResourceGroupName2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseResourceGroupName2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseResourceGroupName2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceGroupNameUnion2$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseResourceGroupName2$inboundSchema), - z.any(), - z.string(), - ]); - -export function syncReconcileResponseResourceGroupNameUnion2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseResourceGroupNameUnion2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseResourceGroupNameUnion2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseResourceGroupNameUnion2' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeArtifactRegistry2$inboundSchema: z.ZodEnum< - typeof TargetTypeArtifactRegistry2 -> = z.enum(TargetTypeArtifactRegistry2); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsAcr$inboundSchema: z.ZodType< - SyncReconcileResponseExternalBindingsAcr, - unknown -> = z.object({ - registryName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseRegistryName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - repositoryPrefix: z.nullable(z.any()).optional(), - resourceGroupName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseResourceGroupName2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("acr"), - type: TargetTypeArtifactRegistry2$inboundSchema, -}); - -export function syncReconcileResponseExternalBindingsAcrFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsAcr, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsAcr$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsAcr' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePullRoleArnSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponsePullRoleArnSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponsePullRoleArnSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePullRoleArnSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePullRoleArnSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePullRoleArnSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePullRoleArn$inboundSchema: z.ZodType< - SyncReconcileResponsePullRoleArn, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponsePullRoleArnSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponsePullRoleArnFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponsePullRoleArn$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePullRoleArn' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePushRoleArnSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponsePushRoleArnSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponsePushRoleArnSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponsePushRoleArnSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePushRoleArnSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponsePushRoleArnSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePushRoleArn$inboundSchema: z.ZodType< - SyncReconcileResponsePushRoleArn, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponsePushRoleArnSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponsePushRoleArnFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponsePushRoleArn$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePushRoleArn' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRepositoryPrefixSecretRef1$inboundSchema: - z.ZodType = z - .object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseRepositoryPrefixSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseRepositoryPrefixSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRepositoryPrefixSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseRepositoryPrefixSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRepositoryPrefix1$inboundSchema: z.ZodType< - SyncReconcileResponseRepositoryPrefix1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseRepositoryPrefixSecretRef1$inboundSchema - ), -}); - -export function syncReconcileResponseRepositoryPrefix1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRepositoryPrefix1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRepositoryPrefix1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRepositoryPrefixUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseRepositoryPrefix1$inboundSchema), - z.any(), - z.string(), - ]); - -export function syncReconcileResponseRepositoryPrefixUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseRepositoryPrefixUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRepositoryPrefixUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseRepositoryPrefixUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeArtifactRegistry1$inboundSchema: z.ZodEnum< - typeof TargetTypeArtifactRegistry1 -> = z.enum(TargetTypeArtifactRegistry1); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsEcr$inboundSchema: z.ZodType< - SyncReconcileResponseExternalBindingsEcr, - unknown -> = z.object({ - pullRoleArn: z.nullable(z.any()).optional(), - pushRoleArn: z.nullable(z.any()).optional(), - repositoryPrefix: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseRepositoryPrefix1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("ecr"), - type: TargetTypeArtifactRegistry1$inboundSchema, -}); - -export function syncReconcileResponseExternalBindingsEcrFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsEcr, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsEcr$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsEcr' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseExternalBindingsUnion4$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseExternalBindingsEcr$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsAcr$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsGar$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsLocal$inboundSchema), - ]); - -export function syncReconcileResponseExternalBindingsUnion4FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsUnion4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsUnion4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsUnion4' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDataDirSecretRef1$inboundSchema: z.ZodType< - SyncReconcileResponseDataDirSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseDataDirSecretRef1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDataDirSecretRef1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDataDirSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDataDir1$inboundSchema: z.ZodType< - SyncReconcileResponseDataDir1, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncReconcileResponseDataDirSecretRef1$inboundSchema), -}); - -export function syncReconcileResponseDataDir1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseDataDir1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDataDir1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDataDirUnion1$inboundSchema: z.ZodType< - SyncReconcileResponseDataDirUnion1, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseDataDir1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseDataDirUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDataDirUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDataDirUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseKeyPrefixSecretRef2$inboundSchema: z.ZodType< - SyncReconcileResponseKeyPrefixSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseKeyPrefixSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseKeyPrefixSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseKeyPrefixSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseKeyPrefixSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseKeyPrefix2$inboundSchema: z.ZodType< - SyncReconcileResponseKeyPrefix2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseKeyPrefixSecretRef2$inboundSchema - ), -}); - -export function syncReconcileResponseKeyPrefix2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseKeyPrefix2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseKeyPrefix2' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeKv5$inboundSchema: z.ZodEnum = z - .enum(TargetTypeKv5); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsLocalKv$inboundSchema: - z.ZodType = z.object({ - dataDir: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseDataDir1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - keyPrefix: z.nullable(z.any()).optional(), - service: z.literal("local-kv"), - type: TargetTypeKv5$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsLocalKvFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsLocalKv, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsLocalKv$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsLocalKv' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseConnectionUrlSecretRef$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseConnectionUrlSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseConnectionUrlSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseConnectionUrlSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseConnectionUrlSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseConnectionUrl$inboundSchema: z.ZodType< - SyncReconcileResponseConnectionUrl, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseConnectionUrlSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseConnectionUrlFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseConnectionUrl$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseConnectionUrl' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseConnectionUrlUnion$inboundSchema: z.ZodType< - SyncReconcileResponseConnectionUrlUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseConnectionUrl$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseConnectionUrlUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseConnectionUrlUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseConnectionUrlUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseConnectionUrlUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDatabaseSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseDatabaseSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseDatabaseSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDatabaseSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDatabaseSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDatabase$inboundSchema: z.ZodType< - SyncReconcileResponseDatabase, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncReconcileResponseDatabaseSecretRef$inboundSchema), -}); - -export function syncReconcileResponseDatabaseFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseDatabase$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDatabase' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseKeyPrefixSecretRef1$inboundSchema: z.ZodType< - SyncReconcileResponseKeyPrefixSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseKeyPrefixSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseKeyPrefixSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseKeyPrefixSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseKeyPrefixSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseKeyPrefix1$inboundSchema: z.ZodType< - SyncReconcileResponseKeyPrefix1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseKeyPrefixSecretRef1$inboundSchema - ), -}); - -export function syncReconcileResponseKeyPrefix1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseKeyPrefix1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseKeyPrefix1' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeKv4$inboundSchema: z.ZodEnum = z - .enum(TargetTypeKv4); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsRedis$inboundSchema: - z.ZodType = z.object({ - connectionUrl: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseConnectionUrl$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - database: z.nullable(z.any()).optional(), - keyPrefix: z.nullable(z.any()).optional(), - service: z.literal("redis"), - type: TargetTypeKv4$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsRedisFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsRedis, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsRedis$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsRedis' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseAccountNameSecretRef2$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseAccountNameSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseAccountNameSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseAccountNameSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseAccountNameSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseAccountName2$inboundSchema: z.ZodType< - SyncReconcileResponseAccountName2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseAccountNameSecretRef2$inboundSchema - ), -}); - -export function syncReconcileResponseAccountName2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseAccountName2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseAccountName2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseAccountNameUnion2$inboundSchema: z.ZodType< - SyncReconcileResponseAccountNameUnion2, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseAccountName2$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseAccountNameUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseAccountNameUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseAccountNameUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceGroupNameSecretRef1$inboundSchema: - z.ZodType = z - .object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseResourceGroupNameSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseResourceGroupNameSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseResourceGroupNameSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseResourceGroupNameSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceGroupName1$inboundSchema: z.ZodType< - SyncReconcileResponseResourceGroupName1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseResourceGroupNameSecretRef1$inboundSchema - ), -}); - -export function syncReconcileResponseResourceGroupName1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseResourceGroupName1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseResourceGroupName1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseResourceGroupName1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseResourceGroupNameUnion1$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseResourceGroupName1$inboundSchema), - z.any(), - z.string(), - ]); - -export function syncReconcileResponseResourceGroupNameUnion1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseResourceGroupNameUnion1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseResourceGroupNameUnion1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseResourceGroupNameUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTableNameSecretRef2$inboundSchema: z.ZodType< - SyncReconcileResponseTableNameSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseTableNameSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTableNameSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTableNameSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTableNameSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTableName2$inboundSchema: z.ZodType< - SyncReconcileResponseTableName2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseTableNameSecretRef2$inboundSchema - ), -}); - -export function syncReconcileResponseTableName2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseTableName2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTableName2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTableNameUnion2$inboundSchema: z.ZodType< - SyncReconcileResponseTableNameUnion2, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseTableName2$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseTableNameUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTableNameUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTableNameUnion2' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeKv3$inboundSchema: z.ZodEnum = z - .enum(TargetTypeKv3); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsTablestorage$inboundSchema: - z.ZodType = z - .object({ - accountName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseAccountName2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - resourceGroupName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseResourceGroupName1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - tableName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseTableName2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("tablestorage"), - type: TargetTypeKv3$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsTablestorageFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsTablestorage, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsTablestorage$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsTablestorage' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCollectionNameSecretRef$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseCollectionNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCollectionNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCollectionNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCollectionNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCollectionName$inboundSchema: z.ZodType< - SyncReconcileResponseCollectionName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseCollectionNameSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseCollectionNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCollectionName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCollectionName' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCollectionNameUnion$inboundSchema: z.ZodType< - SyncReconcileResponseCollectionNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseCollectionName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseCollectionNameUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCollectionNameUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCollectionNameUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCollectionNameUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDatabaseIdSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseDatabaseIdSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseDatabaseIdSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseDatabaseIdSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDatabaseIdSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseDatabaseIdSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDatabaseId$inboundSchema: z.ZodType< - SyncReconcileResponseDatabaseId, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseDatabaseIdSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseDatabaseIdFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseDatabaseId$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDatabaseId' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDatabaseIdUnion$inboundSchema: z.ZodType< - SyncReconcileResponseDatabaseIdUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseDatabaseId$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseDatabaseIdUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDatabaseIdUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDatabaseIdUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProjectIdSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseProjectIdSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseProjectIdSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseProjectIdSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProjectIdSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseProjectIdSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProjectId$inboundSchema: z.ZodType< - SyncReconcileResponseProjectId, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseProjectIdSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseProjectIdFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseProjectId$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProjectId' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProjectIdUnion$inboundSchema: z.ZodType< - SyncReconcileResponseProjectIdUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseProjectId$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseProjectIdUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProjectIdUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProjectIdUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeKv2$inboundSchema: z.ZodEnum = z - .enum(TargetTypeKv2); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsFirestore$inboundSchema: - z.ZodType = z.object( - { - collectionName: z.nullable(z.union([ - z.lazy(() => SyncReconcileResponseCollectionName$inboundSchema), - z.any(), - z.string(), - ])).optional(), - databaseId: z.nullable(z.union([ - z.lazy(() => SyncReconcileResponseDatabaseId$inboundSchema), - z.any(), - z.string(), - ])).optional(), - projectId: z.nullable(z.union([ - z.lazy(() => SyncReconcileResponseProjectId$inboundSchema), - z.any(), - z.string(), - ])).optional(), - service: z.literal("firestore"), - type: TargetTypeKv2$inboundSchema, - }, - ); - -export function syncReconcileResponseExternalBindingsFirestoreFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsFirestore, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsFirestore$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsFirestore' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseEndpointUrlSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseEndpointUrlSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseEndpointUrlSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseEndpointUrlSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseEndpointUrlSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseEndpointUrlSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseEndpointUrl$inboundSchema: z.ZodType< - SyncReconcileResponseEndpointUrl, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseEndpointUrlSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseEndpointUrlFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseEndpointUrl$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseEndpointUrl' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRegionSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseRegionSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseRegionSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRegionSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRegionSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRegion$inboundSchema: z.ZodType< - SyncReconcileResponseRegion, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncReconcileResponseRegionSecretRef$inboundSchema), -}); - -export function syncReconcileResponseRegionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseRegion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRegion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRegionUnion$inboundSchema: z.ZodType< - SyncReconcileResponseRegionUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseRegion$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseRegionUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseRegionUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRegionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTableNameSecretRef1$inboundSchema: z.ZodType< - SyncReconcileResponseTableNameSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseTableNameSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseTableNameSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTableNameSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseTableNameSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTableName1$inboundSchema: z.ZodType< - SyncReconcileResponseTableName1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseTableNameSecretRef1$inboundSchema - ), -}); - -export function syncReconcileResponseTableName1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseTableName1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTableName1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTableNameUnion1$inboundSchema: z.ZodType< - SyncReconcileResponseTableNameUnion1, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseTableName1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseTableNameUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTableNameUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTableNameUnion1' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeKv1$inboundSchema: z.ZodEnum = z - .enum(TargetTypeKv1); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsDynamodb$inboundSchema: - z.ZodType = z.object({ - endpointUrl: z.nullable(z.any()).optional(), - region: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseRegion$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - tableName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseTableName1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("dynamodb"), - type: TargetTypeKv1$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsDynamodbFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsDynamodb, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsDynamodb$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsDynamodb' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseExternalBindingsUnion3$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseExternalBindingsDynamodb$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsFirestore$inboundSchema), - z.lazy(() => - SyncReconcileResponseExternalBindingsTablestorage$inboundSchema - ), - z.lazy(() => SyncReconcileResponseExternalBindingsRedis$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsLocalKv$inboundSchema), - ]); - -export function syncReconcileResponseExternalBindingsUnion3FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsUnion3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsUnion3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsUnion3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseQueuePathSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseQueuePathSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseQueuePathSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseQueuePathSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseQueuePathSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseQueuePathSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseQueuePath$inboundSchema: z.ZodType< - SyncReconcileResponseQueuePath, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseQueuePathSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseQueuePathFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseQueuePath$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseQueuePath' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseQueuePathUnion$inboundSchema: z.ZodType< - SyncReconcileResponseQueuePathUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseQueuePath$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseQueuePathUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseQueuePathUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseQueuePathUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeQueue4$inboundSchema: z.ZodEnum< - typeof TargetTypeQueue4 -> = z.enum(TargetTypeQueue4); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsLocalQueue$inboundSchema: - z.ZodType = z - .object({ - queuePath: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseQueuePath$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("local-queue"), - type: TargetTypeQueue4$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsLocalQueueFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsLocalQueue, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsLocalQueue$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsLocalQueue' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseNamespaceSecretRef1$inboundSchema: z.ZodType< - SyncReconcileResponseNamespaceSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseNamespaceSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseNamespaceSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseNamespaceSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseNamespaceSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseNamespace1$inboundSchema: z.ZodType< - SyncReconcileResponseNamespace1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseNamespaceSecretRef1$inboundSchema - ), -}); - -export function syncReconcileResponseNamespace1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseNamespace1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseNamespace1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseNamespaceUnion1$inboundSchema: z.ZodType< - SyncReconcileResponseNamespaceUnion1, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseNamespace1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseNamespaceUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseNamespaceUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseNamespaceUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseQueueNameSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseQueueNameSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseQueueNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseQueueNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseQueueNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseQueueNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseQueueName$inboundSchema: z.ZodType< - SyncReconcileResponseQueueName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseQueueNameSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseQueueNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseQueueName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseQueueName' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseQueueNameUnion$inboundSchema: z.ZodType< - SyncReconcileResponseQueueNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseQueueName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseQueueNameUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseQueueNameUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseQueueNameUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeQueue3$inboundSchema: z.ZodEnum< - typeof TargetTypeQueue3 -> = z.enum(TargetTypeQueue3); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsServicebus$inboundSchema: - z.ZodType = z - .object({ - namespace: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseNamespace1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - queueName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseQueueName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("servicebus"), - type: TargetTypeQueue3$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsServicebusFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsServicebus, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsServicebus$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsServicebus' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseSubscriptionSecretRef$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseSubscriptionSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseSubscriptionSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseSubscriptionSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseSubscriptionSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseSubscription$inboundSchema: z.ZodType< - SyncReconcileResponseSubscription, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseSubscriptionSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseSubscriptionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseSubscription$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseSubscription' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseSubscriptionUnion$inboundSchema: z.ZodType< - SyncReconcileResponseSubscriptionUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseSubscription$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseSubscriptionUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseSubscriptionUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseSubscriptionUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTopicSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseTopicSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseTopicSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseTopicSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTopicSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTopic$inboundSchema: z.ZodType< - SyncReconcileResponseTopic, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncReconcileResponseTopicSecretRef$inboundSchema), -}); - -export function syncReconcileResponseTopicFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseTopic$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTopic' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTopicUnion$inboundSchema: z.ZodType< - SyncReconcileResponseTopicUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseTopic$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseTopicUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseTopicUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTopicUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeQueue2$inboundSchema: z.ZodEnum< - typeof TargetTypeQueue2 -> = z.enum(TargetTypeQueue2); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsPubsub$inboundSchema: - z.ZodType = z.object({ - subscription: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseSubscription$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - topic: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseTopic$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("pubsub"), - type: TargetTypeQueue2$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsPubsubFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsPubsub, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsPubsub$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsPubsub' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseQueueUrlSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseQueueUrlSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseQueueUrlSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseQueueUrlSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseQueueUrlSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseQueueUrl$inboundSchema: z.ZodType< - SyncReconcileResponseQueueUrl, - unknown -> = z.object({ - secretRef: z.lazy(() => SyncReconcileResponseQueueUrlSecretRef$inboundSchema), -}); - -export function syncReconcileResponseQueueUrlFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseQueueUrl$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseQueueUrl' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseQueueUrlUnion$inboundSchema: z.ZodType< - SyncReconcileResponseQueueUrlUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseQueueUrl$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseQueueUrlUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseQueueUrlUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseQueueUrlUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeQueue1$inboundSchema: z.ZodEnum< - typeof TargetTypeQueue1 -> = z.enum(TargetTypeQueue1); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsSqs$inboundSchema: z.ZodType< - SyncReconcileResponseExternalBindingsSqs, - unknown -> = z.object({ - queueUrl: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseQueueUrl$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("sqs"), - type: TargetTypeQueue1$inboundSchema, -}); - -export function syncReconcileResponseExternalBindingsSqsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsSqs, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsSqs$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsSqs' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseExternalBindingsUnion2$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseExternalBindingsSqs$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsPubsub$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsServicebus$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsLocalQueue$inboundSchema), - ]); - -export function syncReconcileResponseExternalBindingsUnion2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsUnion2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsUnion2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStoragePathSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseStoragePathSecretRef, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseStoragePathSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseStoragePathSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStoragePathSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseStoragePathSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStoragePath$inboundSchema: z.ZodType< - SyncReconcileResponseStoragePath, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseStoragePathSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseStoragePathFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseStoragePath$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseStoragePath' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStoragePathUnion$inboundSchema: z.ZodType< - SyncReconcileResponseStoragePathUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseStoragePath$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseStoragePathUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStoragePathUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseStoragePathUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeStorage4$inboundSchema: z.ZodEnum< - typeof TargetTypeStorage4 -> = z.enum(TargetTypeStorage4); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsLocalStorage$inboundSchema: - z.ZodType = z - .object({ - storagePath: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseStoragePath$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("local-storage"), - type: TargetTypeStorage4$inboundSchema, - }); - -export function syncReconcileResponseExternalBindingsLocalStorageFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsLocalStorage, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsLocalStorage$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsLocalStorage' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseBucketNameSecretRef2$inboundSchema: z.ZodType< - SyncReconcileResponseBucketNameSecretRef2, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseBucketNameSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseBucketNameSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseBucketNameSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseBucketNameSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseBucketName2$inboundSchema: z.ZodType< - SyncReconcileResponseBucketName2, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseBucketNameSecretRef2$inboundSchema - ), -}); - -export function syncReconcileResponseBucketName2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseBucketName2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseBucketName2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseBucketNameUnion2$inboundSchema: z.ZodType< - SyncReconcileResponseBucketNameUnion2, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseBucketName2$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseBucketNameUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseBucketNameUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseBucketNameUnion2' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeStorage3$inboundSchema: z.ZodEnum< - typeof TargetTypeStorage3 -> = z.enum(TargetTypeStorage3); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsGcs$inboundSchema: z.ZodType< - SyncReconcileResponseExternalBindingsGcs, - unknown -> = z.object({ - bucketName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseBucketName2$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("gcs"), - type: TargetTypeStorage3$inboundSchema, -}); - -export function syncReconcileResponseExternalBindingsGcsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsGcs, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsGcs$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsGcs' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseAccountNameSecretRef1$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseAccountNameSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseAccountNameSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseAccountNameSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseAccountNameSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseAccountName1$inboundSchema: z.ZodType< - SyncReconcileResponseAccountName1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseAccountNameSecretRef1$inboundSchema - ), -}); - -export function syncReconcileResponseAccountName1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseAccountName1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseAccountName1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseAccountNameUnion1$inboundSchema: z.ZodType< - SyncReconcileResponseAccountNameUnion1, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseAccountName1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseAccountNameUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseAccountNameUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseAccountNameUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseContainerNameSecretRef$inboundSchema: - z.ZodType = z.object({ - key: z.string(), - name: z.string(), - }); - -export function syncReconcileResponseContainerNameSecretRefFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseContainerNameSecretRef, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseContainerNameSecretRef$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseContainerNameSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseContainerName$inboundSchema: z.ZodType< - SyncReconcileResponseContainerName, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseContainerNameSecretRef$inboundSchema - ), -}); - -export function syncReconcileResponseContainerNameFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseContainerName$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseContainerName' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseContainerNameUnion$inboundSchema: z.ZodType< - SyncReconcileResponseContainerNameUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseContainerName$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseContainerNameUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseContainerNameUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseContainerNameUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseContainerNameUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeStorage2$inboundSchema: z.ZodEnum< - typeof TargetTypeStorage2 -> = z.enum(TargetTypeStorage2); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsBlob$inboundSchema: z.ZodType< - SyncReconcileResponseExternalBindingsBlob, - unknown -> = z.object({ - accountName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseAccountName1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - containerName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseContainerName$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("blob"), - type: TargetTypeStorage2$inboundSchema, -}); - -export function syncReconcileResponseExternalBindingsBlobFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsBlob, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsBlob$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsBlob' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseBucketNameSecretRef1$inboundSchema: z.ZodType< - SyncReconcileResponseBucketNameSecretRef1, - unknown -> = z.object({ - key: z.string(), - name: z.string(), -}); - -export function syncReconcileResponseBucketNameSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseBucketNameSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseBucketNameSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseBucketNameSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseBucketName1$inboundSchema: z.ZodType< - SyncReconcileResponseBucketName1, - unknown -> = z.object({ - secretRef: z.lazy(() => - SyncReconcileResponseBucketNameSecretRef1$inboundSchema - ), -}); - -export function syncReconcileResponseBucketName1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseBucketName1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseBucketName1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseBucketNameUnion1$inboundSchema: z.ZodType< - SyncReconcileResponseBucketNameUnion1, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseBucketName1$inboundSchema), - z.any(), - z.string(), -]); - -export function syncReconcileResponseBucketNameUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseBucketNameUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseBucketNameUnion1' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeStorage1$inboundSchema: z.ZodEnum< - typeof TargetTypeStorage1 -> = z.enum(TargetTypeStorage1); - -/** @internal */ -export const SyncReconcileResponseExternalBindingsS3$inboundSchema: z.ZodType< - SyncReconcileResponseExternalBindingsS3, - unknown -> = z.object({ - bucketName: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseBucketName1$inboundSchema), - z.any(), - z.string(), - ]), - ).optional(), - service: z.literal("s3"), - type: TargetTypeStorage1$inboundSchema, -}); - -export function syncReconcileResponseExternalBindingsS3FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsS3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsS3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsS3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseExternalBindingsUnion1$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseExternalBindingsS3$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsBlob$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsGcs$inboundSchema), - z.lazy(() => - SyncReconcileResponseExternalBindingsLocalStorage$inboundSchema - ), - ]); - -export function syncReconcileResponseExternalBindingsUnion1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsUnion1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsUnion1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseExternalBindingsUnion6$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => - SyncReconcileResponseExternalBindingsContainerAppsEnvironment$inboundSchema - ), - z.union([ - z.lazy(() => SyncReconcileResponseExternalBindingsS3$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsBlob$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsGcs$inboundSchema), - z.lazy(() => - SyncReconcileResponseExternalBindingsLocalStorage$inboundSchema - ), - ]), - z.union([ - z.lazy(() => SyncReconcileResponseExternalBindingsSqs$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsPubsub$inboundSchema), - z.lazy(() => - SyncReconcileResponseExternalBindingsServicebus$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsLocalQueue$inboundSchema - ), - ]), - z.union([ - z.lazy(() => SyncReconcileResponseExternalBindingsDynamodb$inboundSchema), - z.lazy(() => - SyncReconcileResponseExternalBindingsFirestore$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsTablestorage$inboundSchema - ), - z.lazy(() => SyncReconcileResponseExternalBindingsRedis$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsLocalKv$inboundSchema), - ]), - z.union([ - z.lazy(() => SyncReconcileResponseExternalBindingsEcr$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsAcr$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsGar$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsLocal$inboundSchema), - ]), - z.union([ - z.lazy(() => - SyncReconcileResponseExternalBindingsParameterStore$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsSecretManager$inboundSchema - ), - z.lazy(() => SyncReconcileResponseExternalBindingsKeyVault$inboundSchema), - z.lazy(() => - SyncReconcileResponseExternalBindingsKubernetesSecret$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsLocalVault$inboundSchema - ), - ]), - ]); - -export function syncReconcileResponseExternalBindingsUnion6FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseExternalBindingsUnion6, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExternalBindingsUnion6$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseExternalBindingsUnion6' from JSON`, - ); -} - -/** @internal */ -export const TargetPlatformKubernetes$inboundSchema: z.ZodEnum< - typeof TargetPlatformKubernetes -> = z.enum(TargetPlatformKubernetes); - -/** @internal */ -export const SyncReconcileResponseManagementConfigKubernetes$inboundSchema: - z.ZodType = z - .object({ - platform: TargetPlatformKubernetes$inboundSchema, - }); - -export function syncReconcileResponseManagementConfigKubernetesFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseManagementConfigKubernetes, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseManagementConfigKubernetes$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseManagementConfigKubernetes' from JSON`, - ); -} - -/** @internal */ -export const TargetPlatformAzure$inboundSchema: z.ZodEnum< - typeof TargetPlatformAzure -> = z.enum(TargetPlatformAzure); - -/** @internal */ -export const SyncReconcileResponseManagementConfigAzure$inboundSchema: - z.ZodType = z.object({ - managingTenantId: z.string(), - oidcIssuer: z.string(), - oidcSubject: z.string(), - platform: TargetPlatformAzure$inboundSchema, - }); - -export function syncReconcileResponseManagementConfigAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseManagementConfigAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseManagementConfigAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseManagementConfigAzure' from JSON`, - ); -} - -/** @internal */ -export const TargetPlatformGcp$inboundSchema: z.ZodEnum< - typeof TargetPlatformGcp -> = z.enum(TargetPlatformGcp); - -/** @internal */ -export const SyncReconcileResponseManagementConfigGcp$inboundSchema: z.ZodType< - SyncReconcileResponseManagementConfigGcp, - unknown -> = z.object({ - serviceAccountEmail: z.string(), - platform: TargetPlatformGcp$inboundSchema, -}); - -export function syncReconcileResponseManagementConfigGcpFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseManagementConfigGcp, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseManagementConfigGcp$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseManagementConfigGcp' from JSON`, - ); -} - -/** @internal */ -export const TargetPlatformAws$inboundSchema: z.ZodEnum< - typeof TargetPlatformAws -> = z.enum(TargetPlatformAws); - -/** @internal */ -export const SyncReconcileResponseManagementConfigAws$inboundSchema: z.ZodType< - SyncReconcileResponseManagementConfigAws, - unknown -> = z.object({ - managingRoleArn: z.string(), - platform: TargetPlatformAws$inboundSchema, -}); - -export function syncReconcileResponseManagementConfigAwsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseManagementConfigAws, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseManagementConfigAws$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseManagementConfigAws' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseManagementConfigUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseManagementConfigAzure$inboundSchema), - z.lazy(() => SyncReconcileResponseManagementConfigAws$inboundSchema), - z.lazy(() => SyncReconcileResponseManagementConfigGcp$inboundSchema), - z.lazy(() => SyncReconcileResponseManagementConfigKubernetes$inboundSchema), - z.any(), - ]); - -export function syncReconcileResponseManagementConfigUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseManagementConfigUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseManagementConfigUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseManagementConfigUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseMonitoring$inboundSchema: z.ZodType< - SyncReconcileResponseMonitoring, - unknown -> = z.object({ - logsAuthHeader: z.string(), - logsEndpoint: z.string(), - metricsAuthHeader: z.nullable(z.string()).optional(), - metricsEndpoint: z.nullable(z.string()).optional(), - resourceAttributes: z.record(z.string(), z.string()).optional(), -}); - -export function syncReconcileResponseMonitoringFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseMonitoring$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseMonitoring' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseMonitoringUnion$inboundSchema: z.ZodType< - SyncReconcileResponseMonitoringUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseMonitoring$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseMonitoringUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseMonitoringUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseMonitoringUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePoolsAutoscale$inboundSchema: z.ZodType< - SyncReconcileResponsePoolsAutoscale, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - max: z.int(), - min: z.int(), - mode: z.literal("autoscale"), -}); - -export function syncReconcileResponsePoolsAutoscaleFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePoolsAutoscale' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePoolsFixed$inboundSchema: z.ZodType< - SyncReconcileResponsePoolsFixed, - unknown -> = z.object({ - machine: z.nullable(z.string()).optional(), - machines: z.int(), - mode: z.literal("fixed"), -}); - -export function syncReconcileResponsePoolsFixedFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePoolsFixed' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponsePoolsUnion$inboundSchema: z.ZodType< - SyncReconcileResponsePoolsUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponsePoolsFixed$inboundSchema), - z.lazy(() => SyncReconcileResponsePoolsAutoscale$inboundSchema), -]); - -export function syncReconcileResponsePoolsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponsePoolsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCompute$inboundSchema: z.ZodType< - SyncReconcileResponseCompute, - unknown -> = z.object({ - pools: z.record( - z.string(), - z.union([ - z.lazy(() => SyncReconcileResponsePoolsFixed$inboundSchema), - z.lazy(() => SyncReconcileResponsePoolsAutoscale$inboundSchema), - ]), - ).optional(), -}); - -export function syncReconcileResponseComputeFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseCompute$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCompute' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseComputeUnion$inboundSchema: z.ZodType< - SyncReconcileResponseComputeUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseCompute$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseComputeUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseComputeUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDeploymentModel$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseDeploymentModel -> = z.enum(SyncReconcileResponseDeploymentModel); - -/** @internal */ -export const SyncReconcileResponseAwsStackSettings$inboundSchema: z.ZodType< - SyncReconcileResponseAwsStackSettings, - unknown -> = z.object({ - certificateArn: z.string(), -}); - -export function syncReconcileResponseAwsStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseAwsStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseAwsStackSettings' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStackSettingsAwsUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseAwsStackSettings$inboundSchema), - z.any(), - ]); - -export function syncReconcileResponseStackSettingsAwsUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseStackSettingsAwsUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStackSettingsAwsUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseStackSettingsAwsUnion' from JSON`, - ); -} - -/** @internal */ -export const AzureTargetStackSettings$inboundSchema: z.ZodType< - AzureTargetStackSettings, - unknown -> = z.object({ - keyVaultCertificateId: z.string(), - keyVaultResourceId: z.nullable(z.string()).optional(), -}); - -export function azureTargetStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => AzureTargetStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'AzureTargetStackSettings' from JSON`, - ); -} - -/** @internal */ -export const TargetStackSettingsAzureUnion$inboundSchema: z.ZodType< - TargetStackSettingsAzureUnion, - unknown -> = z.union([z.lazy(() => AzureTargetStackSettings$inboundSchema), z.any()]); - -export function targetStackSettingsAzureUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => TargetStackSettingsAzureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'TargetStackSettingsAzureUnion' from JSON`, - ); -} - -/** @internal */ -export const GcpTargetStackSettings$inboundSchema: z.ZodType< - GcpTargetStackSettings, - unknown -> = z.object({ - certificateName: z.string(), -}); - -export function gcpTargetStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => GcpTargetStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'GcpTargetStackSettings' from JSON`, - ); -} - -/** @internal */ -export const TargetStackSettingsGcpUnion$inboundSchema: z.ZodType< - TargetStackSettingsGcpUnion, - unknown -> = z.union([z.lazy(() => GcpTargetStackSettings$inboundSchema), z.any()]); - -export function targetStackSettingsGcpUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => TargetStackSettingsGcpUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'TargetStackSettingsGcpUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTlsSecretRef$inboundSchema: z.ZodType< - SyncReconcileResponseTlsSecretRef, - unknown -> = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), -}); - -export function syncReconcileResponseTlsSecretRefFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseTlsSecretRef' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDomainsKubernetes$inboundSchema: z.ZodType< - SyncReconcileResponseDomainsKubernetes, - unknown -> = z.object({ - tlsSecretRef: z.lazy(() => SyncReconcileResponseTlsSecretRef$inboundSchema), -}); - -export function syncReconcileResponseDomainsKubernetesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDomainsKubernetes' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDomainsKubernetesUnion$inboundSchema: - z.ZodType = z.union([ - z.lazy(() => SyncReconcileResponseDomainsKubernetes$inboundSchema), - z.any(), - ]); - -export function syncReconcileResponseDomainsKubernetesUnionFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseDomainsKubernetesUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDomainsKubernetesUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseDomainsKubernetesUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDomainsCertificate$inboundSchema: z.ZodType< - SyncReconcileResponseDomainsCertificate, - unknown -> = z.object({ - aws: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseAwsStackSettings$inboundSchema), - z.any(), - ]), - ).optional(), - azure: z.nullable( - z.union([z.lazy(() => AzureTargetStackSettings$inboundSchema), z.any()]), - ).optional(), - gcp: z.nullable( - z.union([z.lazy(() => GcpTargetStackSettings$inboundSchema), z.any()]), - ).optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseDomainsKubernetes$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileResponseDomainsCertificateFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseDomainsCertificate, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseDomainsCertificate$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseDomainsCertificate' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCustomDomains$inboundSchema: z.ZodType< - SyncReconcileResponseCustomDomains, - unknown -> = z.object({ - certificate: z.lazy(() => - SyncReconcileResponseDomainsCertificate$inboundSchema - ), - domain: z.string(), -}); - -export function syncReconcileResponseCustomDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCustomDomains' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDomains$inboundSchema: z.ZodType< - SyncReconcileResponseDomains, - unknown -> = z.object({ - customDomains: z.nullable( - z.record( - z.string(), - z.lazy(() => SyncReconcileResponseCustomDomains$inboundSchema), - ), - ).optional(), -}); - -export function syncReconcileResponseDomainsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseDomains$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDomains' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseDomainsUnion$inboundSchema: z.ZodType< - SyncReconcileResponseDomainsUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseDomains$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseDomainsUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseDomainsUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseStackSettingsExternalBindings$inboundSchema: - z.ZodType = z - .object({}); - -export function syncReconcileResponseStackSettingsExternalBindingsFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseStackSettingsExternalBindings, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStackSettingsExternalBindings$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseStackSettingsExternalBindings' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseHeartbeats$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseHeartbeats -> = z.enum(SyncReconcileResponseHeartbeats); - -/** @internal */ -export const SyncReconcileResponseCloud$inboundSchema: z.ZodType< - SyncReconcileResponseCloud, - unknown -> = z.object({ - accountId: z.nullable(z.string()).optional(), - clusterId: z.nullable(z.string()).optional(), - clusterName: z.nullable(z.string()).optional(), - projectId: z.nullable(z.string()).optional(), - region: z.nullable(z.string()).optional(), - resourceGroup: z.nullable(z.string()).optional(), - subscriptionId: z.nullable(z.string()).optional(), -}); - -export function syncReconcileResponseCloudFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseCloud$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCloud' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCloudUnion$inboundSchema: z.ZodType< - SyncReconcileResponseCloudUnion, - unknown -> = z.union([z.lazy(() => SyncReconcileResponseCloud$inboundSchema), z.any()]); - -export function syncReconcileResponseCloudUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCloudUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseOwnership$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseOwnership -> = z.enum(SyncReconcileResponseOwnership); - -/** @internal */ -export const SyncReconcileResponseCluster$inboundSchema: z.ZodType< - SyncReconcileResponseCluster, - unknown -> = z.object({ - cloud: z.nullable( - z.union([z.lazy(() => SyncReconcileResponseCloud$inboundSchema), z.any()]), - ).optional(), - namespace: z.nullable(z.string()).optional(), - ownership: SyncReconcileResponseOwnership$inboundSchema, -}); - -export function syncReconcileResponseClusterFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseCluster$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCluster' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseClusterUnion$inboundSchema: z.ZodType< - SyncReconcileResponseClusterUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseCluster$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseClusterUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseClusterUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateNone2$inboundSchema: z.ZodType< - SyncReconcileResponseCertificateNone2, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function syncReconcileResponseCertificateNone2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateNone2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCertificateNone2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateManagedTLSSecret2$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function syncReconcileResponseCertificateManagedTLSSecret2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCertificateManagedTLSSecret2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateManagedTLSSecret2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCertificateManagedTLSSecret2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateAwsAcmArn2$inboundSchema: - z.ZodType = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), - }); - -export function syncReconcileResponseCertificateAwsAcmArn2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCertificateAwsAcmArn2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateAwsAcmArn2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCertificateAwsAcmArn2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateManagedAcmImport2$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function syncReconcileResponseCertificateManagedAcmImport2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCertificateManagedAcmImport2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateManagedAcmImport2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCertificateManagedAcmImport2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateTLSSecretRef2$inboundSchema: - z.ZodType = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function syncReconcileResponseCertificateTLSSecretRef2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCertificateTLSSecretRef2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateTLSSecretRef2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCertificateTLSSecretRef2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateUnion2$inboundSchema: z.ZodType< - SyncReconcileResponseCertificateUnion2, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => SyncReconcileResponseCertificateManagedAcmImport2$inboundSchema), - z.lazy(() => SyncReconcileResponseCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => SyncReconcileResponseCertificateManagedTLSSecret2$inboundSchema), - z.lazy(() => SyncReconcileResponseCertificateNone2$inboundSchema), -]); - -export function syncReconcileResponseCertificateUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCertificateUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseModeCustom$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseModeCustom -> = z.enum(SyncReconcileResponseModeCustom); - -/** @internal */ -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: - z.ZodEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 - > = z.enum( - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4, - ); - -/** @internal */ -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: - z.ZodType< - SyncReconcileResponseProviderAzureApplicationGatewayForContainers4, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, - }); - -export function syncReconcileResponseProviderAzureApplicationGatewayForContainers4FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseProviderAzureApplicationGatewayForContainers4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderAzureApplicationGatewayForContainers4' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderGkeGatewayEnum4$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseProviderGkeGatewayEnum4, - ); - -/** @internal */ -export const SyncReconcileResponseProviderGkeGateway4$inboundSchema: z.ZodType< - SyncReconcileResponseProviderGkeGateway4, - unknown -> = z.object({ - provider: SyncReconcileResponseProviderGkeGatewayEnum4$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function syncReconcileResponseProviderGkeGateway4FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseProviderGkeGateway4, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderGkeGateway4$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseProviderGkeGateway4' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum4 -> = z.enum(SyncReconcileResponseProviderAwsAlbEnum4); - -/** @internal */ -export const SyncReconcileResponseProviderAwsAlb4$inboundSchema: z.ZodType< - SyncReconcileResponseProviderAwsAlb4, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncReconcileResponseProviderAwsAlbEnum4$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function syncReconcileResponseProviderAwsAlb4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderAwsAlb4' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderUnion4$inboundSchema: z.ZodType< - SyncReconcileResponseProviderUnion4, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => SyncReconcileResponseProviderGkeGateway4$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseProviderUnion4FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderUnion4' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRouteGateway2$inboundSchema: z.ZodType< - SyncReconcileResponseRouteGateway2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseProviderAwsAlb4$inboundSchema), - z.lazy(() => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers4$inboundSchema - ), - z.lazy(() => SyncReconcileResponseProviderGkeGateway4$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function syncReconcileResponseRouteGateway2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRouteGateway2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: - z.ZodEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 - > = z.enum( - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3, - ); - -/** @internal */ -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainers3$inboundSchema: - z.ZodType< - SyncReconcileResponseProviderAzureApplicationGatewayForContainers3, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema, - }); - -export function syncReconcileResponseProviderAzureApplicationGatewayForContainers3FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseProviderAzureApplicationGatewayForContainers3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderAzureApplicationGatewayForContainers3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderGkeGatewayEnum3$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseProviderGkeGatewayEnum3, - ); - -/** @internal */ -export const SyncReconcileResponseProviderGkeGateway3$inboundSchema: z.ZodType< - SyncReconcileResponseProviderGkeGateway3, - unknown -> = z.object({ - provider: SyncReconcileResponseProviderGkeGatewayEnum3$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function syncReconcileResponseProviderGkeGateway3FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseProviderGkeGateway3, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderGkeGateway3$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseProviderGkeGateway3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderAwsAlbEnum3$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum3 -> = z.enum(SyncReconcileResponseProviderAwsAlbEnum3); - -/** @internal */ -export const SyncReconcileResponseProviderAwsAlb3$inboundSchema: z.ZodType< - SyncReconcileResponseProviderAwsAlb3, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncReconcileResponseProviderAwsAlbEnum3$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function syncReconcileResponseProviderAwsAlb3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderAwsAlb3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderAwsAlb3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderUnion3$inboundSchema: z.ZodType< - SyncReconcileResponseProviderUnion3, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseProviderAwsAlb3$inboundSchema), - z.lazy(() => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => SyncReconcileResponseProviderGkeGateway3$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseProviderUnion3FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderUnion3$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderUnion3' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRouteIngress2$inboundSchema: z.ZodType< - SyncReconcileResponseRouteIngress2, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseProviderAwsAlb3$inboundSchema), - z.lazy(() => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers3$inboundSchema - ), - z.lazy(() => SyncReconcileResponseProviderGkeGateway3$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function syncReconcileResponseRouteIngress2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRouteIngress2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRouteIngress2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRouteUnion2$inboundSchema: z.ZodType< - SyncReconcileResponseRouteUnion2, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseRouteIngress2$inboundSchema), - z.lazy(() => SyncReconcileResponseRouteGateway2$inboundSchema), -]); - -export function syncReconcileResponseRouteUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseRouteUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRouteUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseExposureCustom$inboundSchema: z.ZodType< - SyncReconcileResponseExposureCustom, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => SyncReconcileResponseCertificateTLSSecretRef2$inboundSchema), - z.lazy(() => - SyncReconcileResponseCertificateManagedAcmImport2$inboundSchema - ), - z.lazy(() => SyncReconcileResponseCertificateAwsAcmArn2$inboundSchema), - z.lazy(() => - SyncReconcileResponseCertificateManagedTLSSecret2$inboundSchema - ), - z.lazy(() => SyncReconcileResponseCertificateNone2$inboundSchema), - ]), - domain: z.string(), - mode: SyncReconcileResponseModeCustom$inboundSchema, - route: z.union([ - z.lazy(() => SyncReconcileResponseRouteIngress2$inboundSchema), - z.lazy(() => SyncReconcileResponseRouteGateway2$inboundSchema), - ]), -}); - -export function syncReconcileResponseExposureCustomFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExposureCustom$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseExposureCustom' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateNone1$inboundSchema: z.ZodType< - SyncReconcileResponseCertificateNone1, - unknown -> = z.object({ - mode: z.literal("none"), -}); - -export function syncReconcileResponseCertificateNone1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateNone1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCertificateNone1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateManagedTLSSecret1$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedTlsSecret"), - secretNameTemplate: z.string(), - }); - -export function syncReconcileResponseCertificateManagedTLSSecret1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCertificateManagedTLSSecret1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateManagedTLSSecret1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCertificateManagedTLSSecret1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateAwsAcmArn1$inboundSchema: - z.ZodType = z.object({ - certificateArn: z.string(), - mode: z.literal("awsAcmArn"), - }); - -export function syncReconcileResponseCertificateAwsAcmArn1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCertificateAwsAcmArn1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateAwsAcmArn1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCertificateAwsAcmArn1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateManagedAcmImport1$inboundSchema: - z.ZodType = z - .object({ - mode: z.literal("managedAcmImport"), - region: z.nullable(z.string()).optional(), - tags: z.record(z.string(), z.string()).optional(), - }); - -export function syncReconcileResponseCertificateManagedAcmImport1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCertificateManagedAcmImport1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateManagedAcmImport1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCertificateManagedAcmImport1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateTLSSecretRef1$inboundSchema: - z.ZodType = z.object({ - namespace: z.nullable(z.string()).optional(), - secretName: z.string(), - mode: z.literal("tlsSecretRef"), - }); - -export function syncReconcileResponseCertificateTLSSecretRef1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseCertificateTLSSecretRef1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateTLSSecretRef1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseCertificateTLSSecretRef1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseCertificateUnion1$inboundSchema: z.ZodType< - SyncReconcileResponseCertificateUnion1, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => SyncReconcileResponseCertificateManagedAcmImport1$inboundSchema), - z.lazy(() => SyncReconcileResponseCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => SyncReconcileResponseCertificateManagedTLSSecret1$inboundSchema), - z.lazy(() => SyncReconcileResponseCertificateNone1$inboundSchema), -]); - -export function syncReconcileResponseCertificateUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseCertificateUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseCertificateUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseModeGenerated$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseModeGenerated -> = z.enum(SyncReconcileResponseModeGenerated); - -/** @internal */ -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema: - z.ZodEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2 - > = z.enum( - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2, - ); - -/** @internal */ -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainers2$inboundSchema: - z.ZodType< - SyncReconcileResponseProviderAzureApplicationGatewayForContainers2, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum2$inboundSchema, - }); - -export function syncReconcileResponseProviderAzureApplicationGatewayForContainers2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseProviderAzureApplicationGatewayForContainers2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderAzureApplicationGatewayForContainers2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderGkeGatewayEnum2$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseProviderGkeGatewayEnum2, - ); - -/** @internal */ -export const SyncReconcileResponseProviderGkeGateway2$inboundSchema: z.ZodType< - SyncReconcileResponseProviderGkeGateway2, - unknown -> = z.object({ - provider: SyncReconcileResponseProviderGkeGatewayEnum2$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function syncReconcileResponseProviderGkeGateway2FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseProviderGkeGateway2, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderGkeGateway2$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseProviderGkeGateway2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderAwsAlbEnum2$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum2 -> = z.enum(SyncReconcileResponseProviderAwsAlbEnum2); - -/** @internal */ -export const SyncReconcileResponseProviderAwsAlb2$inboundSchema: z.ZodType< - SyncReconcileResponseProviderAwsAlb2, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncReconcileResponseProviderAwsAlbEnum2$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function syncReconcileResponseProviderAwsAlb2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderAwsAlb2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderAwsAlb2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderUnion2$inboundSchema: z.ZodType< - SyncReconcileResponseProviderUnion2, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseProviderAwsAlb2$inboundSchema), - z.lazy(() => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => SyncReconcileResponseProviderGkeGateway2$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseProviderUnion2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderUnion2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderUnion2' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRouteGateway1$inboundSchema: z.ZodType< - SyncReconcileResponseRouteGateway1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - gatewayClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - listenerPort: z.int(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseProviderAwsAlb2$inboundSchema), - z.lazy(() => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers2$inboundSchema - ), - z.lazy(() => SyncReconcileResponseProviderGkeGateway2$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("gateway"), -}); - -export function syncReconcileResponseRouteGateway1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRouteGateway1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRouteGateway1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema: - z.ZodEnum< - typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1 - > = z.enum( - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1, - ); - -/** @internal */ -export const SyncReconcileResponseProviderAzureApplicationGatewayForContainers1$inboundSchema: - z.ZodType< - SyncReconcileResponseProviderAzureApplicationGatewayForContainers1, - unknown - > = z.object({ - albName: z.nullable(z.string()).optional(), - albNamespace: z.nullable(z.string()).optional(), - frontend: z.string(), - provider: - SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum1$inboundSchema, - }); - -export function syncReconcileResponseProviderAzureApplicationGatewayForContainers1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseProviderAzureApplicationGatewayForContainers1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - .parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderAzureApplicationGatewayForContainers1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderGkeGatewayEnum1$inboundSchema: - z.ZodEnum = z.enum( - SyncReconcileResponseProviderGkeGatewayEnum1, - ); - -/** @internal */ -export const SyncReconcileResponseProviderGkeGateway1$inboundSchema: z.ZodType< - SyncReconcileResponseProviderGkeGateway1, - unknown -> = z.object({ - provider: SyncReconcileResponseProviderGkeGatewayEnum1$inboundSchema, - staticAddressName: z.nullable(z.string()).optional(), -}); - -export function syncReconcileResponseProviderGkeGateway1FromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseProviderGkeGateway1, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderGkeGateway1$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseProviderGkeGateway1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderAwsAlbEnum1$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseProviderAwsAlbEnum1 -> = z.enum(SyncReconcileResponseProviderAwsAlbEnum1); - -/** @internal */ -export const SyncReconcileResponseProviderAwsAlb1$inboundSchema: z.ZodType< - SyncReconcileResponseProviderAwsAlb1, - unknown -> = z.object({ - ipAddressType: z.nullable(z.string()).optional(), - provider: SyncReconcileResponseProviderAwsAlbEnum1$inboundSchema, - scheme: z.string(), - subnetIds: z.array(z.string()).optional(), - targetType: z.string(), -}); - -export function syncReconcileResponseProviderAwsAlb1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderAwsAlb1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderAwsAlb1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseProviderUnion1$inboundSchema: z.ZodType< - SyncReconcileResponseProviderUnion1, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseProviderAwsAlb1$inboundSchema), - z.lazy(() => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => SyncReconcileResponseProviderGkeGateway1$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseProviderUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseProviderUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseProviderUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRouteIngress1$inboundSchema: z.ZodType< - SyncReconcileResponseRouteIngress1, - unknown -> = z.object({ - annotations: z.record(z.string(), z.string()).optional(), - controller: z.nullable(z.string()).optional(), - ingressClassName: z.string(), - labels: z.record(z.string(), z.string()).optional(), - provider: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseProviderAwsAlb1$inboundSchema), - z.lazy(() => - SyncReconcileResponseProviderAzureApplicationGatewayForContainers1$inboundSchema - ), - z.lazy(() => SyncReconcileResponseProviderGkeGateway1$inboundSchema), - z.any(), - ]), - ).optional(), - routeApi: z.literal("ingress"), -}); - -export function syncReconcileResponseRouteIngress1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseRouteIngress1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRouteIngress1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseRouteUnion1$inboundSchema: z.ZodType< - SyncReconcileResponseRouteUnion1, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseRouteIngress1$inboundSchema), - z.lazy(() => SyncReconcileResponseRouteGateway1$inboundSchema), -]); - -export function syncReconcileResponseRouteUnion1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseRouteUnion1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseRouteUnion1' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseExposureGenerated$inboundSchema: z.ZodType< - SyncReconcileResponseExposureGenerated, - unknown -> = z.object({ - certificate: z.union([ - z.lazy(() => SyncReconcileResponseCertificateTLSSecretRef1$inboundSchema), - z.lazy(() => - SyncReconcileResponseCertificateManagedAcmImport1$inboundSchema - ), - z.lazy(() => SyncReconcileResponseCertificateAwsAcmArn1$inboundSchema), - z.lazy(() => - SyncReconcileResponseCertificateManagedTLSSecret1$inboundSchema - ), - z.lazy(() => SyncReconcileResponseCertificateNone1$inboundSchema), - ]), - mode: SyncReconcileResponseModeGenerated$inboundSchema, - route: z.union([ - z.lazy(() => SyncReconcileResponseRouteIngress1$inboundSchema), - z.lazy(() => SyncReconcileResponseRouteGateway1$inboundSchema), - ]), -}); - -export function syncReconcileResponseExposureGeneratedFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExposureGenerated$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseExposureGenerated' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseModeDisabled$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseModeDisabled -> = z.enum(SyncReconcileResponseModeDisabled); - -/** @internal */ -export const SyncReconcileResponseExposureDisabled$inboundSchema: z.ZodType< - SyncReconcileResponseExposureDisabled, - unknown -> = z.object({ - mode: SyncReconcileResponseModeDisabled$inboundSchema, -}); - -export function syncReconcileResponseExposureDisabledFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExposureDisabled$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseExposureDisabled' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseExposureUnion$inboundSchema: z.ZodType< - SyncReconcileResponseExposureUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseExposureCustom$inboundSchema), - z.lazy(() => SyncReconcileResponseExposureGenerated$inboundSchema), - z.lazy(() => SyncReconcileResponseExposureDisabled$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseExposureUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseExposureUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseExposureUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseKubernetes$inboundSchema: z.ZodType< - SyncReconcileResponseKubernetes, - unknown -> = z.object({ - cluster: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseCluster$inboundSchema), - z.any(), - ]), - ).optional(), - exposure: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseExposureCustom$inboundSchema), - z.lazy(() => SyncReconcileResponseExposureGenerated$inboundSchema), - z.lazy(() => SyncReconcileResponseExposureDisabled$inboundSchema), - z.any(), - ]), - ).optional(), -}); - -export function syncReconcileResponseKubernetesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseKubernetes$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseKubernetes' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseKubernetesUnion$inboundSchema: z.ZodType< - SyncReconcileResponseKubernetesUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseKubernetes$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseKubernetesUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseKubernetesUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseKubernetesUnion' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeByoVnetAzure$inboundSchema: z.ZodEnum< - typeof TargetTypeByoVnetAzure -> = z.enum(TargetTypeByoVnetAzure); - -/** @internal */ -export const SyncReconcileResponseNetworkByoVnetAzure$inboundSchema: z.ZodType< - SyncReconcileResponseNetworkByoVnetAzure, - unknown -> = z.object({ - application_gateway_subnet_name: z.nullable(z.string()).optional(), - private_subnet_name: z.string(), - public_subnet_name: z.string(), - type: TargetTypeByoVnetAzure$inboundSchema, - vnet_resource_id: z.string(), -}).transform((v) => { - return remap$(v, { - "application_gateway_subnet_name": "applicationGatewaySubnetName", - "private_subnet_name": "privateSubnetName", - "public_subnet_name": "publicSubnetName", - "vnet_resource_id": "vnetResourceId", - }); -}); - -export function syncReconcileResponseNetworkByoVnetAzureFromJSON( - jsonString: string, -): SafeParseResult< - SyncReconcileResponseNetworkByoVnetAzure, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseNetworkByoVnetAzure$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'SyncReconcileResponseNetworkByoVnetAzure' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeByoVpcGcp$inboundSchema: z.ZodEnum< - typeof TargetTypeByoVpcGcp -> = z.enum(TargetTypeByoVpcGcp); - -/** @internal */ -export const SyncReconcileResponseNetworkByoVpcGcp$inboundSchema: z.ZodType< - SyncReconcileResponseNetworkByoVpcGcp, - unknown -> = z.object({ - network_name: z.string(), - region: z.string(), - subnet_name: z.string(), - type: TargetTypeByoVpcGcp$inboundSchema, -}).transform((v) => { - return remap$(v, { - "network_name": "networkName", - "subnet_name": "subnetName", - }); -}); - -export function syncReconcileResponseNetworkByoVpcGcpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseNetworkByoVpcGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseNetworkByoVpcGcp' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeByoVpcAws$inboundSchema: z.ZodEnum< - typeof TargetTypeByoVpcAws -> = z.enum(TargetTypeByoVpcAws); - -/** @internal */ -export const SyncReconcileResponseNetworkByoVpcAws$inboundSchema: z.ZodType< - SyncReconcileResponseNetworkByoVpcAws, - unknown -> = z.object({ - private_subnet_ids: z.array(z.string()), - public_subnet_ids: z.array(z.string()), - security_group_ids: z.array(z.string()).optional(), - type: TargetTypeByoVpcAws$inboundSchema, - vpc_id: z.string(), -}).transform((v) => { - return remap$(v, { - "private_subnet_ids": "privateSubnetIds", - "public_subnet_ids": "publicSubnetIds", - "security_group_ids": "securityGroupIds", - "vpc_id": "vpcId", - }); -}); - -export function syncReconcileResponseNetworkByoVpcAwsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseNetworkByoVpcAws$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseNetworkByoVpcAws' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeCreate$inboundSchema: z.ZodEnum< - typeof TargetTypeCreate -> = z.enum(TargetTypeCreate); - -/** @internal */ -export const SyncReconcileResponseNetworkCreate$inboundSchema: z.ZodType< - SyncReconcileResponseNetworkCreate, - unknown -> = z.object({ - availability_zones: z.int().optional(), - cidr: z.nullable(z.string()).optional(), - type: TargetTypeCreate$inboundSchema, -}).transform((v) => { - return remap$(v, { - "availability_zones": "availabilityZones", - }); -}); - -export function syncReconcileResponseNetworkCreateFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseNetworkCreate$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseNetworkCreate' from JSON`, - ); -} - -/** @internal */ -export const TargetTypeUseDefault$inboundSchema: z.ZodEnum< - typeof TargetTypeUseDefault -> = z.enum(TargetTypeUseDefault); - -/** @internal */ -export const SyncReconcileResponseNetworkUseDefault$inboundSchema: z.ZodType< - SyncReconcileResponseNetworkUseDefault, - unknown -> = z.object({ - type: TargetTypeUseDefault$inboundSchema, -}); - -export function syncReconcileResponseNetworkUseDefaultFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseNetworkUseDefault$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseNetworkUseDefault' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseNetworkUnion$inboundSchema: z.ZodType< - SyncReconcileResponseNetworkUnion, - unknown -> = z.union([ - z.lazy(() => SyncReconcileResponseNetworkByoVpcAws$inboundSchema), - z.lazy(() => SyncReconcileResponseNetworkByoVpcGcp$inboundSchema), - z.lazy(() => SyncReconcileResponseNetworkByoVnetAzure$inboundSchema), - z.lazy(() => SyncReconcileResponseNetworkUseDefault$inboundSchema), - z.lazy(() => SyncReconcileResponseNetworkCreate$inboundSchema), - z.any(), -]); - -export function syncReconcileResponseNetworkUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => SyncReconcileResponseNetworkUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseNetworkUnion' from JSON`, - ); -} - -/** @internal */ -export const SyncReconcileResponseTelemetry$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseTelemetry -> = z.enum(SyncReconcileResponseTelemetry); - -/** @internal */ -export const SyncReconcileResponseUpdates$inboundSchema: z.ZodEnum< - typeof SyncReconcileResponseUpdates -> = z.enum(SyncReconcileResponseUpdates); - -/** @internal */ -export const SyncReconcileResponseStackSettings$inboundSchema: z.ZodType< - SyncReconcileResponseStackSettings, - unknown -> = z.object({ - compute: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseCompute$inboundSchema), - z.any(), - ]), - ).optional(), - deploymentModel: SyncReconcileResponseDeploymentModel$inboundSchema - .optional(), - domains: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseDomains$inboundSchema), - z.any(), - ]), - ).optional(), - externalBindings: z.nullable( - z.lazy(() => - SyncReconcileResponseStackSettingsExternalBindings$inboundSchema - ), - ).optional(), - heartbeats: SyncReconcileResponseHeartbeats$inboundSchema.optional(), - kubernetes: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseKubernetes$inboundSchema), - z.any(), - ]), - ).optional(), - network: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseNetworkByoVpcAws$inboundSchema), - z.lazy(() => SyncReconcileResponseNetworkByoVpcGcp$inboundSchema), - z.lazy(() => SyncReconcileResponseNetworkByoVnetAzure$inboundSchema), - z.lazy(() => SyncReconcileResponseNetworkUseDefault$inboundSchema), - z.lazy(() => SyncReconcileResponseNetworkCreate$inboundSchema), - z.any(), - ]), - ).optional(), - telemetry: SyncReconcileResponseTelemetry$inboundSchema.optional(), - updates: SyncReconcileResponseUpdates$inboundSchema.optional(), -}); - -export function syncReconcileResponseStackSettingsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - SyncReconcileResponseStackSettings$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'SyncReconcileResponseStackSettings' from JSON`, - ); -} - -/** @internal */ -export const TargetConfig$inboundSchema: z.ZodType = z - .object({ - allowFrozenChanges: z.boolean().optional(), - basePlatform: z.nullable( - z.union([SyncReconcileResponseBasePlatformEnum$inboundSchema, z.any()]), - ).optional(), - computeBackend: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseComputeBackendHorizon$inboundSchema), - z.any(), - ]), - ).optional(), - deploymentName: z.nullable(z.string()).optional(), - deploymentToken: z.nullable(z.string()).optional(), - domainMetadata: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseDomainMetadata$inboundSchema), - z.any(), - ]), - ).optional(), - environmentVariables: z.lazy(() => - SyncReconcileResponseEnvironmentVariables$inboundSchema - ), - externalBindings: z.record( - z.string(), - z.union([ - z.lazy(() => - SyncReconcileResponseExternalBindingsContainerAppsEnvironment$inboundSchema - ), - z.union([ - z.lazy(() => SyncReconcileResponseExternalBindingsS3$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsBlob$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsGcs$inboundSchema), - z.lazy(() => - SyncReconcileResponseExternalBindingsLocalStorage$inboundSchema - ), - ]), - z.union([ - z.lazy(() => SyncReconcileResponseExternalBindingsSqs$inboundSchema), - z.lazy(() => - SyncReconcileResponseExternalBindingsPubsub$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsServicebus$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsLocalQueue$inboundSchema - ), - ]), - z.union([ - z.lazy(() => - SyncReconcileResponseExternalBindingsDynamodb$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsFirestore$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsTablestorage$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsRedis$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsLocalKv$inboundSchema - ), - ]), - z.union([ - z.lazy(() => SyncReconcileResponseExternalBindingsEcr$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsAcr$inboundSchema), - z.lazy(() => SyncReconcileResponseExternalBindingsGar$inboundSchema), - z.lazy(() => - SyncReconcileResponseExternalBindingsLocal$inboundSchema - ), - ]), - z.union([ - z.lazy(() => - SyncReconcileResponseExternalBindingsParameterStore$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsSecretManager$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsKeyVault$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsKubernetesSecret$inboundSchema - ), - z.lazy(() => - SyncReconcileResponseExternalBindingsLocalVault$inboundSchema - ), - ]), - ]), - ).optional(), - managementConfig: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseManagementConfigAzure$inboundSchema), - z.lazy(() => SyncReconcileResponseManagementConfigAws$inboundSchema), - z.lazy(() => SyncReconcileResponseManagementConfigGcp$inboundSchema), - z.lazy(() => - SyncReconcileResponseManagementConfigKubernetes$inboundSchema - ), - z.any(), - ]), - ).optional(), - managerUrl: z.nullable(z.string()).optional(), - monitoring: z.nullable( - z.union([ - z.lazy(() => SyncReconcileResponseMonitoring$inboundSchema), - z.any(), - ]), - ).optional(), - nativeImageHost: z.nullable(z.string()).optional(), - publicEndpoints: z.nullable( - z.record(z.string(), z.record(z.string(), z.string())), - ).optional(), - stackSettings: z.lazy(() => - SyncReconcileResponseStackSettings$inboundSchema - ).optional(), - }); - -export function targetConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => TargetConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'TargetConfig' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoTypeStringList$inboundSchema: z.ZodEnum< - typeof ReleaseInfoTypeStringList -> = z.enum(ReleaseInfoTypeStringList); - -/** @internal */ -export const DefaultReleaseInfoStringList$inboundSchema: z.ZodType< - DefaultReleaseInfoStringList, - unknown -> = z.object({ - type: ReleaseInfoTypeStringList$inboundSchema, - value: z.array(z.string()), -}); - -export function defaultReleaseInfoStringListFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DefaultReleaseInfoStringList$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DefaultReleaseInfoStringList' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoTypeBoolean$inboundSchema: z.ZodEnum< - typeof ReleaseInfoTypeBoolean -> = z.enum(ReleaseInfoTypeBoolean); - -/** @internal */ -export const DefaultReleaseInfoBoolean$inboundSchema: z.ZodType< - DefaultReleaseInfoBoolean, - unknown -> = z.object({ - type: ReleaseInfoTypeBoolean$inboundSchema, - value: z.boolean(), -}); - -export function defaultReleaseInfoBooleanFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DefaultReleaseInfoBoolean$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DefaultReleaseInfoBoolean' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoTypeNumber$inboundSchema: z.ZodEnum< - typeof ReleaseInfoTypeNumber -> = z.enum(ReleaseInfoTypeNumber); - -/** @internal */ -export const DefaultReleaseInfoNumber$inboundSchema: z.ZodType< - DefaultReleaseInfoNumber, - unknown -> = z.object({ - type: ReleaseInfoTypeNumber$inboundSchema, - value: z.string(), -}); - -export function defaultReleaseInfoNumberFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DefaultReleaseInfoNumber$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DefaultReleaseInfoNumber' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoTypeString$inboundSchema: z.ZodEnum< - typeof ReleaseInfoTypeString -> = z.enum(ReleaseInfoTypeString); - -/** @internal */ -export const DefaultReleaseInfoString$inboundSchema: z.ZodType< - DefaultReleaseInfoString, - unknown -> = z.object({ - type: ReleaseInfoTypeString$inboundSchema, - value: z.string(), -}); - -export function defaultReleaseInfoStringFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => DefaultReleaseInfoString$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'DefaultReleaseInfoString' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoDefaultUnion$inboundSchema: z.ZodType< - ReleaseInfoDefaultUnion, - unknown -> = z.union([ - z.lazy(() => DefaultReleaseInfoString$inboundSchema), - z.lazy(() => DefaultReleaseInfoNumber$inboundSchema), - z.lazy(() => DefaultReleaseInfoBoolean$inboundSchema), - z.lazy(() => DefaultReleaseInfoStringList$inboundSchema), - z.any(), -]); - -export function releaseInfoDefaultUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoDefaultUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoDefaultUnion' from JSON`, - ); -} - -/** @internal */ -export const TypeReleaseInfoEnvEnum$inboundSchema: z.ZodEnum< - typeof TypeReleaseInfoEnvEnum -> = z.enum(TypeReleaseInfoEnvEnum); - -/** @internal */ -export const ReleaseInfoTypeUnion$inboundSchema: z.ZodType< - ReleaseInfoTypeUnion, - unknown -> = z.union([TypeReleaseInfoEnvEnum$inboundSchema, z.any()]); - -export function releaseInfoTypeUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoTypeUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoTypeUnion' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoEnv$inboundSchema: z.ZodType = - z.object({ - name: z.string(), - targetResources: z.nullable(z.array(z.string())).optional(), - type: z.nullable(z.union([TypeReleaseInfoEnvEnum$inboundSchema, z.any()])) - .optional(), - }); - -export function releaseInfoEnvFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoEnv$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoEnv' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoKind$inboundSchema: z.ZodEnum = - z.enum(ReleaseInfoKind); - -/** @internal */ -export const ReleaseInfoPlatform$inboundSchema: z.ZodEnum< - typeof ReleaseInfoPlatform -> = z.enum(ReleaseInfoPlatform); - -/** @internal */ -export const ReleaseInfoProvidedBy$inboundSchema: z.ZodEnum< - typeof ReleaseInfoProvidedBy -> = z.enum(ReleaseInfoProvidedBy); - -/** @internal */ -export const ValidationReleaseInfo$inboundSchema: z.ZodType< - ValidationReleaseInfo, - unknown -> = z.object({ - format: z.nullable(z.string()).optional(), - max: z.nullable(z.string()).optional(), - maxItems: z.nullable(z.int()).optional(), - maxLength: z.nullable(z.int()).optional(), - min: z.nullable(z.string()).optional(), - minItems: z.nullable(z.int()).optional(), - minLength: z.nullable(z.int()).optional(), - pattern: z.nullable(z.string()).optional(), - values: z.nullable(z.array(z.string())).optional(), -}); - -export function validationReleaseInfoFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ValidationReleaseInfo$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ValidationReleaseInfo' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoValidationUnion$inboundSchema: z.ZodType< - ReleaseInfoValidationUnion, - unknown -> = z.union([z.lazy(() => ValidationReleaseInfo$inboundSchema), z.any()]); - -export function releaseInfoValidationUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoValidationUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoValidationUnion' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoInput$inboundSchema: z.ZodType< - ReleaseInfoInput, - unknown -> = z.object({ - default: z.nullable( - z.union([ - z.lazy(() => DefaultReleaseInfoString$inboundSchema), - z.lazy(() => DefaultReleaseInfoNumber$inboundSchema), - z.lazy(() => DefaultReleaseInfoBoolean$inboundSchema), - z.lazy(() => DefaultReleaseInfoStringList$inboundSchema), - z.any(), - ]), - ).optional(), - description: z.string(), - env: z.array(z.lazy(() => ReleaseInfoEnv$inboundSchema)).optional(), - id: z.string(), - kind: ReleaseInfoKind$inboundSchema, - label: z.string(), - placeholder: z.nullable(z.string()).optional(), - platforms: z.nullable(z.array(ReleaseInfoPlatform$inboundSchema)).optional(), - providedBy: z.array(ReleaseInfoProvidedBy$inboundSchema), - required: z.boolean(), - validation: z.nullable( - z.union([z.lazy(() => ValidationReleaseInfo$inboundSchema), z.any()]), - ).optional(), -}); - -export function releaseInfoInputFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoInput$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoInput' from JSON`, - ); -} - -/** @internal */ -export const ManagementReleaseInfoEnum$inboundSchema: z.ZodEnum< - typeof ManagementReleaseInfoEnum -> = z.enum(ManagementReleaseInfoEnum); - -/** @internal */ -export const OverrideReleaseInfoAwResource$inboundSchema: z.ZodType< - OverrideReleaseInfoAwResource, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function overrideReleaseInfoAwResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoAwResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoAwResource' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoAwStack$inboundSchema: z.ZodType< - OverrideReleaseInfoAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function overrideReleaseInfoAwStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoAwStack' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoAwBinding$inboundSchema: z.ZodType< - OverrideReleaseInfoAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => OverrideReleaseInfoAwResource$inboundSchema) - .optional(), - stack: z.lazy(() => OverrideReleaseInfoAwStack$inboundSchema).optional(), -}); - -export function overrideReleaseInfoAwBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoAwBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoAwBinding' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoEffect$inboundSchema: z.ZodEnum< - typeof OverrideReleaseInfoEffect -> = z.enum(OverrideReleaseInfoEffect); - -/** @internal */ -export const OverrideReleaseInfoAwGrant$inboundSchema: z.ZodType< - OverrideReleaseInfoAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); - -export function overrideReleaseInfoAwGrantFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoAwGrant' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoAw$inboundSchema: z.ZodType< - OverrideReleaseInfoAw, - unknown -> = z.object({ - binding: z.lazy(() => OverrideReleaseInfoAwBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - effect: OverrideReleaseInfoEffect$inboundSchema.optional(), - grant: z.lazy(() => OverrideReleaseInfoAwGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); - -export function overrideReleaseInfoAwFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoAw' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoAzureResource$inboundSchema: z.ZodType< - OverrideReleaseInfoAzureResource, - unknown -> = z.object({ - scope: z.string(), -}); - -export function overrideReleaseInfoAzureResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoAzureResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoAzureResource' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoAzureStack$inboundSchema: z.ZodType< - OverrideReleaseInfoAzureStack, - unknown -> = z.object({ - scope: z.string(), -}); - -export function overrideReleaseInfoAzureStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoAzureStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoAzureStack' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoAzureBinding$inboundSchema: z.ZodType< - OverrideReleaseInfoAzureBinding, - unknown -> = z.object({ - resource: z.lazy(() => OverrideReleaseInfoAzureResource$inboundSchema) - .optional(), - stack: z.lazy(() => OverrideReleaseInfoAzureStack$inboundSchema).optional(), -}); - -export function overrideReleaseInfoAzureBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoAzureBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoAzureGrant$inboundSchema: z.ZodType< - OverrideReleaseInfoAzureGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); - -export function overrideReleaseInfoAzureGrantFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoAzureGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoAzure$inboundSchema: z.ZodType< - OverrideReleaseInfoAzure, - unknown -> = z.object({ - binding: z.lazy(() => OverrideReleaseInfoAzureBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => OverrideReleaseInfoAzureGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); - -export function overrideReleaseInfoAzureFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoAzure' from JSON`, - ); -} - -/** @internal */ -export const OverrideConditionReleaseInfoResource$inboundSchema: z.ZodType< - OverrideConditionReleaseInfoResource, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function overrideConditionReleaseInfoResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - OverrideConditionReleaseInfoResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideConditionReleaseInfoResource' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoResourceConditionUnion$inboundSchema: z.ZodType< - OverrideReleaseInfoResourceConditionUnion, - unknown -> = z.union([ - z.lazy(() => OverrideConditionReleaseInfoResource$inboundSchema), - z.any(), -]); - -export function overrideReleaseInfoResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - OverrideReleaseInfoResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - OverrideReleaseInfoResourceConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'OverrideReleaseInfoResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoGcpResource$inboundSchema: z.ZodType< - OverrideReleaseInfoGcpResource, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => OverrideConditionReleaseInfoResource$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); - -export function overrideReleaseInfoGcpResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoGcpResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoGcpResource' from JSON`, - ); -} - -/** @internal */ -export const OverrideConditionReleaseInfo$inboundSchema: z.ZodType< - OverrideConditionReleaseInfo, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function overrideConditionReleaseInfoFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideConditionReleaseInfo$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideConditionReleaseInfo' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoConditionUnion$inboundSchema: z.ZodType< - OverrideReleaseInfoConditionUnion, - unknown -> = z.union([ - z.lazy(() => OverrideConditionReleaseInfo$inboundSchema), - z.any(), -]); - -export function overrideReleaseInfoConditionUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoConditionUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoGcpStack$inboundSchema: z.ZodType< - OverrideReleaseInfoGcpStack, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => OverrideConditionReleaseInfo$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); - -export function overrideReleaseInfoGcpStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoGcpStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoGcpStack' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoGcpBinding$inboundSchema: z.ZodType< - OverrideReleaseInfoGcpBinding, - unknown -> = z.object({ - resource: z.lazy(() => OverrideReleaseInfoGcpResource$inboundSchema) - .optional(), - stack: z.lazy(() => OverrideReleaseInfoGcpStack$inboundSchema).optional(), -}); - -export function overrideReleaseInfoGcpBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoGcpBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoGcpGrant$inboundSchema: z.ZodType< - OverrideReleaseInfoGcpGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); - -export function overrideReleaseInfoGcpGrantFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoGcpGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoGcp$inboundSchema: z.ZodType< - OverrideReleaseInfoGcp, - unknown -> = z.object({ - binding: z.lazy(() => OverrideReleaseInfoGcpBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => OverrideReleaseInfoGcpGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); - -export function overrideReleaseInfoGcpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoGcp' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfoPlatforms$inboundSchema: z.ZodType< - OverrideReleaseInfoPlatforms, - unknown -> = z.object({ - aws: z.nullable(z.array(z.lazy(() => OverrideReleaseInfoAw$inboundSchema))) - .optional(), - azure: z.nullable( - z.array(z.lazy(() => OverrideReleaseInfoAzure$inboundSchema)), - ).optional(), - gcp: z.nullable(z.array(z.lazy(() => OverrideReleaseInfoGcp$inboundSchema))) - .optional(), -}); - -export function overrideReleaseInfoPlatformsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfoPlatforms$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfoPlatforms' from JSON`, - ); -} - -/** @internal */ -export const OverrideReleaseInfo$inboundSchema: z.ZodType< - OverrideReleaseInfo, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => OverrideReleaseInfoPlatforms$inboundSchema), -}); - -export function overrideReleaseInfoFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => OverrideReleaseInfo$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'OverrideReleaseInfo' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoOverrideUnion$inboundSchema: z.ZodType< - ReleaseInfoOverrideUnion, - unknown -> = z.union([z.lazy(() => OverrideReleaseInfo$inboundSchema), z.string()]); - -export function releaseInfoOverrideUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoOverrideUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoOverrideUnion' from JSON`, - ); -} - -/** @internal */ -export const ManagementReleaseInfo2$inboundSchema: z.ZodType< - ManagementReleaseInfo2, - unknown -> = z.object({ - override: z.record( - z.string(), - z.array( - z.union([z.lazy(() => OverrideReleaseInfo$inboundSchema), z.string()]), - ), - ), -}); - -export function managementReleaseInfo2FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagementReleaseInfo2$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagementReleaseInfo2' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoAwResource$inboundSchema: z.ZodType< - ExtendReleaseInfoAwResource, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function extendReleaseInfoAwResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoAwResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoAwResource' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoAwStack$inboundSchema: z.ZodType< - ExtendReleaseInfoAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function extendReleaseInfoAwStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoAwStack' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoAwBinding$inboundSchema: z.ZodType< - ExtendReleaseInfoAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => ExtendReleaseInfoAwResource$inboundSchema).optional(), - stack: z.lazy(() => ExtendReleaseInfoAwStack$inboundSchema).optional(), -}); - -export function extendReleaseInfoAwBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoAwBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoAwBinding' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoEffect$inboundSchema: z.ZodEnum< - typeof ExtendReleaseInfoEffect -> = z.enum(ExtendReleaseInfoEffect); - -/** @internal */ -export const ExtendReleaseInfoAwGrant$inboundSchema: z.ZodType< - ExtendReleaseInfoAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); - -export function extendReleaseInfoAwGrantFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoAwGrant' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoAw$inboundSchema: z.ZodType< - ExtendReleaseInfoAw, - unknown -> = z.object({ - binding: z.lazy(() => ExtendReleaseInfoAwBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - effect: ExtendReleaseInfoEffect$inboundSchema.optional(), - grant: z.lazy(() => ExtendReleaseInfoAwGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); - -export function extendReleaseInfoAwFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoAw' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoAzureResource$inboundSchema: z.ZodType< - ExtendReleaseInfoAzureResource, - unknown -> = z.object({ - scope: z.string(), -}); - -export function extendReleaseInfoAzureResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoAzureResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoAzureResource' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoAzureStack$inboundSchema: z.ZodType< - ExtendReleaseInfoAzureStack, - unknown -> = z.object({ - scope: z.string(), -}); - -export function extendReleaseInfoAzureStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoAzureStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoAzureStack' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoAzureBinding$inboundSchema: z.ZodType< - ExtendReleaseInfoAzureBinding, - unknown -> = z.object({ - resource: z.lazy(() => ExtendReleaseInfoAzureResource$inboundSchema) - .optional(), - stack: z.lazy(() => ExtendReleaseInfoAzureStack$inboundSchema).optional(), -}); - -export function extendReleaseInfoAzureBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoAzureBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoAzureGrant$inboundSchema: z.ZodType< - ExtendReleaseInfoAzureGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); - -export function extendReleaseInfoAzureGrantFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoAzureGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoAzure$inboundSchema: z.ZodType< - ExtendReleaseInfoAzure, - unknown -> = z.object({ - binding: z.lazy(() => ExtendReleaseInfoAzureBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => ExtendReleaseInfoAzureGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); - -export function extendReleaseInfoAzureFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoAzure' from JSON`, - ); -} - -/** @internal */ -export const ExtendConditionReleaseInfoResource$inboundSchema: z.ZodType< - ExtendConditionReleaseInfoResource, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function extendConditionReleaseInfoResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ExtendConditionReleaseInfoResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendConditionReleaseInfoResource' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoResourceConditionUnion$inboundSchema: z.ZodType< - ExtendReleaseInfoResourceConditionUnion, - unknown -> = z.union([ - z.lazy(() => ExtendConditionReleaseInfoResource$inboundSchema), - z.any(), -]); - -export function extendReleaseInfoResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - ExtendReleaseInfoResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ExtendReleaseInfoResourceConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ExtendReleaseInfoResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoGcpResource$inboundSchema: z.ZodType< - ExtendReleaseInfoGcpResource, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => ExtendConditionReleaseInfoResource$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); - -export function extendReleaseInfoGcpResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoGcpResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoGcpResource' from JSON`, - ); -} - -/** @internal */ -export const ExtendConditionReleaseInfo$inboundSchema: z.ZodType< - ExtendConditionReleaseInfo, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function extendConditionReleaseInfoFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendConditionReleaseInfo$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendConditionReleaseInfo' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoConditionUnion$inboundSchema: z.ZodType< - ExtendReleaseInfoConditionUnion, - unknown -> = z.union([z.lazy(() => ExtendConditionReleaseInfo$inboundSchema), z.any()]); - -export function extendReleaseInfoConditionUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoConditionUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoGcpStack$inboundSchema: z.ZodType< - ExtendReleaseInfoGcpStack, - unknown -> = z.object({ - condition: z.nullable( - z.union([z.lazy(() => ExtendConditionReleaseInfo$inboundSchema), z.any()]), - ).optional(), - scope: z.string(), -}); - -export function extendReleaseInfoGcpStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoGcpStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoGcpStack' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoGcpBinding$inboundSchema: z.ZodType< - ExtendReleaseInfoGcpBinding, - unknown -> = z.object({ - resource: z.lazy(() => ExtendReleaseInfoGcpResource$inboundSchema).optional(), - stack: z.lazy(() => ExtendReleaseInfoGcpStack$inboundSchema).optional(), -}); - -export function extendReleaseInfoGcpBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoGcpBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoGcpGrant$inboundSchema: z.ZodType< - ExtendReleaseInfoGcpGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); - -export function extendReleaseInfoGcpGrantFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoGcpGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoGcp$inboundSchema: z.ZodType< - ExtendReleaseInfoGcp, - unknown -> = z.object({ - binding: z.lazy(() => ExtendReleaseInfoGcpBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => ExtendReleaseInfoGcpGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); - -export function extendReleaseInfoGcpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoGcp' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfoPlatforms$inboundSchema: z.ZodType< - ExtendReleaseInfoPlatforms, - unknown -> = z.object({ - aws: z.nullable(z.array(z.lazy(() => ExtendReleaseInfoAw$inboundSchema))) - .optional(), - azure: z.nullable(z.array(z.lazy(() => ExtendReleaseInfoAzure$inboundSchema))) - .optional(), - gcp: z.nullable(z.array(z.lazy(() => ExtendReleaseInfoGcp$inboundSchema))) - .optional(), -}); - -export function extendReleaseInfoPlatformsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfoPlatforms$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfoPlatforms' from JSON`, - ); -} - -/** @internal */ -export const ExtendReleaseInfo$inboundSchema: z.ZodType< - ExtendReleaseInfo, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => ExtendReleaseInfoPlatforms$inboundSchema), -}); - -export function extendReleaseInfoFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ExtendReleaseInfo$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ExtendReleaseInfo' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoExtendUnion$inboundSchema: z.ZodType< - ReleaseInfoExtendUnion, - unknown -> = z.union([z.lazy(() => ExtendReleaseInfo$inboundSchema), z.string()]); - -export function releaseInfoExtendUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoExtendUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoExtendUnion' from JSON`, - ); -} - -/** @internal */ -export const ManagementReleaseInfo1$inboundSchema: z.ZodType< - ManagementReleaseInfo1, - unknown -> = z.object({ - extend: z.record( - z.string(), - z.array( - z.union([z.lazy(() => ExtendReleaseInfo$inboundSchema), z.string()]), - ), - ), -}); - -export function managementReleaseInfo1FromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ManagementReleaseInfo1$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ManagementReleaseInfo1' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoManagementUnion$inboundSchema: z.ZodType< - ReleaseInfoManagementUnion, - unknown -> = z.union([ - z.lazy(() => ManagementReleaseInfo1$inboundSchema), - z.lazy(() => ManagementReleaseInfo2$inboundSchema), - ManagementReleaseInfoEnum$inboundSchema, -]); - -export function releaseInfoManagementUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoManagementUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoManagementUnion' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoAwResource$inboundSchema: z.ZodType< - ProfileReleaseInfoAwResource, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function profileReleaseInfoAwResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoAwResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoAwResource' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoAwStack$inboundSchema: z.ZodType< - ProfileReleaseInfoAwStack, - unknown -> = z.object({ - condition: z.nullable(z.record(z.string(), z.record(z.string(), z.string()))) - .optional(), - resources: z.array(z.string()), -}); - -export function profileReleaseInfoAwStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoAwStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoAwStack' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoAwBinding$inboundSchema: z.ZodType< - ProfileReleaseInfoAwBinding, - unknown -> = z.object({ - resource: z.lazy(() => ProfileReleaseInfoAwResource$inboundSchema).optional(), - stack: z.lazy(() => ProfileReleaseInfoAwStack$inboundSchema).optional(), -}); - -export function profileReleaseInfoAwBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoAwBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoAwBinding' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoEffect$inboundSchema: z.ZodEnum< - typeof ProfileReleaseInfoEffect -> = z.enum(ProfileReleaseInfoEffect); - -/** @internal */ -export const ProfileReleaseInfoAwGrant$inboundSchema: z.ZodType< - ProfileReleaseInfoAwGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); - -export function profileReleaseInfoAwGrantFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoAwGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoAwGrant' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoAw$inboundSchema: z.ZodType< - ProfileReleaseInfoAw, - unknown -> = z.object({ - binding: z.lazy(() => ProfileReleaseInfoAwBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - effect: ProfileReleaseInfoEffect$inboundSchema.optional(), - grant: z.lazy(() => ProfileReleaseInfoAwGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); - -export function profileReleaseInfoAwFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoAw$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoAw' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoAzureResource$inboundSchema: z.ZodType< - ProfileReleaseInfoAzureResource, - unknown -> = z.object({ - scope: z.string(), -}); - -export function profileReleaseInfoAzureResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoAzureResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoAzureResource' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoAzureStack$inboundSchema: z.ZodType< - ProfileReleaseInfoAzureStack, - unknown -> = z.object({ - scope: z.string(), -}); - -export function profileReleaseInfoAzureStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoAzureStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoAzureStack' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoAzureBinding$inboundSchema: z.ZodType< - ProfileReleaseInfoAzureBinding, - unknown -> = z.object({ - resource: z.lazy(() => ProfileReleaseInfoAzureResource$inboundSchema) - .optional(), - stack: z.lazy(() => ProfileReleaseInfoAzureStack$inboundSchema).optional(), -}); - -export function profileReleaseInfoAzureBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoAzureBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoAzureBinding' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoAzureGrant$inboundSchema: z.ZodType< - ProfileReleaseInfoAzureGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); - -export function profileReleaseInfoAzureGrantFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoAzureGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoAzureGrant' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoAzure$inboundSchema: z.ZodType< - ProfileReleaseInfoAzure, - unknown -> = z.object({ - binding: z.lazy(() => ProfileReleaseInfoAzureBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => ProfileReleaseInfoAzureGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); - -export function profileReleaseInfoAzureFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoAzure$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoAzure' from JSON`, - ); -} - -/** @internal */ -export const ProfileConditionReleaseInfoResource$inboundSchema: z.ZodType< - ProfileConditionReleaseInfoResource, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function profileConditionReleaseInfoResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => - ProfileConditionReleaseInfoResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileConditionReleaseInfoResource' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoResourceConditionUnion$inboundSchema: z.ZodType< - ProfileReleaseInfoResourceConditionUnion, - unknown -> = z.union([ - z.lazy(() => ProfileConditionReleaseInfoResource$inboundSchema), - z.any(), -]); - -export function profileReleaseInfoResourceConditionUnionFromJSON( - jsonString: string, -): SafeParseResult< - ProfileReleaseInfoResourceConditionUnion, - SDKValidationError -> { - return safeParse( - jsonString, - (x) => - ProfileReleaseInfoResourceConditionUnion$inboundSchema.parse( - JSON.parse(x), - ), - `Failed to parse 'ProfileReleaseInfoResourceConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoGcpResource$inboundSchema: z.ZodType< - ProfileReleaseInfoGcpResource, - unknown -> = z.object({ - condition: z.nullable( - z.union([ - z.lazy(() => ProfileConditionReleaseInfoResource$inboundSchema), - z.any(), - ]), - ).optional(), - scope: z.string(), -}); - -export function profileReleaseInfoGcpResourceFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoGcpResource$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoGcpResource' from JSON`, - ); -} - -/** @internal */ -export const ProfileConditionReleaseInfo$inboundSchema: z.ZodType< - ProfileConditionReleaseInfo, - unknown -> = z.object({ - expression: z.string(), - title: z.string(), -}); - -export function profileConditionReleaseInfoFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileConditionReleaseInfo$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileConditionReleaseInfo' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoConditionUnion$inboundSchema: z.ZodType< - ProfileReleaseInfoConditionUnion, - unknown -> = z.union([z.lazy(() => ProfileConditionReleaseInfo$inboundSchema), z.any()]); - -export function profileReleaseInfoConditionUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoConditionUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoConditionUnion' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoGcpStack$inboundSchema: z.ZodType< - ProfileReleaseInfoGcpStack, - unknown -> = z.object({ - condition: z.nullable( - z.union([z.lazy(() => ProfileConditionReleaseInfo$inboundSchema), z.any()]), - ).optional(), - scope: z.string(), -}); - -export function profileReleaseInfoGcpStackFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoGcpStack$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoGcpStack' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoGcpBinding$inboundSchema: z.ZodType< - ProfileReleaseInfoGcpBinding, - unknown -> = z.object({ - resource: z.lazy(() => ProfileReleaseInfoGcpResource$inboundSchema) - .optional(), - stack: z.lazy(() => ProfileReleaseInfoGcpStack$inboundSchema).optional(), -}); - -export function profileReleaseInfoGcpBindingFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoGcpBinding$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoGcpBinding' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoGcpGrant$inboundSchema: z.ZodType< - ProfileReleaseInfoGcpGrant, - unknown -> = z.object({ - actions: z.nullable(z.array(z.string())).optional(), - dataActions: z.nullable(z.array(z.string())).optional(), - permissions: z.nullable(z.array(z.string())).optional(), - predefinedRoles: z.nullable(z.array(z.string())).optional(), - residualPermissions: z.nullable(z.array(z.string())).optional(), -}); - -export function profileReleaseInfoGcpGrantFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoGcpGrant$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoGcpGrant' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoGcp$inboundSchema: z.ZodType< - ProfileReleaseInfoGcp, - unknown -> = z.object({ - binding: z.lazy(() => ProfileReleaseInfoGcpBinding$inboundSchema), - description: z.nullable(z.string()).optional(), - grant: z.lazy(() => ProfileReleaseInfoGcpGrant$inboundSchema), - label: z.nullable(z.string()).optional(), -}); - -export function profileReleaseInfoGcpFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoGcp$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoGcp' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfoPlatforms$inboundSchema: z.ZodType< - ProfileReleaseInfoPlatforms, - unknown -> = z.object({ - aws: z.nullable(z.array(z.lazy(() => ProfileReleaseInfoAw$inboundSchema))) - .optional(), - azure: z.nullable( - z.array(z.lazy(() => ProfileReleaseInfoAzure$inboundSchema)), - ).optional(), - gcp: z.nullable(z.array(z.lazy(() => ProfileReleaseInfoGcp$inboundSchema))) - .optional(), -}); - -export function profileReleaseInfoPlatformsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfoPlatforms$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfoPlatforms' from JSON`, - ); -} - -/** @internal */ -export const ProfileReleaseInfo$inboundSchema: z.ZodType< - ProfileReleaseInfo, - unknown -> = z.object({ - description: z.string(), - id: z.string(), - platforms: z.lazy(() => ProfileReleaseInfoPlatforms$inboundSchema), -}); - -export function profileReleaseInfoFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ProfileReleaseInfo$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ProfileReleaseInfo' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoProfileUnion$inboundSchema: z.ZodType< - ReleaseInfoProfileUnion, - unknown -> = z.union([z.lazy(() => ProfileReleaseInfo$inboundSchema), z.string()]); - -export function releaseInfoProfileUnionFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoProfileUnion$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoProfileUnion' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoPermissions$inboundSchema: z.ZodType< - ReleaseInfoPermissions, - unknown -> = z.object({ - management: z.union([ - z.lazy(() => ManagementReleaseInfo1$inboundSchema), - z.lazy(() => ManagementReleaseInfo2$inboundSchema), - ManagementReleaseInfoEnum$inboundSchema, - ]).optional(), - profiles: z.record( - z.string(), - z.record( - z.string(), - z.array( - z.union([z.lazy(() => ProfileReleaseInfo$inboundSchema), z.string()]), - ), - ), - ), -}); - -export function releaseInfoPermissionsFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoPermissions$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoPermissions' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoConfig$inboundSchema: z.ZodType< - ReleaseInfoConfig, - unknown -> = collectExtraKeys$( - z.object({ - id: z.string(), - type: z.string(), - }).catchall(z.any()), - "additionalProperties", - true, -); - -export function releaseInfoConfigFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoConfig$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoConfig' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoDependency$inboundSchema: z.ZodType< - ReleaseInfoDependency, - unknown -> = z.object({ - id: z.string(), - type: z.string(), -}); - -export function releaseInfoDependencyFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoDependency$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoDependency' from JSON`, - ); -} - -/** @internal */ -export const ReleaseInfoLifecycle$inboundSchema: z.ZodEnum< - typeof ReleaseInfoLifecycle -> = z.enum(ReleaseInfoLifecycle); - -/** @internal */ -export const ReleaseInfoResources$inboundSchema: z.ZodType< - ReleaseInfoResources, - unknown -> = z.object({ - config: z.lazy(() => ReleaseInfoConfig$inboundSchema), - dependencies: z.array(z.lazy(() => ReleaseInfoDependency$inboundSchema)), - lifecycle: ReleaseInfoLifecycle$inboundSchema, - remoteAccess: z.boolean().optional(), -}); - -export function releaseInfoResourcesFromJSON( - jsonString: string, -): SafeParseResult { - return safeParse( - jsonString, - (x) => ReleaseInfoResources$inboundSchema.parse(JSON.parse(x)), - `Failed to parse 'ReleaseInfoResources' from JSON`, - ); -} - /** @internal */ export const ReleaseInfoSupportedPlatform$inboundSchema: z.ZodEnum< typeof ReleaseInfoSupportedPlatform @@ -27158,12 +148,9 @@ export const ReleaseInfoStack$inboundSchema: z.ZodType< unknown > = z.object({ id: z.string(), - inputs: z.array(z.lazy(() => ReleaseInfoInput$inboundSchema)).optional(), - permissions: z.lazy(() => ReleaseInfoPermissions$inboundSchema).optional(), - resources: z.record( - z.string(), - z.lazy(() => ReleaseInfoResources$inboundSchema), - ), + inputs: z.array(ReleaseInfoInput$inboundSchema).optional(), + permissions: ReleaseInfoPermissions$inboundSchema.optional(), + resources: z.record(z.string(), ReleaseInfoResources$inboundSchema), supportedPlatforms: z.nullable( z.array(ReleaseInfoSupportedPlatform$inboundSchema), ).optional(), @@ -27203,7 +190,7 @@ export const SyncReconcileResponseTarget$inboundSchema: z.ZodType< SyncReconcileResponseTarget, unknown > = z.object({ - config: z.lazy(() => TargetConfig$inboundSchema), + config: TargetConfig$inboundSchema, releaseInfo: z.lazy(() => ReleaseInfo$inboundSchema), }); @@ -27223,7 +210,7 @@ export const SyncReconcileResponse$inboundSchema: z.ZodType< unknown > = z.object({ success: z.boolean(), - current: z.lazy(() => SyncReconcileResponseCurrent$inboundSchema), + current: SyncReconcileResponseCurrent$inboundSchema, target: z.lazy(() => SyncReconcileResponseTarget$inboundSchema).optional(), }); diff --git a/client-sdks/platform/typescript/src/models/syncreconcileresponsekeyprefixsecretref2.ts b/client-sdks/platform/typescript/src/models/syncreconcileresponsekeyprefixsecretref2.ts new file mode 100644 index 000000000..0721260c0 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/syncreconcileresponsekeyprefixsecretref2.ts @@ -0,0 +1,5345 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { + collectExtraKeys as collectExtraKeys$, + safeParse, +} from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + SyncReconcileResponseCurrentPlatform, + SyncReconcileResponseCurrentPlatform$inboundSchema, + SyncReconcileResponseCurrentReleaseUnion, + SyncReconcileResponseCurrentReleaseUnion$inboundSchema, + SyncReconcileResponseEnvironmentInfoUnion, + SyncReconcileResponseEnvironmentInfoUnion$inboundSchema, + SyncReconcileResponseErrorUnion, + SyncReconcileResponseErrorUnion$inboundSchema, +} from "./syncreconcileresponsepreparedstackoverridegcpstack.js"; +import { + SyncReconcileResponseRuntimeMetadataUnion, + SyncReconcileResponseRuntimeMetadataUnion$inboundSchema, + SyncReconcileResponseStackStateUnion, + SyncReconcileResponseStackStateUnion$inboundSchema, + SyncReconcileResponseStatus, + SyncReconcileResponseStatus$inboundSchema, + SyncReconcileResponseTargetReleaseInput, + SyncReconcileResponseTargetReleaseInput$inboundSchema, + SyncReconcileResponseTargetReleaseManagement1, + SyncReconcileResponseTargetReleaseManagement1$inboundSchema, + SyncReconcileResponseTargetReleaseManagement2, + SyncReconcileResponseTargetReleaseManagement2$inboundSchema, + SyncReconcileResponseTargetReleaseManagementEnum, + SyncReconcileResponseTargetReleaseManagementEnum$inboundSchema, +} from "./syncreconcileresponsetargetreleasemanagement1.js"; + +/** + * Management permissions configuration for stack management access + */ +export type SyncReconcileResponseTargetReleaseManagementUnion = + | SyncReconcileResponseTargetReleaseManagement1 + | SyncReconcileResponseTargetReleaseManagement2 + | SyncReconcileResponseTargetReleaseManagementEnum; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseTargetReleaseProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileResponseTargetReleaseProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileResponseTargetReleaseProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileResponseTargetReleaseProfileEffect = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseTargetReleaseProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileResponseTargetReleaseProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseTargetReleaseProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponseTargetReleaseProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseTargetReleaseProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileResponseTargetReleaseProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseTargetReleaseProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileResponseTargetReleaseProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseTargetReleaseProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseTargetReleaseProfileConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseTargetReleaseProfileResourceConditionUnion = + | SyncReconcileResponseTargetReleaseProfileConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseProfileGcpResource = { + condition?: + | SyncReconcileResponseTargetReleaseProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseTargetReleaseProfileCondition = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseTargetReleaseProfileConditionUnion = + | SyncReconcileResponseTargetReleaseProfileCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseProfileGcpStack = { + condition?: + | SyncReconcileResponseTargetReleaseProfileCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseTargetReleaseProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileResponseTargetReleaseProfileGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseTargetReleaseProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileResponseTargetReleaseProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseTargetReleaseProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileResponseTargetReleaseProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileResponseTargetReleaseProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponseTargetReleaseProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileResponseTargetReleaseProfileUnion = + | SyncReconcileResponseTargetReleaseProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncReconcileResponseTargetReleasePermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncReconcileResponseTargetReleaseManagement1 + | SyncReconcileResponseTargetReleaseManagement2 + | SyncReconcileResponseTargetReleaseManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileResponseTargetReleaseConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncReconcileResponseTargetReleaseDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const SyncReconcileResponseTargetReleaseLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type SyncReconcileResponseTargetReleaseLifecycle = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseLifecycle +>; + +export type SyncReconcileResponseTargetReleaseResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncReconcileResponseTargetReleaseConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: SyncReconcileResponseTargetReleaseLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileResponseTargetReleaseSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseTargetReleaseSupportedPlatform = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncReconcileResponseTargetReleaseStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncReconcileResponseTargetReleasePermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncReconcileResponseTargetReleaseResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +/** + * Release metadata + * + * @remarks + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. + */ +export type SyncReconcileResponseTargetRelease = { + /** + * Short description of the release + */ + description?: string | null | undefined; + /** + * Release ID (e.g., rel_xyz) + */ + releaseId: string; + /** + * A bag of resources, unaware of any cloud. + */ + stack: SyncReconcileResponseTargetReleaseStack; + /** + * Version string (e.g., 2.1.0) + */ + version?: string | null | undefined; +}; + +export type SyncReconcileResponseTargetReleaseUnion = + | SyncReconcileResponseTargetRelease + | any; + +/** + * Current deployment state after reconciliation + */ +export type SyncReconcileResponseCurrent = { + currentRelease?: SyncReconcileResponseCurrentReleaseUnion | null | undefined; + environmentInfo?: + | SyncReconcileResponseEnvironmentInfoUnion + | null + | undefined; + error?: SyncReconcileResponseErrorUnion | null | undefined; + /** + * Represents the target cloud platform. + */ + platform: SyncReconcileResponseCurrentPlatform; + /** + * Protocol version for cross-actor compatibility. + * + * @remarks + * All actors (manager, push client, agent) check this before stepping. + * Mismatched versions produce a clear error instead of silent corruption. + * See docs/02-manager/10-deployment-protocol.md. + */ + protocolVersion: number; + /** + * Whether a retry has been requested for a failed deployment + * + * @remarks + * When true and status is a failed state, the deployment system will retry failed resources + */ + retryRequested?: boolean | undefined; + runtimeMetadata?: + | SyncReconcileResponseRuntimeMetadataUnion + | null + | undefined; + stackState?: SyncReconcileResponseStackStateUnion | null | undefined; + /** + * Deployment status in the deployment lifecycle + */ + status: SyncReconcileResponseStatus; + targetRelease?: SyncReconcileResponseTargetRelease | any | null | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileResponseBasePlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseBasePlatformEnum = ClosedEnum< + typeof SyncReconcileResponseBasePlatformEnum +>; + +export type SyncReconcileResponseBasePlatformUnion = + | SyncReconcileResponseBasePlatformEnum + | any; + +/** + * Configuration for a single container worker cluster. + * + * @remarks + * + * Contains the cluster ID and management token needed to interact with + * the managed container control plane API for container operations. + */ +export type SyncReconcileResponseClusters = { + /** + * Cluster ID (deterministic: workspace/project/deployment/resourceid) + */ + clusterId: string; + /** + * Management token for API access (hm_...) + * + * @remarks + * Used by alien-deployment controllers to create/update containers + */ + managementToken: string; +}; + +/** + * AWS Horizon machine image catalog. + */ +export type SyncReconcileResponseHorizonMachineImageAws = { + /** + * AMI IDs by architecture, then AWS region. + */ + amis: { [k: string]: { [k: string]: string } }; +}; + +export type SyncReconcileResponseHorizonMachineImageAwsUnion = + | SyncReconcileResponseHorizonMachineImageAws + | any; + +/** + * Azure Horizon machine image entry. + */ +export type SyncReconcileResponseAzureImages = { + /** + * Azure Compute Gallery image version ID. + */ + imageVersionId: string; +}; + +/** + * Azure Horizon machine image catalog. + */ +export type HorizonMachineImageAzureTarget = { + /** + * Images by architecture. + */ + images: { [k: string]: SyncReconcileResponseAzureImages }; +}; + +export type HorizonMachineImageTargetAzureUnion = + | HorizonMachineImageAzureTarget + | any; + +/** + * Base image metadata for the Horizon machine image. + */ +export type SyncReconcileResponseBaseImage = { + /** + * Base OS image name. + */ + name: string; + /** + * Base OS image version or channel. + */ + version: string; +}; + +/** + * GCP Horizon machine image entry. + */ +export type SyncReconcileResponseGcpImages = { + /** + * Source image self link or image-family URL. + */ + sourceImage: string; +}; + +/** + * GCP Horizon machine image catalog. + */ +export type HorizonMachineImageGcpTarget = { + /** + * Images by architecture. + */ + images: { [k: string]: SyncReconcileResponseGcpImages }; +}; + +export type HorizonMachineImageTargetGcpUnion = + | HorizonMachineImageGcpTarget + | any; + +/** + * Horizon machine image catalog. + * + * @remarks + * + * Platform resolves concrete provider images from this catalog during rollout. + */ +export type SyncReconcileResponseHorizonMachineImage = { + aws?: SyncReconcileResponseHorizonMachineImageAws | any | null | undefined; + azure?: HorizonMachineImageAzureTarget | any | null | undefined; + /** + * Base image metadata for the Horizon machine image. + */ + baseImage: SyncReconcileResponseBaseImage; + /** + * Logical image channel, such as prod, staging, or canary. + */ + channel: string; + /** + * Image manifest creation timestamp. + */ + createdAt: string; + gcp?: HorizonMachineImageGcpTarget | any | null | undefined; + /** + * Git commit SHA used to build the image. + */ + gitSha: string; + /** + * horizond daemon version baked into the image. + */ + horizondVersion: string; + /** + * Published immutable machine image version. + */ + machineImageVersion: string; +}; + +export type SyncReconcileResponseHorizonMachineImageUnion = + | SyncReconcileResponseHorizonMachineImage + | any; + +export const ComputeBackendTargetType = { + Horizon: "horizon", +} as const; +export type ComputeBackendTargetType = ClosedEnum< + typeof ComputeBackendTargetType +>; + +/** + * Compute backend for Container and Worker resources. + * + * @remarks + * + * Determines how compute workloads are orchestrated on cloud platforms. + * When None, the platform default is used for cloud platforms. + */ +export type SyncReconcileResponseComputeBackendHorizon = { + /** + * Cluster configurations (one per ComputeCluster resource) + * + * @remarks + * Key: ComputeCluster resource ID from stack + * Value: Cluster ID and management token for that cluster + */ + clusters: { [k: string]: SyncReconcileResponseClusters }; + horizonMachineImage?: + | SyncReconcileResponseHorizonMachineImage + | any + | null + | undefined; + /** + * Horizon control-plane API base URL. + */ + url: string; + type: ComputeBackendTargetType; +}; + +export type SyncReconcileResponseComputeBackendUnion = + | SyncReconcileResponseComputeBackendHorizon + | any; + +/** + * Certificate status in the certificate lifecycle + */ +export const SyncReconcileResponseAliasCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", +} as const; +/** + * Certificate status in the certificate lifecycle + */ +export type SyncReconcileResponseAliasCertificateStatus = ClosedEnum< + typeof SyncReconcileResponseAliasCertificateStatus +>; + +/** + * DNS record status in the DNS lifecycle + */ +export const SyncReconcileResponseAliasDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", +} as const; +/** + * DNS record status in the DNS lifecycle + */ +export type SyncReconcileResponseAliasDnsStatus = ClosedEnum< + typeof SyncReconcileResponseAliasDnsStatus +>; + +/** + * Certificate and DNS metadata for a managed hostname. + * + * @remarks + * + * Includes decrypted certificate data for issued certificates. + * Private keys are deployment-scoped secrets (like environment variables). + */ +export type SyncReconcileResponseAlias = { + /** + * Full PEM certificate chain (only present if status is "issued"). + */ + certificateChain?: string | null | undefined; + /** + * Certificate ID (for tracking/logging). + */ + certificateId: string; + /** + * Certificate status in the certificate lifecycle + */ + certificateStatus: SyncReconcileResponseAliasCertificateStatus; + /** + * Last DNS error message. Present when DNS previously failed, even if status + * + * @remarks + * was reset to pending for retry. Used to surface actionable error context + * in WaitingForDns failure messages. + */ + dnsError?: string | null | undefined; + /** + * DNS record status in the DNS lifecycle + */ + dnsStatus: SyncReconcileResponseAliasDnsStatus; + /** + * Fully qualified domain name. + */ + fqdn: string; + /** + * ISO 8601 timestamp when certificate was issued (for renewal detection). + */ + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; +}; + +/** + * Certificate status in the certificate lifecycle + */ +export const SyncReconcileResponseCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", +} as const; +/** + * Certificate status in the certificate lifecycle + */ +export type SyncReconcileResponseCertificateStatus = ClosedEnum< + typeof SyncReconcileResponseCertificateStatus +>; + +/** + * DNS record status in the DNS lifecycle + */ +export const SyncReconcileResponseDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", +} as const; +/** + * DNS record status in the DNS lifecycle + */ +export type SyncReconcileResponseDnsStatus = ClosedEnum< + typeof SyncReconcileResponseDnsStatus +>; + +/** + * Certificate status in the certificate lifecycle + */ +export const SyncReconcileResponseEndpointsCertificateStatus = { + Pending: "pending", + Issued: "issued", + Renewing: "renewing", + RenewalFailed: "renewal-failed", + Failed: "failed", + Deleting: "deleting", +} as const; +/** + * Certificate status in the certificate lifecycle + */ +export type SyncReconcileResponseEndpointsCertificateStatus = ClosedEnum< + typeof SyncReconcileResponseEndpointsCertificateStatus +>; + +/** + * DNS record status in the DNS lifecycle + */ +export const SyncReconcileResponseEndpointsDnsStatus = { + Pending: "pending", + Active: "active", + Updating: "updating", + Deleting: "deleting", + Failed: "failed", +} as const; +/** + * DNS record status in the DNS lifecycle + */ +export type SyncReconcileResponseEndpointsDnsStatus = ClosedEnum< + typeof SyncReconcileResponseEndpointsDnsStatus +>; + +/** + * Certificate and DNS metadata for a managed hostname. + * + * @remarks + * + * Includes decrypted certificate data for issued certificates. + * Private keys are deployment-scoped secrets (like environment variables). + */ +export type SyncReconcileResponseEndpoints = { + /** + * Full PEM certificate chain (only present if status is "issued"). + */ + certificateChain?: string | null | undefined; + /** + * Certificate ID (for tracking/logging). + */ + certificateId: string; + /** + * Certificate status in the certificate lifecycle + */ + certificateStatus: SyncReconcileResponseEndpointsCertificateStatus; + /** + * Last DNS error message. Present when DNS previously failed, even if status + * + * @remarks + * was reset to pending for retry. Used to surface actionable error context + * in WaitingForDns failure messages. + */ + dnsError?: string | null | undefined; + /** + * DNS record status in the DNS lifecycle + */ + dnsStatus: SyncReconcileResponseEndpointsDnsStatus; + /** + * Fully qualified domain name. + */ + fqdn: string; + /** + * ISO 8601 timestamp when certificate was issued (for renewal detection). + */ + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; +}; + +/** + * Certificate and DNS metadata for a public resource. + * + * @remarks + * + * The direct fields describe the primary endpoint hostname. `endpoints` + * contains endpoint-scoped metadata keyed by endpoint name. `aliases` contains + * additional managed hostnames that route directly to the primary endpoint. + */ +export type DomainMetadataTargetResources = { + /** + * Additional managed hostnames for the resource. + */ + aliases?: Array | undefined; + /** + * Full PEM certificate chain (only present if status is "issued"). + */ + certificateChain?: string | null | undefined; + /** + * Certificate ID (for tracking/logging). + */ + certificateId: string; + /** + * Certificate status in the certificate lifecycle + */ + certificateStatus: SyncReconcileResponseCertificateStatus; + /** + * Last DNS error message. + */ + dnsError?: string | null | undefined; + /** + * DNS record status in the DNS lifecycle + */ + dnsStatus: SyncReconcileResponseDnsStatus; + /** + * Endpoint-scoped metadata keyed by endpoint name. + */ + endpoints?: { [k: string]: SyncReconcileResponseEndpoints } | undefined; + /** + * Fully qualified domain name. + */ + fqdn: string; + /** + * ISO 8601 timestamp when certificate was issued (for renewal detection). + */ + issuedAt?: string | null | undefined; + /** + * Decrypted private key (only present if status is "issued"). + */ + privateKey?: string | null | undefined; +}; + +/** + * Domain metadata for auto-managed public resources (no private keys). + */ +export type SyncReconcileResponseDomainMetadata = { + /** + * Base domain for auto-generated domains (e.g., "vpc.direct"). + */ + baseDomain: string; + /** + * Hosted zone ID for DNS records. + */ + hostedZoneId: string; + /** + * Deployment public subdomain (e.g., "k8f2j3"). + */ + publicSubdomain: string; + /** + * Metadata per resource ID. + */ + resources: { [k: string]: DomainMetadataTargetResources }; +}; + +export type SyncReconcileResponseDomainMetadataUnion = + | SyncReconcileResponseDomainMetadata + | any; + +/** + * Type of environment variable + */ +export const TargetEnvironmentVariablesType = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Type of environment variable + */ +export type TargetEnvironmentVariablesType = ClosedEnum< + typeof TargetEnvironmentVariablesType +>; + +/** + * Environment variable for deployment + */ +export type SyncReconcileResponseVariable = { + /** + * Variable name + */ + name: string; + /** + * Target resource patterns (null = all resources, Some = wildcard patterns) + */ + targetResources?: Array | null | undefined; + /** + * Type of environment variable + */ + type: TargetEnvironmentVariablesType; + /** + * Variable value (decrypted - deployment has access to decryption keys) + */ + value: string; +}; + +/** + * Snapshot of environment variables at a point in time + */ +export type SyncReconcileResponseEnvironmentVariables = { + /** + * ISO 8601 timestamp when snapshot was created + */ + createdAt: string; + /** + * Deterministic hash of all variables (for change detection) + */ + hash: string; + /** + * Environment variables in the snapshot + */ + variables: Array; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDefaultDomainSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseDefaultDomain = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseDefaultDomainSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDefaultDomainUnion = + | SyncReconcileResponseDefaultDomain + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseEnvironmentNameSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseEnvironmentName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseEnvironmentNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseEnvironmentNameUnion = + | SyncReconcileResponseEnvironmentName + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceGroupNameSecretRef3 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseResourceGroupName3 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseResourceGroupNameSecretRef3; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceGroupNameUnion3 = + | SyncReconcileResponseResourceGroupName3 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceIdSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseResourceId = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseResourceIdSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceIdUnion = + | SyncReconcileResponseResourceId + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseStaticIpSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseStaticIp = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseStaticIpSecretRef; +}; + +export const TargetTypeContainerAppsEnvironment = { + ContainerAppsEnvironment: "container_apps_environment", +} as const; +export type TargetTypeContainerAppsEnvironment = ClosedEnum< + typeof TargetTypeContainerAppsEnvironment +>; + +/** + * Binding configuration for a pre-existing Azure Container Apps Environment. + * + * @remarks + * + * Used when deploying to an existing environment instead of having Alien provision one. + * This is useful for shared environments (e.g., test infrastructure) or enterprise + * setups where environments are managed by a separate team. + */ +export type SyncReconcileResponseExternalBindingsContainerAppsEnvironment = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + defaultDomain?: + | SyncReconcileResponseDefaultDomain + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + environmentName?: + | SyncReconcileResponseEnvironmentName + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceGroupName?: + | SyncReconcileResponseResourceGroupName3 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceId?: + | SyncReconcileResponseResourceId + | any + | string + | null + | undefined; + staticIp?: any | null | undefined; + type: TargetTypeContainerAppsEnvironment; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDataDirSecretRef3 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseDataDir3 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseDataDirSecretRef3; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDataDirUnion2 = + | SyncReconcileResponseDataDir3 + | any + | string; + +export const TargetTypeVault5 = { + Vault: "vault", +} as const; +export type TargetTypeVault5 = ClosedEnum; + +/** + * Local development vault binding (for testing/development) + */ +export type SyncReconcileResponseExternalBindingsLocalVault = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + dataDir?: SyncReconcileResponseDataDir3 | any | string | null | undefined; + /** + * The vault name for local storage + */ + vaultName: string; + service: "local-vault"; + type: TargetTypeVault5; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseNamespaceSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseNamespace2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseNamespaceSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseNamespaceUnion2 = + | SyncReconcileResponseNamespace2 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultPrefixSecretRef3 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseVaultPrefix3 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseVaultPrefixSecretRef3; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultPrefixUnion3 = + | SyncReconcileResponseVaultPrefix3 + | any + | string; + +export const TargetTypeVault4 = { + Vault: "vault", +} as const; +export type TargetTypeVault4 = ClosedEnum; + +/** + * Kubernetes Secrets vault binding configuration + */ +export type SyncReconcileResponseExternalBindingsKubernetesSecret = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + namespace?: SyncReconcileResponseNamespace2 | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + vaultPrefix?: + | SyncReconcileResponseVaultPrefix3 + | any + | string + | null + | undefined; + service: "kubernetes-secret"; + type: TargetTypeVault4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultNameSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseVaultName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseVaultNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultNameUnion = + | SyncReconcileResponseVaultName + | any + | string; + +export const TargetTypeVault3 = { + Vault: "vault", +} as const; +export type TargetTypeVault3 = ClosedEnum; + +/** + * Azure Key Vault binding configuration + */ +export type SyncReconcileResponseExternalBindingsKeyVault = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + vaultName?: SyncReconcileResponseVaultName | any | string | null | undefined; + service: "key-vault"; + type: TargetTypeVault3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultPrefixSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseVaultPrefix2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseVaultPrefixSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultPrefixUnion2 = + | SyncReconcileResponseVaultPrefix2 + | any + | string; + +export const TargetTypeVault2 = { + Vault: "vault", +} as const; +export type TargetTypeVault2 = ClosedEnum; + +/** + * GCP Secret Manager vault binding configuration + */ +export type SyncReconcileResponseExternalBindingsSecretManager = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + vaultPrefix?: + | SyncReconcileResponseVaultPrefix2 + | any + | string + | null + | undefined; + service: "secret-manager"; + type: TargetTypeVault2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultPrefixSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseVaultPrefix1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseVaultPrefixSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseVaultPrefixUnion1 = + | SyncReconcileResponseVaultPrefix1 + | any + | string; + +export const TargetTypeVault1 = { + Vault: "vault", +} as const; +export type TargetTypeVault1 = ClosedEnum; + +/** + * AWS SSM Parameter Store vault binding configuration + */ +export type SyncReconcileResponseExternalBindingsParameterStore = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + vaultPrefix?: + | SyncReconcileResponseVaultPrefix1 + | any + | string + | null + | undefined; + service: "parameter-store"; + type: TargetTypeVault1; +}; + +/** + * Represents a vault binding for secure secret management + */ +export type SyncReconcileResponseExternalBindingsUnion5 = + | SyncReconcileResponseExternalBindingsParameterStore + | SyncReconcileResponseExternalBindingsSecretManager + | SyncReconcileResponseExternalBindingsKeyVault + | SyncReconcileResponseExternalBindingsKubernetesSecret + | SyncReconcileResponseExternalBindingsLocalVault; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDataDirSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseDataDir2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseDataDirSecretRef2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRegistryUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseRegistryUrl = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseRegistryUrlSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRegistryUrlUnion = + | SyncReconcileResponseRegistryUrl + | any + | string; + +export const TargetTypeArtifactRegistry4 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type TargetTypeArtifactRegistry4 = ClosedEnum< + typeof TargetTypeArtifactRegistry4 +>; + +/** + * Local container registry binding configuration. + * + * @remarks + * + * The local registry runs on localhost only and does not require authentication. + * Security boundary is the OS process isolation on the customer's machine. + * External image access is secured by the manager's registry proxy (deployment tokens). + */ +export type SyncReconcileResponseExternalBindingsLocal = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + dataDir?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + registryUrl?: + | SyncReconcileResponseRegistryUrl + | any + | string + | null + | undefined; + service: "local"; + type: TargetTypeArtifactRegistry4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponsePullServiceAccountEmailSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponsePullServiceAccountEmail = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponsePullServiceAccountEmailSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponsePushServiceAccountEmailSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponsePushServiceAccountEmail = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponsePushServiceAccountEmailSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRepositoryNameSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseRepositoryName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseRepositoryNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRepositoryNameUnion = + | SyncReconcileResponseRepositoryName + | any + | string; + +export const TargetTypeArtifactRegistry3 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type TargetTypeArtifactRegistry3 = ClosedEnum< + typeof TargetTypeArtifactRegistry3 +>; + +/** + * Google Artifact Registry binding configuration + */ +export type SyncReconcileResponseExternalBindingsGar = { + pullServiceAccountEmail?: any | null | undefined; + pushServiceAccountEmail?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + repositoryName?: + | SyncReconcileResponseRepositoryName + | any + | string + | null + | undefined; + service: "gar"; + type: TargetTypeArtifactRegistry3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRegistryNameSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseRegistryName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseRegistryNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRegistryNameUnion = + | SyncReconcileResponseRegistryName + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRepositoryPrefixSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseRepositoryPrefix2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseRepositoryPrefixSecretRef2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceGroupNameSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseResourceGroupName2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseResourceGroupNameSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceGroupNameUnion2 = + | SyncReconcileResponseResourceGroupName2 + | any + | string; + +export const TargetTypeArtifactRegistry2 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type TargetTypeArtifactRegistry2 = ClosedEnum< + typeof TargetTypeArtifactRegistry2 +>; + +/** + * Azure Container Registry binding configuration + */ +export type SyncReconcileResponseExternalBindingsAcr = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + registryName?: + | SyncReconcileResponseRegistryName + | any + | string + | null + | undefined; + repositoryPrefix?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceGroupName?: + | SyncReconcileResponseResourceGroupName2 + | any + | string + | null + | undefined; + service: "acr"; + type: TargetTypeArtifactRegistry2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponsePullRoleArnSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponsePullRoleArn = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponsePullRoleArnSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponsePushRoleArnSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponsePushRoleArn = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponsePushRoleArnSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRepositoryPrefixSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseRepositoryPrefix1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseRepositoryPrefixSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRepositoryPrefixUnion = + | SyncReconcileResponseRepositoryPrefix1 + | any + | string; + +export const TargetTypeArtifactRegistry1 = { + ArtifactRegistry: "artifact_registry", +} as const; +export type TargetTypeArtifactRegistry1 = ClosedEnum< + typeof TargetTypeArtifactRegistry1 +>; + +/** + * AWS ECR (Elastic Container Registry) binding configuration + */ +export type SyncReconcileResponseExternalBindingsEcr = { + pullRoleArn?: any | null | undefined; + pushRoleArn?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + repositoryPrefix?: + | SyncReconcileResponseRepositoryPrefix1 + | any + | string + | null + | undefined; + service: "ecr"; + type: TargetTypeArtifactRegistry1; +}; + +/** + * Service-type based artifact registry binding that supports multiple registry providers + */ +export type SyncReconcileResponseExternalBindingsUnion4 = + | SyncReconcileResponseExternalBindingsEcr + | SyncReconcileResponseExternalBindingsAcr + | SyncReconcileResponseExternalBindingsGar + | SyncReconcileResponseExternalBindingsLocal; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDataDirSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseDataDir1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseDataDirSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDataDirUnion1 = + | SyncReconcileResponseDataDir1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseKeyPrefixSecretRef2 = { + key: string; + name: string; +}; + +/** @internal */ +export const SyncReconcileResponseTargetReleaseManagementUnion$inboundSchema: + z.ZodType = z + .union([ + SyncReconcileResponseTargetReleaseManagement1$inboundSchema, + SyncReconcileResponseTargetReleaseManagement2$inboundSchema, + SyncReconcileResponseTargetReleaseManagementEnum$inboundSchema, + ]); + +export function syncReconcileResponseTargetReleaseManagementUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseManagementUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseManagementUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseManagementUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseTargetReleaseProfileAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseTargetReleaseProfileAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseProfileAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleaseProfileEffect, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseTargetReleaseProfileAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponseTargetReleaseProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseTargetReleaseProfileAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseProfileAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseProfileAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseProfileAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseTargetReleaseProfileAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileAzure$inboundSchema: + z.ZodType = z.object( + { + binding: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }, + ); + +export function syncReconcileResponseTargetReleaseProfileAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponseTargetReleaseProfileConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseTargetReleaseProfileConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponseTargetReleaseProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseTargetReleaseProfileResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseProfileGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseTargetReleaseProfileConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileConditionUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseProfileCondition$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseTargetReleaseProfileConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseProfileCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseProfileGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileGcpStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseProfileGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseTargetReleaseProfileGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseTargetReleaseProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseTargetReleaseProfileGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfilePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseTargetReleaseProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseTargetReleaseProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseTargetReleaseProfileGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseProfilePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfilePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfilePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfile$inboundSchema: z.ZodType< + SyncReconcileResponseTargetReleaseProfile, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponseTargetReleaseProfilePlatforms$inboundSchema + ), +}); + +export function syncReconcileResponseTargetReleaseProfileFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfile, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfile$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfile' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProfileUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseTargetReleaseProfile$inboundSchema), + z.string(), + ]); + +export function syncReconcileResponseTargetReleaseProfileUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseProfileUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseProfileUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseProfileUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleasePermissions$inboundSchema: + z.ZodType = z.object({ + management: z.union([ + SyncReconcileResponseTargetReleaseManagement1$inboundSchema, + SyncReconcileResponseTargetReleaseManagement2$inboundSchema, + SyncReconcileResponseTargetReleaseManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseProfile$inboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); + +export function syncReconcileResponseTargetReleasePermissionsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleasePermissions, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleasePermissions$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleasePermissions' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseConfig$inboundSchema: z.ZodType< + SyncReconcileResponseTargetReleaseConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncReconcileResponseTargetReleaseConfigFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseConfig, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseConfig$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseDependency$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + type: z.string(), + }); + +export function syncReconcileResponseTargetReleaseDependencyFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseDependency, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseDependency' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseLifecycle$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleaseLifecycle, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseResources$inboundSchema: + z.ZodType = z.object({ + config: z.lazy(() => + SyncReconcileResponseTargetReleaseConfig$inboundSchema + ), + dependencies: z.array( + z.lazy(() => SyncReconcileResponseTargetReleaseDependency$inboundSchema), + ), + lifecycle: SyncReconcileResponseTargetReleaseLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncReconcileResponseTargetReleaseResourcesFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseResources, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseResources' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseSupportedPlatform$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponseTargetReleaseSupportedPlatform); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseStack$inboundSchema: z.ZodType< + SyncReconcileResponseTargetReleaseStack, + unknown +> = z.object({ + id: z.string(), + inputs: z.array(SyncReconcileResponseTargetReleaseInput$inboundSchema) + .optional(), + permissions: z.lazy(() => + SyncReconcileResponseTargetReleasePermissions$inboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileResponseTargetReleaseResources$inboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncReconcileResponseTargetReleaseSupportedPlatform$inboundSchema), + ).optional(), +}); + +export function syncReconcileResponseTargetReleaseStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetRelease$inboundSchema: z.ZodType< + SyncReconcileResponseTargetRelease, + unknown +> = z.object({ + description: z.nullable(z.string()).optional(), + releaseId: z.string(), + stack: z.lazy(() => SyncReconcileResponseTargetReleaseStack$inboundSchema), + version: z.nullable(z.string()).optional(), +}); + +export function syncReconcileResponseTargetReleaseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetRelease$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetRelease' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseUnion$inboundSchema: z.ZodType< + SyncReconcileResponseTargetReleaseUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseTargetRelease$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseTargetReleaseUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrent$inboundSchema: z.ZodType< + SyncReconcileResponseCurrent, + unknown +> = z.object({ + currentRelease: z.nullable( + SyncReconcileResponseCurrentReleaseUnion$inboundSchema, + ).optional(), + environmentInfo: z.nullable( + SyncReconcileResponseEnvironmentInfoUnion$inboundSchema, + ).optional(), + error: z.nullable(SyncReconcileResponseErrorUnion$inboundSchema).optional(), + platform: SyncReconcileResponseCurrentPlatform$inboundSchema, + protocolVersion: z.int(), + retryRequested: z.boolean().optional(), + runtimeMetadata: z.nullable( + SyncReconcileResponseRuntimeMetadataUnion$inboundSchema, + ).optional(), + stackState: z.nullable(SyncReconcileResponseStackStateUnion$inboundSchema) + .optional(), + status: SyncReconcileResponseStatus$inboundSchema, + targetRelease: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseTargetRelease$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileResponseCurrentFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseCurrent$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrent' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseBasePlatformEnum$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseBasePlatformEnum +> = z.enum(SyncReconcileResponseBasePlatformEnum); + +/** @internal */ +export const SyncReconcileResponseBasePlatformUnion$inboundSchema: z.ZodType< + SyncReconcileResponseBasePlatformUnion, + unknown +> = z.union([SyncReconcileResponseBasePlatformEnum$inboundSchema, z.any()]); + +export function syncReconcileResponseBasePlatformUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseBasePlatformUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseBasePlatformUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseClusters$inboundSchema: z.ZodType< + SyncReconcileResponseClusters, + unknown +> = z.object({ + clusterId: z.string(), + managementToken: z.string(), +}); + +export function syncReconcileResponseClustersFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseClusters$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseClusters' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseHorizonMachineImageAws$inboundSchema: + z.ZodType = z.object({ + amis: z.record(z.string(), z.record(z.string(), z.string())), + }); + +export function syncReconcileResponseHorizonMachineImageAwsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseHorizonMachineImageAws, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseHorizonMachineImageAws$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseHorizonMachineImageAws' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseHorizonMachineImageAwsUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncReconcileResponseHorizonMachineImageAws$inboundSchema), + z.any(), + ]); + +export function syncReconcileResponseHorizonMachineImageAwsUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseHorizonMachineImageAwsUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseHorizonMachineImageAwsUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseHorizonMachineImageAwsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseAzureImages$inboundSchema: z.ZodType< + SyncReconcileResponseAzureImages, + unknown +> = z.object({ + imageVersionId: z.string(), +}); + +export function syncReconcileResponseAzureImagesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseAzureImages$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseAzureImages' from JSON`, + ); +} + +/** @internal */ +export const HorizonMachineImageAzureTarget$inboundSchema: z.ZodType< + HorizonMachineImageAzureTarget, + unknown +> = z.object({ + images: z.record( + z.string(), + z.lazy(() => SyncReconcileResponseAzureImages$inboundSchema), + ), +}); + +export function horizonMachineImageAzureTargetFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => HorizonMachineImageAzureTarget$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'HorizonMachineImageAzureTarget' from JSON`, + ); +} + +/** @internal */ +export const HorizonMachineImageTargetAzureUnion$inboundSchema: z.ZodType< + HorizonMachineImageTargetAzureUnion, + unknown +> = z.union([ + z.lazy(() => HorizonMachineImageAzureTarget$inboundSchema), + z.any(), +]); + +export function horizonMachineImageTargetAzureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + HorizonMachineImageTargetAzureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'HorizonMachineImageTargetAzureUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseBaseImage$inboundSchema: z.ZodType< + SyncReconcileResponseBaseImage, + unknown +> = z.object({ + name: z.string(), + version: z.string(), +}); + +export function syncReconcileResponseBaseImageFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseBaseImage$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseBaseImage' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseGcpImages$inboundSchema: z.ZodType< + SyncReconcileResponseGcpImages, + unknown +> = z.object({ + sourceImage: z.string(), +}); + +export function syncReconcileResponseGcpImagesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseGcpImages$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseGcpImages' from JSON`, + ); +} + +/** @internal */ +export const HorizonMachineImageGcpTarget$inboundSchema: z.ZodType< + HorizonMachineImageGcpTarget, + unknown +> = z.object({ + images: z.record( + z.string(), + z.lazy(() => SyncReconcileResponseGcpImages$inboundSchema), + ), +}); + +export function horizonMachineImageGcpTargetFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => HorizonMachineImageGcpTarget$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'HorizonMachineImageGcpTarget' from JSON`, + ); +} + +/** @internal */ +export const HorizonMachineImageTargetGcpUnion$inboundSchema: z.ZodType< + HorizonMachineImageTargetGcpUnion, + unknown +> = z.union([ + z.lazy(() => HorizonMachineImageGcpTarget$inboundSchema), + z.any(), +]); + +export function horizonMachineImageTargetGcpUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => HorizonMachineImageTargetGcpUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'HorizonMachineImageTargetGcpUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseHorizonMachineImage$inboundSchema: z.ZodType< + SyncReconcileResponseHorizonMachineImage, + unknown +> = z.object({ + aws: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseHorizonMachineImageAws$inboundSchema), + z.any(), + ]), + ).optional(), + azure: z.nullable( + z.union([ + z.lazy(() => HorizonMachineImageAzureTarget$inboundSchema), + z.any(), + ]), + ).optional(), + baseImage: z.lazy(() => SyncReconcileResponseBaseImage$inboundSchema), + channel: z.string(), + createdAt: z.string(), + gcp: z.nullable( + z.union([ + z.lazy(() => HorizonMachineImageGcpTarget$inboundSchema), + z.any(), + ]), + ).optional(), + gitSha: z.string(), + horizondVersion: z.string(), + machineImageVersion: z.string(), +}); + +export function syncReconcileResponseHorizonMachineImageFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseHorizonMachineImage, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseHorizonMachineImage$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseHorizonMachineImage' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseHorizonMachineImageUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseHorizonMachineImage$inboundSchema), + z.any(), + ]); + +export function syncReconcileResponseHorizonMachineImageUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseHorizonMachineImageUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseHorizonMachineImageUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseHorizonMachineImageUnion' from JSON`, + ); +} + +/** @internal */ +export const ComputeBackendTargetType$inboundSchema: z.ZodEnum< + typeof ComputeBackendTargetType +> = z.enum(ComputeBackendTargetType); + +/** @internal */ +export const SyncReconcileResponseComputeBackendHorizon$inboundSchema: + z.ZodType = z.object({ + clusters: z.record( + z.string(), + z.lazy(() => SyncReconcileResponseClusters$inboundSchema), + ), + horizonMachineImage: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseHorizonMachineImage$inboundSchema), + z.any(), + ]), + ).optional(), + url: z.string(), + type: ComputeBackendTargetType$inboundSchema, + }); + +export function syncReconcileResponseComputeBackendHorizonFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseComputeBackendHorizon, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseComputeBackendHorizon$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseComputeBackendHorizon' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseComputeBackendUnion$inboundSchema: z.ZodType< + SyncReconcileResponseComputeBackendUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseComputeBackendHorizon$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseComputeBackendUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseComputeBackendUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseComputeBackendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseComputeBackendUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseAliasCertificateStatus$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseAliasCertificateStatus, + ); + +/** @internal */ +export const SyncReconcileResponseAliasDnsStatus$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseAliasDnsStatus +> = z.enum(SyncReconcileResponseAliasDnsStatus); + +/** @internal */ +export const SyncReconcileResponseAlias$inboundSchema: z.ZodType< + SyncReconcileResponseAlias, + unknown +> = z.object({ + certificateChain: z.nullable(z.string()).optional(), + certificateId: z.string(), + certificateStatus: SyncReconcileResponseAliasCertificateStatus$inboundSchema, + dnsError: z.nullable(z.string()).optional(), + dnsStatus: SyncReconcileResponseAliasDnsStatus$inboundSchema, + fqdn: z.string(), + issuedAt: z.nullable(z.string()).optional(), + privateKey: z.nullable(z.string()).optional(), +}); + +export function syncReconcileResponseAliasFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseAlias$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseAlias' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateStatus$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseCertificateStatus +> = z.enum(SyncReconcileResponseCertificateStatus); + +/** @internal */ +export const SyncReconcileResponseDnsStatus$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseDnsStatus +> = z.enum(SyncReconcileResponseDnsStatus); + +/** @internal */ +export const SyncReconcileResponseEndpointsCertificateStatus$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseEndpointsCertificateStatus, + ); + +/** @internal */ +export const SyncReconcileResponseEndpointsDnsStatus$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseEndpointsDnsStatus +> = z.enum(SyncReconcileResponseEndpointsDnsStatus); + +/** @internal */ +export const SyncReconcileResponseEndpoints$inboundSchema: z.ZodType< + SyncReconcileResponseEndpoints, + unknown +> = z.object({ + certificateChain: z.nullable(z.string()).optional(), + certificateId: z.string(), + certificateStatus: + SyncReconcileResponseEndpointsCertificateStatus$inboundSchema, + dnsError: z.nullable(z.string()).optional(), + dnsStatus: SyncReconcileResponseEndpointsDnsStatus$inboundSchema, + fqdn: z.string(), + issuedAt: z.nullable(z.string()).optional(), + privateKey: z.nullable(z.string()).optional(), +}); + +export function syncReconcileResponseEndpointsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseEndpoints$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseEndpoints' from JSON`, + ); +} + +/** @internal */ +export const DomainMetadataTargetResources$inboundSchema: z.ZodType< + DomainMetadataTargetResources, + unknown +> = z.object({ + aliases: z.array(z.lazy(() => SyncReconcileResponseAlias$inboundSchema)) + .optional(), + certificateChain: z.nullable(z.string()).optional(), + certificateId: z.string(), + certificateStatus: SyncReconcileResponseCertificateStatus$inboundSchema, + dnsError: z.nullable(z.string()).optional(), + dnsStatus: SyncReconcileResponseDnsStatus$inboundSchema, + endpoints: z.record( + z.string(), + z.lazy(() => SyncReconcileResponseEndpoints$inboundSchema), + ).optional(), + fqdn: z.string(), + issuedAt: z.nullable(z.string()).optional(), + privateKey: z.nullable(z.string()).optional(), +}); + +export function domainMetadataTargetResourcesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => DomainMetadataTargetResources$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'DomainMetadataTargetResources' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDomainMetadata$inboundSchema: z.ZodType< + SyncReconcileResponseDomainMetadata, + unknown +> = z.object({ + baseDomain: z.string(), + hostedZoneId: z.string(), + publicSubdomain: z.string(), + resources: z.record( + z.string(), + z.lazy(() => DomainMetadataTargetResources$inboundSchema), + ), +}); + +export function syncReconcileResponseDomainMetadataFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDomainMetadata$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDomainMetadata' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDomainMetadataUnion$inboundSchema: z.ZodType< + SyncReconcileResponseDomainMetadataUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseDomainMetadata$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseDomainMetadataUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseDomainMetadataUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDomainMetadataUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseDomainMetadataUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetEnvironmentVariablesType$inboundSchema: z.ZodEnum< + typeof TargetEnvironmentVariablesType +> = z.enum(TargetEnvironmentVariablesType); + +/** @internal */ +export const SyncReconcileResponseVariable$inboundSchema: z.ZodType< + SyncReconcileResponseVariable, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: TargetEnvironmentVariablesType$inboundSchema, + value: z.string(), +}); + +export function syncReconcileResponseVariableFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseVariable$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseVariable' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseEnvironmentVariables$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentVariables, + unknown +> = z.object({ + createdAt: z.string(), + hash: z.string(), + variables: z.array(z.lazy(() => SyncReconcileResponseVariable$inboundSchema)), +}); + +export function syncReconcileResponseEnvironmentVariablesFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseEnvironmentVariables, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseEnvironmentVariables$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseEnvironmentVariables' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDefaultDomainSecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseDefaultDomainSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseDefaultDomainSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDefaultDomainSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseDefaultDomainSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDefaultDomain$inboundSchema: z.ZodType< + SyncReconcileResponseDefaultDomain, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseDefaultDomainSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseDefaultDomainFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDefaultDomain$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDefaultDomain' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDefaultDomainUnion$inboundSchema: z.ZodType< + SyncReconcileResponseDefaultDomainUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseDefaultDomain$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseDefaultDomainUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseDefaultDomainUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDefaultDomainUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseDefaultDomainUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseEnvironmentNameSecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseEnvironmentNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseEnvironmentNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseEnvironmentNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseEnvironmentNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseEnvironmentName$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseEnvironmentNameSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseEnvironmentNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseEnvironmentName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseEnvironmentName' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseEnvironmentNameUnion$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseEnvironmentName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseEnvironmentNameUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseEnvironmentNameUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseEnvironmentNameUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseEnvironmentNameUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceGroupNameSecretRef3$inboundSchema: + z.ZodType = z + .object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseResourceGroupNameSecretRef3FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseResourceGroupNameSecretRef3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseResourceGroupNameSecretRef3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseResourceGroupNameSecretRef3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceGroupName3$inboundSchema: z.ZodType< + SyncReconcileResponseResourceGroupName3, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseResourceGroupNameSecretRef3$inboundSchema + ), +}); + +export function syncReconcileResponseResourceGroupName3FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseResourceGroupName3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseResourceGroupName3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseResourceGroupName3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceGroupNameUnion3$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseResourceGroupName3$inboundSchema), + z.any(), + z.string(), + ]); + +export function syncReconcileResponseResourceGroupNameUnion3FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseResourceGroupNameUnion3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseResourceGroupNameUnion3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseResourceGroupNameUnion3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceIdSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseResourceIdSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseResourceIdSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseResourceIdSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseResourceIdSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseResourceIdSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceId$inboundSchema: z.ZodType< + SyncReconcileResponseResourceId, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseResourceIdSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseResourceIdFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseResourceId$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseResourceId' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceIdUnion$inboundSchema: z.ZodType< + SyncReconcileResponseResourceIdUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseResourceId$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseResourceIdUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseResourceIdUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseResourceIdUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStaticIpSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseStaticIpSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseStaticIpSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStaticIpSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseStaticIpSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStaticIp$inboundSchema: z.ZodType< + SyncReconcileResponseStaticIp, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncReconcileResponseStaticIpSecretRef$inboundSchema), +}); + +export function syncReconcileResponseStaticIpFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseStaticIp$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseStaticIp' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeContainerAppsEnvironment$inboundSchema: z.ZodEnum< + typeof TargetTypeContainerAppsEnvironment +> = z.enum(TargetTypeContainerAppsEnvironment); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsContainerAppsEnvironment$inboundSchema: + z.ZodType< + SyncReconcileResponseExternalBindingsContainerAppsEnvironment, + unknown + > = z.object({ + defaultDomain: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseDefaultDomain$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + environmentName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseEnvironmentName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + resourceGroupName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseResourceGroupName3$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + resourceId: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseResourceId$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + staticIp: z.nullable(z.any()).optional(), + type: TargetTypeContainerAppsEnvironment$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsContainerAppsEnvironmentFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsContainerAppsEnvironment, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsContainerAppsEnvironment$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseExternalBindingsContainerAppsEnvironment' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDataDirSecretRef3$inboundSchema: z.ZodType< + SyncReconcileResponseDataDirSecretRef3, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseDataDirSecretRef3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDataDirSecretRef3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDataDirSecretRef3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDataDir3$inboundSchema: z.ZodType< + SyncReconcileResponseDataDir3, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncReconcileResponseDataDirSecretRef3$inboundSchema), +}); + +export function syncReconcileResponseDataDir3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseDataDir3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDataDir3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDataDirUnion2$inboundSchema: z.ZodType< + SyncReconcileResponseDataDirUnion2, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseDataDir3$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseDataDirUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDataDirUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDataDirUnion2' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeVault5$inboundSchema: z.ZodEnum< + typeof TargetTypeVault5 +> = z.enum(TargetTypeVault5); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsLocalVault$inboundSchema: + z.ZodType = z + .object({ + dataDir: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseDataDir3$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + vaultName: z.string(), + service: z.literal("local-vault"), + type: TargetTypeVault5$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsLocalVaultFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsLocalVault, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsLocalVault$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsLocalVault' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseNamespaceSecretRef2$inboundSchema: z.ZodType< + SyncReconcileResponseNamespaceSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseNamespaceSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseNamespaceSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseNamespaceSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseNamespaceSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseNamespace2$inboundSchema: z.ZodType< + SyncReconcileResponseNamespace2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseNamespaceSecretRef2$inboundSchema + ), +}); + +export function syncReconcileResponseNamespace2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseNamespace2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseNamespace2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseNamespaceUnion2$inboundSchema: z.ZodType< + SyncReconcileResponseNamespaceUnion2, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseNamespace2$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseNamespaceUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseNamespaceUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseNamespaceUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultPrefixSecretRef3$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseVaultPrefixSecretRef3FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseVaultPrefixSecretRef3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseVaultPrefixSecretRef3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseVaultPrefixSecretRef3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultPrefix3$inboundSchema: z.ZodType< + SyncReconcileResponseVaultPrefix3, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseVaultPrefixSecretRef3$inboundSchema + ), +}); + +export function syncReconcileResponseVaultPrefix3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseVaultPrefix3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseVaultPrefix3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultPrefixUnion3$inboundSchema: z.ZodType< + SyncReconcileResponseVaultPrefixUnion3, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseVaultPrefix3$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseVaultPrefixUnion3FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseVaultPrefixUnion3$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseVaultPrefixUnion3' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeVault4$inboundSchema: z.ZodEnum< + typeof TargetTypeVault4 +> = z.enum(TargetTypeVault4); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsKubernetesSecret$inboundSchema: + z.ZodType = z + .object({ + namespace: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseNamespace2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + vaultPrefix: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseVaultPrefix3$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("kubernetes-secret"), + type: TargetTypeVault4$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsKubernetesSecretFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsKubernetesSecret, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsKubernetesSecret$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsKubernetesSecret' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultNameSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseVaultNameSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseVaultNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseVaultNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseVaultNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseVaultNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultName$inboundSchema: z.ZodType< + SyncReconcileResponseVaultName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseVaultNameSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseVaultNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseVaultName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseVaultName' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultNameUnion$inboundSchema: z.ZodType< + SyncReconcileResponseVaultNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseVaultName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseVaultNameUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseVaultNameUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseVaultNameUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeVault3$inboundSchema: z.ZodEnum< + typeof TargetTypeVault3 +> = z.enum(TargetTypeVault3); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsKeyVault$inboundSchema: + z.ZodType = z.object({ + vaultName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseVaultName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("key-vault"), + type: TargetTypeVault3$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsKeyVaultFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsKeyVault, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsKeyVault$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsKeyVault' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultPrefixSecretRef2$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseVaultPrefixSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseVaultPrefixSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseVaultPrefixSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseVaultPrefixSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultPrefix2$inboundSchema: z.ZodType< + SyncReconcileResponseVaultPrefix2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseVaultPrefixSecretRef2$inboundSchema + ), +}); + +export function syncReconcileResponseVaultPrefix2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseVaultPrefix2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseVaultPrefix2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultPrefixUnion2$inboundSchema: z.ZodType< + SyncReconcileResponseVaultPrefixUnion2, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseVaultPrefix2$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseVaultPrefixUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseVaultPrefixUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseVaultPrefixUnion2' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeVault2$inboundSchema: z.ZodEnum< + typeof TargetTypeVault2 +> = z.enum(TargetTypeVault2); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsSecretManager$inboundSchema: + z.ZodType = z + .object({ + vaultPrefix: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseVaultPrefix2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("secret-manager"), + type: TargetTypeVault2$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsSecretManagerFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsSecretManager, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsSecretManager$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsSecretManager' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultPrefixSecretRef1$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseVaultPrefixSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseVaultPrefixSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseVaultPrefixSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseVaultPrefixSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultPrefix1$inboundSchema: z.ZodType< + SyncReconcileResponseVaultPrefix1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseVaultPrefixSecretRef1$inboundSchema + ), +}); + +export function syncReconcileResponseVaultPrefix1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseVaultPrefix1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseVaultPrefix1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseVaultPrefixUnion1$inboundSchema: z.ZodType< + SyncReconcileResponseVaultPrefixUnion1, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseVaultPrefix1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseVaultPrefixUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseVaultPrefixUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseVaultPrefixUnion1' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeVault1$inboundSchema: z.ZodEnum< + typeof TargetTypeVault1 +> = z.enum(TargetTypeVault1); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsParameterStore$inboundSchema: + z.ZodType = z + .object({ + vaultPrefix: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseVaultPrefix1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("parameter-store"), + type: TargetTypeVault1$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsParameterStoreFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsParameterStore, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsParameterStore$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsParameterStore' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseExternalBindingsUnion5$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => + SyncReconcileResponseExternalBindingsParameterStore$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseExternalBindingsSecretManager$inboundSchema + ), + z.lazy(() => SyncReconcileResponseExternalBindingsKeyVault$inboundSchema), + z.lazy(() => + SyncReconcileResponseExternalBindingsKubernetesSecret$inboundSchema + ), + z.lazy(() => SyncReconcileResponseExternalBindingsLocalVault$inboundSchema), + ]); + +export function syncReconcileResponseExternalBindingsUnion5FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsUnion5, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsUnion5$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsUnion5' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDataDirSecretRef2$inboundSchema: z.ZodType< + SyncReconcileResponseDataDirSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseDataDirSecretRef2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDataDirSecretRef2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDataDirSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDataDir2$inboundSchema: z.ZodType< + SyncReconcileResponseDataDir2, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncReconcileResponseDataDirSecretRef2$inboundSchema), +}); + +export function syncReconcileResponseDataDir2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseDataDir2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDataDir2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRegistryUrlSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseRegistryUrlSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseRegistryUrlSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseRegistryUrlSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRegistryUrlSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseRegistryUrlSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRegistryUrl$inboundSchema: z.ZodType< + SyncReconcileResponseRegistryUrl, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseRegistryUrlSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseRegistryUrlFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseRegistryUrl$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRegistryUrl' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRegistryUrlUnion$inboundSchema: z.ZodType< + SyncReconcileResponseRegistryUrlUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseRegistryUrl$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseRegistryUrlUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRegistryUrlUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRegistryUrlUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeArtifactRegistry4$inboundSchema: z.ZodEnum< + typeof TargetTypeArtifactRegistry4 +> = z.enum(TargetTypeArtifactRegistry4); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsLocal$inboundSchema: + z.ZodType = z.object({ + dataDir: z.nullable(z.any()).optional(), + registryUrl: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseRegistryUrl$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("local"), + type: TargetTypeArtifactRegistry4$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsLocalFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsLocal, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsLocal$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsLocal' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePullServiceAccountEmailSecretRef$inboundSchema: + z.ZodType = z + .object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponsePullServiceAccountEmailSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePullServiceAccountEmailSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePullServiceAccountEmailSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePullServiceAccountEmailSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePullServiceAccountEmail$inboundSchema: + z.ZodType = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponsePullServiceAccountEmailSecretRef$inboundSchema + ), + }); + +export function syncReconcileResponsePullServiceAccountEmailFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePullServiceAccountEmail, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePullServiceAccountEmail$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePullServiceAccountEmail' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePushServiceAccountEmailSecretRef$inboundSchema: + z.ZodType = z + .object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponsePushServiceAccountEmailSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePushServiceAccountEmailSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePushServiceAccountEmailSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePushServiceAccountEmailSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePushServiceAccountEmail$inboundSchema: + z.ZodType = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponsePushServiceAccountEmailSecretRef$inboundSchema + ), + }); + +export function syncReconcileResponsePushServiceAccountEmailFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePushServiceAccountEmail, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePushServiceAccountEmail$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePushServiceAccountEmail' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRepositoryNameSecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseRepositoryNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseRepositoryNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRepositoryNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseRepositoryNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRepositoryName$inboundSchema: z.ZodType< + SyncReconcileResponseRepositoryName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseRepositoryNameSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseRepositoryNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRepositoryName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRepositoryName' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRepositoryNameUnion$inboundSchema: z.ZodType< + SyncReconcileResponseRepositoryNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseRepositoryName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseRepositoryNameUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseRepositoryNameUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRepositoryNameUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseRepositoryNameUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeArtifactRegistry3$inboundSchema: z.ZodEnum< + typeof TargetTypeArtifactRegistry3 +> = z.enum(TargetTypeArtifactRegistry3); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsGar$inboundSchema: z.ZodType< + SyncReconcileResponseExternalBindingsGar, + unknown +> = z.object({ + pullServiceAccountEmail: z.nullable(z.any()).optional(), + pushServiceAccountEmail: z.nullable(z.any()).optional(), + repositoryName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseRepositoryName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("gar"), + type: TargetTypeArtifactRegistry3$inboundSchema, +}); + +export function syncReconcileResponseExternalBindingsGarFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsGar, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsGar$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsGar' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRegistryNameSecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseRegistryNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseRegistryNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRegistryNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseRegistryNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRegistryName$inboundSchema: z.ZodType< + SyncReconcileResponseRegistryName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseRegistryNameSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseRegistryNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseRegistryName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRegistryName' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRegistryNameUnion$inboundSchema: z.ZodType< + SyncReconcileResponseRegistryNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseRegistryName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseRegistryNameUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRegistryNameUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRegistryNameUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRepositoryPrefixSecretRef2$inboundSchema: + z.ZodType = z + .object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseRepositoryPrefixSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseRepositoryPrefixSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRepositoryPrefixSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseRepositoryPrefixSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRepositoryPrefix2$inboundSchema: z.ZodType< + SyncReconcileResponseRepositoryPrefix2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseRepositoryPrefixSecretRef2$inboundSchema + ), +}); + +export function syncReconcileResponseRepositoryPrefix2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRepositoryPrefix2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRepositoryPrefix2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceGroupNameSecretRef2$inboundSchema: + z.ZodType = z + .object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseResourceGroupNameSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseResourceGroupNameSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseResourceGroupNameSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseResourceGroupNameSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceGroupName2$inboundSchema: z.ZodType< + SyncReconcileResponseResourceGroupName2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseResourceGroupNameSecretRef2$inboundSchema + ), +}); + +export function syncReconcileResponseResourceGroupName2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseResourceGroupName2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseResourceGroupName2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseResourceGroupName2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceGroupNameUnion2$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseResourceGroupName2$inboundSchema), + z.any(), + z.string(), + ]); + +export function syncReconcileResponseResourceGroupNameUnion2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseResourceGroupNameUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseResourceGroupNameUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseResourceGroupNameUnion2' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeArtifactRegistry2$inboundSchema: z.ZodEnum< + typeof TargetTypeArtifactRegistry2 +> = z.enum(TargetTypeArtifactRegistry2); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsAcr$inboundSchema: z.ZodType< + SyncReconcileResponseExternalBindingsAcr, + unknown +> = z.object({ + registryName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseRegistryName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + repositoryPrefix: z.nullable(z.any()).optional(), + resourceGroupName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseResourceGroupName2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("acr"), + type: TargetTypeArtifactRegistry2$inboundSchema, +}); + +export function syncReconcileResponseExternalBindingsAcrFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsAcr, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsAcr$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsAcr' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePullRoleArnSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponsePullRoleArnSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponsePullRoleArnSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePullRoleArnSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePullRoleArnSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePullRoleArnSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePullRoleArn$inboundSchema: z.ZodType< + SyncReconcileResponsePullRoleArn, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponsePullRoleArnSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponsePullRoleArnFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponsePullRoleArn$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePullRoleArn' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePushRoleArnSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponsePushRoleArnSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponsePushRoleArnSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePushRoleArnSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePushRoleArnSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePushRoleArnSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePushRoleArn$inboundSchema: z.ZodType< + SyncReconcileResponsePushRoleArn, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponsePushRoleArnSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponsePushRoleArnFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponsePushRoleArn$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePushRoleArn' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRepositoryPrefixSecretRef1$inboundSchema: + z.ZodType = z + .object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseRepositoryPrefixSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseRepositoryPrefixSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRepositoryPrefixSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseRepositoryPrefixSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRepositoryPrefix1$inboundSchema: z.ZodType< + SyncReconcileResponseRepositoryPrefix1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseRepositoryPrefixSecretRef1$inboundSchema + ), +}); + +export function syncReconcileResponseRepositoryPrefix1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRepositoryPrefix1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRepositoryPrefix1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRepositoryPrefixUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseRepositoryPrefix1$inboundSchema), + z.any(), + z.string(), + ]); + +export function syncReconcileResponseRepositoryPrefixUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseRepositoryPrefixUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRepositoryPrefixUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseRepositoryPrefixUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeArtifactRegistry1$inboundSchema: z.ZodEnum< + typeof TargetTypeArtifactRegistry1 +> = z.enum(TargetTypeArtifactRegistry1); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsEcr$inboundSchema: z.ZodType< + SyncReconcileResponseExternalBindingsEcr, + unknown +> = z.object({ + pullRoleArn: z.nullable(z.any()).optional(), + pushRoleArn: z.nullable(z.any()).optional(), + repositoryPrefix: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseRepositoryPrefix1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("ecr"), + type: TargetTypeArtifactRegistry1$inboundSchema, +}); + +export function syncReconcileResponseExternalBindingsEcrFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsEcr, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsEcr$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsEcr' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseExternalBindingsUnion4$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseExternalBindingsEcr$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsAcr$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsGar$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsLocal$inboundSchema), + ]); + +export function syncReconcileResponseExternalBindingsUnion4FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsUnion4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsUnion4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsUnion4' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDataDirSecretRef1$inboundSchema: z.ZodType< + SyncReconcileResponseDataDirSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseDataDirSecretRef1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDataDirSecretRef1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDataDirSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDataDir1$inboundSchema: z.ZodType< + SyncReconcileResponseDataDir1, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncReconcileResponseDataDirSecretRef1$inboundSchema), +}); + +export function syncReconcileResponseDataDir1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseDataDir1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDataDir1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDataDirUnion1$inboundSchema: z.ZodType< + SyncReconcileResponseDataDirUnion1, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseDataDir1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseDataDirUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDataDirUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDataDirUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseKeyPrefixSecretRef2$inboundSchema: z.ZodType< + SyncReconcileResponseKeyPrefixSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseKeyPrefixSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseKeyPrefixSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseKeyPrefixSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseKeyPrefixSecretRef2' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/syncreconcileresponsepreparedstackoverridegcpstack.ts b/client-sdks/platform/typescript/src/models/syncreconcileresponsepreparedstackoverridegcpstack.ts new file mode 100644 index 000000000..6f01bcbbd --- /dev/null +++ b/client-sdks/platform/typescript/src/models/syncreconcileresponsepreparedstackoverridegcpstack.ts @@ -0,0 +1,5794 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { + collectExtraKeys as collectExtraKeys$, + safeParse, +} from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; + +export const SyncReconcileResponseCurrentReleaseTypeStringList = { + StringList: "stringList", +} as const; +export type SyncReconcileResponseCurrentReleaseTypeStringList = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseTypeStringList +>; + +export type SyncReconcileResponseCurrentReleaseDefaultStringList = { + type: SyncReconcileResponseCurrentReleaseTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const SyncReconcileResponseCurrentReleaseTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncReconcileResponseCurrentReleaseTypeBoolean = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseTypeBoolean +>; + +export type SyncReconcileResponseCurrentReleaseDefaultBoolean = { + type: SyncReconcileResponseCurrentReleaseTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const SyncReconcileResponseCurrentReleaseTypeNumber = { + Number: "number", +} as const; +export type SyncReconcileResponseCurrentReleaseTypeNumber = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseTypeNumber +>; + +export type SyncReconcileResponseCurrentReleaseDefaultNumber = { + type: SyncReconcileResponseCurrentReleaseTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const SyncReconcileResponseCurrentReleaseTypeString = { + String: "string", +} as const; +export type SyncReconcileResponseCurrentReleaseTypeString = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseTypeString +>; + +export type SyncReconcileResponseCurrentReleaseDefaultString = { + type: SyncReconcileResponseCurrentReleaseTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncReconcileResponseCurrentReleaseDefaultUnion = + | SyncReconcileResponseCurrentReleaseDefaultString + | SyncReconcileResponseCurrentReleaseDefaultNumber + | SyncReconcileResponseCurrentReleaseDefaultBoolean + | SyncReconcileResponseCurrentReleaseDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const SyncReconcileResponseCurrentReleaseTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncReconcileResponseCurrentReleaseTypeEnvEnum = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseTypeEnvEnum +>; + +export type SyncReconcileResponseCurrentReleaseTypeUnion = + | SyncReconcileResponseCurrentReleaseTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncReconcileResponseCurrentReleaseEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: + | SyncReconcileResponseCurrentReleaseTypeEnvEnum + | any + | null + | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const SyncReconcileResponseCurrentReleaseKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type SyncReconcileResponseCurrentReleaseKind = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseKind +>; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileResponseCurrentReleasePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseCurrentReleasePlatform = ClosedEnum< + typeof SyncReconcileResponseCurrentReleasePlatform +>; + +/** + * Who can provide a stack input value. + */ +export const SyncReconcileResponseCurrentReleaseProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncReconcileResponseCurrentReleaseProvidedBy = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type SyncReconcileResponseCurrentReleaseValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type SyncReconcileResponseCurrentReleaseValidationUnion = + | SyncReconcileResponseCurrentReleaseValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type SyncReconcileResponseCurrentReleaseInput = { + default?: + | SyncReconcileResponseCurrentReleaseDefaultString + | SyncReconcileResponseCurrentReleaseDefaultNumber + | SyncReconcileResponseCurrentReleaseDefaultBoolean + | SyncReconcileResponseCurrentReleaseDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: SyncReconcileResponseCurrentReleaseKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncReconcileResponseCurrentReleaseValidation + | any + | null + | undefined; +}; + +export const SyncReconcileResponseCurrentReleaseManagementEnum = { + Auto: "auto", +} as const; +export type SyncReconcileResponseCurrentReleaseManagementEnum = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseCurrentReleaseOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileResponseCurrentReleaseOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponseCurrentReleaseOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileResponseCurrentReleaseOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileResponseCurrentReleaseOverrideEffect = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseCurrentReleaseOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileResponseCurrentReleaseOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseCurrentReleaseOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponseCurrentReleaseOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseCurrentReleaseOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseCurrentReleaseOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | SyncReconcileResponseCurrentReleaseOverrideAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponseCurrentReleaseOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseCurrentReleaseOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileResponseCurrentReleaseOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseCurrentReleaseOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseCurrentReleaseOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseCurrentReleaseOverrideConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion = + | SyncReconcileResponseCurrentReleaseOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseOverrideGcpResource = { + condition?: + | SyncReconcileResponseCurrentReleaseOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseCurrentReleaseOverrideCondition = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseCurrentReleaseOverrideConditionUnion = + | SyncReconcileResponseCurrentReleaseOverrideCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseOverrideGcpStack = { + condition?: + | SyncReconcileResponseCurrentReleaseOverrideCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseCurrentReleaseOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileResponseCurrentReleaseOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileResponseCurrentReleaseOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseCurrentReleaseOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileResponseCurrentReleaseOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseCurrentReleaseOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseCurrentReleaseOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileResponseCurrentReleaseOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: + | Array + | null + | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileResponseCurrentReleaseOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponseCurrentReleaseOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileResponseCurrentReleaseOverrideUnion = + | SyncReconcileResponseCurrentReleaseOverride + | string; + +export type SyncReconcileResponseCurrentReleaseManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseCurrentReleaseExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileResponseCurrentReleaseExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponseCurrentReleaseExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileResponseCurrentReleaseExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileResponseCurrentReleaseExtendEffect = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseCurrentReleaseExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileResponseCurrentReleaseExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseCurrentReleaseExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponseCurrentReleaseExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseCurrentReleaseExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseCurrentReleaseExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileResponseCurrentReleaseExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponseCurrentReleaseExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseCurrentReleaseExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileResponseCurrentReleaseExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseCurrentReleaseExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseCurrentReleaseExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseCurrentReleaseExtendConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion = + | SyncReconcileResponseCurrentReleaseExtendConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseExtendGcpResource = { + condition?: + | SyncReconcileResponseCurrentReleaseExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseCurrentReleaseExtendCondition = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseCurrentReleaseExtendConditionUnion = + | SyncReconcileResponseCurrentReleaseExtendCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseExtendGcpStack = { + condition?: + | SyncReconcileResponseCurrentReleaseExtendCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseCurrentReleaseExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileResponseCurrentReleaseExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileResponseCurrentReleaseExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseCurrentReleaseExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileResponseCurrentReleaseExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseCurrentReleaseExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseCurrentReleaseExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileResponseCurrentReleaseExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileResponseCurrentReleaseExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponseCurrentReleaseExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileResponseCurrentReleaseExtendUnion = + | SyncReconcileResponseCurrentReleaseExtend + | string; + +export type SyncReconcileResponseCurrentReleaseManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array; + }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type SyncReconcileResponseCurrentReleaseManagementUnion = + | SyncReconcileResponseCurrentReleaseManagement1 + | SyncReconcileResponseCurrentReleaseManagement2 + | SyncReconcileResponseCurrentReleaseManagementEnum; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseCurrentReleaseProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileResponseCurrentReleaseProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponseCurrentReleaseProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileResponseCurrentReleaseProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileResponseCurrentReleaseProfileEffect = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseCurrentReleaseProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileResponseCurrentReleaseProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseCurrentReleaseProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponseCurrentReleaseProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseCurrentReleaseProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseCurrentReleaseProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | SyncReconcileResponseCurrentReleaseProfileAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponseCurrentReleaseProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseCurrentReleaseProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileResponseCurrentReleaseProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseCurrentReleaseProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseCurrentReleaseProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseCurrentReleaseProfileConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion = + | SyncReconcileResponseCurrentReleaseProfileConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseProfileGcpResource = { + condition?: + | SyncReconcileResponseCurrentReleaseProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseCurrentReleaseProfileCondition = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseCurrentReleaseProfileConditionUnion = + | SyncReconcileResponseCurrentReleaseProfileCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseCurrentReleaseProfileGcpStack = { + condition?: + | SyncReconcileResponseCurrentReleaseProfileCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseCurrentReleaseProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileResponseCurrentReleaseProfileGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileResponseCurrentReleaseProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseCurrentReleaseProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileResponseCurrentReleaseProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseCurrentReleaseProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseCurrentReleaseProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileResponseCurrentReleaseProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileResponseCurrentReleaseProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponseCurrentReleaseProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileResponseCurrentReleaseProfileUnion = + | SyncReconcileResponseCurrentReleaseProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncReconcileResponseCurrentReleasePermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncReconcileResponseCurrentReleaseManagement1 + | SyncReconcileResponseCurrentReleaseManagement2 + | SyncReconcileResponseCurrentReleaseManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileResponseCurrentReleaseConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncReconcileResponseCurrentReleaseDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const SyncReconcileResponseCurrentReleaseLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type SyncReconcileResponseCurrentReleaseLifecycle = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseLifecycle +>; + +export type SyncReconcileResponseCurrentReleaseResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncReconcileResponseCurrentReleaseConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: SyncReconcileResponseCurrentReleaseLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileResponseCurrentReleaseSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseCurrentReleaseSupportedPlatform = ClosedEnum< + typeof SyncReconcileResponseCurrentReleaseSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncReconcileResponseCurrentReleaseStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncReconcileResponseCurrentReleasePermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncReconcileResponseCurrentReleaseResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +/** + * Release metadata + * + * @remarks + * + * Identifies a specific release version and includes the stack definition. + * The deployment engine uses this to track which release is currently deployed + * and which is the target. + */ +export type SyncReconcileResponseCurrentRelease = { + /** + * Short description of the release + */ + description?: string | null | undefined; + /** + * Release ID (e.g., rel_xyz) + */ + releaseId: string; + /** + * A bag of resources, unaware of any cloud. + */ + stack: SyncReconcileResponseCurrentReleaseStack; + /** + * Version string (e.g., 2.1.0) + */ + version?: string | null | undefined; +}; + +export type SyncReconcileResponseCurrentReleaseUnion = + | SyncReconcileResponseCurrentRelease + | any; + +export const SyncReconcileResponsePlatformTest = { + Test: "test", +} as const; +export type SyncReconcileResponsePlatformTest = ClosedEnum< + typeof SyncReconcileResponsePlatformTest +>; + +/** + * Test platform environment information (mock) + */ +export type SyncReconcileResponseEnvironmentInfoTest = { + /** + * Test identifier for this environment + */ + testId: string; + platform: SyncReconcileResponsePlatformTest; +}; + +export const SyncReconcileResponsePlatformLocal = { + Local: "local", +} as const; +export type SyncReconcileResponsePlatformLocal = ClosedEnum< + typeof SyncReconcileResponsePlatformLocal +>; + +/** + * Local platform environment information + */ +export type SyncReconcileResponseEnvironmentInfoLocal = { + /** + * Architecture (e.g., "x86_64", "aarch64") + */ + arch: string; + /** + * Hostname of the machine running the deployment + */ + hostname: string; + /** + * Operating system (e.g., "linux", "macos", "windows") + */ + os: string; + platform: SyncReconcileResponsePlatformLocal; +}; + +export const SyncReconcileResponseCurrentPlatformAzure = { + Azure: "azure", +} as const; +export type SyncReconcileResponseCurrentPlatformAzure = ClosedEnum< + typeof SyncReconcileResponseCurrentPlatformAzure +>; + +/** + * Azure-specific environment information + */ +export type SyncReconcileResponseEnvironmentInfoAzure = { + /** + * Azure location/region + */ + location: string; + /** + * Azure subscription ID + */ + subscriptionId: string; + /** + * Azure tenant ID + */ + tenantId: string; + platform: SyncReconcileResponseCurrentPlatformAzure; +}; + +export const SyncReconcileResponseCurrentPlatformGcp = { + Gcp: "gcp", +} as const; +export type SyncReconcileResponseCurrentPlatformGcp = ClosedEnum< + typeof SyncReconcileResponseCurrentPlatformGcp +>; + +/** + * GCP-specific environment information + */ +export type SyncReconcileResponseEnvironmentInfoGcp = { + /** + * GCP project ID (e.g., "my-project") + */ + projectId: string; + /** + * GCP project number (e.g., "123456789012") + */ + projectNumber: string; + /** + * GCP region + */ + region: string; + platform: SyncReconcileResponseCurrentPlatformGcp; +}; + +export const SyncReconcileResponseCurrentPlatformAws = { + Aws: "aws", +} as const; +export type SyncReconcileResponseCurrentPlatformAws = ClosedEnum< + typeof SyncReconcileResponseCurrentPlatformAws +>; + +/** + * AWS-specific environment information + */ +export type SyncReconcileResponseEnvironmentInfoAws = { + /** + * AWS account ID + */ + accountId: string; + /** + * AWS region + */ + region: string; + platform: SyncReconcileResponseCurrentPlatformAws; +}; + +export type SyncReconcileResponseEnvironmentInfoUnion = + | SyncReconcileResponseEnvironmentInfoGcp + | SyncReconcileResponseEnvironmentInfoAzure + | SyncReconcileResponseEnvironmentInfoLocal + | SyncReconcileResponseEnvironmentInfoAws + | SyncReconcileResponseEnvironmentInfoTest + | any; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type SyncReconcileResponseError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type SyncReconcileResponseErrorUnion = SyncReconcileResponseError | any; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileResponseCurrentPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseCurrentPlatform = ClosedEnum< + typeof SyncReconcileResponseCurrentPlatform +>; + +export const SyncReconcileResponsePreparedStackTypeStringList = { + StringList: "stringList", +} as const; +export type SyncReconcileResponsePreparedStackTypeStringList = ClosedEnum< + typeof SyncReconcileResponsePreparedStackTypeStringList +>; + +export type SyncReconcileResponsePreparedStackDefaultStringList = { + type: SyncReconcileResponsePreparedStackTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const SyncReconcileResponsePreparedStackTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncReconcileResponsePreparedStackTypeBoolean = ClosedEnum< + typeof SyncReconcileResponsePreparedStackTypeBoolean +>; + +export type SyncReconcileResponsePreparedStackDefaultBoolean = { + type: SyncReconcileResponsePreparedStackTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const SyncReconcileResponsePreparedStackTypeNumber = { + Number: "number", +} as const; +export type SyncReconcileResponsePreparedStackTypeNumber = ClosedEnum< + typeof SyncReconcileResponsePreparedStackTypeNumber +>; + +export type SyncReconcileResponsePreparedStackDefaultNumber = { + type: SyncReconcileResponsePreparedStackTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const SyncReconcileResponsePreparedStackTypeString = { + String: "string", +} as const; +export type SyncReconcileResponsePreparedStackTypeString = ClosedEnum< + typeof SyncReconcileResponsePreparedStackTypeString +>; + +export type SyncReconcileResponsePreparedStackDefaultString = { + type: SyncReconcileResponsePreparedStackTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncReconcileResponsePreparedStackDefaultUnion = + | SyncReconcileResponsePreparedStackDefaultString + | SyncReconcileResponsePreparedStackDefaultNumber + | SyncReconcileResponsePreparedStackDefaultBoolean + | SyncReconcileResponsePreparedStackDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const SyncReconcileResponsePreparedStackTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncReconcileResponsePreparedStackTypeEnvEnum = ClosedEnum< + typeof SyncReconcileResponsePreparedStackTypeEnvEnum +>; + +export type SyncReconcileResponsePreparedStackTypeUnion = + | SyncReconcileResponsePreparedStackTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncReconcileResponsePreparedStackEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: SyncReconcileResponsePreparedStackTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const SyncReconcileResponsePreparedStackKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type SyncReconcileResponsePreparedStackKind = ClosedEnum< + typeof SyncReconcileResponsePreparedStackKind +>; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileResponsePreparedStackPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponsePreparedStackPlatform = ClosedEnum< + typeof SyncReconcileResponsePreparedStackPlatform +>; + +/** + * Who can provide a stack input value. + */ +export const SyncReconcileResponsePreparedStackProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncReconcileResponsePreparedStackProvidedBy = ClosedEnum< + typeof SyncReconcileResponsePreparedStackProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type SyncReconcileResponsePreparedStackValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type SyncReconcileResponsePreparedStackValidationUnion = + | SyncReconcileResponsePreparedStackValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type SyncReconcileResponsePreparedStackInput = { + default?: + | SyncReconcileResponsePreparedStackDefaultString + | SyncReconcileResponsePreparedStackDefaultNumber + | SyncReconcileResponsePreparedStackDefaultBoolean + | SyncReconcileResponsePreparedStackDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: SyncReconcileResponsePreparedStackKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncReconcileResponsePreparedStackValidation + | any + | null + | undefined; +}; + +export const SyncReconcileResponsePreparedStackManagementEnum = { + Auto: "auto", +} as const; +export type SyncReconcileResponsePreparedStackManagementEnum = ClosedEnum< + typeof SyncReconcileResponsePreparedStackManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponsePreparedStackOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponsePreparedStackOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponsePreparedStackOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileResponsePreparedStackOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponsePreparedStackOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileResponsePreparedStackOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileResponsePreparedStackOverrideEffect = ClosedEnum< + typeof SyncReconcileResponsePreparedStackOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponsePreparedStackOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileResponsePreparedStackOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponsePreparedStackOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponsePreparedStackOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponsePreparedStackOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponsePreparedStackOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponsePreparedStackOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponsePreparedStackOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | SyncReconcileResponsePreparedStackOverrideAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponsePreparedStackOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponsePreparedStackOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileResponsePreparedStackOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponsePreparedStackOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponsePreparedStackOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponsePreparedStackOverrideConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponsePreparedStackOverrideResourceConditionUnion = + | SyncReconcileResponsePreparedStackOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponsePreparedStackOverrideGcpResource = { + condition?: + | SyncReconcileResponsePreparedStackOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponsePreparedStackOverrideConditionStack = { + expression: string; + title: string; +}; + +export type SyncReconcileResponsePreparedStackOverrideStackConditionUnion = + | SyncReconcileResponsePreparedStackOverrideConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponsePreparedStackOverrideGcpStack = { + condition?: + | SyncReconcileResponsePreparedStackOverrideConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeStringList$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseTypeStringList, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseCurrentReleaseTypeStringList$inboundSchema, + value: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseDefaultStringListFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseDefaultStringList, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultStringList' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeBoolean$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseTypeBoolean, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseCurrentReleaseTypeBoolean$inboundSchema, + value: z.boolean(), + }); + +export function syncReconcileResponseCurrentReleaseDefaultBooleanFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseDefaultBoolean, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultBoolean' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeNumber$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseTypeNumber, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseCurrentReleaseTypeNumber$inboundSchema, + value: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseDefaultNumberFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseDefaultNumber, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultNumber' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeString$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseTypeString, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseCurrentReleaseTypeString$inboundSchema, + value: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseDefaultStringFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseDefaultString, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultString' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseDefaultUnion$inboundSchema: + z.ZodType = z.union( + [ + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema + ), + z.any(), + ], + ); + +export function syncReconcileResponseCurrentReleaseDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseDefaultUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseDefaultUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseTypeEnvEnum, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseTypeUnion$inboundSchema: + z.ZodType = z.union([ + SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema, + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseTypeUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseTypeUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseEnv$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseEnv, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileResponseCurrentReleaseTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileResponseCurrentReleaseEnvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseEnv' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseKind$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseCurrentReleaseKind +> = z.enum(SyncReconcileResponseCurrentReleaseKind); + +/** @internal */ +export const SyncReconcileResponseCurrentReleasePlatform$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleasePlatform, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProvidedBy$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseProvidedBy, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseValidation$inboundSchema: + z.ZodType = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseValidationFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseValidation, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseValidation' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseValidationUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncReconcileResponseCurrentReleaseValidation$inboundSchema), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseValidationUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseValidationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseValidationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseInput$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseInput, + unknown +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultString$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseDefaultStringList$inboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => SyncReconcileResponseCurrentReleaseEnv$inboundSchema), + ).optional(), + id: z.string(), + kind: SyncReconcileResponseCurrentReleaseKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncReconcileResponseCurrentReleasePlatform$inboundSchema), + ).optional(), + providedBy: z.array( + SyncReconcileResponseCurrentReleaseProvidedBy$inboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseCurrentReleaseValidation$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileResponseCurrentReleaseInputFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseInput, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseInput$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseInput' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseManagementEnum, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseOverrideEffect, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponseCurrentReleaseOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema: + z.ZodType = + z.object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema: + z.ZodType = + z.object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseOverrideResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseOverrideConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseOverrideConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideGcpStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverrideGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema: + z.ZodType = z.object( + { + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }, + ); + +export function syncReconcileResponseCurrentReleaseOverrideGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseOverrideGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseOverridePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverridePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverridePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverride$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponseCurrentReleaseOverridePlatforms$inboundSchema + ), + }); + +export function syncReconcileResponseCurrentReleaseOverrideFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverride, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverride$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverride' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseOverrideUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncReconcileResponseCurrentReleaseOverride$inboundSchema), + z.string(), + ]); + +export function syncReconcileResponseCurrentReleaseOverrideUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseOverrideUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseOverrideUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseOverrideUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseManagement2$inboundSchema: + z.ZodType = z.object( + { + override: z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseOverride$inboundSchema + ), + z.string(), + ]), + ), + ), + }, + ); + +export function syncReconcileResponseCurrentReleaseManagement2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseManagement2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseManagement2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseExtendAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseExtendAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseExtendEffect, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponseCurrentReleaseExtendEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema: + z.ZodType = z.object( + { + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }, + ); + +export function syncReconcileResponseCurrentReleaseExtendAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseExtendConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseExtendResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendConditionUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseExtendConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseExtendGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendGcpStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseExtendPlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendPlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendPlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtend$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseExtend, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponseCurrentReleaseExtendPlatforms$inboundSchema + ), +}); + +export function syncReconcileResponseCurrentReleaseExtendFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtend, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtend$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtend' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseExtendUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseCurrentReleaseExtend$inboundSchema), + z.string(), + ]); + +export function syncReconcileResponseCurrentReleaseExtendUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseExtendUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseExtendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseExtendUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseManagement1$inboundSchema: + z.ZodType = z.object( + { + extend: z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseExtend$inboundSchema + ), + z.string(), + ]), + ), + ), + }, + ); + +export function syncReconcileResponseCurrentReleaseManagement1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseManagement1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseManagement1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseManagement1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseManagementUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseManagement1$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseManagement2$inboundSchema + ), + SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema, + ]); + +export function syncReconcileResponseCurrentReleaseManagementUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseManagementUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseManagementUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseManagementUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseProfileAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseCurrentReleaseProfileAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseProfileEffect, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponseCurrentReleaseProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema: + z.ZodType = + z.object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseProfileConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseProfileResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileConditionUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseCurrentReleaseProfileConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseProfileGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileGcpStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfileGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseCurrentReleaseProfileGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponseCurrentReleaseProfilePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfilePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfilePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfile$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponseCurrentReleaseProfilePlatforms$inboundSchema + ), + }); + +export function syncReconcileResponseCurrentReleaseProfileFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfile, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfile$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfile' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseProfileUnion$inboundSchema: + z.ZodType = z.union( + [ + z.lazy(() => SyncReconcileResponseCurrentReleaseProfile$inboundSchema), + z.string(), + ], + ); + +export function syncReconcileResponseCurrentReleaseProfileUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseProfileUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseProfileUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseProfileUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleasePermissions$inboundSchema: + z.ZodType = z.object( + { + management: z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseManagement1$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseCurrentReleaseManagement2$inboundSchema + ), + SyncReconcileResponseCurrentReleaseManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileResponseCurrentReleaseProfile$inboundSchema + ), + z.string(), + ]), + ), + ), + ), + }, + ); + +export function syncReconcileResponseCurrentReleasePermissionsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleasePermissions, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleasePermissions$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleasePermissions' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseConfig$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncReconcileResponseCurrentReleaseConfigFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseConfig, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseConfig$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseDependency$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + type: z.string(), + }); + +export function syncReconcileResponseCurrentReleaseDependencyFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseDependency, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseDependency' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseLifecycle$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseCurrentReleaseLifecycle, + ); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseResources$inboundSchema: + z.ZodType = z.object({ + config: z.lazy(() => + SyncReconcileResponseCurrentReleaseConfig$inboundSchema + ), + dependencies: z.array( + z.lazy(() => SyncReconcileResponseCurrentReleaseDependency$inboundSchema), + ), + lifecycle: SyncReconcileResponseCurrentReleaseLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncReconcileResponseCurrentReleaseResourcesFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseResources, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseResources' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseSupportedPlatform$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponseCurrentReleaseSupportedPlatform); + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseStack$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseStack, + unknown +> = z.object({ + id: z.string(), + inputs: z.array( + z.lazy(() => SyncReconcileResponseCurrentReleaseInput$inboundSchema), + ).optional(), + permissions: z.lazy(() => + SyncReconcileResponseCurrentReleasePermissions$inboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileResponseCurrentReleaseResources$inboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncReconcileResponseCurrentReleaseSupportedPlatform$inboundSchema), + ).optional(), +}); + +export function syncReconcileResponseCurrentReleaseStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentRelease$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentRelease, + unknown +> = z.object({ + description: z.nullable(z.string()).optional(), + releaseId: z.string(), + stack: z.lazy(() => SyncReconcileResponseCurrentReleaseStack$inboundSchema), + version: z.nullable(z.string()).optional(), +}); + +export function syncReconcileResponseCurrentReleaseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentRelease$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCurrentRelease' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentReleaseUnion$inboundSchema: z.ZodType< + SyncReconcileResponseCurrentReleaseUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseCurrentRelease$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseCurrentReleaseUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCurrentReleaseUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCurrentReleaseUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCurrentReleaseUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePlatformTest$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponsePlatformTest +> = z.enum(SyncReconcileResponsePlatformTest); + +/** @internal */ +export const SyncReconcileResponseEnvironmentInfoTest$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoTest, + unknown +> = z.object({ + testId: z.string(), + platform: SyncReconcileResponsePlatformTest$inboundSchema, +}); + +export function syncReconcileResponseEnvironmentInfoTestFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseEnvironmentInfoTest, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseEnvironmentInfoTest$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseEnvironmentInfoTest' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePlatformLocal$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponsePlatformLocal +> = z.enum(SyncReconcileResponsePlatformLocal); + +/** @internal */ +export const SyncReconcileResponseEnvironmentInfoLocal$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoLocal, + unknown +> = z.object({ + arch: z.string(), + hostname: z.string(), + os: z.string(), + platform: SyncReconcileResponsePlatformLocal$inboundSchema, +}); + +export function syncReconcileResponseEnvironmentInfoLocalFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseEnvironmentInfoLocal, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseEnvironmentInfoLocal$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseEnvironmentInfoLocal' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentPlatformAzure$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseCurrentPlatformAzure +> = z.enum(SyncReconcileResponseCurrentPlatformAzure); + +/** @internal */ +export const SyncReconcileResponseEnvironmentInfoAzure$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoAzure, + unknown +> = z.object({ + location: z.string(), + subscriptionId: z.string(), + tenantId: z.string(), + platform: SyncReconcileResponseCurrentPlatformAzure$inboundSchema, +}); + +export function syncReconcileResponseEnvironmentInfoAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseEnvironmentInfoAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseEnvironmentInfoAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseEnvironmentInfoAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentPlatformGcp$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseCurrentPlatformGcp +> = z.enum(SyncReconcileResponseCurrentPlatformGcp); + +/** @internal */ +export const SyncReconcileResponseEnvironmentInfoGcp$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoGcp, + unknown +> = z.object({ + projectId: z.string(), + projectNumber: z.string(), + region: z.string(), + platform: SyncReconcileResponseCurrentPlatformGcp$inboundSchema, +}); + +export function syncReconcileResponseEnvironmentInfoGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseEnvironmentInfoGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseEnvironmentInfoGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseEnvironmentInfoGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentPlatformAws$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseCurrentPlatformAws +> = z.enum(SyncReconcileResponseCurrentPlatformAws); + +/** @internal */ +export const SyncReconcileResponseEnvironmentInfoAws$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoAws, + unknown +> = z.object({ + accountId: z.string(), + region: z.string(), + platform: SyncReconcileResponseCurrentPlatformAws$inboundSchema, +}); + +export function syncReconcileResponseEnvironmentInfoAwsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseEnvironmentInfoAws, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseEnvironmentInfoAws$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseEnvironmentInfoAws' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseEnvironmentInfoUnion$inboundSchema: z.ZodType< + SyncReconcileResponseEnvironmentInfoUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseEnvironmentInfoGcp$inboundSchema), + z.lazy(() => SyncReconcileResponseEnvironmentInfoAzure$inboundSchema), + z.lazy(() => SyncReconcileResponseEnvironmentInfoLocal$inboundSchema), + z.lazy(() => SyncReconcileResponseEnvironmentInfoAws$inboundSchema), + z.lazy(() => SyncReconcileResponseEnvironmentInfoTest$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseEnvironmentInfoUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseEnvironmentInfoUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseEnvironmentInfoUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseEnvironmentInfoUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseError$inboundSchema: z.ZodType< + SyncReconcileResponseError, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function syncReconcileResponseErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseError' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseErrorUnion$inboundSchema: z.ZodType< + SyncReconcileResponseErrorUnion, + unknown +> = z.union([z.lazy(() => SyncReconcileResponseError$inboundSchema), z.any()]); + +export function syncReconcileResponseErrorUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseErrorUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseErrorUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCurrentPlatform$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseCurrentPlatform +> = z.enum(SyncReconcileResponseCurrentPlatform); + +/** @internal */ +export const SyncReconcileResponsePreparedStackTypeStringList$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackTypeStringList, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackDefaultStringList$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponsePreparedStackTypeStringList$inboundSchema, + value: z.array(z.string()), + }); + +export function syncReconcileResponsePreparedStackDefaultStringListFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackDefaultStringList, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackDefaultStringList' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackTypeBoolean$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackTypeBoolean, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackDefaultBoolean$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponsePreparedStackTypeBoolean$inboundSchema, + value: z.boolean(), + }); + +export function syncReconcileResponsePreparedStackDefaultBooleanFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackDefaultBoolean, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackDefaultBoolean$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackDefaultBoolean' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackTypeNumber$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackTypeNumber, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackDefaultNumber$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponsePreparedStackTypeNumber$inboundSchema, + value: z.string(), + }); + +export function syncReconcileResponsePreparedStackDefaultNumberFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackDefaultNumber, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackDefaultNumber$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackDefaultNumber' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackTypeString$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackTypeString, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackDefaultString$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponsePreparedStackTypeString$inboundSchema, + value: z.string(), + }); + +export function syncReconcileResponsePreparedStackDefaultStringFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackDefaultString, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackDefaultString$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackDefaultString' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackDefaultUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponsePreparedStackDefaultString$inboundSchema), + z.lazy(() => SyncReconcileResponsePreparedStackDefaultNumber$inboundSchema), + z.lazy(() => + SyncReconcileResponsePreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncReconcileResponsePreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponsePreparedStackDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackDefaultUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackDefaultUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackTypeEnvEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackTypeEnvEnum, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackTypeUnion$inboundSchema: + z.ZodType = z.union([ + SyncReconcileResponsePreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]); + +export function syncReconcileResponsePreparedStackTypeUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackTypeUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackEnv$inboundSchema: z.ZodType< + SyncReconcileResponsePreparedStackEnv, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileResponsePreparedStackTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileResponsePreparedStackEnvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackEnv' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackKind$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponsePreparedStackKind +> = z.enum(SyncReconcileResponsePreparedStackKind); + +/** @internal */ +export const SyncReconcileResponsePreparedStackPlatform$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackPlatform, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackProvidedBy$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackProvidedBy, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackValidation$inboundSchema: + z.ZodType = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePreparedStackValidationFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackValidation, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackValidation' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackValidationUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncReconcileResponsePreparedStackValidation$inboundSchema), + z.any(), + ]); + +export function syncReconcileResponsePreparedStackValidationUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackValidationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackValidationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackInput$inboundSchema: z.ZodType< + SyncReconcileResponsePreparedStackInput, + unknown +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackDefaultString$inboundSchema + ), + z.lazy(() => + SyncReconcileResponsePreparedStackDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncReconcileResponsePreparedStackDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncReconcileResponsePreparedStackDefaultStringList$inboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => SyncReconcileResponsePreparedStackEnv$inboundSchema), + ).optional(), + id: z.string(), + kind: SyncReconcileResponsePreparedStackKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncReconcileResponsePreparedStackPlatform$inboundSchema), + ).optional(), + providedBy: z.array( + SyncReconcileResponsePreparedStackProvidedBy$inboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponsePreparedStackValidation$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileResponsePreparedStackInputFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackInput, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackInput$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackInput' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackManagementEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackManagementEnum, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponsePreparedStackOverrideAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponsePreparedStackOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponsePreparedStackOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePreparedStackOverrideAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponsePreparedStackOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackOverrideEffect, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePreparedStackOverrideAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponsePreparedStackOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponsePreparedStackOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponsePreparedStackOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponsePreparedStackOverrideAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideAzureResource$inboundSchema: + z.ZodType = + z.object({ + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackOverrideAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackOverrideAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponsePreparedStackOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePreparedStackOverrideAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponsePreparedStackOverrideAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePreparedStackOverrideAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncReconcileResponsePreparedStackOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePreparedStackOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponsePreparedStackOverrideAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePreparedStackOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponsePreparedStackOverrideConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePreparedStackOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponsePreparedStackOverrideResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackOverrideGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideConditionStack$inboundSchema: + z.ZodType = + z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponsePreparedStackOverrideConditionStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideConditionStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideConditionStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideStackConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePreparedStackOverrideStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponsePreparedStackOverrideStackConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideStackConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideStackConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackOverrideConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackOverrideGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideGcpStack' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/models/syncreconcileresponseproviderazureapplicationgatewayforcontainersenum3.ts b/client-sdks/platform/typescript/src/models/syncreconcileresponseproviderazureapplicationgatewayforcontainersenum3.ts new file mode 100644 index 000000000..60311af07 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/syncreconcileresponseproviderazureapplicationgatewayforcontainersenum3.ts @@ -0,0 +1,4673 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { safeParse } from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + SyncReconcileResponseDataDirUnion1, + SyncReconcileResponseDataDirUnion1$inboundSchema, + SyncReconcileResponseExternalBindingsContainerAppsEnvironment, + SyncReconcileResponseExternalBindingsContainerAppsEnvironment$inboundSchema, + SyncReconcileResponseExternalBindingsUnion4, + SyncReconcileResponseExternalBindingsUnion4$inboundSchema, + SyncReconcileResponseExternalBindingsUnion5, + SyncReconcileResponseExternalBindingsUnion5$inboundSchema, + SyncReconcileResponseKeyPrefixSecretRef2, + SyncReconcileResponseKeyPrefixSecretRef2$inboundSchema, +} from "./syncreconcileresponsekeyprefixsecretref2.js"; + +export type SyncReconcileResponseKeyPrefix2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseKeyPrefixSecretRef2; +}; + +export const TargetTypeKv5 = { + Kv: "kv", +} as const; +export type TargetTypeKv5 = ClosedEnum; + +/** + * Local development KV binding configuration + */ +export type SyncReconcileResponseExternalBindingsLocalKv = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + dataDir?: SyncReconcileResponseDataDirUnion1 | null | undefined; + keyPrefix?: any | null | undefined; + service: "local-kv"; + type: TargetTypeKv5; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseConnectionUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseConnectionUrl = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseConnectionUrlSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseConnectionUrlUnion = + | SyncReconcileResponseConnectionUrl + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDatabaseSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseDatabase = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseDatabaseSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseKeyPrefixSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseKeyPrefix1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseKeyPrefixSecretRef1; +}; + +export const TargetTypeKv4 = { + Kv: "kv", +} as const; +export type TargetTypeKv4 = ClosedEnum; + +/** + * Redis KV binding configuration + */ +export type SyncReconcileResponseExternalBindingsRedis = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + connectionUrl?: + | SyncReconcileResponseConnectionUrl + | any + | string + | null + | undefined; + database?: any | null | undefined; + keyPrefix?: any | null | undefined; + service: "redis"; + type: TargetTypeKv4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseAccountNameSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseAccountName2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseAccountNameSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseAccountNameUnion2 = + | SyncReconcileResponseAccountName2 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceGroupNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseResourceGroupName1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseResourceGroupNameSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseResourceGroupNameUnion1 = + | SyncReconcileResponseResourceGroupName1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseTableNameSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseTableName2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseTableNameSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseTableNameUnion2 = + | SyncReconcileResponseTableName2 + | any + | string; + +export const TargetTypeKv3 = { + Kv: "kv", +} as const; +export type TargetTypeKv3 = ClosedEnum; + +/** + * Azure Table Storage KV binding configuration + */ +export type SyncReconcileResponseExternalBindingsTablestorage = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + accountName?: + | SyncReconcileResponseAccountName2 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + resourceGroupName?: + | SyncReconcileResponseResourceGroupName1 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + tableName?: SyncReconcileResponseTableName2 | any | string | null | undefined; + service: "tablestorage"; + type: TargetTypeKv3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseCollectionNameSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseCollectionName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseCollectionNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseCollectionNameUnion = + | SyncReconcileResponseCollectionName + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDatabaseIdSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseDatabaseId = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseDatabaseIdSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseDatabaseIdUnion = + | SyncReconcileResponseDatabaseId + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseProjectIdSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseProjectId = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseProjectIdSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseProjectIdUnion = + | SyncReconcileResponseProjectId + | any + | string; + +export const TargetTypeKv2 = { + Kv: "kv", +} as const; +export type TargetTypeKv2 = ClosedEnum; + +/** + * GCP Firestore KV binding configuration + */ +export type SyncReconcileResponseExternalBindingsFirestore = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + collectionName?: + | SyncReconcileResponseCollectionName + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + databaseId?: + | SyncReconcileResponseDatabaseId + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + projectId?: SyncReconcileResponseProjectId | any | string | null | undefined; + service: "firestore"; + type: TargetTypeKv2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseEndpointUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseEndpointUrl = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseEndpointUrlSecretRef; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRegionSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseRegion = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseRegionSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseRegionUnion = + | SyncReconcileResponseRegion + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseTableNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseTableName1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseTableNameSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseTableNameUnion1 = + | SyncReconcileResponseTableName1 + | any + | string; + +export const TargetTypeKv1 = { + Kv: "kv", +} as const; +export type TargetTypeKv1 = ClosedEnum; + +/** + * AWS DynamoDB KV binding configuration + */ +export type SyncReconcileResponseExternalBindingsDynamodb = { + endpointUrl?: any | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + region?: SyncReconcileResponseRegion | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + tableName?: SyncReconcileResponseTableName1 | any | string | null | undefined; + service: "dynamodb"; + type: TargetTypeKv1; +}; + +/** + * Represents a KV binding for key-value storage across platforms + */ +export type SyncReconcileResponseExternalBindingsUnion3 = + | SyncReconcileResponseExternalBindingsDynamodb + | SyncReconcileResponseExternalBindingsFirestore + | SyncReconcileResponseExternalBindingsTablestorage + | SyncReconcileResponseExternalBindingsRedis + | SyncReconcileResponseExternalBindingsLocalKv; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseQueuePathSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseQueuePath = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseQueuePathSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseQueuePathUnion = + | SyncReconcileResponseQueuePath + | any + | string; + +export const TargetTypeQueue4 = { + Queue: "queue", +} as const; +export type TargetTypeQueue4 = ClosedEnum; + +/** + * Local queue parameters + */ +export type SyncReconcileResponseExternalBindingsLocalQueue = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + queuePath?: SyncReconcileResponseQueuePath | any | string | null | undefined; + service: "local-queue"; + type: TargetTypeQueue4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseNamespaceSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseNamespace1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseNamespaceSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseNamespaceUnion1 = + | SyncReconcileResponseNamespace1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseQueueNameSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseQueueName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseQueueNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseQueueNameUnion = + | SyncReconcileResponseQueueName + | any + | string; + +export const TargetTypeQueue3 = { + Queue: "queue", +} as const; +export type TargetTypeQueue3 = ClosedEnum; + +/** + * Azure Service Bus parameters + */ +export type SyncReconcileResponseExternalBindingsServicebus = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + namespace?: SyncReconcileResponseNamespace1 | any | string | null | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + queueName?: SyncReconcileResponseQueueName | any | string | null | undefined; + service: "servicebus"; + type: TargetTypeQueue3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseSubscriptionSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseSubscription = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseSubscriptionSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseSubscriptionUnion = + | SyncReconcileResponseSubscription + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseTopicSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseTopic = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseTopicSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseTopicUnion = + | SyncReconcileResponseTopic + | any + | string; + +export const TargetTypeQueue2 = { + Queue: "queue", +} as const; +export type TargetTypeQueue2 = ClosedEnum; + +/** + * GCP Pub/Sub parameters + */ +export type SyncReconcileResponseExternalBindingsPubsub = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + subscription?: + | SyncReconcileResponseSubscription + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + topic?: SyncReconcileResponseTopic | any | string | null | undefined; + service: "pubsub"; + type: TargetTypeQueue2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseQueueUrlSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseQueueUrl = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseQueueUrlSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseQueueUrlUnion = + | SyncReconcileResponseQueueUrl + | any + | string; + +export const TargetTypeQueue1 = { + Queue: "queue", +} as const; +export type TargetTypeQueue1 = ClosedEnum; + +/** + * AWS SQS queue parameters + */ +export type SyncReconcileResponseExternalBindingsSqs = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + queueUrl?: SyncReconcileResponseQueueUrl | any | string | null | undefined; + service: "sqs"; + type: TargetTypeQueue1; +}; + +/** + * Binding parameters for Queue at runtime or in templates. + */ +export type SyncReconcileResponseExternalBindingsUnion2 = + | SyncReconcileResponseExternalBindingsSqs + | SyncReconcileResponseExternalBindingsPubsub + | SyncReconcileResponseExternalBindingsServicebus + | SyncReconcileResponseExternalBindingsLocalQueue; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseStoragePathSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseStoragePath = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseStoragePathSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseStoragePathUnion = + | SyncReconcileResponseStoragePath + | any + | string; + +export const TargetTypeStorage4 = { + Storage: "storage", +} as const; +export type TargetTypeStorage4 = ClosedEnum; + +/** + * Local filesystem storage binding configuration + */ +export type SyncReconcileResponseExternalBindingsLocalStorage = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + storagePath?: + | SyncReconcileResponseStoragePath + | any + | string + | null + | undefined; + service: "local-storage"; + type: TargetTypeStorage4; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseBucketNameSecretRef2 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseBucketName2 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseBucketNameSecretRef2; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseBucketNameUnion2 = + | SyncReconcileResponseBucketName2 + | any + | string; + +export const TargetTypeStorage3 = { + Storage: "storage", +} as const; +export type TargetTypeStorage3 = ClosedEnum; + +/** + * Google Cloud Storage binding configuration + */ +export type SyncReconcileResponseExternalBindingsGcs = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + bucketName?: + | SyncReconcileResponseBucketName2 + | any + | string + | null + | undefined; + service: "gcs"; + type: TargetTypeStorage3; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseAccountNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseAccountName1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseAccountNameSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseAccountNameUnion1 = + | SyncReconcileResponseAccountName1 + | any + | string; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseContainerNameSecretRef = { + key: string; + name: string; +}; + +export type SyncReconcileResponseContainerName = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseContainerNameSecretRef; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseContainerNameUnion = + | SyncReconcileResponseContainerName + | any + | string; + +export const TargetTypeStorage2 = { + Storage: "storage", +} as const; +export type TargetTypeStorage2 = ClosedEnum; + +/** + * Azure Blob Storage binding configuration + */ +export type SyncReconcileResponseExternalBindingsBlob = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + accountName?: + | SyncReconcileResponseAccountName1 + | any + | string + | null + | undefined; + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + containerName?: + | SyncReconcileResponseContainerName + | any + | string + | null + | undefined; + service: "blob"; + type: TargetTypeStorage2; +}; + +/** + * Reference to a Kubernetes Secret + */ +export type SyncReconcileResponseBucketNameSecretRef1 = { + key: string; + name: string; +}; + +export type SyncReconcileResponseBucketName1 = { + /** + * Reference to a Kubernetes Secret + */ + secretRef: SyncReconcileResponseBucketNameSecretRef1; +}; + +/** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ +export type SyncReconcileResponseBucketNameUnion1 = + | SyncReconcileResponseBucketName1 + | any + | string; + +export const TargetTypeStorage1 = { + Storage: "storage", +} as const; +export type TargetTypeStorage1 = ClosedEnum; + +/** + * AWS S3 storage binding configuration + */ +export type SyncReconcileResponseExternalBindingsS3 = { + /** + * Represents a value that can be either a concrete value, a template expression, + * + * @remarks + * or a reference to a Kubernetes Secret + */ + bucketName?: + | SyncReconcileResponseBucketName1 + | any + | string + | null + | undefined; + service: "s3"; + type: TargetTypeStorage1; +}; + +/** + * Service-type based storage binding that supports multiple storage providers + */ +export type SyncReconcileResponseExternalBindingsUnion1 = + | SyncReconcileResponseExternalBindingsS3 + | SyncReconcileResponseExternalBindingsBlob + | SyncReconcileResponseExternalBindingsGcs + | SyncReconcileResponseExternalBindingsLocalStorage; + +/** + * Represents a binding to pre-existing infrastructure. + * + * @remarks + * + * The binding type must match the resource type it's applied to. + * Validated at runtime by the executor. + */ +export type SyncReconcileResponseExternalBindingsUnion6 = + | SyncReconcileResponseExternalBindingsContainerAppsEnvironment + | SyncReconcileResponseExternalBindingsS3 + | SyncReconcileResponseExternalBindingsBlob + | SyncReconcileResponseExternalBindingsGcs + | SyncReconcileResponseExternalBindingsLocalStorage + | SyncReconcileResponseExternalBindingsSqs + | SyncReconcileResponseExternalBindingsPubsub + | SyncReconcileResponseExternalBindingsServicebus + | SyncReconcileResponseExternalBindingsLocalQueue + | SyncReconcileResponseExternalBindingsDynamodb + | SyncReconcileResponseExternalBindingsFirestore + | SyncReconcileResponseExternalBindingsTablestorage + | SyncReconcileResponseExternalBindingsRedis + | SyncReconcileResponseExternalBindingsLocalKv + | SyncReconcileResponseExternalBindingsUnion4 + | SyncReconcileResponseExternalBindingsUnion5; + +export const TargetPlatformKubernetes = { + Kubernetes: "kubernetes", +} as const; +export type TargetPlatformKubernetes = ClosedEnum< + typeof TargetPlatformKubernetes +>; + +export type SyncReconcileResponseManagementConfigKubernetes = { + platform: TargetPlatformKubernetes; +}; + +export const TargetPlatformAzure = { + Azure: "azure", +} as const; +export type TargetPlatformAzure = ClosedEnum; + +/** + * Azure management configuration extracted from stack settings + */ +export type SyncReconcileResponseManagementConfigAzure = { + /** + * The managing Azure Tenant ID for cross-tenant access + */ + managingTenantId: string; + /** + * OIDC issuer URL trusted by the target-side managed identity. + */ + oidcIssuer: string; + /** + * OIDC subject claim trusted by the target-side managed identity. + */ + oidcSubject: string; + platform: TargetPlatformAzure; +}; + +export const TargetPlatformGcp = { + Gcp: "gcp", +} as const; +export type TargetPlatformGcp = ClosedEnum; + +/** + * GCP management configuration extracted from stack settings + */ +export type SyncReconcileResponseManagementConfigGcp = { + /** + * Service account email for management roles + */ + serviceAccountEmail: string; + platform: TargetPlatformGcp; +}; + +export const TargetPlatformAws = { + Aws: "aws", +} as const; +export type TargetPlatformAws = ClosedEnum; + +/** + * AWS management configuration extracted from stack settings + */ +export type SyncReconcileResponseManagementConfigAws = { + /** + * The managing AWS IAM role ARN that can assume cross-account roles + */ + managingRoleArn: string; + platform: TargetPlatformAws; +}; + +export type SyncReconcileResponseManagementConfigUnion = + | SyncReconcileResponseManagementConfigAzure + | SyncReconcileResponseManagementConfigAws + | SyncReconcileResponseManagementConfigGcp + | SyncReconcileResponseManagementConfigKubernetes + | any; + +/** + * OTLP log export configuration for a deployment. + * + * @remarks + * + * When set, injected compute runtimes export captured application logs + * through the given endpoint via OTLP/HTTP; which resources are injected + * is platform-dependent. Workers and daemons read auth headers from a + * runtime-only secret — never from application environment variables. + * Containers have no runtime wrapper, so they get the endpoint and auth + * header as plain OTEL env vars for the application's own exporter. + */ +export type SyncReconcileResponseMonitoring = { + /** + * Auth header value in "key=value,..." format. + * + * @remarks + * Example: "authorization=Bearer " + */ + logsAuthHeader: string; + /** + * Full OTLP logs endpoint URL. + * + * @remarks + * Example: "https:///v1/logs" + */ + logsEndpoint: string; + /** + * Auth header value for the metrics endpoint in "key=value,..." format (optional). + * + * @remarks + * + * When absent, `logs_auth_header` is reused for metrics -- suitable when the same + * credential covers both signals. When present (e.g. Axiom with separate datasets), + * this value is used exclusively for metrics. + * + * Example: "authorization=Bearer ,x-axiom-dataset=" + */ + metricsAuthHeader?: string | null | undefined; + /** + * Full OTLP metrics endpoint URL (optional). + * + * @remarks + * When set, the worker runtime exports its own VM/container orchestration metrics here. + * Example: "https://api.axiom.co/v1/metrics" + */ + metricsEndpoint?: string | null | undefined; + /** + * Resource attributes attached to every OTLP signal emitted for this deployment. + * + * @remarks + * + * Platform managers use this for stable identity such as `alien.workspace_id`, + * `alien.project_id`, `alien.deployment_group_id`, and `alien.deployment_id`. + * Runtime-specific resource attributes such as `service.name` remain owned by + * the runtime/exporter. + */ + resourceAttributes?: { [k: string]: string } | undefined; +}; + +export type SyncReconcileResponseMonitoringUnion = + | SyncReconcileResponseMonitoring + | any; + +export type SyncReconcileResponsePoolsAutoscale = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Maximum machine count. + */ + max: number; + /** + * Minimum machine count. + */ + min: number; + mode: "autoscale"; +}; + +export type SyncReconcileResponsePoolsFixed = { + /** + * Provider machine type selected for this deployment. + */ + machine?: string | null | undefined; + /** + * Number of machines to run. + */ + machines: number; + mode: "fixed"; +}; + +/** + * User-selected deployment settings for one compute pool. + */ +export type SyncReconcileResponsePoolsUnion = + | SyncReconcileResponsePoolsFixed + | SyncReconcileResponsePoolsAutoscale; + +/** + * Deployment-time compute choices for Alien-managed compute pools. + * + * @remarks + * + * Application source declares portable pool requirements. This settings + * object stores the concrete choices made for one deployment, such as the + * provider machine type and selected machine counts. + */ +export type SyncReconcileResponseCompute = { + /** + * Selected compute choices keyed by pool ID. + */ + pools?: { + [k: string]: + | SyncReconcileResponsePoolsFixed + | SyncReconcileResponsePoolsAutoscale; + } | undefined; +}; + +export type SyncReconcileResponseComputeUnion = + | SyncReconcileResponseCompute + | any; + +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export const SyncReconcileResponseDeploymentModel = { + Push: "push", + Pull: "pull", +} as const; +/** + * Deployment model: how updates are delivered to the remote environment. + */ +export type SyncReconcileResponseDeploymentModel = ClosedEnum< + typeof SyncReconcileResponseDeploymentModel +>; + +export type SyncReconcileResponseAwsStackSettings = { + certificateArn: string; +}; + +export type SyncReconcileResponseStackSettingsAwsUnion = + | SyncReconcileResponseAwsStackSettings + | any; + +export type AzureTargetStackSettings = { + keyVaultCertificateId: string; + keyVaultResourceId?: string | null | undefined; +}; + +export type TargetStackSettingsAzureUnion = AzureTargetStackSettings | any; + +export type GcpTargetStackSettings = { + certificateName: string; +}; + +export type TargetStackSettingsGcpUnion = GcpTargetStackSettings | any; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncReconcileResponseTlsSecretRef = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; +}; + +export type SyncReconcileResponseDomainsKubernetes = { + /** + * Namespace-scoped Kubernetes TLS Secret reference. + */ + tlsSecretRef: SyncReconcileResponseTlsSecretRef; +}; + +export type SyncReconcileResponseDomainsKubernetesUnion = + | SyncReconcileResponseDomainsKubernetes + | any; + +/** + * Platform-specific certificate references for custom domains. + */ +export type SyncReconcileResponseDomainsCertificate = { + aws?: SyncReconcileResponseAwsStackSettings | any | null | undefined; + azure?: AzureTargetStackSettings | any | null | undefined; + gcp?: GcpTargetStackSettings | any | null | undefined; + kubernetes?: SyncReconcileResponseDomainsKubernetes | any | null | undefined; +}; + +/** + * Custom domain configuration for a single resource. + */ +export type SyncReconcileResponseCustomDomains = { + /** + * Platform-specific certificate references for custom domains. + */ + certificate: SyncReconcileResponseDomainsCertificate; + /** + * Fully qualified domain name to use. + */ + domain: string; +}; + +/** + * Domain configuration for the stack. + * + * @remarks + * + * When `custom_domains` is set, the specified resources use customer-provided + * domains and certificates. Otherwise, Alien auto-generates domains. + */ +export type SyncReconcileResponseDomains = { + /** + * Custom domain configuration per resource ID. + */ + customDomains?: + | { [k: string]: SyncReconcileResponseCustomDomains } + | null + | undefined; +}; + +export type SyncReconcileResponseDomainsUnion = + | SyncReconcileResponseDomains + | any; + +/** + * External bindings for pre-existing infrastructure. + * + * @remarks + * Allows using existing resources (MinIO, Redis, shared Container Apps + * Environment, etc.) instead of having Alien provision them. + * Required for Kubernetes platform, optional for cloud platforms. + */ +export type SyncReconcileResponseStackSettingsExternalBindings = {}; + +/** + * How heartbeat health checks are handled. + */ +export const SyncReconcileResponseHeartbeats = { + Off: "off", + On: "on", +} as const; +/** + * How heartbeat health checks are handled. + */ +export type SyncReconcileResponseHeartbeats = ClosedEnum< + typeof SyncReconcileResponseHeartbeats +>; + +/** + * Optional provider-specific identity for a cloud-backed Kubernetes cluster. + */ +export type SyncReconcileResponseCloud = { + accountId?: string | null | undefined; + clusterId?: string | null | undefined; + clusterName?: string | null | undefined; + projectId?: string | null | undefined; + region?: string | null | undefined; + resourceGroup?: string | null | undefined; + subscriptionId?: string | null | undefined; +}; + +export type SyncReconcileResponseCloudUnion = SyncReconcileResponseCloud | any; + +/** + * Ownership model for the Kubernetes cluster. + */ +export const SyncReconcileResponseOwnership = { + Managed: "managed", + Existing: "existing", + External: "external", +} as const; +/** + * Ownership model for the Kubernetes cluster. + */ +export type SyncReconcileResponseOwnership = ClosedEnum< + typeof SyncReconcileResponseOwnership +>; + +/** + * Kubernetes cluster setup settings. + */ +export type SyncReconcileResponseCluster = { + cloud?: SyncReconcileResponseCloud | any | null | undefined; + /** + * Namespace where the Alien chart and application resources run. + */ + namespace?: string | null | undefined; + /** + * Ownership model for the Kubernetes cluster. + */ + ownership: SyncReconcileResponseOwnership; +}; + +export type SyncReconcileResponseClusterUnion = + | SyncReconcileResponseCluster + | any; + +export type SyncReconcileResponseCertificateNone2 = { + mode: "none"; +}; + +export type SyncReconcileResponseCertificateManagedTLSSecret2 = { + mode: "managedTlsSecret"; + /** + * Secret name template. Runtime may substitute resource/deployment tokens. + */ + secretNameTemplate: string; +}; + +export type SyncReconcileResponseCertificateAwsAcmArn2 = { + /** + * Existing ACM certificate ARN. + */ + certificateArn: string; + mode: "awsAcmArn"; +}; + +export type SyncReconcileResponseCertificateManagedAcmImport2 = { + mode: "managedAcmImport"; + /** + * ACM region. Defaults to the deployment region when omitted. + */ + region?: string | null | undefined; + /** + * Tags applied to runtime-imported ACM certificates. + */ + tags?: { [k: string]: string } | undefined; +}; + +/** + * Namespace-scoped Kubernetes TLS Secret reference. + */ +export type SyncReconcileResponseCertificateTLSSecretRef2 = { + /** + * Secret namespace. Defaults to the release namespace when omitted. + */ + namespace?: string | null | undefined; + /** + * Secret name. + */ + secretName: string; + mode: "tlsSecretRef"; +}; + +/** + * Certificate publication or reference mode for Kubernetes public endpoints. + */ +export type SyncReconcileResponseCertificateUnion2 = + | SyncReconcileResponseCertificateTLSSecretRef2 + | SyncReconcileResponseCertificateManagedAcmImport2 + | SyncReconcileResponseCertificateAwsAcmArn2 + | SyncReconcileResponseCertificateManagedTLSSecret2 + | SyncReconcileResponseCertificateNone2; + +export const SyncReconcileResponseModeCustom = { + Custom: "custom", +} as const; +export type SyncReconcileResponseModeCustom = ClosedEnum< + typeof SyncReconcileResponseModeCustom +>; + +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 = + ClosedEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 + >; + +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 = + { + /** + * Optional ALB name when using BYO Application Gateway resources. + */ + albName?: string | null | undefined; + /** + * Optional ALB namespace when using BYO Application Gateway resources. + */ + albNamespace?: string | null | undefined; + /** + * Public or internal frontend exposure. + */ + frontend: string; + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4; + }; + +export const SyncReconcileResponseProviderGkeGatewayEnum4 = { + GkeGateway: "gkeGateway", +} as const; +export type SyncReconcileResponseProviderGkeGatewayEnum4 = ClosedEnum< + typeof SyncReconcileResponseProviderGkeGatewayEnum4 +>; + +export type SyncReconcileResponseProviderGkeGateway4 = { + provider: SyncReconcileResponseProviderGkeGatewayEnum4; + /** + * Optional static address name for the Gateway frontend. + */ + staticAddressName?: string | null | undefined; +}; + +export const SyncReconcileResponseProviderAwsAlbEnum4 = { + AwsAlb: "awsAlb", +} as const; +export type SyncReconcileResponseProviderAwsAlbEnum4 = ClosedEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum4 +>; + +export type SyncReconcileResponseProviderAwsAlb4 = { + /** + * Optional ALB IP address type, such as `dualstack`. + */ + ipAddressType?: string | null | undefined; + provider: SyncReconcileResponseProviderAwsAlbEnum4; + /** + * Internet-facing or internal ALB scheme. + */ + scheme: string; + /** + * Explicit subnet IDs when the profile cannot rely on controller discovery. + */ + subnetIds?: Array | undefined; + /** + * ALB target type, usually `ip`. + */ + targetType: string; +}; + +export type SyncReconcileResponseProviderUnion4 = + | SyncReconcileResponseProviderAwsAlb4 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 + | SyncReconcileResponseProviderGkeGateway4 + | any; + +/** + * Shared Gateway API route profile values. + */ +export type SyncReconcileResponseRouteGateway2 = { + /** + * Annotations applied to route objects. + */ + annotations?: { [k: string]: string } | undefined; + /** + * Route controller identifier, for example a cloud Gateway controller. + */ + controller?: string | null | undefined; + /** + * GatewayClass selected for generated Gateways. + */ + gatewayClassName: string; + /** + * Labels applied to route objects. + */ + labels?: { [k: string]: string } | undefined; + /** + * Listener port, usually 443. + */ + listenerPort: number; + provider?: + | SyncReconcileResponseProviderAwsAlb4 + | SyncReconcileResponseProviderAzureApplicationGatewayForContainers4 + | SyncReconcileResponseProviderGkeGateway4 + | any + | null + | undefined; + routeApi: "gateway"; +}; + +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 = + { + AzureApplicationGatewayForContainers: + "azureApplicationGatewayForContainers", + } as const; +export type SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 = + ClosedEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 + >; + +/** @internal */ +export const SyncReconcileResponseKeyPrefix2$inboundSchema: z.ZodType< + SyncReconcileResponseKeyPrefix2, + unknown +> = z.object({ + secretRef: SyncReconcileResponseKeyPrefixSecretRef2$inboundSchema, +}); + +export function syncReconcileResponseKeyPrefix2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseKeyPrefix2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseKeyPrefix2' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeKv5$inboundSchema: z.ZodEnum = z + .enum(TargetTypeKv5); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsLocalKv$inboundSchema: + z.ZodType = z.object({ + dataDir: z.nullable(SyncReconcileResponseDataDirUnion1$inboundSchema) + .optional(), + keyPrefix: z.nullable(z.any()).optional(), + service: z.literal("local-kv"), + type: TargetTypeKv5$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsLocalKvFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsLocalKv, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsLocalKv$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsLocalKv' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseConnectionUrlSecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseConnectionUrlSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseConnectionUrlSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseConnectionUrlSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseConnectionUrlSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseConnectionUrl$inboundSchema: z.ZodType< + SyncReconcileResponseConnectionUrl, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseConnectionUrlSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseConnectionUrlFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseConnectionUrl$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseConnectionUrl' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseConnectionUrlUnion$inboundSchema: z.ZodType< + SyncReconcileResponseConnectionUrlUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseConnectionUrl$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseConnectionUrlUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseConnectionUrlUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseConnectionUrlUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseConnectionUrlUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDatabaseSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseDatabaseSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseDatabaseSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDatabaseSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDatabaseSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDatabase$inboundSchema: z.ZodType< + SyncReconcileResponseDatabase, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncReconcileResponseDatabaseSecretRef$inboundSchema), +}); + +export function syncReconcileResponseDatabaseFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseDatabase$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDatabase' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseKeyPrefixSecretRef1$inboundSchema: z.ZodType< + SyncReconcileResponseKeyPrefixSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseKeyPrefixSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseKeyPrefixSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseKeyPrefixSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseKeyPrefixSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseKeyPrefix1$inboundSchema: z.ZodType< + SyncReconcileResponseKeyPrefix1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseKeyPrefixSecretRef1$inboundSchema + ), +}); + +export function syncReconcileResponseKeyPrefix1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseKeyPrefix1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseKeyPrefix1' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeKv4$inboundSchema: z.ZodEnum = z + .enum(TargetTypeKv4); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsRedis$inboundSchema: + z.ZodType = z.object({ + connectionUrl: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseConnectionUrl$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + database: z.nullable(z.any()).optional(), + keyPrefix: z.nullable(z.any()).optional(), + service: z.literal("redis"), + type: TargetTypeKv4$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsRedisFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsRedis, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsRedis$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsRedis' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseAccountNameSecretRef2$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseAccountNameSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseAccountNameSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseAccountNameSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseAccountNameSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseAccountName2$inboundSchema: z.ZodType< + SyncReconcileResponseAccountName2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseAccountNameSecretRef2$inboundSchema + ), +}); + +export function syncReconcileResponseAccountName2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseAccountName2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseAccountName2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseAccountNameUnion2$inboundSchema: z.ZodType< + SyncReconcileResponseAccountNameUnion2, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseAccountName2$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseAccountNameUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseAccountNameUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseAccountNameUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceGroupNameSecretRef1$inboundSchema: + z.ZodType = z + .object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseResourceGroupNameSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseResourceGroupNameSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseResourceGroupNameSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseResourceGroupNameSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceGroupName1$inboundSchema: z.ZodType< + SyncReconcileResponseResourceGroupName1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseResourceGroupNameSecretRef1$inboundSchema + ), +}); + +export function syncReconcileResponseResourceGroupName1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseResourceGroupName1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseResourceGroupName1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseResourceGroupName1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseResourceGroupNameUnion1$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseResourceGroupName1$inboundSchema), + z.any(), + z.string(), + ]); + +export function syncReconcileResponseResourceGroupNameUnion1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseResourceGroupNameUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseResourceGroupNameUnion1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseResourceGroupNameUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTableNameSecretRef2$inboundSchema: z.ZodType< + SyncReconcileResponseTableNameSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseTableNameSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTableNameSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTableNameSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTableNameSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTableName2$inboundSchema: z.ZodType< + SyncReconcileResponseTableName2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseTableNameSecretRef2$inboundSchema + ), +}); + +export function syncReconcileResponseTableName2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseTableName2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTableName2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTableNameUnion2$inboundSchema: z.ZodType< + SyncReconcileResponseTableNameUnion2, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseTableName2$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseTableNameUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTableNameUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTableNameUnion2' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeKv3$inboundSchema: z.ZodEnum = z + .enum(TargetTypeKv3); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsTablestorage$inboundSchema: + z.ZodType = z + .object({ + accountName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseAccountName2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + resourceGroupName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseResourceGroupName1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + tableName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseTableName2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("tablestorage"), + type: TargetTypeKv3$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsTablestorageFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsTablestorage, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsTablestorage$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsTablestorage' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCollectionNameSecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseCollectionNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCollectionNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCollectionNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCollectionNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCollectionName$inboundSchema: z.ZodType< + SyncReconcileResponseCollectionName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseCollectionNameSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseCollectionNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCollectionName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCollectionName' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCollectionNameUnion$inboundSchema: z.ZodType< + SyncReconcileResponseCollectionNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseCollectionName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseCollectionNameUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCollectionNameUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCollectionNameUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCollectionNameUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDatabaseIdSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseDatabaseIdSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseDatabaseIdSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseDatabaseIdSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDatabaseIdSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseDatabaseIdSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDatabaseId$inboundSchema: z.ZodType< + SyncReconcileResponseDatabaseId, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseDatabaseIdSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseDatabaseIdFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseDatabaseId$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDatabaseId' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDatabaseIdUnion$inboundSchema: z.ZodType< + SyncReconcileResponseDatabaseIdUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseDatabaseId$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseDatabaseIdUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDatabaseIdUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDatabaseIdUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProjectIdSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseProjectIdSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseProjectIdSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseProjectIdSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProjectIdSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseProjectIdSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProjectId$inboundSchema: z.ZodType< + SyncReconcileResponseProjectId, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseProjectIdSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseProjectIdFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseProjectId$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProjectId' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProjectIdUnion$inboundSchema: z.ZodType< + SyncReconcileResponseProjectIdUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseProjectId$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseProjectIdUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProjectIdUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProjectIdUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeKv2$inboundSchema: z.ZodEnum = z + .enum(TargetTypeKv2); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsFirestore$inboundSchema: + z.ZodType = z.object( + { + collectionName: z.nullable(z.union([ + z.lazy(() => SyncReconcileResponseCollectionName$inboundSchema), + z.any(), + z.string(), + ])).optional(), + databaseId: z.nullable(z.union([ + z.lazy(() => SyncReconcileResponseDatabaseId$inboundSchema), + z.any(), + z.string(), + ])).optional(), + projectId: z.nullable(z.union([ + z.lazy(() => SyncReconcileResponseProjectId$inboundSchema), + z.any(), + z.string(), + ])).optional(), + service: z.literal("firestore"), + type: TargetTypeKv2$inboundSchema, + }, + ); + +export function syncReconcileResponseExternalBindingsFirestoreFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsFirestore, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsFirestore$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsFirestore' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseEndpointUrlSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseEndpointUrlSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseEndpointUrlSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseEndpointUrlSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseEndpointUrlSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseEndpointUrlSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseEndpointUrl$inboundSchema: z.ZodType< + SyncReconcileResponseEndpointUrl, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseEndpointUrlSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseEndpointUrlFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseEndpointUrl$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseEndpointUrl' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRegionSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseRegionSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseRegionSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRegionSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRegionSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRegion$inboundSchema: z.ZodType< + SyncReconcileResponseRegion, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncReconcileResponseRegionSecretRef$inboundSchema), +}); + +export function syncReconcileResponseRegionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseRegion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRegion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRegionUnion$inboundSchema: z.ZodType< + SyncReconcileResponseRegionUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseRegion$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseRegionUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseRegionUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRegionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTableNameSecretRef1$inboundSchema: z.ZodType< + SyncReconcileResponseTableNameSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseTableNameSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTableNameSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTableNameSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTableNameSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTableName1$inboundSchema: z.ZodType< + SyncReconcileResponseTableName1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseTableNameSecretRef1$inboundSchema + ), +}); + +export function syncReconcileResponseTableName1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseTableName1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTableName1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTableNameUnion1$inboundSchema: z.ZodType< + SyncReconcileResponseTableNameUnion1, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseTableName1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseTableNameUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTableNameUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTableNameUnion1' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeKv1$inboundSchema: z.ZodEnum = z + .enum(TargetTypeKv1); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsDynamodb$inboundSchema: + z.ZodType = z.object({ + endpointUrl: z.nullable(z.any()).optional(), + region: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseRegion$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + tableName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseTableName1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("dynamodb"), + type: TargetTypeKv1$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsDynamodbFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsDynamodb, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsDynamodb$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsDynamodb' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseExternalBindingsUnion3$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseExternalBindingsDynamodb$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsFirestore$inboundSchema), + z.lazy(() => + SyncReconcileResponseExternalBindingsTablestorage$inboundSchema + ), + z.lazy(() => SyncReconcileResponseExternalBindingsRedis$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsLocalKv$inboundSchema), + ]); + +export function syncReconcileResponseExternalBindingsUnion3FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsUnion3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsUnion3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsUnion3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseQueuePathSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseQueuePathSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseQueuePathSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseQueuePathSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseQueuePathSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseQueuePathSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseQueuePath$inboundSchema: z.ZodType< + SyncReconcileResponseQueuePath, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseQueuePathSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseQueuePathFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseQueuePath$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseQueuePath' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseQueuePathUnion$inboundSchema: z.ZodType< + SyncReconcileResponseQueuePathUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseQueuePath$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseQueuePathUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseQueuePathUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseQueuePathUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeQueue4$inboundSchema: z.ZodEnum< + typeof TargetTypeQueue4 +> = z.enum(TargetTypeQueue4); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsLocalQueue$inboundSchema: + z.ZodType = z + .object({ + queuePath: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseQueuePath$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("local-queue"), + type: TargetTypeQueue4$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsLocalQueueFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsLocalQueue, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsLocalQueue$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsLocalQueue' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseNamespaceSecretRef1$inboundSchema: z.ZodType< + SyncReconcileResponseNamespaceSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseNamespaceSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseNamespaceSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseNamespaceSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseNamespaceSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseNamespace1$inboundSchema: z.ZodType< + SyncReconcileResponseNamespace1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseNamespaceSecretRef1$inboundSchema + ), +}); + +export function syncReconcileResponseNamespace1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseNamespace1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseNamespace1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseNamespaceUnion1$inboundSchema: z.ZodType< + SyncReconcileResponseNamespaceUnion1, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseNamespace1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseNamespaceUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseNamespaceUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseNamespaceUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseQueueNameSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseQueueNameSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseQueueNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseQueueNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseQueueNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseQueueNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseQueueName$inboundSchema: z.ZodType< + SyncReconcileResponseQueueName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseQueueNameSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseQueueNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseQueueName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseQueueName' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseQueueNameUnion$inboundSchema: z.ZodType< + SyncReconcileResponseQueueNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseQueueName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseQueueNameUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseQueueNameUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseQueueNameUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeQueue3$inboundSchema: z.ZodEnum< + typeof TargetTypeQueue3 +> = z.enum(TargetTypeQueue3); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsServicebus$inboundSchema: + z.ZodType = z + .object({ + namespace: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseNamespace1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + queueName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseQueueName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("servicebus"), + type: TargetTypeQueue3$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsServicebusFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsServicebus, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsServicebus$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsServicebus' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseSubscriptionSecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseSubscriptionSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseSubscriptionSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseSubscriptionSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseSubscriptionSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseSubscription$inboundSchema: z.ZodType< + SyncReconcileResponseSubscription, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseSubscriptionSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseSubscriptionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseSubscription$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseSubscription' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseSubscriptionUnion$inboundSchema: z.ZodType< + SyncReconcileResponseSubscriptionUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseSubscription$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseSubscriptionUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseSubscriptionUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseSubscriptionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTopicSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseTopicSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseTopicSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTopicSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTopicSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTopic$inboundSchema: z.ZodType< + SyncReconcileResponseTopic, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncReconcileResponseTopicSecretRef$inboundSchema), +}); + +export function syncReconcileResponseTopicFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseTopic$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTopic' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTopicUnion$inboundSchema: z.ZodType< + SyncReconcileResponseTopicUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseTopic$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseTopicUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseTopicUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTopicUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeQueue2$inboundSchema: z.ZodEnum< + typeof TargetTypeQueue2 +> = z.enum(TargetTypeQueue2); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsPubsub$inboundSchema: + z.ZodType = z.object({ + subscription: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseSubscription$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + topic: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseTopic$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("pubsub"), + type: TargetTypeQueue2$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsPubsubFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsPubsub, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsPubsub$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsPubsub' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseQueueUrlSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseQueueUrlSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseQueueUrlSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseQueueUrlSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseQueueUrlSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseQueueUrl$inboundSchema: z.ZodType< + SyncReconcileResponseQueueUrl, + unknown +> = z.object({ + secretRef: z.lazy(() => SyncReconcileResponseQueueUrlSecretRef$inboundSchema), +}); + +export function syncReconcileResponseQueueUrlFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseQueueUrl$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseQueueUrl' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseQueueUrlUnion$inboundSchema: z.ZodType< + SyncReconcileResponseQueueUrlUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseQueueUrl$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseQueueUrlUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseQueueUrlUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseQueueUrlUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeQueue1$inboundSchema: z.ZodEnum< + typeof TargetTypeQueue1 +> = z.enum(TargetTypeQueue1); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsSqs$inboundSchema: z.ZodType< + SyncReconcileResponseExternalBindingsSqs, + unknown +> = z.object({ + queueUrl: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseQueueUrl$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("sqs"), + type: TargetTypeQueue1$inboundSchema, +}); + +export function syncReconcileResponseExternalBindingsSqsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsSqs, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsSqs$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsSqs' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseExternalBindingsUnion2$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseExternalBindingsSqs$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsPubsub$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsServicebus$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsLocalQueue$inboundSchema), + ]); + +export function syncReconcileResponseExternalBindingsUnion2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsUnion2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsUnion2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStoragePathSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseStoragePathSecretRef, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseStoragePathSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseStoragePathSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStoragePathSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseStoragePathSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStoragePath$inboundSchema: z.ZodType< + SyncReconcileResponseStoragePath, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseStoragePathSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseStoragePathFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseStoragePath$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseStoragePath' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStoragePathUnion$inboundSchema: z.ZodType< + SyncReconcileResponseStoragePathUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseStoragePath$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseStoragePathUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStoragePathUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseStoragePathUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeStorage4$inboundSchema: z.ZodEnum< + typeof TargetTypeStorage4 +> = z.enum(TargetTypeStorage4); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsLocalStorage$inboundSchema: + z.ZodType = z + .object({ + storagePath: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseStoragePath$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("local-storage"), + type: TargetTypeStorage4$inboundSchema, + }); + +export function syncReconcileResponseExternalBindingsLocalStorageFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsLocalStorage, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsLocalStorage$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsLocalStorage' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseBucketNameSecretRef2$inboundSchema: z.ZodType< + SyncReconcileResponseBucketNameSecretRef2, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseBucketNameSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseBucketNameSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseBucketNameSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseBucketNameSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseBucketName2$inboundSchema: z.ZodType< + SyncReconcileResponseBucketName2, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseBucketNameSecretRef2$inboundSchema + ), +}); + +export function syncReconcileResponseBucketName2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseBucketName2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseBucketName2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseBucketNameUnion2$inboundSchema: z.ZodType< + SyncReconcileResponseBucketNameUnion2, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseBucketName2$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseBucketNameUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseBucketNameUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseBucketNameUnion2' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeStorage3$inboundSchema: z.ZodEnum< + typeof TargetTypeStorage3 +> = z.enum(TargetTypeStorage3); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsGcs$inboundSchema: z.ZodType< + SyncReconcileResponseExternalBindingsGcs, + unknown +> = z.object({ + bucketName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseBucketName2$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("gcs"), + type: TargetTypeStorage3$inboundSchema, +}); + +export function syncReconcileResponseExternalBindingsGcsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsGcs, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsGcs$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsGcs' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseAccountNameSecretRef1$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseAccountNameSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseAccountNameSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseAccountNameSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseAccountNameSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseAccountName1$inboundSchema: z.ZodType< + SyncReconcileResponseAccountName1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseAccountNameSecretRef1$inboundSchema + ), +}); + +export function syncReconcileResponseAccountName1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseAccountName1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseAccountName1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseAccountNameUnion1$inboundSchema: z.ZodType< + SyncReconcileResponseAccountNameUnion1, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseAccountName1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseAccountNameUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseAccountNameUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseAccountNameUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseContainerNameSecretRef$inboundSchema: + z.ZodType = z.object({ + key: z.string(), + name: z.string(), + }); + +export function syncReconcileResponseContainerNameSecretRefFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseContainerNameSecretRef, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseContainerNameSecretRef$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseContainerNameSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseContainerName$inboundSchema: z.ZodType< + SyncReconcileResponseContainerName, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseContainerNameSecretRef$inboundSchema + ), +}); + +export function syncReconcileResponseContainerNameFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseContainerName$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseContainerName' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseContainerNameUnion$inboundSchema: z.ZodType< + SyncReconcileResponseContainerNameUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseContainerName$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseContainerNameUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseContainerNameUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseContainerNameUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseContainerNameUnion' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeStorage2$inboundSchema: z.ZodEnum< + typeof TargetTypeStorage2 +> = z.enum(TargetTypeStorage2); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsBlob$inboundSchema: z.ZodType< + SyncReconcileResponseExternalBindingsBlob, + unknown +> = z.object({ + accountName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseAccountName1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + containerName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseContainerName$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("blob"), + type: TargetTypeStorage2$inboundSchema, +}); + +export function syncReconcileResponseExternalBindingsBlobFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsBlob, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsBlob$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsBlob' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseBucketNameSecretRef1$inboundSchema: z.ZodType< + SyncReconcileResponseBucketNameSecretRef1, + unknown +> = z.object({ + key: z.string(), + name: z.string(), +}); + +export function syncReconcileResponseBucketNameSecretRef1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseBucketNameSecretRef1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseBucketNameSecretRef1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseBucketNameSecretRef1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseBucketName1$inboundSchema: z.ZodType< + SyncReconcileResponseBucketName1, + unknown +> = z.object({ + secretRef: z.lazy(() => + SyncReconcileResponseBucketNameSecretRef1$inboundSchema + ), +}); + +export function syncReconcileResponseBucketName1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseBucketName1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseBucketName1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseBucketNameUnion1$inboundSchema: z.ZodType< + SyncReconcileResponseBucketNameUnion1, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseBucketName1$inboundSchema), + z.any(), + z.string(), +]); + +export function syncReconcileResponseBucketNameUnion1FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseBucketNameUnion1$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseBucketNameUnion1' from JSON`, + ); +} + +/** @internal */ +export const TargetTypeStorage1$inboundSchema: z.ZodEnum< + typeof TargetTypeStorage1 +> = z.enum(TargetTypeStorage1); + +/** @internal */ +export const SyncReconcileResponseExternalBindingsS3$inboundSchema: z.ZodType< + SyncReconcileResponseExternalBindingsS3, + unknown +> = z.object({ + bucketName: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseBucketName1$inboundSchema), + z.any(), + z.string(), + ]), + ).optional(), + service: z.literal("s3"), + type: TargetTypeStorage1$inboundSchema, +}); + +export function syncReconcileResponseExternalBindingsS3FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsS3, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsS3$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsS3' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseExternalBindingsUnion1$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseExternalBindingsS3$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsBlob$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsGcs$inboundSchema), + z.lazy(() => + SyncReconcileResponseExternalBindingsLocalStorage$inboundSchema + ), + ]); + +export function syncReconcileResponseExternalBindingsUnion1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsUnion1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsUnion1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsUnion1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseExternalBindingsUnion6$inboundSchema: + z.ZodType = z.union([ + SyncReconcileResponseExternalBindingsContainerAppsEnvironment$inboundSchema, + z.union([ + z.lazy(() => SyncReconcileResponseExternalBindingsS3$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsBlob$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsGcs$inboundSchema), + z.lazy(() => + SyncReconcileResponseExternalBindingsLocalStorage$inboundSchema + ), + ]), + z.union([ + z.lazy(() => SyncReconcileResponseExternalBindingsSqs$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsPubsub$inboundSchema), + z.lazy(() => + SyncReconcileResponseExternalBindingsServicebus$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseExternalBindingsLocalQueue$inboundSchema + ), + ]), + z.union([ + z.lazy(() => SyncReconcileResponseExternalBindingsDynamodb$inboundSchema), + z.lazy(() => + SyncReconcileResponseExternalBindingsFirestore$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseExternalBindingsTablestorage$inboundSchema + ), + z.lazy(() => SyncReconcileResponseExternalBindingsRedis$inboundSchema), + z.lazy(() => SyncReconcileResponseExternalBindingsLocalKv$inboundSchema), + ]), + SyncReconcileResponseExternalBindingsUnion4$inboundSchema, + SyncReconcileResponseExternalBindingsUnion5$inboundSchema, + ]); + +export function syncReconcileResponseExternalBindingsUnion6FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseExternalBindingsUnion6, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseExternalBindingsUnion6$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseExternalBindingsUnion6' from JSON`, + ); +} + +/** @internal */ +export const TargetPlatformKubernetes$inboundSchema: z.ZodEnum< + typeof TargetPlatformKubernetes +> = z.enum(TargetPlatformKubernetes); + +/** @internal */ +export const SyncReconcileResponseManagementConfigKubernetes$inboundSchema: + z.ZodType = z + .object({ + platform: TargetPlatformKubernetes$inboundSchema, + }); + +export function syncReconcileResponseManagementConfigKubernetesFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseManagementConfigKubernetes, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseManagementConfigKubernetes$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseManagementConfigKubernetes' from JSON`, + ); +} + +/** @internal */ +export const TargetPlatformAzure$inboundSchema: z.ZodEnum< + typeof TargetPlatformAzure +> = z.enum(TargetPlatformAzure); + +/** @internal */ +export const SyncReconcileResponseManagementConfigAzure$inboundSchema: + z.ZodType = z.object({ + managingTenantId: z.string(), + oidcIssuer: z.string(), + oidcSubject: z.string(), + platform: TargetPlatformAzure$inboundSchema, + }); + +export function syncReconcileResponseManagementConfigAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseManagementConfigAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseManagementConfigAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseManagementConfigAzure' from JSON`, + ); +} + +/** @internal */ +export const TargetPlatformGcp$inboundSchema: z.ZodEnum< + typeof TargetPlatformGcp +> = z.enum(TargetPlatformGcp); + +/** @internal */ +export const SyncReconcileResponseManagementConfigGcp$inboundSchema: z.ZodType< + SyncReconcileResponseManagementConfigGcp, + unknown +> = z.object({ + serviceAccountEmail: z.string(), + platform: TargetPlatformGcp$inboundSchema, +}); + +export function syncReconcileResponseManagementConfigGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseManagementConfigGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseManagementConfigGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseManagementConfigGcp' from JSON`, + ); +} + +/** @internal */ +export const TargetPlatformAws$inboundSchema: z.ZodEnum< + typeof TargetPlatformAws +> = z.enum(TargetPlatformAws); + +/** @internal */ +export const SyncReconcileResponseManagementConfigAws$inboundSchema: z.ZodType< + SyncReconcileResponseManagementConfigAws, + unknown +> = z.object({ + managingRoleArn: z.string(), + platform: TargetPlatformAws$inboundSchema, +}); + +export function syncReconcileResponseManagementConfigAwsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseManagementConfigAws, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseManagementConfigAws$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseManagementConfigAws' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseManagementConfigUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseManagementConfigAzure$inboundSchema), + z.lazy(() => SyncReconcileResponseManagementConfigAws$inboundSchema), + z.lazy(() => SyncReconcileResponseManagementConfigGcp$inboundSchema), + z.lazy(() => SyncReconcileResponseManagementConfigKubernetes$inboundSchema), + z.any(), + ]); + +export function syncReconcileResponseManagementConfigUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseManagementConfigUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseManagementConfigUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseManagementConfigUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseMonitoring$inboundSchema: z.ZodType< + SyncReconcileResponseMonitoring, + unknown +> = z.object({ + logsAuthHeader: z.string(), + logsEndpoint: z.string(), + metricsAuthHeader: z.nullable(z.string()).optional(), + metricsEndpoint: z.nullable(z.string()).optional(), + resourceAttributes: z.record(z.string(), z.string()).optional(), +}); + +export function syncReconcileResponseMonitoringFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseMonitoring$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseMonitoring' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseMonitoringUnion$inboundSchema: z.ZodType< + SyncReconcileResponseMonitoringUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseMonitoring$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseMonitoringUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseMonitoringUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseMonitoringUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePoolsAutoscale$inboundSchema: z.ZodType< + SyncReconcileResponsePoolsAutoscale, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + max: z.int(), + min: z.int(), + mode: z.literal("autoscale"), +}); + +export function syncReconcileResponsePoolsAutoscaleFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePoolsAutoscale$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePoolsAutoscale' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePoolsFixed$inboundSchema: z.ZodType< + SyncReconcileResponsePoolsFixed, + unknown +> = z.object({ + machine: z.nullable(z.string()).optional(), + machines: z.int(), + mode: z.literal("fixed"), +}); + +export function syncReconcileResponsePoolsFixedFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponsePoolsFixed$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePoolsFixed' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePoolsUnion$inboundSchema: z.ZodType< + SyncReconcileResponsePoolsUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponsePoolsFixed$inboundSchema), + z.lazy(() => SyncReconcileResponsePoolsAutoscale$inboundSchema), +]); + +export function syncReconcileResponsePoolsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponsePoolsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePoolsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCompute$inboundSchema: z.ZodType< + SyncReconcileResponseCompute, + unknown +> = z.object({ + pools: z.record( + z.string(), + z.union([ + z.lazy(() => SyncReconcileResponsePoolsFixed$inboundSchema), + z.lazy(() => SyncReconcileResponsePoolsAutoscale$inboundSchema), + ]), + ).optional(), +}); + +export function syncReconcileResponseComputeFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseCompute$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCompute' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseComputeUnion$inboundSchema: z.ZodType< + SyncReconcileResponseComputeUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseCompute$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseComputeUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseComputeUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseComputeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDeploymentModel$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseDeploymentModel +> = z.enum(SyncReconcileResponseDeploymentModel); + +/** @internal */ +export const SyncReconcileResponseAwsStackSettings$inboundSchema: z.ZodType< + SyncReconcileResponseAwsStackSettings, + unknown +> = z.object({ + certificateArn: z.string(), +}); + +export function syncReconcileResponseAwsStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseAwsStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseAwsStackSettings' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStackSettingsAwsUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseAwsStackSettings$inboundSchema), + z.any(), + ]); + +export function syncReconcileResponseStackSettingsAwsUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseStackSettingsAwsUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStackSettingsAwsUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseStackSettingsAwsUnion' from JSON`, + ); +} + +/** @internal */ +export const AzureTargetStackSettings$inboundSchema: z.ZodType< + AzureTargetStackSettings, + unknown +> = z.object({ + keyVaultCertificateId: z.string(), + keyVaultResourceId: z.nullable(z.string()).optional(), +}); + +export function azureTargetStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => AzureTargetStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'AzureTargetStackSettings' from JSON`, + ); +} + +/** @internal */ +export const TargetStackSettingsAzureUnion$inboundSchema: z.ZodType< + TargetStackSettingsAzureUnion, + unknown +> = z.union([z.lazy(() => AzureTargetStackSettings$inboundSchema), z.any()]); + +export function targetStackSettingsAzureUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => TargetStackSettingsAzureUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'TargetStackSettingsAzureUnion' from JSON`, + ); +} + +/** @internal */ +export const GcpTargetStackSettings$inboundSchema: z.ZodType< + GcpTargetStackSettings, + unknown +> = z.object({ + certificateName: z.string(), +}); + +export function gcpTargetStackSettingsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => GcpTargetStackSettings$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'GcpTargetStackSettings' from JSON`, + ); +} + +/** @internal */ +export const TargetStackSettingsGcpUnion$inboundSchema: z.ZodType< + TargetStackSettingsGcpUnion, + unknown +> = z.union([z.lazy(() => GcpTargetStackSettings$inboundSchema), z.any()]); + +export function targetStackSettingsGcpUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => TargetStackSettingsGcpUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'TargetStackSettingsGcpUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTlsSecretRef$inboundSchema: z.ZodType< + SyncReconcileResponseTlsSecretRef, + unknown +> = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), +}); + +export function syncReconcileResponseTlsSecretRefFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseTlsSecretRef$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTlsSecretRef' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDomainsKubernetes$inboundSchema: z.ZodType< + SyncReconcileResponseDomainsKubernetes, + unknown +> = z.object({ + tlsSecretRef: z.lazy(() => SyncReconcileResponseTlsSecretRef$inboundSchema), +}); + +export function syncReconcileResponseDomainsKubernetesFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDomainsKubernetes$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDomainsKubernetes' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDomainsKubernetesUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseDomainsKubernetes$inboundSchema), + z.any(), + ]); + +export function syncReconcileResponseDomainsKubernetesUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseDomainsKubernetesUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDomainsKubernetesUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseDomainsKubernetesUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDomainsCertificate$inboundSchema: z.ZodType< + SyncReconcileResponseDomainsCertificate, + unknown +> = z.object({ + aws: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseAwsStackSettings$inboundSchema), + z.any(), + ]), + ).optional(), + azure: z.nullable( + z.union([z.lazy(() => AzureTargetStackSettings$inboundSchema), z.any()]), + ).optional(), + gcp: z.nullable( + z.union([z.lazy(() => GcpTargetStackSettings$inboundSchema), z.any()]), + ).optional(), + kubernetes: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseDomainsKubernetes$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileResponseDomainsCertificateFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseDomainsCertificate, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseDomainsCertificate$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseDomainsCertificate' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCustomDomains$inboundSchema: z.ZodType< + SyncReconcileResponseCustomDomains, + unknown +> = z.object({ + certificate: z.lazy(() => + SyncReconcileResponseDomainsCertificate$inboundSchema + ), + domain: z.string(), +}); + +export function syncReconcileResponseCustomDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCustomDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCustomDomains' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDomains$inboundSchema: z.ZodType< + SyncReconcileResponseDomains, + unknown +> = z.object({ + customDomains: z.nullable( + z.record( + z.string(), + z.lazy(() => SyncReconcileResponseCustomDomains$inboundSchema), + ), + ).optional(), +}); + +export function syncReconcileResponseDomainsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseDomains$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDomains' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseDomainsUnion$inboundSchema: z.ZodType< + SyncReconcileResponseDomainsUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseDomains$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseDomainsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseDomainsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseDomainsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStackSettingsExternalBindings$inboundSchema: + z.ZodType = z + .object({}); + +export function syncReconcileResponseStackSettingsExternalBindingsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseStackSettingsExternalBindings, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStackSettingsExternalBindings$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseStackSettingsExternalBindings' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseHeartbeats$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseHeartbeats +> = z.enum(SyncReconcileResponseHeartbeats); + +/** @internal */ +export const SyncReconcileResponseCloud$inboundSchema: z.ZodType< + SyncReconcileResponseCloud, + unknown +> = z.object({ + accountId: z.nullable(z.string()).optional(), + clusterId: z.nullable(z.string()).optional(), + clusterName: z.nullable(z.string()).optional(), + projectId: z.nullable(z.string()).optional(), + region: z.nullable(z.string()).optional(), + resourceGroup: z.nullable(z.string()).optional(), + subscriptionId: z.nullable(z.string()).optional(), +}); + +export function syncReconcileResponseCloudFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseCloud$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCloud' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCloudUnion$inboundSchema: z.ZodType< + SyncReconcileResponseCloudUnion, + unknown +> = z.union([z.lazy(() => SyncReconcileResponseCloud$inboundSchema), z.any()]); + +export function syncReconcileResponseCloudUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseCloudUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCloudUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseOwnership$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseOwnership +> = z.enum(SyncReconcileResponseOwnership); + +/** @internal */ +export const SyncReconcileResponseCluster$inboundSchema: z.ZodType< + SyncReconcileResponseCluster, + unknown +> = z.object({ + cloud: z.nullable( + z.union([z.lazy(() => SyncReconcileResponseCloud$inboundSchema), z.any()]), + ).optional(), + namespace: z.nullable(z.string()).optional(), + ownership: SyncReconcileResponseOwnership$inboundSchema, +}); + +export function syncReconcileResponseClusterFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseCluster$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCluster' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseClusterUnion$inboundSchema: z.ZodType< + SyncReconcileResponseClusterUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseCluster$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseClusterUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseClusterUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseClusterUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateNone2$inboundSchema: z.ZodType< + SyncReconcileResponseCertificateNone2, + unknown +> = z.object({ + mode: z.literal("none"), +}); + +export function syncReconcileResponseCertificateNone2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateNone2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCertificateNone2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateManagedTLSSecret2$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedTlsSecret"), + secretNameTemplate: z.string(), + }); + +export function syncReconcileResponseCertificateManagedTLSSecret2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCertificateManagedTLSSecret2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateManagedTLSSecret2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCertificateManagedTLSSecret2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateAwsAcmArn2$inboundSchema: + z.ZodType = z.object({ + certificateArn: z.string(), + mode: z.literal("awsAcmArn"), + }); + +export function syncReconcileResponseCertificateAwsAcmArn2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCertificateAwsAcmArn2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateAwsAcmArn2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCertificateAwsAcmArn2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateManagedAcmImport2$inboundSchema: + z.ZodType = z + .object({ + mode: z.literal("managedAcmImport"), + region: z.nullable(z.string()).optional(), + tags: z.record(z.string(), z.string()).optional(), + }); + +export function syncReconcileResponseCertificateManagedAcmImport2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCertificateManagedAcmImport2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateManagedAcmImport2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCertificateManagedAcmImport2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateTLSSecretRef2$inboundSchema: + z.ZodType = z.object({ + namespace: z.nullable(z.string()).optional(), + secretName: z.string(), + mode: z.literal("tlsSecretRef"), + }); + +export function syncReconcileResponseCertificateTLSSecretRef2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseCertificateTLSSecretRef2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateTLSSecretRef2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseCertificateTLSSecretRef2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseCertificateUnion2$inboundSchema: z.ZodType< + SyncReconcileResponseCertificateUnion2, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseCertificateTLSSecretRef2$inboundSchema), + z.lazy(() => SyncReconcileResponseCertificateManagedAcmImport2$inboundSchema), + z.lazy(() => SyncReconcileResponseCertificateAwsAcmArn2$inboundSchema), + z.lazy(() => SyncReconcileResponseCertificateManagedTLSSecret2$inboundSchema), + z.lazy(() => SyncReconcileResponseCertificateNone2$inboundSchema), +]); + +export function syncReconcileResponseCertificateUnion2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseCertificateUnion2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseCertificateUnion2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseModeCustom$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseModeCustom +> = z.enum(SyncReconcileResponseModeCustom); + +/** @internal */ +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema: + z.ZodEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4 + > = z.enum( + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4, + ); + +/** @internal */ +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainers4$inboundSchema: + z.ZodType< + SyncReconcileResponseProviderAzureApplicationGatewayForContainers4, + unknown + > = z.object({ + albName: z.nullable(z.string()).optional(), + albNamespace: z.nullable(z.string()).optional(), + frontend: z.string(), + provider: + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum4$inboundSchema, + }); + +export function syncReconcileResponseProviderAzureApplicationGatewayForContainers4FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseProviderAzureApplicationGatewayForContainers4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderAzureApplicationGatewayForContainers4' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderGkeGatewayEnum4$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseProviderGkeGatewayEnum4, + ); + +/** @internal */ +export const SyncReconcileResponseProviderGkeGateway4$inboundSchema: z.ZodType< + SyncReconcileResponseProviderGkeGateway4, + unknown +> = z.object({ + provider: SyncReconcileResponseProviderGkeGatewayEnum4$inboundSchema, + staticAddressName: z.nullable(z.string()).optional(), +}); + +export function syncReconcileResponseProviderGkeGateway4FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseProviderGkeGateway4, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderGkeGateway4$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseProviderGkeGateway4' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderAwsAlbEnum4$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseProviderAwsAlbEnum4 +> = z.enum(SyncReconcileResponseProviderAwsAlbEnum4); + +/** @internal */ +export const SyncReconcileResponseProviderAwsAlb4$inboundSchema: z.ZodType< + SyncReconcileResponseProviderAwsAlb4, + unknown +> = z.object({ + ipAddressType: z.nullable(z.string()).optional(), + provider: SyncReconcileResponseProviderAwsAlbEnum4$inboundSchema, + scheme: z.string(), + subnetIds: z.array(z.string()).optional(), + targetType: z.string(), +}); + +export function syncReconcileResponseProviderAwsAlb4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderAwsAlb4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderAwsAlb4' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderUnion4$inboundSchema: z.ZodType< + SyncReconcileResponseProviderUnion4, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => SyncReconcileResponseProviderGkeGateway4$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseProviderUnion4FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseProviderUnion4$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseProviderUnion4' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRouteGateway2$inboundSchema: z.ZodType< + SyncReconcileResponseRouteGateway2, + unknown +> = z.object({ + annotations: z.record(z.string(), z.string()).optional(), + controller: z.nullable(z.string()).optional(), + gatewayClassName: z.string(), + labels: z.record(z.string(), z.string()).optional(), + listenerPort: z.int(), + provider: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseProviderAwsAlb4$inboundSchema), + z.lazy(() => + SyncReconcileResponseProviderAzureApplicationGatewayForContainers4$inboundSchema + ), + z.lazy(() => SyncReconcileResponseProviderGkeGateway4$inboundSchema), + z.any(), + ]), + ).optional(), + routeApi: z.literal("gateway"), +}); + +export function syncReconcileResponseRouteGateway2FromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRouteGateway2$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRouteGateway2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3$inboundSchema: + z.ZodEnum< + typeof SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3 + > = z.enum( + SyncReconcileResponseProviderAzureApplicationGatewayForContainersEnum3, + ); diff --git a/client-sdks/platform/typescript/src/models/syncreconcileresponsetargetreleasemanagement1.ts b/client-sdks/platform/typescript/src/models/syncreconcileresponsetargetreleasemanagement1.ts new file mode 100644 index 000000000..04d5359b5 --- /dev/null +++ b/client-sdks/platform/typescript/src/models/syncreconcileresponsetargetreleasemanagement1.ts @@ -0,0 +1,6086 @@ +/* + * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + */ + +import * as z from "zod/v4"; +import { remap as remap$ } from "../lib/primitives.js"; +import { + collectExtraKeys as collectExtraKeys$, + safeParse, +} from "../lib/schemas.js"; +import { ClosedEnum } from "../types/enums.js"; +import { Result as SafeParseResult } from "../types/fp.js"; +import { SDKValidationError } from "./errors/sdkvalidationerror.js"; +import { + SyncReconcileResponsePreparedStackInput, + SyncReconcileResponsePreparedStackInput$inboundSchema, + SyncReconcileResponsePreparedStackManagementEnum, + SyncReconcileResponsePreparedStackManagementEnum$inboundSchema, + SyncReconcileResponsePreparedStackOverrideAw, + SyncReconcileResponsePreparedStackOverrideAw$inboundSchema, + SyncReconcileResponsePreparedStackOverrideAzure, + SyncReconcileResponsePreparedStackOverrideAzure$inboundSchema, + SyncReconcileResponsePreparedStackOverrideGcpResource, + SyncReconcileResponsePreparedStackOverrideGcpResource$inboundSchema, + SyncReconcileResponsePreparedStackOverrideGcpStack, + SyncReconcileResponsePreparedStackOverrideGcpStack$inboundSchema, +} from "./syncreconcileresponsepreparedstackoverridegcpstack.js"; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponsePreparedStackOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileResponsePreparedStackOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileResponsePreparedStackOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponsePreparedStackOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileResponsePreparedStackOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponsePreparedStackOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponsePreparedStackOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileResponsePreparedStackOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileResponsePreparedStackOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponsePreparedStackOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileResponsePreparedStackOverrideUnion = + | SyncReconcileResponsePreparedStackOverride + | string; + +export type SyncReconcileResponsePreparedStackManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponsePreparedStackExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponsePreparedStackExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponsePreparedStackExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileResponsePreparedStackExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponsePreparedStackExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileResponsePreparedStackExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileResponsePreparedStackExtendEffect = ClosedEnum< + typeof SyncReconcileResponsePreparedStackExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponsePreparedStackExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileResponsePreparedStackExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponsePreparedStackExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponsePreparedStackExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponsePreparedStackExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponsePreparedStackExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponsePreparedStackExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponsePreparedStackExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileResponsePreparedStackExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponsePreparedStackExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponsePreparedStackExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileResponsePreparedStackExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponsePreparedStackExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponsePreparedStackExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponsePreparedStackExtendConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponsePreparedStackExtendResourceConditionUnion = + | SyncReconcileResponsePreparedStackExtendConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponsePreparedStackExtendGcpResource = { + condition?: + | SyncReconcileResponsePreparedStackExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponsePreparedStackExtendConditionStack = { + expression: string; + title: string; +}; + +export type SyncReconcileResponsePreparedStackExtendStackConditionUnion = + | SyncReconcileResponsePreparedStackExtendConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponsePreparedStackExtendGcpStack = { + condition?: + | SyncReconcileResponsePreparedStackExtendConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponsePreparedStackExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileResponsePreparedStackExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileResponsePreparedStackExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponsePreparedStackExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileResponsePreparedStackExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponsePreparedStackExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponsePreparedStackExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileResponsePreparedStackExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileResponsePreparedStackExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponsePreparedStackExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileResponsePreparedStackExtendUnion = + | SyncReconcileResponsePreparedStackExtend + | string; + +export type SyncReconcileResponsePreparedStackManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array; + }; +}; + +/** + * Management permissions configuration for stack management access + */ +export type SyncReconcileResponsePreparedStackManagementUnion = + | SyncReconcileResponsePreparedStackManagement1 + | SyncReconcileResponsePreparedStackManagement2 + | SyncReconcileResponsePreparedStackManagementEnum; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponsePreparedStackProfileAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponsePreparedStackProfileAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponsePreparedStackProfileAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileResponsePreparedStackProfileAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponsePreparedStackProfileAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileResponsePreparedStackProfileEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileResponsePreparedStackProfileEffect = ClosedEnum< + typeof SyncReconcileResponsePreparedStackProfileEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponsePreparedStackProfileAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileResponsePreparedStackProfileAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponsePreparedStackProfileAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponsePreparedStackProfileEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponsePreparedStackProfileAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponsePreparedStackProfileAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponsePreparedStackProfileAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponsePreparedStackProfileAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileResponsePreparedStackProfileAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponsePreparedStackProfileAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponsePreparedStackProfileAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileResponsePreparedStackProfileAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponsePreparedStackProfileAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponsePreparedStackProfileAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponsePreparedStackProfileConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponsePreparedStackProfileResourceConditionUnion = + | SyncReconcileResponsePreparedStackProfileConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponsePreparedStackProfileGcpResource = { + condition?: + | SyncReconcileResponsePreparedStackProfileConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponsePreparedStackProfileConditionStack = { + expression: string; + title: string; +}; + +export type SyncReconcileResponsePreparedStackProfileStackConditionUnion = + | SyncReconcileResponsePreparedStackProfileConditionStack + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponsePreparedStackProfileGcpStack = { + condition?: + | SyncReconcileResponsePreparedStackProfileConditionStack + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponsePreparedStackProfileGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileResponsePreparedStackProfileGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileResponsePreparedStackProfileGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponsePreparedStackProfileGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileResponsePreparedStackProfileGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponsePreparedStackProfileGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponsePreparedStackProfileGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileResponsePreparedStackProfilePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileResponsePreparedStackProfile = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponsePreparedStackProfilePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileResponsePreparedStackProfileUnion = + | SyncReconcileResponsePreparedStackProfile + | string; + +/** + * Combined permissions configuration that contains both profiles and management + */ +export type SyncReconcileResponsePreparedStackPermissions = { + /** + * Management permissions configuration for stack management access + */ + management?: + | SyncReconcileResponsePreparedStackManagement1 + | SyncReconcileResponsePreparedStackManagement2 + | SyncReconcileResponsePreparedStackManagementEnum + | undefined; + /** + * Permission profiles that define access control for compute services + * + * @remarks + * Key is the profile name, value is the permission configuration + */ + profiles: { + [k: string]: { + [k: string]: Array; + }; + }; +}; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileResponsePreparedStackConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncReconcileResponsePreparedStackDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const SyncReconcileResponsePreparedStackLifecycle = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type SyncReconcileResponsePreparedStackLifecycle = ClosedEnum< + typeof SyncReconcileResponsePreparedStackLifecycle +>; + +export type SyncReconcileResponsePreparedStackResources = { + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncReconcileResponsePreparedStackConfig; + /** + * Additional dependencies for this resource beyond those defined in the resource itself. + * + * @remarks + * The total dependencies are: resource.get_dependencies() + this list + */ + dependencies: Array; + /** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ + lifecycle: SyncReconcileResponsePreparedStackLifecycle; + /** + * Enable remote bindings for this resource (BYOB use case). + * + * @remarks + * When true, binding params are synced to StackState's `remote_binding_params`. + * Default: false (prevents sensitive data in synced state). + */ + remoteAccess?: boolean | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileResponsePreparedStackSupportedPlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponsePreparedStackSupportedPlatform = ClosedEnum< + typeof SyncReconcileResponsePreparedStackSupportedPlatform +>; + +/** + * A bag of resources, unaware of any cloud. + */ +export type SyncReconcileResponsePreparedStack = { + /** + * Unique identifier for the stack + */ + id: string; + /** + * Input definitions required before setup or deployment can proceed. + */ + inputs?: Array | undefined; + /** + * Combined permissions configuration that contains both profiles and management + */ + permissions?: SyncReconcileResponsePreparedStackPermissions | undefined; + /** + * Map of resource IDs to their configurations and lifecycle settings + */ + resources: { [k: string]: SyncReconcileResponsePreparedStackResources }; + /** + * Which platforms this stack supports. When None, all platforms are supported. + */ + supportedPlatforms?: + | Array + | null + | undefined; +}; + +export type SyncReconcileResponsePreparedStackUnion = + | SyncReconcileResponsePreparedStack + | any; + +/** + * Runtime metadata for deployment + * + * @remarks + * + * Stores deployment state that needs to persist across step calls. + */ +export type SyncReconcileResponseRuntimeMetadata = { + /** + * Hash of the environment variables snapshot that was last synced to the vault + * + * @remarks + * Used to avoid redundant sync operations during incremental deployment + */ + lastSyncedEnvVarsHash?: string | null | undefined; + preparedStack?: SyncReconcileResponsePreparedStack | any | null | undefined; + /** + * Whether cross-account registry access has been successfully granted. + * + * @remarks + * Set to true after the manager successfully sets the ECR/GAR repo policy + * for this deployment's target account. Prevents redundant API calls on + * every reconcile tick. + */ + registryAccessGranted?: boolean | undefined; +}; + +export type SyncReconcileResponseRuntimeMetadataUnion = + | SyncReconcileResponseRuntimeMetadata + | any; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileResponseStackStatePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseStackStatePlatform = ClosedEnum< + typeof SyncReconcileResponseStackStatePlatform +>; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileResponseStackStateConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileResponseControllerPlatformEnum = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseControllerPlatformEnum = ClosedEnum< + typeof SyncReconcileResponseControllerPlatformEnum +>; + +export type SyncReconcileResponseControllerPlatformUnion = + | SyncReconcileResponseControllerPlatformEnum + | any; + +/** + * New ResourceRef that works with any resource type. + * + * @remarks + * This can eventually replace the enum-based ResourceRef for full extensibility. + */ +export type SyncReconcileResponseStackStateDependency = { + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; +}; + +/** + * Canonical error container that provides a structured way to represent errors + * + * @remarks + * with rich metadata including error codes, human-readable messages, context, + * and chaining capabilities for error propagation. + * + * This struct is designed to be both machine-readable and user-friendly, + * supporting serialization for API responses and detailed error reporting + * in distributed systems. + */ +export type SyncReconcileResponseStackStateError = { + /** + * A unique identifier for the type of error. + * + * @remarks + * + * This should be a short, machine-readable string that can be used + * by clients to programmatically handle different error types. + * Examples: "NOT_FOUND", "VALIDATION_ERROR", "TIMEOUT" + */ + code: string; + /** + * Additional diagnostic information about the error context. + * + * @remarks + * + * This optional field can contain structured data providing more details + * about the error, such as validation errors, request parameters that + * caused the issue, or other relevant context information. + */ + context?: any | null | undefined; + /** + * Optional human-facing remediation hint. + */ + hint?: string | null | undefined; + /** + * HTTP status code for this error. + * + * @remarks + * + * Used when converting the error to an HTTP response. If None, falls back to + * the error type's default status code or 500. + */ + httpStatusCode?: number | null | undefined; + /** + * Indicates if this is an internal error that should not be exposed to users. + * + * @remarks + * + * When `true`, this error contains sensitive information or implementation + * details that should not be shown to end-users. Such errors should be + * logged for debugging but replaced with generic error messages in responses. + */ + internal: boolean; + /** + * Human-readable error message. + * + * @remarks + * + * This message should be clear and actionable for developers or end-users, + * providing context about what went wrong and potentially how to fix it. + */ + message: string; + /** + * Indicates whether the operation that caused the error should be retried. + * + * @remarks + * + * When `true`, the error is transient and the operation might succeed + * if attempted again. When `false`, retrying the same operation is + * unlikely to succeed without changes. + */ + retryable: boolean; + /** + * The underlying error that caused this error, creating an error chain. + * + * @remarks + * + * This allows for proper error propagation and debugging by maintaining + * the full context of how an error occurred through multiple layers + * of an application. + */ + source?: any | null | undefined; +}; + +export type SyncReconcileResponseStackStateErrorUnion = + | SyncReconcileResponseStackStateError + | any; + +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export const SyncReconcileResponseStackStateLifecycleEnum = { + Frozen: "frozen", + Live: "live", +} as const; +/** + * Describes the lifecycle of a resource within a stack, determining how it's managed and deployed. + */ +export type SyncReconcileResponseStackStateLifecycleEnum = ClosedEnum< + typeof SyncReconcileResponseStackStateLifecycleEnum +>; + +export type SyncReconcileResponseLifecycleUnion = + | SyncReconcileResponseStackStateLifecycleEnum + | any; + +/** + * Resource outputs that can hold output data for any resource type in the Alien system. All resource outputs share a common 'type' field with additional type-specific output properties. + */ +export type SyncReconcileResponseOutputs = { + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type SyncReconcileResponseOutputsUnion = + | SyncReconcileResponseOutputs + | any; + +/** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ +export type SyncReconcileResponsePreviousConfig = { + /** + * The unique identifier for this specific resource instance. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. + */ + id: string; + /** + * Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior. + */ + type: string; + additionalProperties?: { [k: string]: any | null } | undefined; +}; + +export type SyncReconcileResponsePreviousConfigUnion = + | SyncReconcileResponsePreviousConfig + | any; + +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export const SyncReconcileResponseStackStateStatus = { + Pending: "pending", + Provisioning: "provisioning", + ProvisionFailed: "provision-failed", + Running: "running", + Updating: "updating", + UpdateFailed: "update-failed", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + Deleted: "deleted", + RefreshFailed: "refresh-failed", +} as const; +/** + * Represents the high-level status of a resource during its lifecycle. + */ +export type SyncReconcileResponseStackStateStatus = ClosedEnum< + typeof SyncReconcileResponseStackStateStatus +>; + +/** + * Represents the state of a single resource within the stack for a specific platform. + */ +export type SyncReconcileResponseStackStateResources = { + /** + * The platform-specific resource controller that manages this resource's lifecycle. + * + * @remarks + * This is None when the resource status is Pending. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + internal?: any | null | undefined; + /** + * Resource that can hold any resource type in the Alien system. All resources share common 'type' and 'id' fields with additional type-specific properties. + */ + config: SyncReconcileResponseStackStateConfig; + controllerPlatform?: + | SyncReconcileResponseControllerPlatformEnum + | any + | null + | undefined; + /** + * Complete list of dependencies for this resource, including infrastructure dependencies. + * + * @remarks + * This preserves the full dependency information from the stack definition. + */ + dependencies?: Array | undefined; + error?: SyncReconcileResponseStackStateError | any | null | undefined; + /** + * Stores the controller state that failed, used for manual retry operations. + * + * @remarks + * This allows resuming from the exact point where the failure occurred. + * Stored as JSON to make the struct serializable and movable to alien-core. + */ + lastFailedState?: any | null | undefined; + lifecycle?: + | SyncReconcileResponseStackStateLifecycleEnum + | any + | null + | undefined; + outputs?: SyncReconcileResponseOutputs | any | null | undefined; + previousConfig?: SyncReconcileResponsePreviousConfig | any | null | undefined; + /** + * Binding parameters for remote access. + * + * @remarks + * Only populated when the resource has `remote_access: true` in its ResourceEntry. + * This is the JSON serialization of the binding configuration (e.g., StorageBinding, VaultBinding). + * Populated by controllers during provisioning using get_binding_params(). + */ + remoteBindingParams?: any | null | undefined; + /** + * Tracks consecutive retry attempts for the current state transition. + */ + retryAttempt?: number | undefined; + /** + * Represents the high-level status of a resource during its lifecycle. + */ + status: SyncReconcileResponseStackStateStatus; + /** + * The high-level type of the resource (e.g., Worker::RESOURCE_TYPE, Storage::RESOURCE_TYPE). + */ + type: string; +}; + +/** + * Represents the collective state of all resources in a stack, including platform and pending actions. + */ +export type SyncReconcileResponseStackState = { + /** + * Represents the target cloud platform. + */ + platform: SyncReconcileResponseStackStatePlatform; + /** + * A prefix used for resource naming to ensure uniqueness across deployments. + */ + resourcePrefix: string; + /** + * The state of individual resources, keyed by resource ID. + */ + resources: { [k: string]: SyncReconcileResponseStackStateResources }; +}; + +export type SyncReconcileResponseStackStateUnion = + | SyncReconcileResponseStackState + | any; + +/** + * Deployment status in the deployment lifecycle + */ +export const SyncReconcileResponseStatus = { + Pending: "pending", + PreflightsFailed: "preflights-failed", + InitialSetup: "initial-setup", + InitialSetupFailed: "initial-setup-failed", + Provisioning: "provisioning", + ProvisioningFailed: "provisioning-failed", + Running: "running", + RefreshFailed: "refresh-failed", + UpdatePending: "update-pending", + Updating: "updating", + UpdateFailed: "update-failed", + DeletePending: "delete-pending", + Deleting: "deleting", + DeleteFailed: "delete-failed", + TeardownRequired: "teardown-required", + TeardownFailed: "teardown-failed", + Deleted: "deleted", + Error: "error", +} as const; +/** + * Deployment status in the deployment lifecycle + */ +export type SyncReconcileResponseStatus = ClosedEnum< + typeof SyncReconcileResponseStatus +>; + +export const SyncReconcileResponseTargetReleaseTypeStringList = { + StringList: "stringList", +} as const; +export type SyncReconcileResponseTargetReleaseTypeStringList = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseTypeStringList +>; + +export type SyncReconcileResponseTargetReleaseDefaultStringList = { + type: SyncReconcileResponseTargetReleaseTypeStringList; + /** + * String list default. + */ + value: Array; +}; + +export const SyncReconcileResponseTargetReleaseTypeBoolean = { + Boolean: "boolean", +} as const; +export type SyncReconcileResponseTargetReleaseTypeBoolean = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseTypeBoolean +>; + +export type SyncReconcileResponseTargetReleaseDefaultBoolean = { + type: SyncReconcileResponseTargetReleaseTypeBoolean; + /** + * Boolean default. + */ + value: boolean; +}; + +export const SyncReconcileResponseTargetReleaseTypeNumber = { + Number: "number", +} as const; +export type SyncReconcileResponseTargetReleaseTypeNumber = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseTypeNumber +>; + +export type SyncReconcileResponseTargetReleaseDefaultNumber = { + type: SyncReconcileResponseTargetReleaseTypeNumber; + /** + * Number default. + */ + value: string; +}; + +export const SyncReconcileResponseTargetReleaseTypeString = { + String: "string", +} as const; +export type SyncReconcileResponseTargetReleaseTypeString = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseTypeString +>; + +export type SyncReconcileResponseTargetReleaseDefaultString = { + type: SyncReconcileResponseTargetReleaseTypeString; + /** + * String default. + */ + value: string; +}; + +export type SyncReconcileResponseTargetReleaseDefaultUnion = + | SyncReconcileResponseTargetReleaseDefaultString + | SyncReconcileResponseTargetReleaseDefaultNumber + | SyncReconcileResponseTargetReleaseDefaultBoolean + | SyncReconcileResponseTargetReleaseDefaultStringList + | any; + +/** + * Environment variable handling for a stack input mapping. + */ +export const SyncReconcileResponseTargetReleaseTypeEnvEnum = { + Plain: "plain", + Secret: "secret", +} as const; +/** + * Environment variable handling for a stack input mapping. + */ +export type SyncReconcileResponseTargetReleaseTypeEnvEnum = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseTypeEnvEnum +>; + +export type SyncReconcileResponseTargetReleaseTypeUnion = + | SyncReconcileResponseTargetReleaseTypeEnvEnum + | any; + +/** + * How a resolved stack input is injected into runtime environment variables. + */ +export type SyncReconcileResponseTargetReleaseEnv = { + /** + * Environment variable name. + */ + name: string; + /** + * Target resource IDs or patterns. None means every env-capable resource. + */ + targetResources?: Array | null | undefined; + type?: SyncReconcileResponseTargetReleaseTypeEnvEnum | any | null | undefined; +}; + +/** + * Primitive stack input kind. + */ +export const SyncReconcileResponseTargetReleaseKind = { + String: "string", + Secret: "secret", + Number: "number", + Integer: "integer", + Boolean: "boolean", + Enum: "enum", + StringList: "stringList", +} as const; +/** + * Primitive stack input kind. + */ +export type SyncReconcileResponseTargetReleaseKind = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseKind +>; + +/** + * Represents the target cloud platform. + */ +export const SyncReconcileResponseTargetReleasePlatform = { + Aws: "aws", + Gcp: "gcp", + Azure: "azure", + Kubernetes: "kubernetes", + Local: "local", + Test: "test", +} as const; +/** + * Represents the target cloud platform. + */ +export type SyncReconcileResponseTargetReleasePlatform = ClosedEnum< + typeof SyncReconcileResponseTargetReleasePlatform +>; + +/** + * Who can provide a stack input value. + */ +export const SyncReconcileResponseTargetReleaseProvidedBy = { + Developer: "developer", + Deployer: "deployer", +} as const; +/** + * Who can provide a stack input value. + */ +export type SyncReconcileResponseTargetReleaseProvidedBy = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseProvidedBy +>; + +/** + * Portable stack input validation constraints. + */ +export type SyncReconcileResponseTargetReleaseValidation = { + /** + * Semantic format hint such as url. + */ + format?: string | null | undefined; + /** + * Maximum number. + */ + max?: string | null | undefined; + /** + * Maximum string-list items. + */ + maxItems?: number | null | undefined; + /** + * Maximum string length. + */ + maxLength?: number | null | undefined; + /** + * Minimum number. + */ + min?: string | null | undefined; + /** + * Minimum string-list items. + */ + minItems?: number | null | undefined; + /** + * Minimum string length. + */ + minLength?: number | null | undefined; + /** + * Portable whole-value regex pattern. + */ + pattern?: string | null | undefined; + /** + * Allowed string enum values. + */ + values?: Array | null | undefined; +}; + +export type SyncReconcileResponseTargetReleaseValidationUnion = + | SyncReconcileResponseTargetReleaseValidation + | any; + +/** + * Stack input definition serialized into a release stack. + */ +export type SyncReconcileResponseTargetReleaseInput = { + default?: + | SyncReconcileResponseTargetReleaseDefaultString + | SyncReconcileResponseTargetReleaseDefaultNumber + | SyncReconcileResponseTargetReleaseDefaultBoolean + | SyncReconcileResponseTargetReleaseDefaultStringList + | any + | null + | undefined; + /** + * Human-facing helper text. + */ + description: string; + /** + * Runtime env-var mappings for v1 input resolution. + */ + env?: Array | undefined; + /** + * Stable input ID used by CLI/API calls. + */ + id: string; + /** + * Primitive stack input kind. + */ + kind: SyncReconcileResponseTargetReleaseKind; + /** + * Human-facing field label. + */ + label: string; + /** + * Example placeholder shown in UI. + */ + placeholder?: string | null | undefined; + /** + * Platforms where this input applies. + */ + platforms?: + | Array + | null + | undefined; + /** + * Who can provide this value. + */ + providedBy: Array; + /** + * Whether a resolved value is required before deployment can proceed. + */ + required: boolean; + validation?: + | SyncReconcileResponseTargetReleaseValidation + | any + | null + | undefined; +}; + +export const SyncReconcileResponseTargetReleaseManagementEnum = { + Auto: "auto", +} as const; +export type SyncReconcileResponseTargetReleaseManagementEnum = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseManagementEnum +>; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseOverrideAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseOverrideAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseTargetReleaseOverrideAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileResponseTargetReleaseOverrideAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseOverrideAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileResponseTargetReleaseOverrideEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileResponseTargetReleaseOverrideEffect = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseOverrideEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseTargetReleaseOverrideAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileResponseTargetReleaseOverrideAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseTargetReleaseOverrideAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponseTargetReleaseOverrideEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseOverrideAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseOverrideAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseOverrideAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseTargetReleaseOverrideAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: + | SyncReconcileResponseTargetReleaseOverrideAzureResource + | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseOverrideAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseTargetReleaseOverrideAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileResponseTargetReleaseOverrideAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseTargetReleaseOverrideAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseOverrideAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseTargetReleaseOverrideConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion = + | SyncReconcileResponseTargetReleaseOverrideConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseOverrideGcpResource = { + condition?: + | SyncReconcileResponseTargetReleaseOverrideConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseTargetReleaseOverrideCondition = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseTargetReleaseOverrideConditionUnion = + | SyncReconcileResponseTargetReleaseOverrideCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseOverrideGcpStack = { + condition?: + | SyncReconcileResponseTargetReleaseOverrideCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseTargetReleaseOverrideGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileResponseTargetReleaseOverrideGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseOverrideGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseTargetReleaseOverrideGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileResponseTargetReleaseOverrideGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseTargetReleaseOverrideGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseOverrideGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileResponseTargetReleaseOverridePlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileResponseTargetReleaseOverride = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponseTargetReleaseOverridePlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileResponseTargetReleaseOverrideUnion = + | SyncReconcileResponseTargetReleaseOverride + | string; + +export type SyncReconcileResponseTargetReleaseManagement2 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + override: { + [k: string]: Array; + }; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseExtendAwResource = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * AWS-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseExtendAwStack = { + /** + * Optional condition for additional filtering (rare) + */ + condition?: { [k: string]: { [k: string]: string } } | null | undefined; + /** + * Resource ARNs to bind to + */ + resources: Array; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseTargetReleaseExtendAwBinding = { + /** + * AWS-specific binding specification + */ + resource?: SyncReconcileResponseTargetReleaseExtendAwResource | undefined; + /** + * AWS-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseExtendAwStack | undefined; +}; + +/** + * IAM effect. Defaults to Allow. + */ +export const SyncReconcileResponseTargetReleaseExtendEffect = { + Allow: "Allow", + Deny: "Deny", +} as const; +/** + * IAM effect. Defaults to Allow. + */ +export type SyncReconcileResponseTargetReleaseExtendEffect = ClosedEnum< + typeof SyncReconcileResponseTargetReleaseExtendEffect +>; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseTargetReleaseExtendAwGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * AWS-specific platform permission configuration + */ +export type SyncReconcileResponseTargetReleaseExtendAw = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseTargetReleaseExtendAwBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * IAM effect. Defaults to Allow. + */ + effect?: SyncReconcileResponseTargetReleaseExtendEffect | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseExtendAwGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseExtendAzureResource = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Azure-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseExtendAzureStack = { + /** + * Scope (subscription/resource group/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseTargetReleaseExtendAzureBinding = { + /** + * Azure-specific binding specification + */ + resource?: SyncReconcileResponseTargetReleaseExtendAzureResource | undefined; + /** + * Azure-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseExtendAzureStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseTargetReleaseExtendAzureGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * Azure-specific platform permission configuration + */ +export type SyncReconcileResponseTargetReleaseExtendAzure = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseTargetReleaseExtendAzureBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseExtendAzureGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseTargetReleaseExtendConditionResource = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseTargetReleaseExtendResourceConditionUnion = + | SyncReconcileResponseTargetReleaseExtendConditionResource + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseExtendGcpResource = { + condition?: + | SyncReconcileResponseTargetReleaseExtendConditionResource + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * GCP IAM condition + */ +export type SyncReconcileResponseTargetReleaseExtendCondition = { + expression: string; + title: string; +}; + +export type SyncReconcileResponseTargetReleaseExtendConditionUnion = + | SyncReconcileResponseTargetReleaseExtendCondition + | any; + +/** + * GCP-specific binding specification + */ +export type SyncReconcileResponseTargetReleaseExtendGcpStack = { + condition?: + | SyncReconcileResponseTargetReleaseExtendCondition + | any + | null + | undefined; + /** + * Scope (project/resource level) + */ + scope: string; +}; + +/** + * Generic binding configuration for permissions + */ +export type SyncReconcileResponseTargetReleaseExtendGcpBinding = { + /** + * GCP-specific binding specification + */ + resource?: SyncReconcileResponseTargetReleaseExtendGcpResource | undefined; + /** + * GCP-specific binding specification + */ + stack?: SyncReconcileResponseTargetReleaseExtendGcpStack | undefined; +}; + +/** + * Grant permissions for a specific cloud platform + */ +export type SyncReconcileResponseTargetReleaseExtendGcpGrant = { + /** + * AWS IAM actions (only for AWS) + */ + actions?: Array | null | undefined; + /** + * Azure actions (only for Azure) + */ + dataActions?: Array | null | undefined; + /** + * GCP permissions that require an exact residual custom role. + */ + permissions?: Array | null | undefined; + /** + * Provider predefined roles to bind directly. + */ + predefinedRoles?: Array | null | undefined; + /** + * GCP residual custom permissions to pair with predefined roles. + */ + residualPermissions?: Array | null | undefined; +}; + +/** + * GCP-specific platform permission configuration + */ +export type SyncReconcileResponseTargetReleaseExtendGcp = { + /** + * Generic binding configuration for permissions + */ + binding: SyncReconcileResponseTargetReleaseExtendGcpBinding; + /** + * Short admin-facing description of why this entry exists. + */ + description?: string | null | undefined; + /** + * Grant permissions for a specific cloud platform + */ + grant: SyncReconcileResponseTargetReleaseExtendGcpGrant; + /** + * Stable admin-facing label for this permission entry. + */ + label?: string | null | undefined; +}; + +/** + * Platform-specific permission configurations + */ +export type SyncReconcileResponseTargetReleaseExtendPlatforms = { + /** + * AWS permission configurations + */ + aws?: Array | null | undefined; + /** + * Azure permission configurations + */ + azure?: + | Array + | null + | undefined; + /** + * GCP permission configurations + */ + gcp?: Array | null | undefined; +}; + +/** + * A permission set that can be applied across different cloud platforms + */ +export type SyncReconcileResponseTargetReleaseExtend = { + /** + * Human-readable description of what this permission set allows + */ + description: string; + /** + * Unique identifier for the permission set (e.g., "storage/data-read") + */ + id: string; + /** + * Platform-specific permission configurations + */ + platforms: SyncReconcileResponseTargetReleaseExtendPlatforms; +}; + +/** + * Reference to a permission set - either by name or inline definition + */ +export type SyncReconcileResponseTargetReleaseExtendUnion = + | SyncReconcileResponseTargetReleaseExtend + | string; + +export type SyncReconcileResponseTargetReleaseManagement1 = { + /** + * Permission profile that maps resources to permission sets + * + * @remarks + * Key can be "*" for all resources or resource name for specific resource + */ + extend: { + [k: string]: Array; + }; +}; + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: + SyncReconcileResponsePreparedStackOverrideGcpResource$inboundSchema + .optional(), + stack: SyncReconcileResponsePreparedStackOverrideGcpStack$inboundSchema + .optional(), + }); + +export function syncReconcileResponsePreparedStackOverrideGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePreparedStackOverrideGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponsePreparedStackOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePreparedStackOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponsePreparedStackOverrideGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverridePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(SyncReconcileResponsePreparedStackOverrideAw$inboundSchema), + ).optional(), + azure: z.nullable( + z.array(SyncReconcileResponsePreparedStackOverrideAzure$inboundSchema), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePreparedStackOverrideGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponsePreparedStackOverridePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverridePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverridePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverridePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverride$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponsePreparedStackOverridePlatforms$inboundSchema + ), + }); + +export function syncReconcileResponsePreparedStackOverrideFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverride, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverride$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverride' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackOverrideUnion$inboundSchema: + z.ZodType = z.union( + [ + z.lazy(() => SyncReconcileResponsePreparedStackOverride$inboundSchema), + z.string(), + ], + ); + +export function syncReconcileResponsePreparedStackOverrideUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackOverrideUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackOverrideUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackOverrideUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackManagement2$inboundSchema: + z.ZodType = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileResponsePreparedStackOverride$inboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileResponsePreparedStackManagement2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackManagement2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackManagement2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponsePreparedStackExtendAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponsePreparedStackExtendAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponsePreparedStackExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePreparedStackExtendAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponsePreparedStackExtendAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackExtendEffect, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePreparedStackExtendAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponsePreparedStackExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponsePreparedStackExtendEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponsePreparedStackExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponsePreparedStackExtendAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackExtendAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackExtendAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponsePreparedStackExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePreparedStackExtendAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponsePreparedStackExtendAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePreparedStackExtendAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponsePreparedStackExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePreparedStackExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponsePreparedStackExtendAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePreparedStackExtendConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponsePreparedStackExtendConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePreparedStackExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponsePreparedStackExtendResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackExtendGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendConditionStack$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponsePreparedStackExtendConditionStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendConditionStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendConditionStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendStackConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePreparedStackExtendStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponsePreparedStackExtendStackConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendStackConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendStackConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackExtendConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackExtendGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponsePreparedStackExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePreparedStackExtendGcpStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponsePreparedStackExtendGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePreparedStackExtendGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponsePreparedStackExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePreparedStackExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponsePreparedStackExtendGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendPlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePreparedStackExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePreparedStackExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePreparedStackExtendGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponsePreparedStackExtendPlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendPlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendPlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendPlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtend$inboundSchema: z.ZodType< + SyncReconcileResponsePreparedStackExtend, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponsePreparedStackExtendPlatforms$inboundSchema + ), +}); + +export function syncReconcileResponsePreparedStackExtendFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtend, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtend$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtend' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackExtendUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponsePreparedStackExtend$inboundSchema), + z.string(), + ]); + +export function syncReconcileResponsePreparedStackExtendUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackExtendUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackExtendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackExtendUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackManagement1$inboundSchema: + z.ZodType = z.object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileResponsePreparedStackExtend$inboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileResponsePreparedStackManagement1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackManagement1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackManagement1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackManagement1' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackManagementUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncReconcileResponsePreparedStackManagement1$inboundSchema), + z.lazy(() => SyncReconcileResponsePreparedStackManagement2$inboundSchema), + SyncReconcileResponsePreparedStackManagementEnum$inboundSchema, + ]); + +export function syncReconcileResponsePreparedStackManagementUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackManagementUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackManagementUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackManagementUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponsePreparedStackProfileAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponsePreparedStackProfileAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponsePreparedStackProfileAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePreparedStackProfileAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponsePreparedStackProfileAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackProfileEffect, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePreparedStackProfileAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponsePreparedStackProfileAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponsePreparedStackProfileEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponsePreparedStackProfileAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponsePreparedStackProfileAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackProfileAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackProfileAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponsePreparedStackProfileAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePreparedStackProfileAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponsePreparedStackProfileAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePreparedStackProfileAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileAzure$inboundSchema: + z.ZodType = z.object( + { + binding: z.lazy(() => + SyncReconcileResponsePreparedStackProfileAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePreparedStackProfileAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }, + ); + +export function syncReconcileResponsePreparedStackProfileAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponsePreparedStackProfileConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponsePreparedStackProfileConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePreparedStackProfileResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponsePreparedStackProfileResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackProfileConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackProfileGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileConditionStack$inboundSchema: + z.ZodType = + z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponsePreparedStackProfileConditionStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileConditionStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileConditionStack$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileConditionStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileStackConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponsePreparedStackProfileStackConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponsePreparedStackProfileStackConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileStackConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileStackConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileStackConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackProfileConditionStack$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponsePreparedStackProfileGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponsePreparedStackProfileGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponsePreparedStackProfileGcpStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponsePreparedStackProfileGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponsePreparedStackProfileGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponsePreparedStackProfileGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponsePreparedStackProfileGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponsePreparedStackProfileGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfilePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePreparedStackProfileAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePreparedStackProfileAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponsePreparedStackProfileGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponsePreparedStackProfilePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfilePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfilePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfilePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfile$inboundSchema: z.ZodType< + SyncReconcileResponsePreparedStackProfile, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponsePreparedStackProfilePlatforms$inboundSchema + ), +}); + +export function syncReconcileResponsePreparedStackProfileFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfile, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfile$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfile' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackProfileUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponsePreparedStackProfile$inboundSchema), + z.string(), + ]); + +export function syncReconcileResponsePreparedStackProfileUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackProfileUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackProfileUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackProfileUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackPermissions$inboundSchema: + z.ZodType = z.object({ + management: z.union([ + z.lazy(() => SyncReconcileResponsePreparedStackManagement1$inboundSchema), + z.lazy(() => SyncReconcileResponsePreparedStackManagement2$inboundSchema), + SyncReconcileResponsePreparedStackManagementEnum$inboundSchema, + ]).optional(), + profiles: z.record( + z.string(), + z.record( + z.string(), + z.array( + z.union([ + z.lazy(() => + SyncReconcileResponsePreparedStackProfile$inboundSchema + ), + z.string(), + ]), + ), + ), + ), + }); + +export function syncReconcileResponsePreparedStackPermissionsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackPermissions, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackPermissions$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackPermissions' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackConfig$inboundSchema: z.ZodType< + SyncReconcileResponsePreparedStackConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncReconcileResponsePreparedStackConfigFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackConfig, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackConfig$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackDependency$inboundSchema: + z.ZodType = z.object({ + id: z.string(), + type: z.string(), + }); + +export function syncReconcileResponsePreparedStackDependencyFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackDependency, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackDependency' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackLifecycle$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponsePreparedStackLifecycle, + ); + +/** @internal */ +export const SyncReconcileResponsePreparedStackResources$inboundSchema: + z.ZodType = z.object({ + config: z.lazy(() => + SyncReconcileResponsePreparedStackConfig$inboundSchema + ), + dependencies: z.array( + z.lazy(() => SyncReconcileResponsePreparedStackDependency$inboundSchema), + ), + lifecycle: SyncReconcileResponsePreparedStackLifecycle$inboundSchema, + remoteAccess: z.boolean().optional(), + }); + +export function syncReconcileResponsePreparedStackResourcesFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackResources, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackResources' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackSupportedPlatform$inboundSchema: + z.ZodEnum = z + .enum(SyncReconcileResponsePreparedStackSupportedPlatform); + +/** @internal */ +export const SyncReconcileResponsePreparedStack$inboundSchema: z.ZodType< + SyncReconcileResponsePreparedStack, + unknown +> = z.object({ + id: z.string(), + inputs: z.array(SyncReconcileResponsePreparedStackInput$inboundSchema) + .optional(), + permissions: z.lazy(() => + SyncReconcileResponsePreparedStackPermissions$inboundSchema + ).optional(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileResponsePreparedStackResources$inboundSchema), + ), + supportedPlatforms: z.nullable( + z.array(SyncReconcileResponsePreparedStackSupportedPlatform$inboundSchema), + ).optional(), +}); + +export function syncReconcileResponsePreparedStackFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStack$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreparedStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreparedStackUnion$inboundSchema: z.ZodType< + SyncReconcileResponsePreparedStackUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponsePreparedStack$inboundSchema), + z.any(), +]); + +export function syncReconcileResponsePreparedStackUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreparedStackUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreparedStackUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreparedStackUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRuntimeMetadata$inboundSchema: z.ZodType< + SyncReconcileResponseRuntimeMetadata, + unknown +> = z.object({ + lastSyncedEnvVarsHash: z.nullable(z.string()).optional(), + preparedStack: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponsePreparedStack$inboundSchema), + z.any(), + ]), + ).optional(), + registryAccessGranted: z.boolean().optional(), +}); + +export function syncReconcileResponseRuntimeMetadataFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRuntimeMetadata$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseRuntimeMetadata' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseRuntimeMetadataUnion$inboundSchema: z.ZodType< + SyncReconcileResponseRuntimeMetadataUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseRuntimeMetadata$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseRuntimeMetadataUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseRuntimeMetadataUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseRuntimeMetadataUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseRuntimeMetadataUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStackStatePlatform$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseStackStatePlatform +> = z.enum(SyncReconcileResponseStackStatePlatform); + +/** @internal */ +export const SyncReconcileResponseStackStateConfig$inboundSchema: z.ZodType< + SyncReconcileResponseStackStateConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncReconcileResponseStackStateConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStackStateConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseStackStateConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseControllerPlatformEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseControllerPlatformEnum, + ); + +/** @internal */ +export const SyncReconcileResponseControllerPlatformUnion$inboundSchema: + z.ZodType = z.union([ + SyncReconcileResponseControllerPlatformEnum$inboundSchema, + z.any(), + ]); + +export function syncReconcileResponseControllerPlatformUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseControllerPlatformUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseControllerPlatformUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseControllerPlatformUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStackStateDependency$inboundSchema: z.ZodType< + SyncReconcileResponseStackStateDependency, + unknown +> = z.object({ + id: z.string(), + type: z.string(), +}); + +export function syncReconcileResponseStackStateDependencyFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseStackStateDependency, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStackStateDependency$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseStackStateDependency' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStackStateError$inboundSchema: z.ZodType< + SyncReconcileResponseStackStateError, + unknown +> = z.object({ + code: z.string(), + context: z.nullable(z.any()).optional(), + hint: z.nullable(z.string()).optional(), + httpStatusCode: z.nullable(z.int()).optional(), + internal: z.boolean(), + message: z.string(), + retryable: z.boolean().default(false), + source: z.nullable(z.any()).optional(), +}); + +export function syncReconcileResponseStackStateErrorFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStackStateError$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseStackStateError' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStackStateErrorUnion$inboundSchema: z.ZodType< + SyncReconcileResponseStackStateErrorUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseStackStateError$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseStackStateErrorUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseStackStateErrorUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStackStateErrorUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseStackStateErrorUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStackStateLifecycleEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseStackStateLifecycleEnum, + ); + +/** @internal */ +export const SyncReconcileResponseLifecycleUnion$inboundSchema: z.ZodType< + SyncReconcileResponseLifecycleUnion, + unknown +> = z.union([ + SyncReconcileResponseStackStateLifecycleEnum$inboundSchema, + z.any(), +]); + +export function syncReconcileResponseLifecycleUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseLifecycleUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseLifecycleUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseOutputs$inboundSchema: z.ZodType< + SyncReconcileResponseOutputs, + unknown +> = collectExtraKeys$( + z.object({ + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncReconcileResponseOutputsFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseOutputs$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseOutputs' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseOutputsUnion$inboundSchema: z.ZodType< + SyncReconcileResponseOutputsUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseOutputs$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseOutputsUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseOutputsUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseOutputsUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreviousConfig$inboundSchema: z.ZodType< + SyncReconcileResponsePreviousConfig, + unknown +> = collectExtraKeys$( + z.object({ + id: z.string(), + type: z.string(), + }).catchall(z.any()), + "additionalProperties", + true, +); + +export function syncReconcileResponsePreviousConfigFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreviousConfig$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponsePreviousConfig' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponsePreviousConfigUnion$inboundSchema: z.ZodType< + SyncReconcileResponsePreviousConfigUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponsePreviousConfig$inboundSchema), + z.any(), +]); + +export function syncReconcileResponsePreviousConfigUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponsePreviousConfigUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponsePreviousConfigUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponsePreviousConfigUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStackStateStatus$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseStackStateStatus +> = z.enum(SyncReconcileResponseStackStateStatus); + +/** @internal */ +export const SyncReconcileResponseStackStateResources$inboundSchema: z.ZodType< + SyncReconcileResponseStackStateResources, + unknown +> = z.object({ + _internal: z.nullable(z.any()).optional(), + config: z.lazy(() => SyncReconcileResponseStackStateConfig$inboundSchema), + controllerPlatform: z.nullable( + z.union([ + SyncReconcileResponseControllerPlatformEnum$inboundSchema, + z.any(), + ]), + ).optional(), + dependencies: z.array( + z.lazy(() => SyncReconcileResponseStackStateDependency$inboundSchema), + ).optional(), + error: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseStackStateError$inboundSchema), + z.any(), + ]), + ).optional(), + lastFailedState: z.nullable(z.any()).optional(), + lifecycle: z.nullable( + z.union([ + SyncReconcileResponseStackStateLifecycleEnum$inboundSchema, + z.any(), + ]), + ).optional(), + outputs: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseOutputs$inboundSchema), + z.any(), + ]), + ).optional(), + previousConfig: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponsePreviousConfig$inboundSchema), + z.any(), + ]), + ).optional(), + remoteBindingParams: z.nullable(z.any()).optional(), + retryAttempt: z.int().optional(), + status: SyncReconcileResponseStackStateStatus$inboundSchema, + type: z.string(), +}).transform((v) => { + return remap$(v, { + "_internal": "internal", + }); +}); + +export function syncReconcileResponseStackStateResourcesFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseStackStateResources, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStackStateResources$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseStackStateResources' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStackState$inboundSchema: z.ZodType< + SyncReconcileResponseStackState, + unknown +> = z.object({ + platform: SyncReconcileResponseStackStatePlatform$inboundSchema, + resourcePrefix: z.string(), + resources: z.record( + z.string(), + z.lazy(() => SyncReconcileResponseStackStateResources$inboundSchema), + ), +}); + +export function syncReconcileResponseStackStateFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => SyncReconcileResponseStackState$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseStackState' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStackStateUnion$inboundSchema: z.ZodType< + SyncReconcileResponseStackStateUnion, + unknown +> = z.union([ + z.lazy(() => SyncReconcileResponseStackState$inboundSchema), + z.any(), +]); + +export function syncReconcileResponseStackStateUnionFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseStackStateUnion$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseStackStateUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseStatus$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseStatus +> = z.enum(SyncReconcileResponseStatus); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseTypeStringList$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleaseTypeStringList, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseDefaultStringList$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseTargetReleaseTypeStringList$inboundSchema, + value: z.array(z.string()), + }); + +export function syncReconcileResponseTargetReleaseDefaultStringListFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseDefaultStringList, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseDefaultStringList$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseDefaultStringList' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseTypeBoolean$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleaseTypeBoolean, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseDefaultBoolean$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseTargetReleaseTypeBoolean$inboundSchema, + value: z.boolean(), + }); + +export function syncReconcileResponseTargetReleaseDefaultBooleanFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseDefaultBoolean, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseDefaultBoolean$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseDefaultBoolean' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseTypeNumber$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleaseTypeNumber, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseDefaultNumber$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseTargetReleaseTypeNumber$inboundSchema, + value: z.string(), + }); + +export function syncReconcileResponseTargetReleaseDefaultNumberFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseDefaultNumber, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseDefaultNumber$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseDefaultNumber' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseTypeString$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleaseTypeString, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseDefaultString$inboundSchema: + z.ZodType = z + .object({ + type: SyncReconcileResponseTargetReleaseTypeString$inboundSchema, + value: z.string(), + }); + +export function syncReconcileResponseTargetReleaseDefaultStringFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseDefaultString, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseDefaultString$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseDefaultString' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseDefaultUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseTargetReleaseDefaultString$inboundSchema), + z.lazy(() => SyncReconcileResponseTargetReleaseDefaultNumber$inboundSchema), + z.lazy(() => + SyncReconcileResponseTargetReleaseDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseTargetReleaseDefaultStringList$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseTargetReleaseDefaultUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseDefaultUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseDefaultUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseDefaultUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseTypeEnvEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleaseTypeEnvEnum, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseTypeUnion$inboundSchema: + z.ZodType = z.union([ + SyncReconcileResponseTargetReleaseTypeEnvEnum$inboundSchema, + z.any(), + ]); + +export function syncReconcileResponseTargetReleaseTypeUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseTypeUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseTypeUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseTypeUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseEnv$inboundSchema: z.ZodType< + SyncReconcileResponseTargetReleaseEnv, + unknown +> = z.object({ + name: z.string(), + targetResources: z.nullable(z.array(z.string())).optional(), + type: z.nullable( + z.union([ + SyncReconcileResponseTargetReleaseTypeEnvEnum$inboundSchema, + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileResponseTargetReleaseEnvFromJSON( + jsonString: string, +): SafeParseResult { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseEnv$inboundSchema.parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseEnv' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseKind$inboundSchema: z.ZodEnum< + typeof SyncReconcileResponseTargetReleaseKind +> = z.enum(SyncReconcileResponseTargetReleaseKind); + +/** @internal */ +export const SyncReconcileResponseTargetReleasePlatform$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleasePlatform, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseProvidedBy$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleaseProvidedBy, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseValidation$inboundSchema: + z.ZodType = z.object({ + format: z.nullable(z.string()).optional(), + max: z.nullable(z.string()).optional(), + maxItems: z.nullable(z.int()).optional(), + maxLength: z.nullable(z.int()).optional(), + min: z.nullable(z.string()).optional(), + minItems: z.nullable(z.int()).optional(), + minLength: z.nullable(z.int()).optional(), + pattern: z.nullable(z.string()).optional(), + values: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseTargetReleaseValidationFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseValidation, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseValidation$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseValidation' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseValidationUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => SyncReconcileResponseTargetReleaseValidation$inboundSchema), + z.any(), + ]); + +export function syncReconcileResponseTargetReleaseValidationUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseValidationUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseValidationUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseValidationUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseInput$inboundSchema: z.ZodType< + SyncReconcileResponseTargetReleaseInput, + unknown +> = z.object({ + default: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseDefaultString$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseTargetReleaseDefaultNumber$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseTargetReleaseDefaultBoolean$inboundSchema + ), + z.lazy(() => + SyncReconcileResponseTargetReleaseDefaultStringList$inboundSchema + ), + z.any(), + ]), + ).optional(), + description: z.string(), + env: z.array( + z.lazy(() => SyncReconcileResponseTargetReleaseEnv$inboundSchema), + ).optional(), + id: z.string(), + kind: SyncReconcileResponseTargetReleaseKind$inboundSchema, + label: z.string(), + placeholder: z.nullable(z.string()).optional(), + platforms: z.nullable( + z.array(SyncReconcileResponseTargetReleasePlatform$inboundSchema), + ).optional(), + providedBy: z.array( + SyncReconcileResponseTargetReleaseProvidedBy$inboundSchema, + ), + required: z.boolean(), + validation: z.nullable( + z.union([ + z.lazy(() => SyncReconcileResponseTargetReleaseValidation$inboundSchema), + z.any(), + ]), + ).optional(), +}); + +export function syncReconcileResponseTargetReleaseInputFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseInput, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseInput$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseInput' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseManagementEnum$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleaseManagementEnum, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseTargetReleaseOverrideAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseTargetReleaseOverrideAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseOverrideAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleaseOverrideEffect, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseTargetReleaseOverrideAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponseTargetReleaseOverrideEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseTargetReleaseOverrideAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideAzureResource$inboundSchema: + z.ZodType = + z.object({ + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseOverrideAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideAzureResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseOverrideAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseOverrideAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideAzureBinding$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseTargetReleaseOverrideAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideAzure$inboundSchema: + z.ZodType = z + .object({ + binding: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseTargetReleaseOverrideAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponseTargetReleaseOverrideConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseTargetReleaseOverrideConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseTargetReleaseOverrideResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseOverrideGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseTargetReleaseOverrideConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideConditionUnion$inboundSchema: + z.ZodType = + z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseTargetReleaseOverrideConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseOverrideGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideGcpStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseOverrideGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseTargetReleaseOverrideGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseTargetReleaseOverrideGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverridePlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseTargetReleaseOverrideGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseOverridePlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverridePlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverridePlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverridePlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverride$inboundSchema: + z.ZodType = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponseTargetReleaseOverridePlatforms$inboundSchema + ), + }); + +export function syncReconcileResponseTargetReleaseOverrideFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverride, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverride$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverride' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseOverrideUnion$inboundSchema: + z.ZodType = z.union( + [ + z.lazy(() => SyncReconcileResponseTargetReleaseOverride$inboundSchema), + z.string(), + ], + ); + +export function syncReconcileResponseTargetReleaseOverrideUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseOverrideUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseOverrideUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseOverrideUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseManagement2$inboundSchema: + z.ZodType = z.object({ + override: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileResponseTargetReleaseOverride$inboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileResponseTargetReleaseManagement2FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseManagement2, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseManagement2$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseManagement2' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendAwResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseTargetReleaseExtendAwResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendAwResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendAwResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAwResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendAwStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.record(z.string(), z.record(z.string(), z.string())), + ).optional(), + resources: z.array(z.string()), + }); + +export function syncReconcileResponseTargetReleaseExtendAwStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendAwStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendAwStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAwStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendAwBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendAwResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendAwStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseExtendAwBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendAwBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendAwBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAwBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendEffect$inboundSchema: + z.ZodEnum = z.enum( + SyncReconcileResponseTargetReleaseExtendEffect, + ); + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendAwGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseTargetReleaseExtendAwGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendAwGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendAwGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAwGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendAw$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendAwBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + effect: SyncReconcileResponseTargetReleaseExtendEffect$inboundSchema + .optional(), + grant: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendAwGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseTargetReleaseExtendAwFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendAw, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendAw$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAw' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendAzureResource$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseExtendAzureResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendAzureResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendAzureResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAzureResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendAzureStack$inboundSchema: + z.ZodType = z + .object({ + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseExtendAzureStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendAzureStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendAzureStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAzureStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendAzureBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendAzureResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendAzureStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseExtendAzureBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendAzureBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendAzureBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAzureBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendAzureGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseTargetReleaseExtendAzureGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendAzureGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendAzureGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAzureGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendAzure$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendAzureBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendAzureGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseTargetReleaseExtendAzureFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendAzure, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendAzure$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendAzure' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendConditionResource$inboundSchema: + z.ZodType< + SyncReconcileResponseTargetReleaseExtendConditionResource, + unknown + > = z.object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseTargetReleaseExtendConditionResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendConditionResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendConditionResource$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendConditionResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendResourceConditionUnion$inboundSchema: + z.ZodType< + SyncReconcileResponseTargetReleaseExtendResourceConditionUnion, + unknown + > = z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseTargetReleaseExtendResourceConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendResourceConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendResourceConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendResourceConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendGcpResource$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseExtendConditionResource$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseExtendGcpResourceFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendGcpResource, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendGcpResource$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendGcpResource' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendCondition$inboundSchema: + z.ZodType = z + .object({ + expression: z.string(), + title: z.string(), + }); + +export function syncReconcileResponseTargetReleaseExtendConditionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendCondition, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendCondition$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendCondition' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendConditionUnion$inboundSchema: + z.ZodType = z + .union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseExtendCondition$inboundSchema + ), + z.any(), + ]); + +export function syncReconcileResponseTargetReleaseExtendConditionUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendConditionUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendConditionUnion$inboundSchema + .parse(JSON.parse(x)), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendConditionUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendGcpStack$inboundSchema: + z.ZodType = z + .object({ + condition: z.nullable( + z.union([ + z.lazy(() => + SyncReconcileResponseTargetReleaseExtendCondition$inboundSchema + ), + z.any(), + ]), + ).optional(), + scope: z.string(), + }); + +export function syncReconcileResponseTargetReleaseExtendGcpStackFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendGcpStack, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendGcpStack$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendGcpStack' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendGcpBinding$inboundSchema: + z.ZodType = z + .object({ + resource: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendGcpResource$inboundSchema + ).optional(), + stack: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendGcpStack$inboundSchema + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseExtendGcpBindingFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendGcpBinding, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendGcpBinding$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendGcpBinding' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendGcpGrant$inboundSchema: + z.ZodType = z + .object({ + actions: z.nullable(z.array(z.string())).optional(), + dataActions: z.nullable(z.array(z.string())).optional(), + permissions: z.nullable(z.array(z.string())).optional(), + predefinedRoles: z.nullable(z.array(z.string())).optional(), + residualPermissions: z.nullable(z.array(z.string())).optional(), + }); + +export function syncReconcileResponseTargetReleaseExtendGcpGrantFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendGcpGrant, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendGcpGrant$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendGcpGrant' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendGcp$inboundSchema: + z.ZodType = z.object({ + binding: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendGcpBinding$inboundSchema + ), + description: z.nullable(z.string()).optional(), + grant: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendGcpGrant$inboundSchema + ), + label: z.nullable(z.string()).optional(), + }); + +export function syncReconcileResponseTargetReleaseExtendGcpFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendGcp, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendGcp$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendGcp' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendPlatforms$inboundSchema: + z.ZodType = z + .object({ + aws: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseTargetReleaseExtendAw$inboundSchema + )), + ).optional(), + azure: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseTargetReleaseExtendAzure$inboundSchema + )), + ).optional(), + gcp: z.nullable( + z.array(z.lazy(() => + SyncReconcileResponseTargetReleaseExtendGcp$inboundSchema + )), + ).optional(), + }); + +export function syncReconcileResponseTargetReleaseExtendPlatformsFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendPlatforms, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendPlatforms$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendPlatforms' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtend$inboundSchema: z.ZodType< + SyncReconcileResponseTargetReleaseExtend, + unknown +> = z.object({ + description: z.string(), + id: z.string(), + platforms: z.lazy(() => + SyncReconcileResponseTargetReleaseExtendPlatforms$inboundSchema + ), +}); + +export function syncReconcileResponseTargetReleaseExtendFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtend, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtend$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtend' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseExtendUnion$inboundSchema: + z.ZodType = z.union([ + z.lazy(() => SyncReconcileResponseTargetReleaseExtend$inboundSchema), + z.string(), + ]); + +export function syncReconcileResponseTargetReleaseExtendUnionFromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseExtendUnion, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseExtendUnion$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseExtendUnion' from JSON`, + ); +} + +/** @internal */ +export const SyncReconcileResponseTargetReleaseManagement1$inboundSchema: + z.ZodType = z.object({ + extend: z.record( + z.string(), + z.array(z.union([ + z.lazy(() => SyncReconcileResponseTargetReleaseExtend$inboundSchema), + z.string(), + ])), + ), + }); + +export function syncReconcileResponseTargetReleaseManagement1FromJSON( + jsonString: string, +): SafeParseResult< + SyncReconcileResponseTargetReleaseManagement1, + SDKValidationError +> { + return safeParse( + jsonString, + (x) => + SyncReconcileResponseTargetReleaseManagement1$inboundSchema.parse( + JSON.parse(x), + ), + `Failed to parse 'SyncReconcileResponseTargetReleaseManagement1' from JSON`, + ); +} diff --git a/client-sdks/platform/typescript/src/sdk/deploymentgroups.ts b/client-sdks/platform/typescript/src/sdk/deploymentgroups.ts index f57e2d450..a2ff810a3 100644 --- a/client-sdks/platform/typescript/src/sdk/deploymentgroups.ts +++ b/client-sdks/platform/typescript/src/sdk/deploymentgroups.ts @@ -4,6 +4,7 @@ import { deploymentGroupsCreateDeploymentGroup } from "../funcs/deploymentGroupsCreateDeploymentGroup.js"; import { deploymentGroupsCreateDeploymentGroupToken } from "../funcs/deploymentGroupsCreateDeploymentGroupToken.js"; +import { deploymentGroupsCreateFirstPartyDeploymentSession } from "../funcs/deploymentGroupsCreateFirstPartyDeploymentSession.js"; import { deploymentGroupsDeleteDeploymentGroup } from "../funcs/deploymentGroupsDeleteDeploymentGroup.js"; import { deploymentGroupsGetDeploymentGroup } from "../funcs/deploymentGroupsGetDeploymentGroup.js"; import { deploymentGroupsListDeploymentGroups } from "../funcs/deploymentGroupsListDeploymentGroups.js"; @@ -100,4 +101,21 @@ export class DeploymentGroups extends ClientSDK { options, )); } + + /** + * Create first-party deployment session + * + * @remarks + * Mints a short-lived deployment-group token with the recommended self-deploy policy for the authenticated developer. + */ + async createFirstPartyDeploymentSession( + request: operations.CreateFirstPartyDeploymentSessionRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(deploymentGroupsCreateFirstPartyDeploymentSession( + this, + request, + options, + )); + } } diff --git a/client-sdks/platform/typescript/src/sdk/deployments.ts b/client-sdks/platform/typescript/src/sdk/deployments.ts index 493fe5667..4cdef8293 100644 --- a/client-sdks/platform/typescript/src/sdk/deployments.ts +++ b/client-sdks/platform/typescript/src/sdk/deployments.ts @@ -16,7 +16,10 @@ import { deploymentsListFilterDeploymentGroups } from "../funcs/deploymentsListF import { deploymentsListFilterEnvironments } from "../funcs/deploymentsListFilterEnvironments.js"; import { deploymentsPinRelease } from "../funcs/deploymentsPinRelease.js"; import { deploymentsRedeploy } from "../funcs/deploymentsRedeploy.js"; +import { deploymentsRejoin } from "../funcs/deploymentsRejoin.js"; import { deploymentsRetry } from "../funcs/deploymentsRetry.js"; +import { deploymentsSetFirstPartyDeploymentInputs } from "../funcs/deploymentsSetFirstPartyDeploymentInputs.js"; +import { deploymentsSetTargetAgentVersion } from "../funcs/deploymentsSetTargetAgentVersion.js"; import { deploymentsUpdateEnvironmentVariables } from "../funcs/deploymentsUpdateEnvironmentVariables.js"; import { ClientSDK, RequestOptions } from "../lib/sdks.js"; import * as models from "../models/index.js"; @@ -124,6 +127,20 @@ export class Deployments extends ClientSDK { )); } + /** + * Re-acquire a deployment-scoped sync token for an existing deployment by name. Used by the agent when its persistent state was wiped (e.g. emptyDir on pod restart) and `/v1/initialize` would hit a DEPLOYMENT_NAME_ALREADY_EXISTS 409. Deployment-group tokens only. + */ + async rejoin( + request?: operations.RejoinDeploymentRequest | undefined, + options?: RequestOptions, + ): Promise { + return unwrapAsync(deploymentsRejoin( + this, + request, + options, + )); + } + /** * Import a deployment from resolved setup infrastructure such as CloudFormation, Terraform, or Helm. */ @@ -138,6 +155,20 @@ export class Deployments extends ClientSDK { )); } + /** + * Store operator-provided input values on a first-party deployment session token so CLI/local deploys apply them. + */ + async setFirstPartyDeploymentInputs( + request?: models.SetFirstPartyDeploymentInputsRequest | undefined, + options?: RequestOptions, + ): Promise { + return unwrapAsync(deploymentsSetFirstPartyDeploymentInputs( + this, + request, + options, + )); + } + /** * Start a durable setup registration operation for CloudFormation, Terraform, or Helm. */ @@ -208,6 +239,20 @@ export class Deployments extends ClientSDK { )); } + /** + * Set (or clear) the agent version this deployment should run. The manager compares this against the agent's reported version on each /v1/sync; when they differ, it emits an agent_target in the response so the agent triggers the upgrade itself. Pass null/omit to clear. + */ + async setTargetAgentVersion( + request: operations.SetDeploymentTargetAgentVersionRequest, + options?: RequestOptions, + ): Promise { + return unwrapAsync(deploymentsSetTargetAgentVersion( + this, + request, + options, + )); + } + /** * Retry a failed deployment operation. Uses alien-infra's retry mechanisms to resume from exact failure point. */ diff --git a/client-sdks/platform/typescript/tsconfig.json b/client-sdks/platform/typescript/tsconfig.json index feac75510..e6cd950ad 100644 --- a/client-sdks/platform/typescript/tsconfig.json +++ b/client-sdks/platform/typescript/tsconfig.json @@ -13,6 +13,7 @@ "declaration": true, "declarationMap": true, "sourceMap": true, + "rootDir": "src", "outDir": "esm", @@ -36,5 +37,5 @@ "forceConsistentCasingInFileNames": true }, "include": ["src"], - "exclude": ["node_modules"] + "exclude": ["node_modules", "src/__tests__"] } diff --git a/crates/alien-agent/src/cli.rs b/crates/alien-agent/src/cli.rs index 1ea60a106..99eafd54a 100644 --- a/crates/alien-agent/src/cli.rs +++ b/crates/alien-agent/src/cli.rs @@ -8,7 +8,7 @@ use crate::loops::debug_session::DebugSessionLoop; use crate::{run_agent_with_cancel_and_debug_loop, AgentConfig, InstanceLock}; use alien_core::embedded_config::{load_embedded_config, AgentConfig as EmbeddedAgentConfig}; use alien_core::{validate_public_endpoint_urls, Platform, PublicEndpointUrls}; -use alien_error::{AlienError, Context, IntoAlienError}; +use alien_error::{AlienError, Context, ContextError, IntoAlienError}; use clap::Parser; use std::net::IpAddr; use std::path::PathBuf; @@ -197,6 +197,21 @@ async fn run(mut args: Args, init_hook: InitHook, debug_loop_hook: DebugLoopHook let cli_sync_token = load_sync_token(args.sync_token_file.as_deref()).await?; + // Stack settings are loaded up front so they can be forwarded on the + // `initialize` call (multi-tenant managers like managerx require them + // to construct the deployment row; single-tenant OSS ignores them). + let stack_settings_json = load_config_value( + args.stack_settings.clone(), + args.stack_settings_file.as_deref(), + "stack settings", + false, + ) + .await?; + let initial_stack_settings = parse_json_opt::( + stack_settings_json.clone(), + "stack settings", + )?; + let effective_sync_url = args .sync_url .or_else(|| embedded_config.as_ref().and_then(|c| c.manager_url.clone())); @@ -226,6 +241,16 @@ async fn run(mut args: Args, init_hook: InitHook, debug_loop_hook: DebugLoopHook )? { StartupDeploymentId::Stored(stored_deployment_id) => { info!(" Using stored deployment ID: {}", stored_deployment_id); + // Prefer the deployment-scoped token previously returned by + // `/v1/initialize` over the chart-mounted deployment-group + // token. The platform API rejects `/v1/sync/acquire` calls + // made with a deployment-group token (403 Forbidden), so + // without this restoration step pod restarts silently lose + // sync until the agent re-initializes. + if let Some(stored_token) = db.get_sync_token().await? { + info!(" Using stored deployment-scoped sync token"); + sync_token = stored_token; + } } StartupDeploymentId::Configured(deployment_id) => { info!(" Using configured deployment ID: {}", deployment_id); @@ -234,19 +259,56 @@ async fn run(mut args: Args, init_hook: InitHook, debug_loop_hook: DebugLoopHook StartupDeploymentId::Initialize => { info!(" First startup, initializing with manager..."); - let (initialized_deployment_id, deployment_token) = initialize_with_manager( + let init_result = initialize_with_manager( &sync_url, &sync_token, args.platform, args.agent_name.as_deref(), + initial_stack_settings.as_ref(), ) - .await?; + .await; + + let (initialized_deployment_id, deployment_token) = match init_result { + Ok(v) => v, + // 409 from initialize means a deployment with our name + // already exists in this dg — the canonical cause is + // that we *had* state (deployment_id + dep-scoped token) + // in `data_dir` but it was wiped (emptyDir on chart + // default, manual reset, etc.). Re-acquiring a fresh + // deployment-scoped token over the existing row is + // exactly what `/v1/rejoin` exists for; fall through to + // it instead of crashing the agent. + Err(e) if e.http_status_code == Some(409) => { + info!( + " Name already exists — assuming local state was wiped, rejoining…" + ); + let agent_name = args.agent_name.clone().or_else(|| { + std::env::var("HOSTNAME").ok().or_else(|| { + hostname::get().ok().and_then(|h| h.into_string().ok()) + }) + }); + let name = agent_name.ok_or_else(|| { + AlienError::new(ErrorData::ConfigurationError { + message: "Cannot rejoin without a deployment name — pass --agent-name or set AGENT_NAME / HOSTNAME" + .to_string(), + }) + })?; + let (dep_id, dep_token) = + rejoin_with_manager(&sync_url, &sync_token, &name).await?; + info!(deployment_id = %dep_id, " Rejoined existing deployment"); + (dep_id, Some(dep_token)) + } + Err(e) => return Err(e), + }; db.set_deployment_id(&initialized_deployment_id).await?; if let Some(ref dt) = deployment_token { info!(" Received deployment-scoped token from manager"); sync_token = dt.clone(); + // Persist so pod restarts don't fall back to the + // chart-mounted deployment-group token. + db.set_sync_token(&sync_token).await?; } info!( @@ -302,13 +364,9 @@ async fn run(mut args: Args, init_hook: InitHook, debug_loop_hook: DebugLoopHook message: "Invalid public endpoints configuration".to_string(), })?; } - let stack_settings_json = load_config_value( - args.stack_settings, - args.stack_settings_file.as_deref(), - "stack settings", - false, - ) - .await?; + // `stack_settings_json` was loaded up front so it could be forwarded to + // `initialize`; reuse that same value here so the downstream config sees + // the settings that were sent to the manager. let mut stack_settings = parse_json_opt::(stack_settings_json, "stack settings")? .unwrap_or_default(); @@ -538,6 +596,7 @@ async fn initialize_with_manager( token: &str, platform: Platform, agent_name: Option<&str>, + stack_settings: Option<&alien_core::StackSettings>, ) -> Result<(String, Option)> { use alien_manager_api::types::Platform as SdkPlatform; use reqwest::header::{HeaderMap, HeaderValue, AUTHORIZATION, USER_AGENT}; @@ -585,12 +644,42 @@ async fn initialize_with_manager( builder = builder.body_map(|b| b.name(name)); } + // Forward chart/CLI-provided stack settings. Multi-tenant embedders + // (alien-managerx) require this on initialize to construct the + // deployment row; the OSS standalone manager accepts it and ignores + // anything it doesn't use. + if let Some(settings) = stack_settings { + let sdk_settings: alien_manager_api::types::StackSettings = serde_json::from_value( + serde_json::to_value(settings).into_alien_error().context( + ErrorData::ConfigurationError { + message: "Failed to serialize stack settings for initialize".to_string(), + }, + )?, + ) + .into_alien_error() + .context(ErrorData::ConfigurationError { + message: "Failed to deserialize stack settings into SDK type".to_string(), + })?; + builder = builder.body_map(|b| b.stack_settings(sdk_settings)); + } + let response = builder .send() .await .map_err(alien_manager_api::convert_sdk_error) - .context(ErrorData::ConfigurationError { - message: "Failed to call initialize endpoint".to_string(), + .map_err(|e| { + // Preserve a 409 (deployment name already exists) verbatim + // so the caller's `e.http_status_code == Some(409)` arm can + // trigger the rejoin fall-through. Wrapping with + // `ConfigurationError` here would override the status to 500 + // and the agent would crash instead of recovering. + if e.http_status_code == Some(409) { + AlienError::new(ErrorData::DeploymentNameAlreadyExists) + } else { + e.context(ErrorData::ConfigurationError { + message: "Failed to call initialize endpoint".to_string(), + }) + } })?; let init_response = response.into_inner(); @@ -598,6 +687,54 @@ async fn initialize_with_manager( Ok((init_response.deployment_id, init_response.token)) } +/// Re-acquire a deployment-scoped sync token from the manager after the +/// agent's persistent state was wiped (chart-default emptyDir, manual +/// reset, etc.). Called only on a 409 from `initialize_with_manager` — +/// the existing deployment row is reattached to and a fresh sync token +/// is minted. +async fn rejoin_with_manager( + sync_url: &url::Url, + token: &str, + deployment_name: &str, +) -> Result<(String, String)> { + use reqwest::header::{HeaderMap, HeaderValue, AUTHORIZATION, USER_AGENT}; + + let mut headers = HeaderMap::new(); + headers.insert( + AUTHORIZATION, + HeaderValue::from_str(&format!("Bearer {}", token)) + .into_alien_error() + .context(ErrorData::ConfigurationError { + message: "Invalid token format".to_string(), + })?, + ); + headers.insert(USER_AGENT, HeaderValue::from_static("alien-agent")); + + let http_client = reqwest::Client::builder() + .default_headers(headers) + .build() + .into_alien_error() + .context(ErrorData::ConfigurationError { + message: "Failed to create HTTP client".to_string(), + })?; + + let base_url = sync_url.as_str().trim_end_matches('/'); + let client = alien_manager_api::Client::new_with_client(base_url, http_client); + + let response = client + .rejoin() + .body_map(|b| b.name(deployment_name.to_string())) + .send() + .await + .map_err(alien_manager_api::convert_sdk_error) + .context(ErrorData::ConfigurationError { + message: "Failed to call rejoin endpoint".to_string(), + })?; + + let r = response.into_inner(); + Ok((r.deployment_id, r.token)) +} + fn setup_tracing(verbose: bool) { let filter = if verbose { EnvFilter::try_from_default_env() diff --git a/crates/alien-agent/src/db.rs b/crates/alien-agent/src/db.rs index 67e994c4e..45f315647 100644 --- a/crates/alien-agent/src/db.rs +++ b/crates/alien-agent/src/db.rs @@ -824,6 +824,61 @@ impl AgentDb { Ok(()) } + /// Get the deployment-scoped sync token returned by `initialize`. The + /// agent persists this so a pod restart doesn't fall back to the + /// chart-mounted deployment-group token (which can create new + /// deployments but is not accepted by `/v1/sync/acquire` — + /// platform-side rejects with 403). + pub async fn get_sync_token(&self) -> Result> { + let conn = self.conn.lock().await; + + let mut rows = conn + .query("SELECT value FROM state WHERE key = 'sync_token'", ()) + .await + .into_alien_error() + .context(ErrorData::DatabaseError { + message: "Failed to query sync_token".to_string(), + })?; + + match rows + .next() + .await + .into_alien_error() + .context(ErrorData::DatabaseError { + message: "Failed to fetch sync_token row".to_string(), + })? { + Some(row) => { + let sync_token: String = + row.get(0) + .into_alien_error() + .context(ErrorData::DatabaseError { + message: "Failed to read sync_token value".to_string(), + })?; + Ok(Some(sync_token)) + } + None => Ok(None), + } + } + + /// Persist the deployment-scoped sync token. Idempotent — overwrites + /// any prior value (e.g. when the manager rotates the token). + pub async fn set_sync_token(&self, sync_token: &str) -> Result<()> { + let conn = self.conn.lock().await; + + conn.execute( + "INSERT INTO state (key, value, updated_at) VALUES ('sync_token', ?, datetime('now')) + ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at", + (sync_token.to_string(),), + ) + .await + .into_alien_error() + .context(ErrorData::DatabaseError { + message: "Failed to set sync_token".to_string(), + })?; + + Ok(()) + } + /// Get the commands URL (public URL for cloud functions to poll commands). pub async fn get_commands_url(&self) -> Result> { let conn = self.conn.lock().await; diff --git a/crates/alien-agent/src/error.rs b/crates/alien-agent/src/error.rs index 782e76d8c..66cbc6cdb 100644 --- a/crates/alien-agent/src/error.rs +++ b/crates/alien-agent/src/error.rs @@ -30,6 +30,20 @@ pub enum ErrorData { )] ConfigurationError { message: String }, + /// The manager rejected `/v1/initialize` because a deployment with the + /// requested `(deployment_group_id, name)` already exists. Distinct + /// from `ConfigurationError` so the caller can route this into the + /// `/v1/rejoin` fall-through (state-wipe recovery) instead of crashing + /// the agent. + #[error( + code = "DEPLOYMENT_NAME_ALREADY_EXISTS", + message = "Deployment name already exists in this deployment group", + retryable = "false", + internal = "false", + http_status_code = 409 + )] + DeploymentNameAlreadyExists, + #[error( code = "DATABASE_ERROR", message = "Database error: {message}", diff --git a/crates/alien-agent/src/lib.rs b/crates/alien-agent/src/lib.rs index 0d7c7674a..5537d91ea 100644 --- a/crates/alien-agent/src/lib.rs +++ b/crates/alien-agent/src/lib.rs @@ -96,23 +96,34 @@ pub async fn run_agent_with_cancel_and_debug_loop( // Initialize encrypted database let db = Arc::new(db::AgentDb::new(&config.data_dir, &config.encryption_key).await?); + let first_sync_completed = Arc::new(std::sync::atomic::AtomicBool::new(false)); + // Create shared state let state = Arc::new(AgentState { config: config.clone(), db: db.clone(), service_provider, cancel: cancel.clone(), + first_sync_completed: first_sync_completed.clone(), }); // Start OTLP server (for local functions to send telemetry). - // This is best-effort — a port conflict should not take down the agent. + // Also serves /livez and /readyz on the same port for Kubernetes probes. + // Best-effort — a port conflict should not take down the agent. let otlp_host = config.otlp_server_host; let otlp_port = config.otlp_server_port; let otlp_db = db.clone(); let otlp_cancel = cancel.clone(); + let probe_readiness = first_sync_completed.clone(); tokio::spawn(async move { - if let Err(e) = - otlp_server::start_otlp_server(otlp_host, otlp_port, otlp_db, otlp_cancel).await + if let Err(e) = otlp_server::start_otlp_server( + otlp_host, + otlp_port, + otlp_db, + probe_readiness, + otlp_cancel, + ) + .await { warn!(error = %e, "OTLP server failed (telemetry collection disabled)"); } @@ -255,4 +266,11 @@ pub struct AgentState { pub service_provider: Option>, /// Cancellation token for graceful shutdown. pub cancel: CancellationToken, + /// Readiness signal consumed by the `/readyz` probe handler. Flipped to + /// `true` by the sync loop on the first successful `/v1/sync` round-trip. + /// /readyz returns 503 until then so a freshly-rolled agent isn't marked + /// ready before it has actually reached the manager. The other readiness + /// conditions (process alive, DB opened, InstanceLock held) are implicit + /// — the agent's HTTP server only comes up after those succeed. + pub first_sync_completed: Arc, } diff --git a/crates/alien-agent/src/loops/agent_upgrade.rs b/crates/alien-agent/src/loops/agent_upgrade.rs new file mode 100644 index 000000000..820d239a1 --- /dev/null +++ b/crates/alien-agent/src/loops/agent_upgrade.rs @@ -0,0 +1,453 @@ +//! Agent self-update actuator. When `/v1/sync` returns +//! `agent_target.helm`, this module creates a Kubernetes Job that runs +//! `helm upgrade --reuse-values` to flip the agent's image tag (and any +//! other values overrides the manager sent). The Job uses the +//! `alien-agent-upgrader` ServiceAccount the chart wires for this purpose; +//! the agent itself only needs Create permission on Jobs in its own +//! namespace, granted by the existing role. +//! +//! Talks to the Kubernetes API directly (POSTs to `/apis/batch/v1/...`) +//! using the in-pod ServiceAccount token mounted at +//! `/var/run/secrets/kubernetes.io/serviceaccount/`. Avoids pulling +//! `alien-k8s-clients` (and its k8s-openapi tree) into the agent crate +//! just for one Job-create call. +//! +//! `os-service` regime is not in this MVP — the wire format carries +//! `agent_target.binary` for it, but the actuator is unimplemented and +//! this module logs + skips that path. + +use std::fs; +use std::time::Duration; + +use alien_core::sync::{AgentHelmTarget, AgentTarget}; +use alien_error::AlienError; +use tracing::{info, warn}; + +use crate::error::{ErrorData, Result}; + +const SA_TOKEN_PATH: &str = "/var/run/secrets/kubernetes.io/serviceaccount/token"; +const SA_CA_PATH: &str = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"; + +/// Best-effort: emit the upgrader Job. Errors are logged but do not fail +/// the sync — the manager will keep emitting `agent_target` on each tick +/// until the agent reports the new version. +pub async fn apply_agent_target(target: &AgentTarget) { + let Some(helm) = target.helm.as_ref() else { + warn!( + "Received agent_target with no helm payload; os-service upgrade path is not implemented in this MVP" + ); + return; + }; + if let Err(e) = spawn_helm_runner_job(target, helm).await { + warn!(error = %e, target_version = %target.version, "Failed to spawn agent upgrader Job; will retry on next sync"); + } +} + +async fn spawn_helm_runner_job(target: &AgentTarget, helm: &AgentHelmTarget) -> Result<()> { + let inputs = resolve_job_inputs(target, helm)?; + let (job_name, body) = build_job_body(&inputs); + create_job(&inputs.namespace, &body).await?; + info!( + target_version = %inputs.target_version, + job_name = %job_name, + "Spawned agent upgrader Job" + ); + Ok(()) +} + +/// Everything `build_job_body` needs that isn't a string literal. Separated +/// so the pure body builder is easy to unit-test without env-var or fs +/// mocks. +struct JobInputs { + target_version: String, + namespace: String, + release: String, + upgrader_sa: String, + chart_ref: String, + /// `None` means "let helm pick latest" — omits the `--version` flag. + chart_version: Option, + runner_image: String, + /// Extra flags spliced into the `helm upgrade` command verbatim. + /// Empty in production; populated for local-dev escape hatches like + /// `--plain-http` against HTTP-only OCI registries. + extra_args: String, + /// Pre-serialized JSON for `agent_target.helm.values`. Injected into + /// the upgrader pod via the `VALUES_JSON` env var and re-materialised + /// to a file inside the container. + values_json: String, +} + +/// Read env vars + apply the manager-vs-env fallback for chart ref/version, +/// and serialise the values overlay. This is the impure layer. +fn resolve_job_inputs(target: &AgentTarget, helm: &AgentHelmTarget) -> Result { + let namespace = std::env::var("KUBERNETES_NAMESPACE").map_err(|_| { + AlienError::new(ErrorData::ConfigurationError { + message: "KUBERNETES_NAMESPACE env var missing — agent self-update Job needs it" + .to_string(), + }) + })?; + let release = std::env::var("KUBERNETES_HELM_RELEASE").map_err(|_| { + AlienError::new(ErrorData::ConfigurationError { + message: "KUBERNETES_HELM_RELEASE env var missing — set by the chart at install time" + .to_string(), + }) + })?; + let upgrader_sa = std::env::var("ALIEN_AGENT_UPGRADER_SA").map_err(|_| { + AlienError::new(ErrorData::ConfigurationError { + message: "ALIEN_AGENT_UPGRADER_SA env var missing — set by the chart at install time" + .to_string(), + }) + })?; + + // The manager may have sent chart_repo / chart_version empty, in which + // case we fall back to the env vars the chart injects at install time. + let chart_ref = non_empty(&helm.chart_repo) + .map(String::from) + .or_else(|| std::env::var("ALIEN_AGENT_CHART_REF").ok()) + .ok_or_else(|| { + AlienError::new(ErrorData::ConfigurationError { + message: + "agent_target.helm.chart_repo empty AND ALIEN_AGENT_CHART_REF unset — \ + can't run helm upgrade without a chart reference" + .to_string(), + }) + })?; + let chart_version = non_empty(&helm.chart_version) + .map(String::from) + .or_else(|| std::env::var("ALIEN_AGENT_CHART_VERSION").ok().filter(|s| !s.is_empty())); + let runner_image = std::env::var("ALIEN_AGENT_HELM_RUNNER_IMAGE") + .unwrap_or_else(|_| "alpine/helm:3.18.4".to_string()); + let extra_args = std::env::var("ALIEN_AGENT_HELM_EXTRA_ARGS").unwrap_or_default(); + + let values_json = serde_json::to_string(&helm.values).map_err(|e| { + AlienError::new(ErrorData::ConfigurationError { + message: format!("Failed to serialize agent_target.helm.values: {e}"), + }) + })?; + + Ok(JobInputs { + target_version: target.version.clone(), + namespace, + release, + upgrader_sa, + chart_ref, + chart_version, + runner_image, + extra_args, + values_json, + }) +} + +/// Pure: build the Job name + the JSON body POSTed to the k8s API. +/// `--reuse-values` keeps install-time values (management.*, encryption key, +/// etc.); the manager-sent values overlay (written to /tmp/values.json +/// inside the runner pod) wins for whatever it sets — typically just +/// `runtime.image.tag`. +fn build_job_body(inputs: &JobInputs) -> (String, serde_json::Value) { + let job_name = format!( + "{}-upgrader-{}", + inputs.release, + sanitize_for_dns(&inputs.target_version, 16) + ); + + let version_flag = inputs + .chart_version + .as_deref() + .map(|v| format!(" --version {v}")) + .unwrap_or_default(); + // Extra args spliced verbatim before `--namespace`. Empty in + // production; set via the chart's `runtime.upgrade.extraArgs` for + // local-dev escape hatches (e.g. `--plain-http` for HTTP-only OCI + // registries). Leading space is intentional — joins cleanly with + // version_flag whether it's empty or set. + let extra_args_flag = if inputs.extra_args.trim().is_empty() { + String::new() + } else { + format!(" {}", inputs.extra_args.trim()) + }; + let helm_cmd = format!( + "set -e\n\ + printf '%s' \"$VALUES_JSON\" > /tmp/values.json\n\ + exec helm upgrade \"$RELEASE\" \"$CHART_REF\"{version_flag}{extra_args_flag} \ + --namespace \"$NAMESPACE\" \ + --reuse-values \ + --atomic --wait \ + --values /tmp/values.json" + ); + + let body = serde_json::json!({ + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": { + "name": job_name, + "namespace": inputs.namespace, + "labels": { + "app.kubernetes.io/managed-by": "alien-agent", + "alien.dev/component": "agent-upgrader", + "alien.dev/target-version": sanitize_for_dns(&inputs.target_version, 63), + }, + }, + "spec": { + "backoffLimit": 1, + "ttlSecondsAfterFinished": 600, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/managed-by": "alien-agent", + "alien.dev/component": "agent-upgrader", + }, + }, + "spec": { + "serviceAccountName": inputs.upgrader_sa, + "restartPolicy": "Never", + "containers": [{ + "name": "helm-upgrade", + "image": inputs.runner_image, + "command": ["sh", "-c", helm_cmd], + "env": [ + { "name": "RELEASE", "value": inputs.release }, + { "name": "NAMESPACE", "value": inputs.namespace }, + { "name": "CHART_REF", "value": inputs.chart_ref }, + { "name": "VALUES_JSON", "value": inputs.values_json }, + ], + }], + }, + }, + }, + }); + + (job_name, body) +} + +/// POST a Job to the in-pod Kubernetes API. Returns Ok on 2xx, AlienError +/// otherwise. 409 (already exists) is treated as success — another sync +/// already kicked the Job and idempotency handles the retry. +async fn create_job(namespace: &str, body: &serde_json::Value) -> Result<()> { + let token = fs::read_to_string(SA_TOKEN_PATH).map_err(|e| { + AlienError::new(ErrorData::ConfigurationError { + message: format!("Failed to read in-pod SA token at {SA_TOKEN_PATH}: {e}"), + }) + })?; + let host = std::env::var("KUBERNETES_SERVICE_HOST").map_err(|_| { + AlienError::new(ErrorData::ConfigurationError { + message: "KUBERNETES_SERVICE_HOST env var missing — agent not running in a pod?" + .to_string(), + }) + })?; + let port = + std::env::var("KUBERNETES_SERVICE_PORT_HTTPS").unwrap_or_else(|_| "443".to_string()); + + let mut builder = reqwest::ClientBuilder::new().timeout(Duration::from_secs(15)); + if let Ok(ca_pem) = fs::read(SA_CA_PATH) { + if let Ok(cert) = reqwest::Certificate::from_pem(&ca_pem) { + builder = builder.add_root_certificate(cert); + } + } + let client = builder.build().map_err(|e| { + AlienError::new(ErrorData::ConfigurationError { + message: format!("Failed to build k8s API HTTP client: {e}"), + }) + })?; + + let url = format!("https://{host}:{port}/apis/batch/v1/namespaces/{namespace}/jobs"); + let resp = client + .post(&url) + .bearer_auth(token.trim()) + .json(body) + .send() + .await + .map_err(|e| { + AlienError::new(ErrorData::ConfigurationError { + message: format!("Failed to call k8s API at {url}: {e}"), + }) + })?; + + let status = resp.status(); + if status.is_success() { + return Ok(()); + } + if status.as_u16() == 409 { + // Another sync (or a previous successful upgrade) already created + // this Job. Idempotency — treat as success. + info!("Upgrader Job already exists (409); leaving in place"); + return Ok(()); + } + let text = resp.text().await.unwrap_or_default(); + Err(AlienError::new(ErrorData::ConfigurationError { + message: format!("k8s API rejected Job creation ({status}): {text}"), + })) +} + +fn non_empty(s: &str) -> Option<&str> { + if s.is_empty() { None } else { Some(s) } +} + +/// Lowercase, DNS-1123-safe, max `cap` chars, trimmed of trailing hyphens. +/// Used for Job names + label values derived from semver. +fn sanitize_for_dns(value: &str, cap: usize) -> String { + let mut out: String = value + .to_lowercase() + .chars() + .map(|c| if c.is_ascii_alphanumeric() { c } else { '-' }) + .collect(); + out.truncate(cap); + while out.ends_with('-') { + out.pop(); + } + out +} + +#[cfg(test)] +mod tests { + use super::*; + use serde_json::json; + + fn inputs() -> JobInputs { + JobInputs { + target_version: "1.4.0".to_string(), + namespace: "alien-agent".to_string(), + release: "alien".to_string(), + upgrader_sa: "alien-agent-upgrader".to_string(), + chart_ref: "oci://ghcr.io/alien-dev/alien".to_string(), + chart_version: Some("1.4.0".to_string()), + runner_image: "alpine/helm:3.18.4".to_string(), + extra_args: String::new(), + values_json: r#"{"runtime":{"image":{"tag":"1.4.0"}}}"#.to_string(), + } + } + + #[test] + fn job_name_combines_release_and_sanitized_version() { + let (name, _) = build_job_body(&inputs()); + assert_eq!(name, "alien-upgrader-1-4-0"); + } + + #[test] + fn job_name_caps_long_version_and_trims_trailing_hyphens() { + let mut i = inputs(); + // Crafted so that the cap (16) lands on a non-alphanumeric, which + // must be stripped — otherwise we'd produce an invalid DNS-1123 name. + i.target_version = "1.4.0-rc.1+build".to_string(); + let (name, _) = build_job_body(&i); + assert!( + name.starts_with("alien-upgrader-"), + "got {name}" + ); + assert!( + !name.ends_with('-'), + "DNS-1123 names must not end in '-': {name}" + ); + let suffix = name.trim_start_matches("alien-upgrader-"); + assert!(suffix.len() <= 16, "suffix too long: {suffix}"); + } + + #[test] + fn helm_command_omits_version_flag_when_unset() { + let mut i = inputs(); + i.chart_version = None; + let (_, body) = build_job_body(&i); + let cmd = body["spec"]["template"]["spec"]["containers"][0]["command"][2] + .as_str() + .unwrap(); + assert!( + !cmd.contains("--version"), + "command unexpectedly contains --version: {cmd}" + ); + assert!(cmd.contains("helm upgrade \"$RELEASE\""), "got: {cmd}"); + assert!(cmd.contains("--reuse-values"), "got: {cmd}"); + assert!(cmd.contains("--atomic --wait"), "got: {cmd}"); + } + + #[test] + fn helm_command_includes_version_flag_when_set() { + let (_, body) = build_job_body(&inputs()); + let cmd = body["spec"]["template"]["spec"]["containers"][0]["command"][2] + .as_str() + .unwrap(); + assert!(cmd.contains(" --version 1.4.0"), "got: {cmd}"); + } + + #[test] + fn env_vars_carry_manager_sent_values_and_release_metadata() { + let (_, body) = build_job_body(&inputs()); + let envs = body["spec"]["template"]["spec"]["containers"][0]["env"] + .as_array() + .unwrap(); + let by_name: std::collections::HashMap<_, _> = envs + .iter() + .map(|e| (e["name"].as_str().unwrap(), e["value"].as_str().unwrap())) + .collect(); + assert_eq!(by_name["RELEASE"], "alien"); + assert_eq!(by_name["NAMESPACE"], "alien-agent"); + assert_eq!(by_name["CHART_REF"], "oci://ghcr.io/alien-dev/alien"); + assert_eq!( + by_name["VALUES_JSON"], + r#"{"runtime":{"image":{"tag":"1.4.0"}}}"# + ); + } + + #[test] + fn job_metadata_uses_upgrader_service_account_and_safe_labels() { + let (_, body) = build_job_body(&inputs()); + assert_eq!( + body["spec"]["template"]["spec"]["serviceAccountName"], + json!("alien-agent-upgrader") + ); + assert_eq!( + body["metadata"]["labels"]["alien.dev/target-version"], + json!("1-4-0") + ); + assert_eq!(body["spec"]["backoffLimit"], json!(1)); + assert_eq!(body["spec"]["ttlSecondsAfterFinished"], json!(600)); + assert_eq!( + body["spec"]["template"]["spec"]["restartPolicy"], + json!("Never") + ); + } + + #[test] + fn non_empty_treats_empty_string_as_none() { + assert_eq!(non_empty(""), None); + assert_eq!(non_empty("oci://x"), Some("oci://x")); + } + + #[test] + fn helm_command_omits_extra_args_when_unset() { + let (_, body) = build_job_body(&inputs()); + let cmd = body["spec"]["template"]["spec"]["containers"][0]["command"][2] + .as_str() + .unwrap(); + // Default fixture's extra_args is empty — should not contain + // double-spaces or stray flags. + assert!(!cmd.contains(" --namespace"), "stray double-space: {cmd}"); + assert!(!cmd.contains("--plain-http"), "got: {cmd}"); + } + + #[test] + fn helm_command_splices_extra_args_before_namespace() { + let mut i = inputs(); + i.extra_args = "--plain-http".to_string(); + let (_, body) = build_job_body(&i); + let cmd = body["spec"]["template"]["spec"]["containers"][0]["command"][2] + .as_str() + .unwrap(); + // Order matters: extra_args should appear after the chart ref + // (and any version flag) but before --namespace, so flags that + // affect chart pull (e.g. --plain-http) are in scope. + let plain_pos = cmd.find("--plain-http").expect("--plain-http should be present"); + let ns_pos = cmd.find("--namespace").expect("--namespace should be present"); + assert!(plain_pos < ns_pos, "--plain-http must come before --namespace: {cmd}"); + } + + #[test] + fn helm_command_trims_whitespace_in_extra_args() { + let mut i = inputs(); + i.extra_args = " --plain-http ".to_string(); + let (_, body) = build_job_body(&i); + let cmd = body["spec"]["template"]["spec"]["containers"][0]["command"][2] + .as_str() + .unwrap(); + // The trim should keep exactly one space delimiter on each side. + assert!(cmd.contains(" --plain-http "), "got: {cmd}"); + } +} diff --git a/crates/alien-agent/src/loops/deployment.rs b/crates/alien-agent/src/loops/deployment.rs index 17f54735e..73e7ce8ec 100644 --- a/crates/alien-agent/src/loops/deployment.rs +++ b/crates/alien-agent/src/loops/deployment.rs @@ -266,7 +266,9 @@ async fn run_deployment_continuously(state: &AgentState) -> Result { /// /// Applies public_endpoints and stack_settings from agent config, /// and injects commands polling env vars for K8s/Local platforms. -/// External bindings are part of stack_settings and flow through naturally. +/// External bindings live on a separate DeploymentConfig field that the +/// StackExecutor reads, so they do NOT flow through `stack_settings` alone — +/// the copy must be explicit (see also alien-deploy-cli's `up` command). async fn enrich_config( mut config: DeploymentConfig, agent_config: &AgentConfig, @@ -281,6 +283,12 @@ async fn enrich_config( // Pass through stack settings from agent config (includes external_bindings) if let Some(ref stack_settings) = agent_config.stack_settings { config.stack_settings = stack_settings.clone(); + // external_bindings does NOT flow through stack_settings automatically: + // the StackExecutor reads DeploymentConfig::external_bindings, a separate + // field. Copy it explicitly, mirroring alien-deploy-cli's `up` command. + if let Some(ref ext_bindings) = stack_settings.external_bindings { + config.external_bindings = ext_bindings.clone(); + } } if config.base_platform.is_none() { config.base_platform = agent_config.base_platform; diff --git a/crates/alien-agent/src/loops/mod.rs b/crates/alien-agent/src/loops/mod.rs index de2c04336..c437b6c64 100644 --- a/crates/alien-agent/src/loops/mod.rs +++ b/crates/alien-agent/src/loops/mod.rs @@ -1,5 +1,6 @@ //! Background loops for the alien-agent +pub mod agent_upgrade; pub mod commands; pub mod debug_session; pub mod deployment; diff --git a/crates/alien-agent/src/loops/sync.rs b/crates/alien-agent/src/loops/sync.rs index bc23b0a97..4bbc63819 100644 --- a/crates/alien-agent/src/loops/sync.rs +++ b/crates/alien-agent/src/loops/sync.rs @@ -9,7 +9,7 @@ use crate::db::{Approval, ApprovalStatus}; use crate::AgentState; -use alien_core::sync::{SyncRequest, SyncResponse}; +use alien_core::sync::{AgentRegime, SyncRequest, SyncResponse}; use alien_error::{Context, IntoAlienError}; use chrono::Utc; use reqwest::Client; @@ -54,6 +54,13 @@ pub async fn run_sync_loop(state: Arc) { loop { match sync_with_manager(&state, &client, sync_config.url.as_str()).await { Ok(has_update) => { + // First successful sync turns /readyz from 503 → 200 — the + // gate Helm's --atomic --wait relies on so a freshly-rolled + // agent isn't marked ready until it has actually talked to + // the manager. Idempotent — only the first store matters. + state + .first_sync_completed + .store(true, std::sync::atomic::Ordering::Release); if has_update { info!("Received update from manager"); } else { @@ -135,6 +142,16 @@ async fn sync_with_manager( let sync_request = SyncRequest { deployment_id: deployment_id.clone(), current_state: Some(deployment_state), + // Agent self-update inventory — fleet visibility + upgrade gating. + agent_version: Some(env!("CARGO_PKG_VERSION").to_string()), + agent_os: Some(std::env::consts::OS.to_string()), + agent_arch: Some(std::env::consts::ARCH.to_string()), + regime: Some(detect_agent_regime()), + // Chart-injected at install time so admins can see the registry + // the agent will pull a new tag from. Absent under os-service. + agent_image_repository: std::env::var("ALIEN_AGENT_IMAGE_REPOSITORY") + .ok() + .filter(|s| !s.is_empty()), }; // Call manager with deployment_id in request body. @@ -291,6 +308,13 @@ async fn sync_with_manager( } } + // Agent self-update: act on `agent_target` when the manager emits one. + // Best-effort — the actuator logs failures and the manager keeps + // sending the target until the agent reports the new version. + if let Some(target) = sync_response.agent_target.as_ref() { + crate::loops::agent_upgrade::apply_agent_target(target).await; + } + Ok(has_update || state_hydrated) } @@ -303,6 +327,17 @@ fn is_uninitialized_deployment_state(state: &alien_core::DeploymentState) -> boo && state.runtime_metadata.is_none() } +/// Detect the agent's supervisor regime. `KUBERNETES_SERVICE_HOST` is the +/// kubelet-injected signal and takes precedence over any other hint; outside +/// k8s the agent is supervised as a native OS service via the launcher. +fn detect_agent_regime() -> AgentRegime { + if std::env::var_os("KUBERNETES_SERVICE_HOST").is_some() { + AgentRegime::Kubernetes + } else { + AgentRegime::OsService + } +} + fn apply_manager_control_state( local_state: &mut alien_core::DeploymentState, manager_state: &alien_core::DeploymentState, diff --git a/crates/alien-agent/src/otlp_server.rs b/crates/alien-agent/src/otlp_server.rs index f639350dd..aa5c73c55 100644 --- a/crates/alien-agent/src/otlp_server.rs +++ b/crates/alien-agent/src/otlp_server.rs @@ -13,12 +13,22 @@ use axum::{ }; use serde::Serialize; use std::net::{IpAddr, SocketAddr}; +use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; use tokio_util::sync::CancellationToken; use tracing::{debug, error, info}; use crate::db::AgentDb; +/// Shared state for axum handlers — the agent DB and the readiness signal. +#[derive(Clone)] +pub struct ProbeState { + pub db: Arc, + /// Flipped to `true` by the sync loop once at least one /v1/sync round-trip + /// with the manager has succeeded. Consumed by `/readyz`. + pub first_sync_completed: Arc, +} + /// OTLP response #[derive(Serialize)] struct OtlpResponse { @@ -30,24 +40,41 @@ struct HealthResponse { status: &'static str, } -/// Start the OTLP server with graceful shutdown support. +/// Start the OTLP server with graceful shutdown support. Also serves +/// `/livez` and `/readyz` on the same port — the Kubernetes probes the +/// chart's deployment template references. pub async fn start_otlp_server( host: IpAddr, port: u16, db: Arc, + first_sync_completed: Arc, cancel: CancellationToken, ) -> crate::error::Result<()> { let addr = SocketAddr::new(host, port); info!(address = %addr, "Starting OTLP server"); + let probe_state = ProbeState { + db: db.clone(), + first_sync_completed, + }; + + // Probes ride on a separate Router so they don't need the OTLP body-limit + // layer and have a different (slim) state type; they are merged into the + // OTLP app at the end. + let probes = Router::new() + .route("/livez", get(handle_livez)) + .route("/readyz", get(handle_readyz)) + .with_state(probe_state); + let app = Router::new() .route("/health", get(handle_health)) .route("/v1/logs", post(handle_logs)) .route("/v1/metrics", post(handle_metrics)) .route("/v1/traces", post(handle_traces)) .layer(axum::extract::DefaultBodyLimit::max(10 * 1024 * 1024)) - .with_state(db); + .with_state(db) + .merge(probes); let listener = tokio::net::TcpListener::bind(&addr) .await @@ -72,6 +99,30 @@ async fn handle_health() -> Json { Json(HealthResponse { status: "ok" }) } +/// Liveness probe. The agent is "live" as long as this server is +/// answering requests — i.e. the process is alive and tokio is not +/// deadlocked. Consumed by the Kubernetes `livenessProbe`. +async fn handle_livez() -> Json { + Json(HealthResponse { status: "ok" }) +} + +/// Readiness probe. Returns 200 only after the agent has completed at +/// least one successful `/v1/sync` round-trip with the manager — the gate +/// the chart's `readinessProbe` and Helm's `--atomic --wait` rely on so a +/// freshly-rolled agent isn't considered ready until it has actually +/// proven it can reach the manager. +/// +/// Other readiness preconditions (process alive, DB opened, InstanceLock +/// held) are implicit — the agent only starts this server after acquiring +/// the InstanceLock and opening the DB. The deployment-loop-progressing +/// check is a follow-up. +async fn handle_readyz(State(state): State) -> Result, StatusCode> { + if !state.first_sync_completed.load(Ordering::Acquire) { + return Err(StatusCode::SERVICE_UNAVAILABLE); + } + Ok(Json(HealthResponse { status: "ok" })) +} + async fn handle_logs( State(db): State>, body: Bytes, @@ -128,9 +179,12 @@ mod tests { listener.local_addr().unwrap().port() } - #[tokio::test] - async fn health_endpoint_returns_ok() { + async fn start_test_server( + first_sync_completed: Arc, + ) -> (u16, CancellationToken, tokio::task::JoinHandle>) { let data_dir = tempfile::tempdir().unwrap(); + // Leak the tempdir guard so it outlives the spawned server. + let data_dir = Box::leak(Box::new(data_dir)); let db = Arc::new( AgentDb::new(data_dir.path().to_str().unwrap(), TEST_ENCRYPTION_KEY) .await @@ -139,28 +193,84 @@ mod tests { let port = free_port(); let cancel = CancellationToken::new(); let server_cancel = cancel.clone(); - let server = tokio::spawn(async move { - start_otlp_server(IpAddr::V4(Ipv4Addr::LOCALHOST), port, db, server_cancel).await + start_otlp_server( + IpAddr::V4(Ipv4Addr::LOCALHOST), + port, + db, + first_sync_completed, + server_cancel, + ) + .await }); - + // Wait for the server to bind so subsequent GETs don't race. let url = format!("http://127.0.0.1:{port}/health"); let client = reqwest::Client::new(); - let mut response = None; for _ in 0..50 { - if let Ok(success) = client.get(&url).send().await { - response = Some(success); + if client.get(&url).send().await.is_ok() { break; } sleep(Duration::from_millis(20)).await; } + (port, cancel, server) + } - let response = response.expect("health endpoint did not become reachable"); + #[tokio::test] + async fn health_endpoint_returns_ok() { + let readiness = Arc::new(AtomicBool::new(false)); + let (port, cancel, server) = start_test_server(readiness.clone()).await; + let client = reqwest::Client::new(); + let response = client + .get(format!("http://127.0.0.1:{port}/health")) + .send() + .await + .unwrap(); assert!(response.status().is_success()); assert_eq!( response.json::().await.unwrap(), serde_json::json!({ "status": "ok" }) ); + cancel.cancel(); + server.await.unwrap().unwrap(); + } + + #[tokio::test] + async fn livez_returns_ok_even_before_first_sync() { + let readiness = Arc::new(AtomicBool::new(false)); + let (port, cancel, server) = start_test_server(readiness.clone()).await; + let client = reqwest::Client::new(); + let response = client + .get(format!("http://127.0.0.1:{port}/livez")) + .send() + .await + .unwrap(); + assert!( + response.status().is_success(), + "livez should be 200 even before the agent has synced — it reflects \ + process liveness, not manager reachability" + ); + cancel.cancel(); + server.await.unwrap().unwrap(); + } + + #[tokio::test] + async fn readyz_is_503_before_first_sync_and_200_after() { + let readiness = Arc::new(AtomicBool::new(false)); + let (port, cancel, server) = start_test_server(readiness.clone()).await; + let client = reqwest::Client::new(); + let url = format!("http://127.0.0.1:{port}/readyz"); + + // Before the sync loop flips the flag, readyz must be 503 so that + // a freshly-rolled agent isn't marked ready until it has actually + // talked to the manager once. + let before = client.get(&url).send().await.unwrap(); + assert_eq!(before.status().as_u16(), 503, "expected 503 before first sync"); + + // Simulate the sync loop completing its first round-trip. + readiness.store(true, Ordering::Release); + + let after = client.get(&url).send().await.unwrap(); + assert!(after.status().is_success(), "expected 200 after first sync"); cancel.cancel(); server.await.unwrap().unwrap(); diff --git a/crates/alien-core/src/runtime_environment.rs b/crates/alien-core/src/runtime_environment.rs index 1b5ee7d00..4aeb8ff73 100644 --- a/crates/alien-core/src/runtime_environment.rs +++ b/crates/alien-core/src/runtime_environment.rs @@ -268,7 +268,7 @@ pub fn worker_transport_runtime_environment_plan( }], Platform::Kubernetes => vec![RuntimeEnvironmentEntry { name: ENV_ALIEN_TRANSPORT, - value: RuntimeEnvironmentValue::Literal("http"), + value: RuntimeEnvironmentValue::Literal("local"), }], Platform::Local | Platform::Test => vec![RuntimeEnvironmentEntry { name: ENV_ALIEN_TRANSPORT, @@ -543,12 +543,12 @@ mod tests { } #[test] - fn kubernetes_worker_environment_uses_http_proxy_transport() { + fn kubernetes_worker_environment_uses_local_transport() { let entries = worker_transport_runtime_environment_plan(Platform::Kubernetes); assert!(entries.iter().any(|entry| { entry.name == ENV_ALIEN_TRANSPORT - && entry.value == RuntimeEnvironmentValue::Literal("http") + && entry.value == RuntimeEnvironmentValue::Literal("local") })); } } diff --git a/crates/alien-core/src/sync.rs b/crates/alien-core/src/sync.rs index 9c057ebe8..04036a453 100644 --- a/crates/alien-core/src/sync.rs +++ b/crates/alien-core/src/sync.rs @@ -16,6 +16,42 @@ pub struct SyncRequest { /// Current deployment state as seen by the agent. #[serde(skip_serializing_if = "Option::is_none")] pub current_state: Option, + /// Agent binary version, from `env!("CARGO_PKG_VERSION")` at build time. + /// Lets the manager build fleet-wide version inventory and decide + /// whether to send an `agent_target`. Optional for back-compat with + /// older agents. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub agent_version: Option, + /// `linux` / `macos` / `windows`. From `std::env::consts::OS`. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub agent_os: Option, + /// `x86_64` / `aarch64`. From `std::env::consts::ARCH`. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub agent_arch: Option, + /// How the agent is supervised — `os-service` (launcher) or `kubernetes` + /// (Helm). Detected at runtime from `KUBERNETES_SERVICE_HOST`. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub regime: Option, + /// Container image repository the agent was pulled from (without the + /// tag), e.g. `ghcr.io/alien-dev/alien-agent`. The chart injects this + /// via `ALIEN_AGENT_IMAGE_REPOSITORY` (= `.Values.runtime.image.repository`), + /// so admins can see the supply-chain link before pinning a new tag. + /// Optional and Kubernetes-only — the os-service regime fills the same + /// role with its launcher manifest URL. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub agent_image_repository: Option, +} + +/// Supervisor regime for an agent. Drives which `agent_target` payload +/// (`binary` vs `helm`) the manager sends and how the agent actuates the +/// upgrade. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "kebab-case")] +pub enum AgentRegime { + /// Native OS service — the launcher swaps the binary on disk. + OsService, + /// Kubernetes pod — agent creates a Helm-runner Job that runs `helm upgrade --atomic`. + Kubernetes, } /// Response from the manager to the agent sync request. @@ -38,6 +74,83 @@ pub struct SyncResponse { /// When absent, the agent falls back to its sync URL. #[serde(default, skip_serializing_if = "Option::is_none")] pub commands_url: Option, + /// Desired agent self-update target. The agent acts on whichever payload + /// matches its regime: `binary` for `os-service`, `helm` for `kubernetes`. + /// None means no upgrade pending. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub agent_target: Option, +} + +/// Desired agent upgrade payload, sent by the manager on the sync exchange. +/// +/// The agent reads `binary` or `helm` depending on its regime. The manager is +/// the single source of truth for the target version per deployment per +/// channel, and on Kubernetes also for the full desired values. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct AgentTarget { + /// Target agent version (e.g. "1.4.0"). + pub version: String, + /// The agent should refuse the upgrade if its own version is older than + /// this — used by the manager to enforce a floor on incremental migrations. + pub min_supported_version: String, + /// OS-service actuation payload. Present iff the deployment's regime is `os-service`. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub binary: Option, + /// Kubernetes actuation payload. Present iff the deployment's regime is `kubernetes`. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub helm: Option, +} + +/// OS-service binary upgrade payload — the agent downloads, verifies the +/// SHA-256, stages the binary, and exits; the launcher performs the +/// health-gated swap. The `signature` field is **future work**: it rides +/// along on the wire so newer agents can enforce it once the signing +/// infrastructure lands, but the current launcher trusts SHA-256 + +/// HTTPS for the download. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct AgentBinaryTarget { + /// `(os, arch)` → download URL. Keyed as `"/"` (e.g. `"linux/x86_64"`). + pub artifacts: std::collections::BTreeMap, + /// SHA-256 digest of the binary, lowercase hex. + pub sha256: String, + /// ed25519 detached signature over the binary, base64-encoded. + /// **Future:** verified against the launcher's pinned public key before + /// the binary is exec'd. Not enforced in the current iteration. + pub signature: String, +} + +/// Kubernetes upgrade payload — the agent writes the full values to a +/// ConfigMap (sensitive values to a Secret) and creates a Helm-runner Job +/// that runs `helm upgrade --atomic`. Helm's revision-scoped rollback covers +/// both the image and the values. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct AgentHelmTarget { + /// OCI registry reference for the chart (e.g. `oci://ghcr.io/alienplatform/alien-agent`). + pub chart_repo: String, + /// Chart version (e.g. `"1.4.0"`). + pub chart_version: String, + /// Full desired values document (manager-owned). Stored verbatim by Helm + /// in the release Secret, so MUST NOT contain raw secrets — those go via + /// `sensitive_values` as references. + pub values: serde_json::Value, + /// Sensitive values, expressed as references to existing Kubernetes + /// Secrets in the namespace. Keyed by JSON-Pointer path into `values`. + /// The agent materializes these into a Secret the chart mounts via + /// `valueFrom: secretKeyRef:`, so the material never reaches the release + /// history Secret base64-encoded. + #[serde(default)] + pub sensitive_values: std::collections::BTreeMap, +} + +/// Reference to a Kubernetes Secret key holding sensitive data. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SecretRef { + pub name: String, + pub key: String, } /// Target deployment state for the agent to converge toward. @@ -54,13 +167,30 @@ pub struct TargetDeployment { mod tests { use super::*; - #[test] - fn test_sync_request_serialization() { - let req = SyncRequest { + fn empty_sync_request() -> SyncRequest { + SyncRequest { deployment_id: "dep_abc123".to_string(), current_state: None, - }; + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, + } + } + fn empty_sync_response() -> SyncResponse { + SyncResponse { + current_state: None, + target: None, + commands_url: None, + agent_target: None, + } + } + + #[test] + fn test_sync_request_serialization() { + let req = empty_sync_request(); let json = serde_json::to_value(&req).unwrap(); assert_eq!(json["deploymentId"], "dep_abc123"); // current_state is None → should be omitted @@ -77,11 +207,7 @@ mod tests { #[test] fn test_sync_response_empty() { - let resp = SyncResponse { - current_state: None, - target: None, - commands_url: None, - }; + let resp = empty_sync_response(); let json = serde_json::to_value(&resp).unwrap(); // target is None → should be omitted assert!(json.get("target").is_none()); @@ -90,11 +216,7 @@ mod tests { #[test] fn test_sync_response_roundtrip_no_target() { - let resp = SyncResponse { - current_state: None, - target: None, - commands_url: None, - }; + let resp = empty_sync_response(); let serialized = serde_json::to_string(&resp).unwrap(); let deserialized: SyncResponse = serde_json::from_str(&serialized).unwrap(); assert!(deserialized.target.is_none()); @@ -113,4 +235,141 @@ mod tests { let json = r#"{"deployment_id": "dep_1"}"#; assert!(serde_json::from_str::(json).is_err()); } + + // --- agent self-update wire format tests ----------------------------- + + /// A new agent that fills in the self-update fields produces JSON the + /// new manager can deserialize, with the expected camelCase + kebab-case + /// values from the design doc. + #[test] + fn test_sync_request_with_self_update_fields_roundtrip() { + let req = SyncRequest { + deployment_id: "dep_abc".to_string(), + current_state: None, + agent_version: Some("1.3.5".to_string()), + agent_os: Some("linux".to_string()), + agent_arch: Some("aarch64".to_string()), + regime: Some(AgentRegime::Kubernetes), + agent_image_repository: Some("ghcr.io/alien-dev/alien-agent".to_string()), + }; + let json = serde_json::to_value(&req).unwrap(); + assert_eq!(json["agentVersion"], "1.3.5"); + assert_eq!(json["agentOs"], "linux"); + assert_eq!(json["agentArch"], "aarch64"); + assert_eq!(json["regime"], "kubernetes"); // kebab-case enum + assert_eq!(json["agentImageRepository"], "ghcr.io/alien-dev/alien-agent"); + let back: SyncRequest = serde_json::from_value(json).unwrap(); + assert_eq!(back.agent_version.as_deref(), Some("1.3.5")); + assert_eq!( + back.agent_image_repository.as_deref(), + Some("ghcr.io/alien-dev/alien-agent") + ); + assert_eq!(back.regime, Some(AgentRegime::Kubernetes)); + } + + /// **Backward compat (new manager, old agent):** an old agent on the + /// wire doesn't send agentVersion/Os/Arch/regime. The new manager must + /// deserialize without complaint — the four fields default to None. + #[test] + fn test_sync_request_old_agent_no_self_update_fields() { + let json = + r#"{"deploymentId": "dep_old", "currentState": null}"#; + let req: SyncRequest = serde_json::from_str(json).unwrap(); + assert_eq!(req.deployment_id, "dep_old"); + assert!(req.agent_version.is_none()); + assert!(req.agent_os.is_none()); + assert!(req.agent_arch.is_none()); + assert!(req.regime.is_none()); + } + + /// **Backward compat (old client, new payload):** the SyncResponse's + /// new `agentTarget` field is omitted (skip_serializing_if = None), so + /// an old agent that does not know about it still gets a clean response. + #[test] + fn test_sync_response_old_client_no_agent_target() { + let resp = empty_sync_response(); + let json = serde_json::to_value(&resp).unwrap(); + assert!(json.get("agentTarget").is_none()); + } + + #[test] + fn test_agent_regime_kebab_case() { + assert_eq!( + serde_json::to_value(AgentRegime::OsService).unwrap(), + serde_json::json!("os-service") + ); + assert_eq!( + serde_json::to_value(AgentRegime::Kubernetes).unwrap(), + serde_json::json!("kubernetes") + ); + let r: AgentRegime = serde_json::from_str("\"os-service\"").unwrap(); + assert_eq!(r, AgentRegime::OsService); + } + + /// AgentTarget.helm carries the full structure for the Kubernetes + /// regime — verify the chart_repo/values/sensitive_values shape + /// survives a JSON roundtrip. + #[test] + fn test_agent_target_helm_roundtrip() { + let mut sensitive = std::collections::BTreeMap::new(); + sensitive.insert( + "/management/token".to_string(), + SecretRef { + name: "alien-agent".to_string(), + key: "sync-token".to_string(), + }, + ); + let helm = AgentHelmTarget { + chart_repo: "oci://ghcr.io/alienplatform/alien-agent".to_string(), + chart_version: "1.4.0".to_string(), + values: serde_json::json!({"runtime": {"image": {"tag": "1.4.0"}}}), + sensitive_values: sensitive, + }; + let target = AgentTarget { + version: "1.4.0".to_string(), + min_supported_version: "1.3.0".to_string(), + binary: None, + helm: Some(helm), + }; + let json = serde_json::to_value(&target).unwrap(); + assert_eq!(json["minSupportedVersion"], "1.3.0"); + assert!(json.get("binary").is_none(), "binary must be omitted"); + assert_eq!(json["helm"]["chartVersion"], "1.4.0"); + assert_eq!( + json["helm"]["sensitiveValues"]["/management/token"]["name"], + "alien-agent" + ); + let back: AgentTarget = serde_json::from_value(json).unwrap(); + assert!(back.binary.is_none()); + assert_eq!(back.helm.unwrap().chart_version, "1.4.0"); + } + + /// AgentTarget.binary carries the OS-service payload (artifacts/sha256/ + /// signature). + #[test] + fn test_agent_target_binary_roundtrip() { + let mut artifacts = std::collections::BTreeMap::new(); + artifacts.insert( + "linux/aarch64".to_string(), + "https://releases.alien.dev/1.4.0/linux-aarch64/alien-agent".to_string(), + ); + let bin = AgentBinaryTarget { + artifacts, + sha256: "abc123".to_string(), + signature: "base64sig==".to_string(), + }; + let target = AgentTarget { + version: "1.4.0".to_string(), + min_supported_version: "1.3.0".to_string(), + binary: Some(bin), + helm: None, + }; + let json = serde_json::to_value(&target).unwrap(); + assert!(json.get("helm").is_none(), "helm must be omitted"); + assert_eq!(json["binary"]["sha256"], "abc123"); + assert_eq!( + json["binary"]["artifacts"]["linux/aarch64"], + "https://releases.alien.dev/1.4.0/linux-aarch64/alien-agent" + ); + } } diff --git a/crates/alien-deployment/src/helpers.rs b/crates/alien-deployment/src/helpers.rs index 1881cdc73..163501e20 100644 --- a/crates/alien-deployment/src/helpers.rs +++ b/crates/alien-deployment/src/helpers.rs @@ -37,7 +37,11 @@ pub async fn collect_environment_info( Platform::Aws => collect_aws_env_info(client_config).await, Platform::Gcp => collect_gcp_env_info(client_config).await, Platform::Azure => collect_azure_env_info(client_config).await, - Platform::Local => collect_local_env_info(client_config).await, + // For pure Kubernetes (no base_platform), there is no cloud account/region + // to report. Treat it like Local — return hostname/os/arch runtime metadata. + // k8s-on-cloud deployments take a different path via environment_collection_context + // in pending.rs, which substitutes the base cloud platform here. + Platform::Local | Platform::Kubernetes => collect_local_env_info(client_config).await, Platform::Test => collect_test_env_info().await, _ => Err(AlienError::new(ErrorData::MissingConfiguration { message: format!( diff --git a/crates/alien-deployment/src/pending.rs b/crates/alien-deployment/src/pending.rs index bfb4d6be7..1968fe3d8 100644 --- a/crates/alien-deployment/src/pending.rs +++ b/crates/alien-deployment/src/pending.rs @@ -22,11 +22,20 @@ pub async fn handle_pending( info!("Handling Pending status"); // Step 1: Initialize stack state. Direct platform deployments may carry a - // user-selected resource prefix in their initial stack state. - let stack_state = current - .stack_state - .clone() - .unwrap_or_else(|| StackState::new(current.platform)); + // user-selected resource prefix in their initial stack state. For pull-model + // agents with ephemeral storage (e.g. Kubernetes via Helm), the random prefix + // from `StackState::new` is regenerated on every restart, which breaks the + // alignment with Helm-created ServiceAccount names and vault-secret names. + // `ALIEN_RESOURCE_PREFIX` lets the chart pin a stable prefix that matches + // `serviceAccountPrefix` so SA + secret names stay valid across restarts. + let stack_state = current.stack_state.clone().unwrap_or_else(|| { + match std::env::var("ALIEN_RESOURCE_PREFIX") { + Ok(prefix) if !prefix.trim().is_empty() => { + StackState::with_resource_prefix(current.platform, prefix.trim().to_string()) + } + _ => StackState::new(current.platform), + } + }); info!( "Initialized stack state for platform {:?}", current.platform diff --git a/crates/alien-helm/Cargo.toml b/crates/alien-helm/Cargo.toml index edd204caf..0995b37bd 100644 --- a/crates/alien-helm/Cargo.toml +++ b/crates/alien-helm/Cargo.toml @@ -22,3 +22,6 @@ tempfile = { workspace = true, optional = true } [dev-dependencies] insta = { workspace = true } tempfile = { workspace = true } +# Activate the `test-utils` feature so external integration tests can reach +# `alien_helm::test_utils::*` (the module is gated on `test-utils`). +alien-helm = { path = ".", features = ["test-utils"] } diff --git a/crates/alien-helm/src/generator.rs b/crates/alien-helm/src/generator.rs index 335dce797..85261ad5a 100644 --- a/crates/alien-helm/src/generator.rs +++ b/crates/alien-helm/src/generator.rs @@ -509,12 +509,31 @@ runtime: podAnnotations: {} automountServiceAccountToken: true encryption: - # Set this explicitly, or reference an existing Secret below. - key: "replace-me-with-a-stable-64-character-encryption-secret" + # Leave empty to let the chart generate a stable random 64-hex-char key + # on first install (preserved across upgrades via `lookup`). To pin the + # key explicitly, set it here (must be 64 hex chars = 256-bit AES). To + # source it from an external secret store, set `existingSecret.name`. + key: "" existingSecret: name: "" key: encryption-key + # Agent self-update inputs the agent passes to the Helm-runner Job it + # spawns on `agent_target.helm`. Set chartRef + chartVersion to the OCI + # ref + version used at install time — the agent re-uses them in + # `helm upgrade --reuse-values`. Leave blank if you don't want to enable + # in-cluster agent upgrades for this install. + upgrade: + chartRef: "" + chartVersion: "" + helmRunnerImage: "alpine/helm:3.18.4" + # Extra flags appended to the `helm upgrade` command the agent's + # helm-runner Job runs (e.g. `--plain-http` for local-dev OCI + # registries served over HTTP). Production should leave empty. + extraArgs: "" replicas: 1 + # Helm's --atomic --wait gives up after this many seconds if /readyz + # hasn't returned 200 — the revision is then rolled back automatically. + progressDeadlineSeconds: 120 resources: requests: cpu: 100m @@ -528,16 +547,20 @@ runtime: service: type: ClusterIP probes: + # /livez is process liveness; /readyz turns 200 only after the agent + # completes at least one /v1/sync round-trip with the manager — the + # gate Helm's --atomic --wait relies on so a freshly-rolled agent + # is not considered ready until it has actually reached the manager. liveness: enabled: true - path: /health + path: /livez initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 2 failureThreshold: 3 readiness: enabled: true - path: /health + path: /readyz initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 2 @@ -562,7 +585,16 @@ runtime: data: mountPath: /var/lib/deployment-operator persistence: - enabled: false + # Enabled by default: the agent's `data_dir` holds its persistent + # deployment_id + sync-token. Without a PVC, any pod restart (e.g. + # the rolling restart triggered by self-update / `agent_target.helm`) + # wipes that state, the new pod re-runs `/v1/initialize`, hits a + # name-conflict 409, crashloops, and helm `--atomic` rolls back. + # Operators on clusters without a default StorageClass must either + # set `storageClassName`, point at an `existingClaim`, or + # explicitly disable this and accept that self-update will not + # survive a pod roll. + enabled: true existingClaim: "" storageClassName: "" accessModes: @@ -642,7 +674,7 @@ clusterBootstrap: append_service_accounts(&mut yaml, analysis); append_stack_settings(&mut yaml, stack_settings)?; - yaml.push_str("\ninfrastructure: null\n\nbasePlatform: null\nbasePlatformConfig:\n gcp:\n projectId: \"\"\n region: \"\"\n aws:\n region: \"\"\n azure:\n location: \"\"\n subscriptionId: \"\"\n tenantId: \"\"\nserviceAccountPrefix: \"\"\nmanagerServiceAccount:\n annotations: {}\n labels: {}\n"); + yaml.push_str("\ninfrastructure: null\n\nbasePlatform: null\nbasePlatformConfig:\n gcp:\n projectId: \"\"\n region: \"\"\n aws:\n region: \"\"\n azure:\n location: \"\"\n subscriptionId: \"\"\n tenantId: \"\"\nserviceAccountPrefix: \"\"\nmanagerServiceAccount:\n annotations: {}\n labels: {}\n\n# Agent self-update. When the agent receives agent_target.helm on /v1/sync\n# it creates a short-lived Helm-runner Job that runs `helm upgrade --atomic`.\n# The Job runs as `alien-agent-upgrader`; we keep the SA optional so charts\n# that don't want self-update can disable it.\nupgrader:\n enabled: true\n"); append_services(&mut yaml, analysis); yaml.push_str("\npublicEndpoints: {}\n"); @@ -1191,7 +1223,18 @@ fn values_schema_json() -> String { } } }, + "upgrade": { + "type": "object", + "additionalProperties": false, + "properties": { + "chartRef": { "type": "string" }, + "chartVersion": { "type": "string" }, + "helmRunnerImage": { "type": "string" }, + "extraArgs": { "type": "string" } + } + }, "replicas": { "type": "integer", "minimum": 1 }, + "progressDeadlineSeconds": { "type": "integer", "minimum": 1 }, "resources": { "type": "object" }, "api": { "type": "object", @@ -1522,6 +1565,13 @@ fn values_schema_json() -> String { } }, "serviceAccountPrefix": { "type": "string" }, + "upgrader": { + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": { "type": "boolean" } + } + }, "services": { "type": "object", "additionalProperties": { @@ -1618,6 +1668,18 @@ helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" }} {{- regexReplaceAll "[^a-z0-9-]" $raw "-" | trunc 63 | trimSuffix "-" -}} {{- end -}} +{{/* + ServiceAccount used by the Helm-runner Job the agent creates when it + acts on agent_target.helm. Held as a least-privilege boundary; bound + to the existing Role so the Job can mutate the Deployment + release + Secrets. +*/}} +{{- define "deployment.upgraderServiceAccountName" -}} +{{- $prefix := default (include "deployment.fullname" .) .Values.serviceAccountPrefix -}} +{{- $raw := printf "%s-upgrader-sa" $prefix | lower -}} +{{- regexReplaceAll "[^a-z0-9-]" $raw "-" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + {{- define "deployment.serviceAccountName" -}} {{- $prefix := default (include "deployment.fullname" .root) .root.Values.serviceAccountPrefix -}} {{- $raw := printf "%s-%s-sa" $prefix .name | lower -}} @@ -1648,6 +1710,14 @@ helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" }} {{- define "deployment.heartbeatNodeClusterRoleName" -}} {{- printf "%s-heartbeat-nodes" (include "deployment.fullname" .) | trunc 63 | trimSuffix "-" -}} {{- end -}} + +{{- /* Name of the ClusterRole that grants the agent self-update Job permission + to manage the chart-owned cluster-scoped resources (currently just the + heartbeat ClusterRole+Binding). Only created when both `upgrader.enabled` + and the heartbeat node-collection feature are on. */ -}} +{{- define "deployment.upgraderClusterRoleName" -}} +{{- printf "%s-upgrader" (include "deployment.fullname" .) | trunc 63 | trimSuffix "-" -}} +{{- end -}} "# .to_string() } @@ -1683,6 +1753,22 @@ metadata: {{- end }} --- {{- end }} +{{- if .Values.upgrader.enabled }} +# alien-agent-upgrader is the ServiceAccount used by the Helm-runner Job +# the agent creates when it acts on agent_target.helm. It exists as a +# least-privilege boundary for the Job — the agent pod itself uses +# `alien-agent-manager-sa` and only needs to create Jobs + stage +# ConfigMaps/Secrets. Operators are not restricted by this — the +# protection against bad helm upgrades is the chart's `required` values, +# not RBAC. +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "deployment.upgraderServiceAccountName" . }} + labels: + {{- include "deployment.labels" . | nindent 4 }} +--- +{{- end }} "# .to_string() } @@ -1701,6 +1787,17 @@ rules: - apiGroups: [""] resources: ["configmaps", "secrets", "services", "pods", "pods/log", "persistentvolumeclaims"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] + # ServiceAccounts + RBAC objects need to live here for `helm upgrade + # --reuse-values` to inspect (and patch) the release's existing + # resources during agent self-update. Without this, the upgrader SA + # — which is bound to this Role — can't `get` the SAs the chart + # already created and helm 4xx's out. + - apiGroups: [""] + resources: ["serviceaccounts"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] + - apiGroups: ["rbac.authorization.k8s.io"] + resources: ["roles", "rolebindings"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] - apiGroups: [""] resources: ["events"] verbs: ["get", "list", "watch"] @@ -1746,6 +1843,18 @@ metadata: subjects: - kind: ServiceAccount name: {{ include "deployment.managerServiceAccountName" . }} + {{- /* Execution ServiceAccounts (workers/daemons/containers) need RBAC to + read their own vault secrets (e.g. the injected ALIEN_COMMANDS_TOKEN). + Without this binding, the worker pod gets 403 reading any secret + provisioned by the KubernetesVaultController. */}} + {{- range $name, $account := .Values.serviceAccounts }} + - kind: ServiceAccount + name: {{ include "deployment.serviceAccountName" (dict "root" $ "name" $name) }} + {{- end }} + {{- if .Values.upgrader.enabled }} + - kind: ServiceAccount + name: {{ include "deployment.upgraderServiceAccountName" . }} + {{- end }} roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -1800,6 +1909,40 @@ rules: - apiGroups: ["metrics.k8s.io"] resources: ["nodes"] verbs: ["get", "list", "watch"] +{{- if .Values.upgrader.enabled }} +--- +# Narrow cluster-scoped RBAC for the agent self-update helm-runner Job. +# The chart creates exactly one cluster-scoped resource type pair — +# the heartbeat ClusterRole + ClusterRoleBinding above — and the +# upgrader SA needs to be able to `get/update/patch/delete` them +# during `helm upgrade --reuse-values`. `resourceNames` scopes this +# to ONLY the chart's own cluster objects; no enumeration of other +# tenants' cluster resources. Verbs are deliberately minimal (no +# `list`/`watch`, no `create` — chart install is what creates them +# the first time, run by the customer's helm operator). If a future +# chart version introduces new cluster-scoped resources, add their +# names to `resourceNames` (and a `create` verb on a separate rule +# without `resourceNames` if the upgrader needs to add new ones). +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "deployment.upgraderClusterRoleName" . }} + labels: + {{- include "deployment.labels" . | nindent 4 }} +rules: + - apiGroups: ["rbac.authorization.k8s.io"] + resources: ["clusterroles", "clusterrolebindings"] + resourceNames: + # The heartbeat-nodes cluster pair — the existing reason the + # upgrader needs cluster-scope access at all. + - {{ include "deployment.heartbeatNodeClusterRoleName" . | quote }} + # And the upgrader cluster pair itself — helm now tracks these as + # chart-owned, so every `helm upgrade --reuse-values` does a `get` + # on them to compute the diff. Without self-reference, the first + # upgrade trips on `clusterroles "-upgrader" is forbidden`. + - {{ include "deployment.upgraderClusterRoleName" . | quote }} + verbs: ["get", "update", "patch", "delete"] +{{- end }} {{- end }} "# .to_string() @@ -1822,14 +1965,63 @@ roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: {{ include "deployment.heartbeatNodeClusterRoleName" . }} +{{- if .Values.upgrader.enabled }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ include "deployment.upgraderClusterRoleName" . }} + labels: + {{- include "deployment.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: {{ include "deployment.upgraderServiceAccountName" . }} + namespace: {{ .Release.Namespace }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ include "deployment.upgraderClusterRoleName" . }} +{{- end }} {{- end }} "# .to_string() } fn secret_tpl() -> String { + // Encryption key resolution order: + // 1. user-provided `runtime.encryption.key` + // 2. existing in-cluster Secret's encryption-key (preserves the key + // across `helm upgrade` so previously-encrypted data stays readable) + // 3. freshly generated via `randBytes 32` — crypto/rand-backed in + // sprig 3.2+; if your Helm bundles an older sprig, set the key + // explicitly via `runtime.encryption.key` or + // `runtime.encryption.existingSecret.name`. + // + // `lookup` returns nil during `helm template` (no cluster access), so + // a `helm template | kubectl apply -f -` workflow would generate a + // fresh key on each render — install via `helm install/upgrade` to + // keep the key stable, or always set `runtime.encryption.key`. r#"{{- $createManagementSecret := not .Values.management.existingSecret.name -}} {{- $createEncryptionSecret := not .Values.runtime.encryption.existingSecret.name -}} +{{- $encryptionKey := "" -}} +{{- if $createEncryptionSecret -}} + {{- $providedKey := .Values.runtime.encryption.key | default "" | trim -}} + {{- $existingKey := "" -}} + {{- $existingSecret := lookup "v1" "Secret" .Release.Namespace (include "deployment.fullname" .) -}} + {{- if and $existingSecret $existingSecret.data -}} + {{- with index $existingSecret.data "encryption-key" -}} + {{- $existingKey = b64dec . -}} + {{- end -}} + {{- end -}} + {{- if $providedKey -}} + {{- $encryptionKey = $providedKey -}} + {{- else if $existingKey -}} + {{- $encryptionKey = $existingKey -}} + {{- else -}} + {{- /* sprig randBytes returns base64; b64dec to raw bytes then hex */ -}} + {{- $encryptionKey = printf "%x" (b64dec (randBytes 32)) -}} + {{- end -}} +{{- end -}} {{- if or $createManagementSecret $createEncryptionSecret .Values.infrastructure }} apiVersion: v1 kind: Secret @@ -1840,10 +2032,10 @@ metadata: type: Opaque stringData: {{- if $createManagementSecret }} - sync-token: {{ .Values.management.token | quote }} + sync-token: {{ required "management.token or management.existingSecret.name is required — pass the full values document" .Values.management.token | quote }} {{- end }} {{- if $createEncryptionSecret }} - encryption-key: {{ required "runtime.encryption.key or runtime.encryption.existingSecret.name is required" .Values.runtime.encryption.key | quote }} + encryption-key: {{ $encryptionKey | quote }} {{- end }} {{- if .Values.infrastructure }} external-bindings.json: {{ toJson .Values.infrastructure | quote }} @@ -1928,6 +2120,11 @@ metadata: {{- include "deployment.labels" . | nindent 4 }} spec: replicas: {{ .Values.runtime.replicas }} + # Recreate guarantees exactly one agent runs at any time, so the + # InstanceLock is never contended — even during a self-update. + strategy: + type: Recreate + progressDeadlineSeconds: {{ .Values.runtime.progressDeadlineSeconds | default 120 }} selector: matchLabels: app.kubernetes.io/name: {{ include "deployment.name" . }} @@ -2013,16 +2210,62 @@ spec: - name: AZURE_REGION value: {{ .Values.basePlatformConfig.azure.location | quote }} {{- end }} + # `required` chart guardrail: any helm upgrade that does not + # carry the full values document fails to render (Helm aborts + # before touching the release). This is the protection against + # bare `helm upgrade` silently resetting the agent's manager + # config — manager-triggered, operator-triggered, or otherwise. - name: SYNC_URL - value: {{ .Values.management.url | quote }} + value: {{ required "management.url is required — pass the full values document" .Values.management.url | quote }} - name: OPERATOR_NAME - value: {{ .Values.management.name | quote }} + value: {{ required "management.name is required — pass the full values document" .Values.management.name | quote }} {{- if .Values.management.deploymentId }} - name: DEPLOYMENT_ID value: {{ .Values.management.deploymentId | quote }} {{- end }} - name: KUBERNETES_NAMESPACE value: {{ .Release.Namespace | quote }} + - name: KUBERNETES_HELM_RELEASE + value: {{ .Release.Name | quote }} + - name: ALIEN_AGENT_UPGRADER_SA + value: {{ include "deployment.upgraderServiceAccountName" . | quote }} + # Reported back on /v1/sync so the dashboard can surface the + # registry an admin will pull a new tag from when pinning a + # target agent version. + - name: ALIEN_AGENT_IMAGE_REPOSITORY + value: {{ .Values.runtime.image.repository | quote }} + {{- if .Values.runtime.upgrade.chartRef }} + # Used by the agent when it receives `agent_target.helm` and + # spawns a Helm-runner Job to apply the new version. The Job + # runs `helm upgrade --reuse-values` against this chart so only + # the manager-supplied `values` override (e.g. image.tag) flips. + - name: ALIEN_AGENT_CHART_REF + value: {{ .Values.runtime.upgrade.chartRef | quote }} + {{- end }} + {{- if .Values.runtime.upgrade.chartVersion }} + - name: ALIEN_AGENT_CHART_VERSION + value: {{ .Values.runtime.upgrade.chartVersion | quote }} + {{- end }} + {{- if .Values.runtime.upgrade.helmRunnerImage }} + - name: ALIEN_AGENT_HELM_RUNNER_IMAGE + value: {{ .Values.runtime.upgrade.helmRunnerImage | quote }} + {{- end }} + {{- if .Values.runtime.upgrade.extraArgs }} + # Extra flags spliced into the `helm upgrade` command the + # agent's helm-runner Job runs. Use sparingly — exists for + # local-dev/insecure OCI registries (`--plain-http`) and + # similar one-off escape hatches; production should leave empty. + - name: ALIEN_AGENT_HELM_EXTRA_ARGS + value: {{ .Values.runtime.upgrade.extraArgs | quote }} + {{- end }} + {{- if .Values.serviceAccountPrefix }} + # Pin the deployment's resource_prefix to the same value used for + # ServiceAccount naming, so Helm-created SAs and vault secret names + # stay aligned across agent restarts (pull-model storage is ephemeral + # and the agent would otherwise regenerate a random prefix each time). + - name: ALIEN_RESOURCE_PREFIX + value: {{ .Values.serviceAccountPrefix | quote }} + {{- end }} - name: DATA_DIR value: {{ .Values.runtime.data.mountPath | quote }} - name: SYNC_TOKEN_FILE @@ -2787,8 +3030,18 @@ mod tests { let files = chart.files.clone(); crate::test_utils::helm_lint(&files).assert_ok("helm chart"); - crate::test_utils::helm_template_and_validate(&files, None) - .assert_ok("helm template registered setup"); + // Manager-fetch path: a token + deploymentId are required (the chart + // refuses to install without them — guards against half-configured + // values). + let manager_fetch_values = r#" +management: + url: "https://manager.example.com" + name: "test-manager" + token: "test-sync-token" + deploymentId: "test-deployment-id" +"#; + crate::test_utils::helm_template_and_validate(&files, Some(manager_fetch_values)) + .assert_ok("helm template manager-fetch path / registered setup"); crate::test_utils::helm_template_and_validate(&files, Some(&files["examples/onprem.yaml"])) .assert_ok("helm template external-bindings initialize path"); } diff --git a/crates/alien-helm/tests/generator/boot_paths_tests.rs b/crates/alien-helm/tests/generator/boot_paths_tests.rs index d1beb2de0..028fb05b9 100644 --- a/crates/alien-helm/tests/generator/boot_paths_tests.rs +++ b/crates/alien-helm/tests/generator/boot_paths_tests.rs @@ -18,7 +18,18 @@ fn schema_accepts_registered_setup_default_values() { .build(); let chart = render(&stack, StackSettings::default()); let files = chart.files; - test_utils::helm_template_and_validate(&files, None).assert_ok("registered setup"); + // The manager-fetch path requires `management.{url,name,token,deploymentId}` + // — the chart `required` guardrails reject installs missing them, so the + // test must pass a minimal values overlay. + let manager_fetch_values = r#" +management: + url: "https://manager.example.com" + name: "test-manager" + token: "test-sync-token" + deploymentId: "test-deployment-id" +"#; + test_utils::helm_template_and_validate(&files, Some(manager_fetch_values)) + .assert_ok("manager-fetch path / registered setup"); } #[test] diff --git a/crates/alien-helm/tests/generator/helpers.rs b/crates/alien-helm/tests/generator/helpers.rs index d6ca4bfff..1720b2347 100644 --- a/crates/alien-helm/tests/generator/helpers.rs +++ b/crates/alien-helm/tests/generator/helpers.rs @@ -37,13 +37,33 @@ pub fn snapshot_chart(name: &str, chart: &HelmChart) { insta::assert_snapshot!(name, buf); } +/// Minimal `management` block that satisfies the chart's `required` +/// guardrails on the manager-fetch path. Templates abort without these. +pub const MANAGER_FETCH_VALUES: &str = r#" +management: + url: "https://manager.example.com" + name: "test-manager" + token: "test-sync-token" + deploymentId: "test-deployment-id" +"#; + +/// Patch the chart's default `values.yaml` so the manager-fetch +/// `required` guardrails are satisfied. Used by tests that drive the +/// chart with values.yaml content as the starting point. +pub fn patch_values_with_manager_fetch(values_yaml: &str) -> String { + values_yaml + .replace(" token: \"\"", " token: \"test-sync-token\"") + .replace(" name: \"\"", " name: \"test-manager\"") + .replace(" url: \"\"", " url: \"https://manager.example.com\"") +} + /// Run `helm lint` + `helm template` + `kubeconform` against the chart /// for the default values and every generated example values file. pub fn assert_helm_valid(chart: &HelmChart, context: &str) { let files = linter_files(chart); test_utils::helm_lint(&files).assert_ok(format!("{context} helm lint")); - test_utils::helm_template_and_validate(&files, None) - .assert_ok(format!("{context} helm template default values")); + test_utils::helm_template_and_validate(&files, Some(MANAGER_FETCH_VALUES)) + .assert_ok(format!("{context} helm template manager-fetch default values")); for (path, values) in files .iter() diff --git a/crates/alien-helm/tests/generator/manager_only_tests.rs b/crates/alien-helm/tests/generator/manager_only_tests.rs index 2f2e79753..bb4e2124a 100644 --- a/crates/alien-helm/tests/generator/manager_only_tests.rs +++ b/crates/alien-helm/tests/generator/manager_only_tests.rs @@ -3,7 +3,10 @@ //! IRSA / Workload Identity / Federated Identity. use super::{ - helpers::{assert_helm_valid, render, snapshot_chart}, + helpers::{ + assert_helm_valid, patch_values_with_manager_fetch, render, snapshot_chart, + MANAGER_FETCH_VALUES, + }, test_utils::{self, LinterStatus}, }; use alien_core::{ @@ -166,7 +169,7 @@ fn chart_role_rbac_allows_every_cleanup_route_resource() { assert!(role.contains("resources: [\"healthcheckpolicy\"]")); assert!(role.contains("eq $routeApi \"gateway\"")); - let rendered = test_utils::helm_template(&chart.files, None); + let rendered = test_utils::helm_template(&chart.files, Some(MANAGER_FETCH_VALUES)); match &rendered.status { LinterStatus::Passed => { assert!(rendered @@ -289,10 +292,12 @@ fn gcp_base_platform_config_renders_operator_environment() { let chart = render(&stack, StackSettings::default()); let files = chart.files.clone(); let values = files.get("values.yaml").expect("values.yaml"); - let gcp_values = values - .replace("basePlatform: null", "basePlatform: gcp") - .replace("projectId: \"\"", "projectId: alien-test-target") - .replace("region: \"\"", "region: us-east4"); + let gcp_values = patch_values_with_manager_fetch( + &values + .replace("basePlatform: null", "basePlatform: gcp") + .replace("projectId: \"\"", "projectId: alien-test-target") + .replace("region: \"\"", "region: us-east4"), + ); let rendered = test_utils::helm_template(&files, Some(&gcp_values)); match &rendered.status { @@ -348,7 +353,7 @@ fn cluster_bootstrap_renders_only_when_enabled() { assert!(values.contains("eksAutoMode:")); assert!(values.contains("arm64NodePool:")); - let default_rendered = test_utils::helm_template(&files, None); + let default_rendered = test_utils::helm_template(&files, Some(MANAGER_FETCH_VALUES)); match &default_rendered.status { LinterStatus::Passed => { assert!(!default_rendered.stdout.contains("kind: StorageClass")); @@ -362,12 +367,14 @@ fn cluster_bootstrap_renders_only_when_enabled() { } } - let enabled_values = values - .replace( - "clusterBootstrap:\n metricsServer:\n enabled: false\n image: registry.k8s.io/metrics-server/metrics-server:v0.8.1\n storageClass:\n default:\n enabled: false\n name: \"\"\n provisioner: \"\"\n parameters: {}\n ingress:\n eksAutoMode:\n enabled: false", - "clusterBootstrap:\n metricsServer:\n enabled: true\n image: registry.k8s.io/metrics-server/metrics-server:v0.8.1\n storageClass:\n default:\n enabled: true\n name: gp3\n provisioner: ebs.csi.eks.amazonaws.com\n parameters:\n type: gp3\n fsType: ext4\n encrypted: \"true\"\n ingress:\n eksAutoMode:\n enabled: true", - ) - .replace("arm64NodePool:\n enabled: false", "arm64NodePool:\n enabled: true"); + let enabled_values = patch_values_with_manager_fetch( + &values + .replace( + "clusterBootstrap:\n metricsServer:\n enabled: false\n image: registry.k8s.io/metrics-server/metrics-server:v0.8.1\n storageClass:\n default:\n enabled: false\n name: \"\"\n provisioner: \"\"\n parameters: {}\n ingress:\n eksAutoMode:\n enabled: false", + "clusterBootstrap:\n metricsServer:\n enabled: true\n image: registry.k8s.io/metrics-server/metrics-server:v0.8.1\n storageClass:\n default:\n enabled: true\n name: gp3\n provisioner: ebs.csi.eks.amazonaws.com\n parameters:\n type: gp3\n fsType: ext4\n encrypted: \"true\"\n ingress:\n eksAutoMode:\n enabled: true", + ) + .replace("arm64NodePool:\n enabled: false", "arm64NodePool:\n enabled: true"), + ); let enabled_rendered = test_utils::helm_template(&files, Some(&enabled_values)); match &enabled_rendered.status { LinterStatus::Passed => { @@ -449,13 +456,14 @@ fn heartbeat_collection_rbac_is_namespace_scoped_with_optional_node_reads() { assert!(cluster_role.contains(r#"resources: ["nodes"]"#)); assert!(cluster_role.contains(r#"apiGroups: ["metrics.k8s.io"]"#)); - test_utils::helm_template_and_validate(&files, None).assert_ok("heartbeat RBAC default values"); + test_utils::helm_template_and_validate(&files, Some(MANAGER_FETCH_VALUES)) + .assert_ok("heartbeat RBAC default values"); let values = files.get("values.yaml").expect("values.yaml"); - let disabled_values = values.replace( + let disabled_values = patch_values_with_manager_fetch(&values.replace( "heartbeat:\n collection:\n nodes:\n enabled: true", "heartbeat:\n collection:\n nodes:\n enabled: false", - ); + )); test_utils::helm_template_and_validate(&files, Some(&disabled_values)) .assert_ok("heartbeat RBAC node collection disabled"); diff --git a/crates/alien-helm/tests/generator/snapshots/generator__generator__helpers__data_layer.snap b/crates/alien-helm/tests/generator/snapshots/generator__generator__helpers__data_layer.snap index 212ac99bc..996e243c1 100644 --- a/crates/alien-helm/tests/generator/snapshots/generator__generator__helpers__data_layer.snap +++ b/crates/alien-helm/tests/generator/snapshots/generator__generator__helpers__data_layer.snap @@ -33,12 +33,31 @@ runtime: podAnnotations: {} automountServiceAccountToken: true encryption: - # Set this explicitly, or reference an existing Secret below. - key: "replace-me-with-a-stable-64-character-encryption-secret" + # Leave empty to let the chart generate a stable random 64-hex-char key + # on first install (preserved across upgrades via `lookup`). To pin the + # key explicitly, set it here (must be 64 hex chars = 256-bit AES). To + # source it from an external secret store, set `existingSecret.name`. + key: "" existingSecret: name: "" key: encryption-key + # Agent self-update inputs the agent passes to the Helm-runner Job it + # spawns on `agent_target.helm`. Set chartRef + chartVersion to the OCI + # ref + version used at install time — the agent re-uses them in + # `helm upgrade --reuse-values`. Leave blank if you don't want to enable + # in-cluster agent upgrades for this install. + upgrade: + chartRef: "" + chartVersion: "" + helmRunnerImage: "alpine/helm:3.18.4" + # Extra flags appended to the `helm upgrade` command the agent's + # helm-runner Job runs (e.g. `--plain-http` for local-dev OCI + # registries served over HTTP). Production should leave empty. + extraArgs: "" replicas: 1 + # Helm's --atomic --wait gives up after this many seconds if /readyz + # hasn't returned 200 — the revision is then rolled back automatically. + progressDeadlineSeconds: 120 resources: requests: cpu: 100m @@ -52,16 +71,20 @@ runtime: service: type: ClusterIP probes: + # /livez is process liveness; /readyz turns 200 only after the agent + # completes at least one /v1/sync round-trip with the manager — the + # gate Helm's --atomic --wait relies on so a freshly-rolled agent + # is not considered ready until it has actually reached the manager. liveness: enabled: true - path: /health + path: /livez initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 2 failureThreshold: 3 readiness: enabled: true - path: /health + path: /readyz initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 2 @@ -86,7 +109,16 @@ runtime: data: mountPath: /var/lib/deployment-operator persistence: - enabled: false + # Enabled by default: the agent's `data_dir` holds its persistent + # deployment_id + sync-token. Without a PVC, any pod restart (e.g. + # the rolling restart triggered by self-update / `agent_target.helm`) + # wipes that state, the new pod re-runs `/v1/initialize`, hits a + # name-conflict 409, crashloops, and helm `--atomic` rolls back. + # Operators on clusters without a default StorageClass must either + # set `storageClassName`, point at an `existingClaim`, or + # explicitly disable this and accept that self-update will not + # survive a pod roll. + enabled: true existingClaim: "" storageClassName: "" accessModes: @@ -184,6 +216,13 @@ managerServiceAccount: annotations: {} labels: {} +# Agent self-update. When the agent receives agent_target.helm on /v1/sync +# it creates a short-lived Helm-runner Job that runs `helm upgrade --atomic`. +# The Job runs as `alien-agent-upgrader`; we keep the SA optional so charts +# that don't want self-update can disable it. +upgrader: + enabled: true + services: {} @@ -265,7 +304,18 @@ ephemeralStorage: } } }, + "upgrade": { + "type": "object", + "additionalProperties": false, + "properties": { + "chartRef": { "type": "string" }, + "chartVersion": { "type": "string" }, + "helmRunnerImage": { "type": "string" }, + "extraArgs": { "type": "string" } + } + }, "replicas": { "type": "integer", "minimum": 1 }, + "progressDeadlineSeconds": { "type": "integer", "minimum": 1 }, "resources": { "type": "object" }, "api": { "type": "object", @@ -596,6 +646,13 @@ ephemeralStorage: } }, "serviceAccountPrefix": { "type": "string" }, + "upgrader": { + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": { "type": "boolean" } + } + }, "services": { "type": "object", "additionalProperties": { @@ -689,6 +746,18 @@ helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" }} {{- regexReplaceAll "[^a-z0-9-]" $raw "-" | trunc 63 | trimSuffix "-" -}} {{- end -}} +{{/* + ServiceAccount used by the Helm-runner Job the agent creates when it + acts on agent_target.helm. Held as a least-privilege boundary; bound + to the existing Role so the Job can mutate the Deployment + release + Secrets. +*/}} +{{- define "deployment.upgraderServiceAccountName" -}} +{{- $prefix := default (include "deployment.fullname" .) .Values.serviceAccountPrefix -}} +{{- $raw := printf "%s-upgrader-sa" $prefix | lower -}} +{{- regexReplaceAll "[^a-z0-9-]" $raw "-" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + {{- define "deployment.serviceAccountName" -}} {{- $prefix := default (include "deployment.fullname" .root) .root.Values.serviceAccountPrefix -}} {{- $raw := printf "%s-%s-sa" $prefix .name | lower -}} @@ -720,6 +789,14 @@ helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" }} {{- printf "%s-heartbeat-nodes" (include "deployment.fullname" .) | trunc 63 | trimSuffix "-" -}} {{- end -}} +{{- /* Name of the ClusterRole that grants the agent self-update Job permission + to manage the chart-owned cluster-scoped resources (currently just the + heartbeat ClusterRole+Binding). Only created when both `upgrader.enabled` + and the heartbeat node-collection feature are on. */ -}} +{{- define "deployment.upgraderClusterRoleName" -}} +{{- printf "%s-upgrader" (include "deployment.fullname" .) | trunc 63 | trimSuffix "-" -}} +{{- end -}} + === templates/serviceaccount.yaml === apiVersion: v1 kind: ServiceAccount @@ -751,6 +828,22 @@ metadata: {{- end }} --- {{- end }} +{{- if .Values.upgrader.enabled }} +# alien-agent-upgrader is the ServiceAccount used by the Helm-runner Job +# the agent creates when it acts on agent_target.helm. It exists as a +# least-privilege boundary for the Job — the agent pod itself uses +# `alien-agent-manager-sa` and only needs to create Jobs + stage +# ConfigMaps/Secrets. Operators are not restricted by this — the +# protection against bad helm upgrades is the chart's `required` values, +# not RBAC. +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "deployment.upgraderServiceAccountName" . }} + labels: + {{- include "deployment.labels" . | nindent 4 }} +--- +{{- end }} === templates/role.yaml === {{- $stackSettings := default dict .Values.stackSettings -}} @@ -766,6 +859,17 @@ rules: - apiGroups: [""] resources: ["configmaps", "secrets", "services", "pods", "pods/log", "persistentvolumeclaims"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] + # ServiceAccounts + RBAC objects need to live here for `helm upgrade + # --reuse-values` to inspect (and patch) the release's existing + # resources during agent self-update. Without this, the upgrader SA + # — which is bound to this Role — can't `get` the SAs the chart + # already created and helm 4xx's out. + - apiGroups: [""] + resources: ["serviceaccounts"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] + - apiGroups: ["rbac.authorization.k8s.io"] + resources: ["roles", "rolebindings"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] - apiGroups: [""] resources: ["events"] verbs: ["get", "list", "watch"] @@ -808,6 +912,18 @@ metadata: subjects: - kind: ServiceAccount name: {{ include "deployment.managerServiceAccountName" . }} + {{- /* Execution ServiceAccounts (workers/daemons/containers) need RBAC to + read their own vault secrets (e.g. the injected ALIEN_COMMANDS_TOKEN). + Without this binding, the worker pod gets 403 reading any secret + provisioned by the KubernetesVaultController. */}} + {{- range $name, $account := .Values.serviceAccounts }} + - kind: ServiceAccount + name: {{ include "deployment.serviceAccountName" (dict "root" $ "name" $name) }} + {{- end }} + {{- if .Values.upgrader.enabled }} + - kind: ServiceAccount + name: {{ include "deployment.upgraderServiceAccountName" . }} + {{- end }} roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -859,6 +975,40 @@ rules: - apiGroups: ["metrics.k8s.io"] resources: ["nodes"] verbs: ["get", "list", "watch"] +{{- if .Values.upgrader.enabled }} +--- +# Narrow cluster-scoped RBAC for the agent self-update helm-runner Job. +# The chart creates exactly one cluster-scoped resource type pair — +# the heartbeat ClusterRole + ClusterRoleBinding above — and the +# upgrader SA needs to be able to `get/update/patch/delete` them +# during `helm upgrade --reuse-values`. `resourceNames` scopes this +# to ONLY the chart's own cluster objects; no enumeration of other +# tenants' cluster resources. Verbs are deliberately minimal (no +# `list`/`watch`, no `create` — chart install is what creates them +# the first time, run by the customer's helm operator). If a future +# chart version introduces new cluster-scoped resources, add their +# names to `resourceNames` (and a `create` verb on a separate rule +# without `resourceNames` if the upgrader needs to add new ones). +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "deployment.upgraderClusterRoleName" . }} + labels: + {{- include "deployment.labels" . | nindent 4 }} +rules: + - apiGroups: ["rbac.authorization.k8s.io"] + resources: ["clusterroles", "clusterrolebindings"] + resourceNames: + # The heartbeat-nodes cluster pair — the existing reason the + # upgrader needs cluster-scope access at all. + - {{ include "deployment.heartbeatNodeClusterRoleName" . | quote }} + # And the upgrader cluster pair itself — helm now tracks these as + # chart-owned, so every `helm upgrade --reuse-values` does a `get` + # on them to compute the diff. Without self-reference, the first + # upgrade trips on `clusterroles "-upgrader" is forbidden`. + - {{ include "deployment.upgraderClusterRoleName" . | quote }} + verbs: ["get", "update", "patch", "delete"] +{{- end }} {{- end }} === templates/clusterrolebinding.yaml === @@ -878,11 +1028,47 @@ roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: {{ include "deployment.heartbeatNodeClusterRoleName" . }} +{{- if .Values.upgrader.enabled }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ include "deployment.upgraderClusterRoleName" . }} + labels: + {{- include "deployment.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: {{ include "deployment.upgraderServiceAccountName" . }} + namespace: {{ .Release.Namespace }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ include "deployment.upgraderClusterRoleName" . }} +{{- end }} {{- end }} === templates/secret.yaml === {{- $createManagementSecret := not .Values.management.existingSecret.name -}} {{- $createEncryptionSecret := not .Values.runtime.encryption.existingSecret.name -}} +{{- $encryptionKey := "" -}} +{{- if $createEncryptionSecret -}} + {{- $providedKey := .Values.runtime.encryption.key | default "" | trim -}} + {{- $existingKey := "" -}} + {{- $existingSecret := lookup "v1" "Secret" .Release.Namespace (include "deployment.fullname" .) -}} + {{- if and $existingSecret $existingSecret.data -}} + {{- with index $existingSecret.data "encryption-key" -}} + {{- $existingKey = b64dec . -}} + {{- end -}} + {{- end -}} + {{- if $providedKey -}} + {{- $encryptionKey = $providedKey -}} + {{- else if $existingKey -}} + {{- $encryptionKey = $existingKey -}} + {{- else -}} + {{- /* sprig randBytes returns base64; b64dec to raw bytes then hex */ -}} + {{- $encryptionKey = printf "%x" (b64dec (randBytes 32)) -}} + {{- end -}} +{{- end -}} {{- if or $createManagementSecret $createEncryptionSecret .Values.infrastructure }} apiVersion: v1 kind: Secret @@ -893,10 +1079,10 @@ metadata: type: Opaque stringData: {{- if $createManagementSecret }} - sync-token: {{ .Values.management.token | quote }} + sync-token: {{ required "management.token or management.existingSecret.name is required — pass the full values document" .Values.management.token | quote }} {{- end }} {{- if $createEncryptionSecret }} - encryption-key: {{ required "runtime.encryption.key or runtime.encryption.existingSecret.name is required" .Values.runtime.encryption.key | quote }} + encryption-key: {{ $encryptionKey | quote }} {{- end }} {{- if .Values.infrastructure }} external-bindings.json: {{ toJson .Values.infrastructure | quote }} @@ -927,6 +1113,11 @@ metadata: {{- include "deployment.labels" . | nindent 4 }} spec: replicas: {{ .Values.runtime.replicas }} + # Recreate guarantees exactly one agent runs at any time, so the + # InstanceLock is never contended — even during a self-update. + strategy: + type: Recreate + progressDeadlineSeconds: {{ .Values.runtime.progressDeadlineSeconds | default 120 }} selector: matchLabels: app.kubernetes.io/name: {{ include "deployment.name" . }} @@ -1012,16 +1203,62 @@ spec: - name: AZURE_REGION value: {{ .Values.basePlatformConfig.azure.location | quote }} {{- end }} + # `required` chart guardrail: any helm upgrade that does not + # carry the full values document fails to render (Helm aborts + # before touching the release). This is the protection against + # bare `helm upgrade` silently resetting the agent's manager + # config — manager-triggered, operator-triggered, or otherwise. - name: SYNC_URL - value: {{ .Values.management.url | quote }} + value: {{ required "management.url is required — pass the full values document" .Values.management.url | quote }} - name: OPERATOR_NAME - value: {{ .Values.management.name | quote }} + value: {{ required "management.name is required — pass the full values document" .Values.management.name | quote }} {{- if .Values.management.deploymentId }} - name: DEPLOYMENT_ID value: {{ .Values.management.deploymentId | quote }} {{- end }} - name: KUBERNETES_NAMESPACE value: {{ .Release.Namespace | quote }} + - name: KUBERNETES_HELM_RELEASE + value: {{ .Release.Name | quote }} + - name: ALIEN_AGENT_UPGRADER_SA + value: {{ include "deployment.upgraderServiceAccountName" . | quote }} + # Reported back on /v1/sync so the dashboard can surface the + # registry an admin will pull a new tag from when pinning a + # target agent version. + - name: ALIEN_AGENT_IMAGE_REPOSITORY + value: {{ .Values.runtime.image.repository | quote }} + {{- if .Values.runtime.upgrade.chartRef }} + # Used by the agent when it receives `agent_target.helm` and + # spawns a Helm-runner Job to apply the new version. The Job + # runs `helm upgrade --reuse-values` against this chart so only + # the manager-supplied `values` override (e.g. image.tag) flips. + - name: ALIEN_AGENT_CHART_REF + value: {{ .Values.runtime.upgrade.chartRef | quote }} + {{- end }} + {{- if .Values.runtime.upgrade.chartVersion }} + - name: ALIEN_AGENT_CHART_VERSION + value: {{ .Values.runtime.upgrade.chartVersion | quote }} + {{- end }} + {{- if .Values.runtime.upgrade.helmRunnerImage }} + - name: ALIEN_AGENT_HELM_RUNNER_IMAGE + value: {{ .Values.runtime.upgrade.helmRunnerImage | quote }} + {{- end }} + {{- if .Values.runtime.upgrade.extraArgs }} + # Extra flags spliced into the `helm upgrade` command the + # agent's helm-runner Job runs. Use sparingly — exists for + # local-dev/insecure OCI registries (`--plain-http`) and + # similar one-off escape hatches; production should leave empty. + - name: ALIEN_AGENT_HELM_EXTRA_ARGS + value: {{ .Values.runtime.upgrade.extraArgs | quote }} + {{- end }} + {{- if .Values.serviceAccountPrefix }} + # Pin the deployment's resource_prefix to the same value used for + # ServiceAccount naming, so Helm-created SAs and vault secret names + # stay aligned across agent restarts (pull-model storage is ephemeral + # and the agent would otherwise regenerate a random prefix each time). + - name: ALIEN_RESOURCE_PREFIX + value: {{ .Values.serviceAccountPrefix | quote }} + {{- end }} - name: DATA_DIR value: {{ .Values.runtime.data.mountPath | quote }} - name: SYNC_TOKEN_FILE diff --git a/crates/alien-helm/tests/generator/snapshots/generator__generator__helpers__manager_only_pure_worker.snap b/crates/alien-helm/tests/generator/snapshots/generator__generator__helpers__manager_only_pure_worker.snap index ce6293a8d..e998e4221 100644 --- a/crates/alien-helm/tests/generator/snapshots/generator__generator__helpers__manager_only_pure_worker.snap +++ b/crates/alien-helm/tests/generator/snapshots/generator__generator__helpers__manager_only_pure_worker.snap @@ -33,12 +33,31 @@ runtime: podAnnotations: {} automountServiceAccountToken: true encryption: - # Set this explicitly, or reference an existing Secret below. - key: "replace-me-with-a-stable-64-character-encryption-secret" + # Leave empty to let the chart generate a stable random 64-hex-char key + # on first install (preserved across upgrades via `lookup`). To pin the + # key explicitly, set it here (must be 64 hex chars = 256-bit AES). To + # source it from an external secret store, set `existingSecret.name`. + key: "" existingSecret: name: "" key: encryption-key + # Agent self-update inputs the agent passes to the Helm-runner Job it + # spawns on `agent_target.helm`. Set chartRef + chartVersion to the OCI + # ref + version used at install time — the agent re-uses them in + # `helm upgrade --reuse-values`. Leave blank if you don't want to enable + # in-cluster agent upgrades for this install. + upgrade: + chartRef: "" + chartVersion: "" + helmRunnerImage: "alpine/helm:3.18.4" + # Extra flags appended to the `helm upgrade` command the agent's + # helm-runner Job runs (e.g. `--plain-http` for local-dev OCI + # registries served over HTTP). Production should leave empty. + extraArgs: "" replicas: 1 + # Helm's --atomic --wait gives up after this many seconds if /readyz + # hasn't returned 200 — the revision is then rolled back automatically. + progressDeadlineSeconds: 120 resources: requests: cpu: 100m @@ -52,16 +71,20 @@ runtime: service: type: ClusterIP probes: + # /livez is process liveness; /readyz turns 200 only after the agent + # completes at least one /v1/sync round-trip with the manager — the + # gate Helm's --atomic --wait relies on so a freshly-rolled agent + # is not considered ready until it has actually reached the manager. liveness: enabled: true - path: /health + path: /livez initialDelaySeconds: 10 periodSeconds: 10 timeoutSeconds: 2 failureThreshold: 3 readiness: enabled: true - path: /health + path: /readyz initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 2 @@ -86,7 +109,16 @@ runtime: data: mountPath: /var/lib/deployment-operator persistence: - enabled: false + # Enabled by default: the agent's `data_dir` holds its persistent + # deployment_id + sync-token. Without a PVC, any pod restart (e.g. + # the rolling restart triggered by self-update / `agent_target.helm`) + # wipes that state, the new pod re-runs `/v1/initialize`, hits a + # name-conflict 409, crashloops, and helm `--atomic` rolls back. + # Operators on clusters without a default StorageClass must either + # set `storageClassName`, point at an `existingClaim`, or + # explicitly disable this and accept that self-update will not + # survive a pod roll. + enabled: true existingClaim: "" storageClassName: "" accessModes: @@ -186,6 +218,13 @@ managerServiceAccount: annotations: {} labels: {} +# Agent self-update. When the agent receives agent_target.helm on /v1/sync +# it creates a short-lived Helm-runner Job that runs `helm upgrade --atomic`. +# The Job runs as `alien-agent-upgrader`; we keep the SA optional so charts +# that don't want self-update can disable it. +upgrader: + enabled: true + services: api: type: clusterIp @@ -271,7 +310,18 @@ ephemeralStorage: } } }, + "upgrade": { + "type": "object", + "additionalProperties": false, + "properties": { + "chartRef": { "type": "string" }, + "chartVersion": { "type": "string" }, + "helmRunnerImage": { "type": "string" }, + "extraArgs": { "type": "string" } + } + }, "replicas": { "type": "integer", "minimum": 1 }, + "progressDeadlineSeconds": { "type": "integer", "minimum": 1 }, "resources": { "type": "object" }, "api": { "type": "object", @@ -602,6 +652,13 @@ ephemeralStorage: } }, "serviceAccountPrefix": { "type": "string" }, + "upgrader": { + "type": "object", + "additionalProperties": false, + "properties": { + "enabled": { "type": "boolean" } + } + }, "services": { "type": "object", "additionalProperties": { @@ -695,6 +752,18 @@ helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" }} {{- regexReplaceAll "[^a-z0-9-]" $raw "-" | trunc 63 | trimSuffix "-" -}} {{- end -}} +{{/* + ServiceAccount used by the Helm-runner Job the agent creates when it + acts on agent_target.helm. Held as a least-privilege boundary; bound + to the existing Role so the Job can mutate the Deployment + release + Secrets. +*/}} +{{- define "deployment.upgraderServiceAccountName" -}} +{{- $prefix := default (include "deployment.fullname" .) .Values.serviceAccountPrefix -}} +{{- $raw := printf "%s-upgrader-sa" $prefix | lower -}} +{{- regexReplaceAll "[^a-z0-9-]" $raw "-" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + {{- define "deployment.serviceAccountName" -}} {{- $prefix := default (include "deployment.fullname" .root) .root.Values.serviceAccountPrefix -}} {{- $raw := printf "%s-%s-sa" $prefix .name | lower -}} @@ -726,6 +795,14 @@ helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" }} {{- printf "%s-heartbeat-nodes" (include "deployment.fullname" .) | trunc 63 | trimSuffix "-" -}} {{- end -}} +{{- /* Name of the ClusterRole that grants the agent self-update Job permission + to manage the chart-owned cluster-scoped resources (currently just the + heartbeat ClusterRole+Binding). Only created when both `upgrader.enabled` + and the heartbeat node-collection feature are on. */ -}} +{{- define "deployment.upgraderClusterRoleName" -}} +{{- printf "%s-upgrader" (include "deployment.fullname" .) | trunc 63 | trimSuffix "-" -}} +{{- end -}} + === templates/serviceaccount.yaml === apiVersion: v1 kind: ServiceAccount @@ -757,6 +834,22 @@ metadata: {{- end }} --- {{- end }} +{{- if .Values.upgrader.enabled }} +# alien-agent-upgrader is the ServiceAccount used by the Helm-runner Job +# the agent creates when it acts on agent_target.helm. It exists as a +# least-privilege boundary for the Job — the agent pod itself uses +# `alien-agent-manager-sa` and only needs to create Jobs + stage +# ConfigMaps/Secrets. Operators are not restricted by this — the +# protection against bad helm upgrades is the chart's `required` values, +# not RBAC. +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "deployment.upgraderServiceAccountName" . }} + labels: + {{- include "deployment.labels" . | nindent 4 }} +--- +{{- end }} === templates/role.yaml === {{- $stackSettings := default dict .Values.stackSettings -}} @@ -772,6 +865,17 @@ rules: - apiGroups: [""] resources: ["configmaps", "secrets", "services", "pods", "pods/log", "persistentvolumeclaims"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] + # ServiceAccounts + RBAC objects need to live here for `helm upgrade + # --reuse-values` to inspect (and patch) the release's existing + # resources during agent self-update. Without this, the upgrader SA + # — which is bound to this Role — can't `get` the SAs the chart + # already created and helm 4xx's out. + - apiGroups: [""] + resources: ["serviceaccounts"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] + - apiGroups: ["rbac.authorization.k8s.io"] + resources: ["roles", "rolebindings"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] - apiGroups: [""] resources: ["events"] verbs: ["get", "list", "watch"] @@ -814,6 +918,18 @@ metadata: subjects: - kind: ServiceAccount name: {{ include "deployment.managerServiceAccountName" . }} + {{- /* Execution ServiceAccounts (workers/daemons/containers) need RBAC to + read their own vault secrets (e.g. the injected ALIEN_COMMANDS_TOKEN). + Without this binding, the worker pod gets 403 reading any secret + provisioned by the KubernetesVaultController. */}} + {{- range $name, $account := .Values.serviceAccounts }} + - kind: ServiceAccount + name: {{ include "deployment.serviceAccountName" (dict "root" $ "name" $name) }} + {{- end }} + {{- if .Values.upgrader.enabled }} + - kind: ServiceAccount + name: {{ include "deployment.upgraderServiceAccountName" . }} + {{- end }} roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -865,6 +981,40 @@ rules: - apiGroups: ["metrics.k8s.io"] resources: ["nodes"] verbs: ["get", "list", "watch"] +{{- if .Values.upgrader.enabled }} +--- +# Narrow cluster-scoped RBAC for the agent self-update helm-runner Job. +# The chart creates exactly one cluster-scoped resource type pair — +# the heartbeat ClusterRole + ClusterRoleBinding above — and the +# upgrader SA needs to be able to `get/update/patch/delete` them +# during `helm upgrade --reuse-values`. `resourceNames` scopes this +# to ONLY the chart's own cluster objects; no enumeration of other +# tenants' cluster resources. Verbs are deliberately minimal (no +# `list`/`watch`, no `create` — chart install is what creates them +# the first time, run by the customer's helm operator). If a future +# chart version introduces new cluster-scoped resources, add their +# names to `resourceNames` (and a `create` verb on a separate rule +# without `resourceNames` if the upgrader needs to add new ones). +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "deployment.upgraderClusterRoleName" . }} + labels: + {{- include "deployment.labels" . | nindent 4 }} +rules: + - apiGroups: ["rbac.authorization.k8s.io"] + resources: ["clusterroles", "clusterrolebindings"] + resourceNames: + # The heartbeat-nodes cluster pair — the existing reason the + # upgrader needs cluster-scope access at all. + - {{ include "deployment.heartbeatNodeClusterRoleName" . | quote }} + # And the upgrader cluster pair itself — helm now tracks these as + # chart-owned, so every `helm upgrade --reuse-values` does a `get` + # on them to compute the diff. Without self-reference, the first + # upgrade trips on `clusterroles "-upgrader" is forbidden`. + - {{ include "deployment.upgraderClusterRoleName" . | quote }} + verbs: ["get", "update", "patch", "delete"] +{{- end }} {{- end }} === templates/clusterrolebinding.yaml === @@ -884,11 +1034,47 @@ roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: {{ include "deployment.heartbeatNodeClusterRoleName" . }} +{{- if .Values.upgrader.enabled }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ include "deployment.upgraderClusterRoleName" . }} + labels: + {{- include "deployment.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: {{ include "deployment.upgraderServiceAccountName" . }} + namespace: {{ .Release.Namespace }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ include "deployment.upgraderClusterRoleName" . }} +{{- end }} {{- end }} === templates/secret.yaml === {{- $createManagementSecret := not .Values.management.existingSecret.name -}} {{- $createEncryptionSecret := not .Values.runtime.encryption.existingSecret.name -}} +{{- $encryptionKey := "" -}} +{{- if $createEncryptionSecret -}} + {{- $providedKey := .Values.runtime.encryption.key | default "" | trim -}} + {{- $existingKey := "" -}} + {{- $existingSecret := lookup "v1" "Secret" .Release.Namespace (include "deployment.fullname" .) -}} + {{- if and $existingSecret $existingSecret.data -}} + {{- with index $existingSecret.data "encryption-key" -}} + {{- $existingKey = b64dec . -}} + {{- end -}} + {{- end -}} + {{- if $providedKey -}} + {{- $encryptionKey = $providedKey -}} + {{- else if $existingKey -}} + {{- $encryptionKey = $existingKey -}} + {{- else -}} + {{- /* sprig randBytes returns base64; b64dec to raw bytes then hex */ -}} + {{- $encryptionKey = printf "%x" (b64dec (randBytes 32)) -}} + {{- end -}} +{{- end -}} {{- if or $createManagementSecret $createEncryptionSecret .Values.infrastructure }} apiVersion: v1 kind: Secret @@ -899,10 +1085,10 @@ metadata: type: Opaque stringData: {{- if $createManagementSecret }} - sync-token: {{ .Values.management.token | quote }} + sync-token: {{ required "management.token or management.existingSecret.name is required — pass the full values document" .Values.management.token | quote }} {{- end }} {{- if $createEncryptionSecret }} - encryption-key: {{ required "runtime.encryption.key or runtime.encryption.existingSecret.name is required" .Values.runtime.encryption.key | quote }} + encryption-key: {{ $encryptionKey | quote }} {{- end }} {{- if .Values.infrastructure }} external-bindings.json: {{ toJson .Values.infrastructure | quote }} @@ -933,6 +1119,11 @@ metadata: {{- include "deployment.labels" . | nindent 4 }} spec: replicas: {{ .Values.runtime.replicas }} + # Recreate guarantees exactly one agent runs at any time, so the + # InstanceLock is never contended — even during a self-update. + strategy: + type: Recreate + progressDeadlineSeconds: {{ .Values.runtime.progressDeadlineSeconds | default 120 }} selector: matchLabels: app.kubernetes.io/name: {{ include "deployment.name" . }} @@ -1018,16 +1209,62 @@ spec: - name: AZURE_REGION value: {{ .Values.basePlatformConfig.azure.location | quote }} {{- end }} + # `required` chart guardrail: any helm upgrade that does not + # carry the full values document fails to render (Helm aborts + # before touching the release). This is the protection against + # bare `helm upgrade` silently resetting the agent's manager + # config — manager-triggered, operator-triggered, or otherwise. - name: SYNC_URL - value: {{ .Values.management.url | quote }} + value: {{ required "management.url is required — pass the full values document" .Values.management.url | quote }} - name: OPERATOR_NAME - value: {{ .Values.management.name | quote }} + value: {{ required "management.name is required — pass the full values document" .Values.management.name | quote }} {{- if .Values.management.deploymentId }} - name: DEPLOYMENT_ID value: {{ .Values.management.deploymentId | quote }} {{- end }} - name: KUBERNETES_NAMESPACE value: {{ .Release.Namespace | quote }} + - name: KUBERNETES_HELM_RELEASE + value: {{ .Release.Name | quote }} + - name: ALIEN_AGENT_UPGRADER_SA + value: {{ include "deployment.upgraderServiceAccountName" . | quote }} + # Reported back on /v1/sync so the dashboard can surface the + # registry an admin will pull a new tag from when pinning a + # target agent version. + - name: ALIEN_AGENT_IMAGE_REPOSITORY + value: {{ .Values.runtime.image.repository | quote }} + {{- if .Values.runtime.upgrade.chartRef }} + # Used by the agent when it receives `agent_target.helm` and + # spawns a Helm-runner Job to apply the new version. The Job + # runs `helm upgrade --reuse-values` against this chart so only + # the manager-supplied `values` override (e.g. image.tag) flips. + - name: ALIEN_AGENT_CHART_REF + value: {{ .Values.runtime.upgrade.chartRef | quote }} + {{- end }} + {{- if .Values.runtime.upgrade.chartVersion }} + - name: ALIEN_AGENT_CHART_VERSION + value: {{ .Values.runtime.upgrade.chartVersion | quote }} + {{- end }} + {{- if .Values.runtime.upgrade.helmRunnerImage }} + - name: ALIEN_AGENT_HELM_RUNNER_IMAGE + value: {{ .Values.runtime.upgrade.helmRunnerImage | quote }} + {{- end }} + {{- if .Values.runtime.upgrade.extraArgs }} + # Extra flags spliced into the `helm upgrade` command the + # agent's helm-runner Job runs. Use sparingly — exists for + # local-dev/insecure OCI registries (`--plain-http`) and + # similar one-off escape hatches; production should leave empty. + - name: ALIEN_AGENT_HELM_EXTRA_ARGS + value: {{ .Values.runtime.upgrade.extraArgs | quote }} + {{- end }} + {{- if .Values.serviceAccountPrefix }} + # Pin the deployment's resource_prefix to the same value used for + # ServiceAccount naming, so Helm-created SAs and vault secret names + # stay aligned across agent restarts (pull-model storage is ephemeral + # and the agent would otherwise regenerate a random prefix each time). + - name: ALIEN_RESOURCE_PREFIX + value: {{ .Values.serviceAccountPrefix | quote }} + {{- end }} - name: DATA_DIR value: {{ .Values.runtime.data.mountPath | quote }} - name: SYNC_TOKEN_FILE diff --git a/crates/alien-infra/src/core/executor.rs b/crates/alien-infra/src/core/executor.rs index d64d63504..a288dfb11 100644 --- a/crates/alien-infra/src/core/executor.rs +++ b/crates/alien-infra/src/core/executor.rs @@ -368,6 +368,17 @@ impl StackExecutor { let resource_type = resource_entry.config.resource_type(); let controller_platform = controller_platform_for_entry(platform, base_platform, resource_entry.lifecycle); + + // Kubernetes ServiceAccounts are created by the Helm chart (with cloud + // identity annotations); worker/daemon/container controllers reference + // them by name. The agent does not provision them, and there is no k8s + // ServiceAccount controller, so skip the controller requirement here. + if matches!(controller_platform, Platform::Kubernetes) + && resource_type.0.as_ref() == "service-account" + { + continue; + } + resource_registry .get_controller(resource_type.clone(), controller_platform) .context(ErrorData::ControllerNotAvailable { @@ -500,6 +511,26 @@ impl StackExecutor { self.deployment_config.external_bindings.has(resource_id) } + /// Resources the platform provides externally, so the agent neither owns a + /// controller for them nor provisions them: Kubernetes ServiceAccounts, + /// which the Helm chart creates (worker/daemon/container controllers + /// reference them by name). Treated like external bindings throughout — + /// short-circuited to Running and exempt from the controller requirement. + fn is_platform_provided_resource(&self, resource_id: &str, platform: Platform) -> bool { + let Some(entry) = self.desired_stack.resources.get(resource_id) else { + return false; + }; + if entry.config.resource_type().0.as_ref() != "service-account" { + return false; + } + let controller_platform = controller_platform_for_entry( + platform, + self.deployment_config.base_platform, + entry.lifecycle, + ); + matches!(controller_platform, Platform::Kubernetes) + } + fn resource_lifecycle( &self, resource_id: &str, @@ -1071,6 +1102,30 @@ impl StackExecutor { continue; } + // Platform-provided resources (Kubernetes ServiceAccounts, created by + // the Helm chart) have no agent controller. Mark them Running, like an + // external binding, so dependents unblock and initial setup completes. + if self.is_platform_provided_resource(resource_id, next_state.platform) { + info!( + "Platform-provided resource '{}' (Helm-managed) -> Running", + resource_id + ); + let mut resource_state = StackResourceState::new_pending( + desired_config.resource.resource_type().to_string(), + desired_config.resource.clone(), + resource_lifecycle, + desired_config.dependencies.clone(), + ); + resource_state.status = ResourceStatus::Running; + resource_state.controller_platform = Some(controller_platform_for_entry( + next_state.platform, + self.deployment_config.base_platform, + desired_config.lifecycle, + )); + initial_transitions.insert(resource_id.clone(), resource_state); + continue; + } + debug!("Preparing CREATE for '{}' -> Pending", resource_id); let pending_view = StackResourceState::new_pending( desired_config.resource.resource_type().to_string(), @@ -1488,10 +1543,12 @@ impl StackExecutor { // We don't need to get a separate controller since the controller is stored // in the internal_state and handles its own stepping if !current_resource_state.has_internal_state() { - if self.is_external_binding_resource(&resource_id) { + if self.is_external_binding_resource(&resource_id) + || self.is_platform_provided_resource(&resource_id, next_state.platform) + { debug!( resource_id = %resource_id, - "External binding resource has no controller state; skipping step" + "Externally-provided resource has no controller state; skipping step" ); } else { warn!( diff --git a/crates/alien-manager/openapi.json b/crates/alien-manager/openapi.json index d951b290c..3645aa324 100644 --- a/crates/alien-manager/openapi.json +++ b/crates/alien-manager/openapi.json @@ -932,6 +932,46 @@ ] } }, + "/v1/rejoin": { + "post": { + "tags": [ + "sync" + ], + "summary": "`POST /v1/rejoin` — re-acquire a deployment-scoped sync token for an\nexisting deployment by name. The OSS handler is intentionally lean:\nthe dg-token caller specifies the name, the store looks up the row,\nand a fresh `Deployment` token is minted and returned. Returns\n`404 Deployment not found` when no row matches — agents should fall\nback to `/v1/initialize` in that case.", + "description": "Distinct from `/v1/initialize`'s idempotency branch because the agent\nwants an explicit, distinguishable code path for \"I lost local state,\nplease re-attach me\" vs \"I'm a brand-new pod claiming a name\". The\nplatform-mode override forwards this to the SaaS rejoin endpoint\nwhere audit / event semantics differ.", + "operationId": "rejoin", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RejoinRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Existing deployment rejoined; fresh token returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RejoinResponse" + } + } + } + }, + "404": { + "description": "No deployment with that name in caller's deployment group" + } + }, + "security": [ + { + "bearer": [] + } + ] + } + }, "/v1/releases": { "get": { "tags": [ @@ -1402,17 +1442,55 @@ "deploymentId" ], "properties": { + "agentArch": { + "type": [ + "string", + "null" + ], + "description": "Agent host arch — `x86_64` / `aarch64`." + }, + "agentImageRepository": { + "type": [ + "string", + "null" + ], + "description": "Image repository the agent was pulled from (no tag), injected by\nthe chart at install time. Surfaced in the dashboard so admins see\nthe registry a pinned tag will be pulled from. Optional and\nKubernetes-only." + }, + "agentOs": { + "type": [ + "string", + "null" + ], + "description": "Agent host OS — `linux` / `macos` / `windows`." + }, + "agentVersion": { + "type": [ + "string", + "null" + ], + "description": "Agent binary version (from `env!(\"CARGO_PKG_VERSION\")` at build time).\nLets the manager build fleet inventory and decide whether to send an\n`agent_target` in the response." + }, "currentState": { "description": "Current deployment state as reported by the agent.\nWhen present, the manager updates the deployment record to reflect\nthe agent's progress (status, stack_state, etc.)." }, "deploymentId": { "type": "string" + }, + "regime": { + "type": [ + "string", + "null" + ], + "description": "Supervisor regime — `os-service` / `kubernetes`." } } }, "AgentSyncResponse": { "type": "object", "properties": { + "agentTarget": { + "description": "Desired agent self-update target. The payload carries either `binary`\n(OS-service flow) or `helm` (Kubernetes flow); the agent picks the\none matching its regime." + }, "commandsUrl": { "type": [ "string", @@ -5991,6 +6069,30 @@ "createdAt" ], "properties": { + "agentArch": { + "type": [ + "string", + "null" + ] + }, + "agentImageRepository": { + "type": [ + "string", + "null" + ] + }, + "agentOs": { + "type": [ + "string", + "null" + ] + }, + "agentVersion": { + "type": [ + "string", + "null" + ] + }, "createdAt": { "type": "string" }, @@ -6050,6 +6152,12 @@ "type": "string", "description": "Required by the platform-SDK Deployment schema. Standalone is\nsingle-tenant; reuse the same synthetic project id used in the\ndeployment-groups route." }, + "regime": { + "type": [ + "string", + "null" + ] + }, "retryRequested": { "type": "boolean" }, @@ -6059,6 +6167,12 @@ "status": { "type": "string" }, + "targetAgentVersion": { + "type": [ + "string", + "null" + ] + }, "updatedAt": { "type": [ "string", @@ -11139,6 +11253,33 @@ } } }, + "RejoinRequest": { + "type": "object", + "description": "`POST /v1/rejoin` — re-acquire a deployment-scoped sync token for an\nagent whose persistent state was wiped (e.g. emptyDir on pod restart).\n\nThe agent calls this when `/v1/initialize` returns a name-conflict\nerror: the deployment row already exists, so creating it would 409,\nbut the agent legitimately needs a new sync token to keep operating\nagainst it. Auth is the same dg bearer the chart originally mounted.\n\n`name` is required — without it the server can't disambiguate which\nrow to reattach to.", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + } + } + }, + "RejoinResponse": { + "type": "object", + "required": [ + "deploymentId", + "token" + ], + "properties": { + "deploymentId": { + "type": "string" + }, + "token": { + "type": "string" + } + } + }, "ReleaseRequest": { "type": "object", "required": [ diff --git a/crates/alien-manager/src/api.rs b/crates/alien-manager/src/api.rs index 9a1b27a10..55dc29ce4 100644 --- a/crates/alien-manager/src/api.rs +++ b/crates/alien-manager/src/api.rs @@ -43,6 +43,7 @@ use utoipa::OpenApi; crate::routes::sync::release, crate::routes::sync::agent_sync, crate::routes::sync::initialize, + crate::routes::sync::rejoin, // Credentials crate::routes::credentials::resolve_credentials, ), @@ -83,6 +84,8 @@ use utoipa::OpenApi; crate::routes::sync::AgentSyncResponse, crate::routes::sync::InitializeRequest, crate::routes::sync::InitializeResponse, + crate::routes::sync::RejoinRequest, + crate::routes::sync::RejoinResponse, // Credentials types crate::routes::credentials::ResolveCredentialsRequest, crate::routes::credentials::ResolveCredentialsResponse, diff --git a/crates/alien-manager/src/builder.rs b/crates/alien-manager/src/builder.rs index 0495d24f0..f0cc965cc 100644 --- a/crates/alien-manager/src/builder.rs +++ b/crates/alien-manager/src/builder.rs @@ -30,6 +30,9 @@ pub struct AlienManagerBuilder { skip_initialize: bool, /// When `true`, the install script (`/v1/install`) is omitted from the router. skip_install: bool, + /// When `true`, the default `/v1/rejoin` route is omitted. Multi-tenant + /// embedders override this to forward to the SaaS rejoin endpoint. + skip_rejoin: bool, /// Override the bindings provider for cross-account registry access. /// When set in `with_standalone_defaults()`, this is stored in `ServerBindings` /// so `reconcile_registry_access()` can load the artifact registry and grant @@ -70,6 +73,7 @@ impl AlienManagerBuilder { log_buffer: None, skip_initialize: false, skip_install: false, + skip_rejoin: false, bindings_provider_override: None, target_bindings_providers_override: None, import_registry: None, @@ -162,6 +166,14 @@ impl AlienManagerBuilder { self } + /// Skip the default `/v1/rejoin` route. + /// Use this when embedding in a process that overrides rejoin via `extra_routes` + /// (e.g. multi-tenant managerx that forwards to the platform API). + pub fn skip_rejoin(mut self) -> Self { + self.skip_rejoin = true; + self + } + /// Inject a custom `/v1/stack/import` dispatch registry. Defaults to /// [`alien_infra::ImporterRegistry::built_in`]. /// @@ -632,6 +644,7 @@ impl AlienManagerBuilder { crate::routes::RouterOptions { include_initialize: !self.skip_initialize, include_install: !self.skip_install, + include_rejoin: !self.skip_rejoin, }, self.extra_routes, self.platform_routes, diff --git a/crates/alien-manager/src/loops/deployment.rs b/crates/alien-manager/src/loops/deployment.rs index 9e0da8ff2..a7f35aef1 100644 --- a/crates/alien-manager/src/loops/deployment.rs +++ b/crates/alien-manager/src/loops/deployment.rs @@ -445,6 +445,13 @@ impl DeploymentLoop { update_heartbeat: false, suggested_delay_ms: None, heartbeats: Vec::new(), + // Background driver loop — no agent sync here, + // so leave the agent-inventory columns untouched. + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, }, ) .await?; @@ -958,6 +965,12 @@ mod tests { created_at: Utc::now(), updated_at: None, error: None, + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, + target_agent_version: None, } } diff --git a/crates/alien-manager/src/providers/oss_authz.rs b/crates/alien-manager/src/providers/oss_authz.rs index 01c3c40d4..bc0167e56 100644 --- a/crates/alien-manager/src/providers/oss_authz.rs +++ b/crates/alien-manager/src/providers/oss_authz.rs @@ -288,6 +288,12 @@ mod tests { created_at: Utc::now(), updated_at: None, error: None, + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, + target_agent_version: None, } } diff --git a/crates/alien-manager/src/routes/deployments.rs b/crates/alien-manager/src/routes/deployments.rs index 8cb2c7b5d..a168ada15 100644 --- a/crates/alien-manager/src/routes/deployments.rs +++ b/crates/alien-manager/src/routes/deployments.rs @@ -4,7 +4,7 @@ use axum::{ extract::{Path, State}, http::{request::Parts, HeaderMap, StatusCode}, response::{IntoResponse, Response}, - routing::{get, post}, + routing::{get, post, put}, Json, Router, }; use serde::{Deserialize, Serialize}; @@ -90,6 +90,20 @@ pub struct DeploymentResponse { pub error: Option, #[serde(skip_serializing_if = "Option::is_none")] pub deployment_group: Option, + // Agent self-update inventory — populated by the sync handler + // on every agent /v1/sync. NULL until the agent has first reported. + #[serde(skip_serializing_if = "Option::is_none")] + pub agent_version: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub agent_os: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub agent_arch: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub regime: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub agent_image_repository: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub target_agent_version: Option, } #[derive(Debug, Serialize, Clone)] @@ -217,6 +231,10 @@ pub fn router() -> Router { .route("/v1/deployments/{id}/info", get(get_deployment_info)) .route("/v1/deployments/{id}/retry", post(retry_deployment)) .route("/v1/deployments/{id}/redeploy", post(redeploy)) + .route( + "/v1/deployments/{id}/target-agent-version", + put(set_target_agent_version), + ) } // --- Helpers --- @@ -264,6 +282,13 @@ fn record_to_response( ), error: r.error.clone(), deployment_group, + // Surface the agent self-update inventory. + agent_version: r.agent_version.clone(), + agent_os: r.agent_os.clone(), + agent_arch: r.agent_arch.clone(), + regime: r.regime.clone(), + agent_image_repository: r.agent_image_repository.clone(), + target_agent_version: r.target_agent_version.clone(), } } @@ -831,3 +856,99 @@ async fn redeploy( Json(serde_json::json!({ "success": true })).into_response() } + +#[derive(Debug, Deserialize)] +#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))] +#[serde(rename_all = "camelCase")] +pub struct SetTargetAgentVersionRequest { + /// Target agent version (semver). `None`/omitted clears the target. + #[serde(default)] + pub target_agent_version: Option, +} + +/// Admin-only knob behind the dashboard's "Set target version" control +/// (and the equivalent flow on the SaaS API). Writes +/// `target_agent_version` on the deployment row; the sync handler reads +/// it on each /v1/sync and emits `agent_target` whenever it differs from +/// the agent's reported version, until they match. +#[cfg_attr(feature = "openapi", utoipa::path( + put, + path = "/v1/deployments/{id}/target-agent-version", + tag = "deployments", + params( + ("id" = String, Path, description = "Deployment ID"), + ), + request_body = SetTargetAgentVersionRequest, + responses( + (status = 202, description = "Target agent version updated"), + (status = 401, description = "Unauthorized"), + (status = 403, description = "Forbidden"), + (status = 404, description = "Not found"), + ) +))] +async fn set_target_agent_version( + State(state): State, + headers: HeaderMap, + Path(id): Path, + Json(req): Json, +) -> Response { + let subject = match auth::require_auth(&state, &headers).await { + Ok(s) => s, + Err(e) => return e.into_response(), + }; + + let deployment = match state.deployment_store.get_deployment(&subject, &id).await { + Ok(Some(d)) => d, + Ok(None) => return ErrorData::not_found_deployment(&id).into_response(), + Err(e) => return e.into_response(), + }; + if !state.authz.can_update_deployment(&subject, &deployment) { + return ErrorData::forbidden("Cannot set target agent version").into_response(); + } + + // Reject clearly-malformed semver early so admins get a 4xx rather + // than the agent silently ignoring an unparseable tag later. + if let Some(v) = req.target_agent_version.as_deref() { + if !is_plausible_semver(v) { + return ErrorData::bad_request( + "targetAgentVersion must be a semver string (e.g. 1.4.0)", + ) + .into_response(); + } + } + + if let Err(e) = state + .deployment_store + .set_target_agent_version(&subject, &id, req.target_agent_version.as_deref()) + .await + { + return e.into_response(); + } + + ( + StatusCode::ACCEPTED, + Json(serde_json::json!({ "success": true })), + ) + .into_response() +} + +/// Permissive semver check — `MAJOR.MINOR.PATCH` with optional `-prerelease` +/// or `+build` suffix. Mirrors the platform API's regex; not full SemVer +/// 2.0.0 grammar but catches typos and accidental whitespace. +fn is_plausible_semver(v: &str) -> bool { + let mut parts = v.splitn(2, |c| c == '-' || c == '+'); + let core = parts.next().unwrap_or(""); + let core_ok = { + let segs: Vec<&str> = core.split('.').collect(); + segs.len() == 3 + && segs + .iter() + .all(|s| !s.is_empty() && s.chars().all(|c| c.is_ascii_digit())) + }; + let rest_ok = parts.next().map_or(true, |r| { + !r.is_empty() + && r.chars() + .all(|c| c.is_ascii_alphanumeric() || c == '.' || c == '-') + }); + core_ok && rest_ok +} diff --git a/crates/alien-manager/src/routes/mod.rs b/crates/alien-manager/src/routes/mod.rs index 93187ffce..c45a0ab1d 100644 --- a/crates/alien-manager/src/routes/mod.rs +++ b/crates/alien-manager/src/routes/mod.rs @@ -90,6 +90,7 @@ pub fn create_router(state: AppState) -> Router { RouterOptions { include_initialize: true, include_install: true, + include_rejoin: true, }, ) .layer(cors) @@ -99,6 +100,11 @@ pub fn create_router(state: AppState) -> Router { pub struct RouterOptions { pub include_initialize: bool, pub include_install: bool, + /// Whether to mount `/v1/rejoin`. Multi-tenant embedders set this + /// to `false` and provide their own override that forwards to the + /// SaaS rejoin endpoint where audit / token-rotation semantics + /// differ. + pub include_rejoin: bool, } /// Like [`create_router`], but lets the caller opt-out of specific routes. @@ -147,6 +153,9 @@ pub fn create_router_inner(state: AppState, options: RouterOptions) -> Router { if options.include_initialize { router = router.merge(sync::initialize_router()); } + if options.include_rejoin { + router = router.merge(sync::rejoin_router()); + } router.with_state(state) } diff --git a/crates/alien-manager/src/routes/sync.rs b/crates/alien-manager/src/routes/sync.rs index fdd746f71..19198e5c1 100644 --- a/crates/alien-manager/src/routes/sync.rs +++ b/crates/alien-manager/src/routes/sync.rs @@ -113,6 +113,26 @@ pub struct AgentSyncRequest { /// the agent's progress (status, stack_state, etc.). #[serde(default)] pub current_state: Option, + /// Agent binary version (from `env!("CARGO_PKG_VERSION")` at build time). + /// Lets the manager build fleet inventory and decide whether to send an + /// `agent_target` in the response. + #[serde(default)] + pub agent_version: Option, + /// Agent host OS — `linux` / `macos` / `windows`. + #[serde(default)] + pub agent_os: Option, + /// Agent host arch — `x86_64` / `aarch64`. + #[serde(default)] + pub agent_arch: Option, + /// Supervisor regime — `os-service` / `kubernetes`. + #[serde(default)] + pub regime: Option, + /// Image repository the agent was pulled from (no tag), injected by + /// the chart at install time. Surfaced in the dashboard so admins see + /// the registry a pinned tag will be pulled from. Optional and + /// Kubernetes-only. + #[serde(default)] + pub agent_image_repository: Option, } #[derive(Debug, Serialize)] @@ -131,6 +151,11 @@ pub struct AgentSyncResponse { /// to poll for pending commands instead of the agent's local sync URL. #[serde(skip_serializing_if = "Option::is_none")] pub commands_url: Option, + /// Desired agent self-update target. The payload carries either `binary` + /// (OS-service flow) or `helm` (Kubernetes flow); the agent picks the + /// one matching its regime. + #[serde(skip_serializing_if = "Option::is_none")] + pub agent_target: Option, } #[derive(Debug, Deserialize)] @@ -160,6 +185,31 @@ pub struct InitializeResponse { pub token: Option, } +/// `POST /v1/rejoin` — re-acquire a deployment-scoped sync token for an +/// agent whose persistent state was wiped (e.g. emptyDir on pod restart). +/// +/// The agent calls this when `/v1/initialize` returns a name-conflict +/// error: the deployment row already exists, so creating it would 409, +/// but the agent legitimately needs a new sync token to keep operating +/// against it. Auth is the same dg bearer the chart originally mounted. +/// +/// `name` is required — without it the server can't disambiguate which +/// row to reattach to. +#[derive(Debug, Deserialize)] +#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))] +#[serde(rename_all = "camelCase")] +pub struct RejoinRequest { + pub name: String, +} + +#[derive(Debug, Serialize)] +#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))] +#[serde(rename_all = "camelCase")] +pub struct RejoinResponse { + pub deployment_id: String, + pub token: String, +} + // --- Router --- pub fn router() -> Router { @@ -178,6 +228,16 @@ pub fn initialize_router() -> Router { Router::new().route("/v1/initialize", post(initialize)) } +/// Router for the `/v1/rejoin` endpoint only. +/// +/// Same separation rationale as `initialize_router` — multi-tenant +/// embedders override this with one that forwards to their upstream API +/// so token issuance lives on the SaaS side, not in the local manager +/// store. +pub fn rejoin_router() -> Router { + Router::new().route("/v1/rejoin", post(rejoin)) +} + // --- Handlers --- /// `POST /v1/sync/acquire` — Inbound: workspace / dg / deployment bearer. @@ -377,6 +437,14 @@ async fn reconcile( update_heartbeat: req.update_heartbeat, suggested_delay_ms: req.suggested_delay_ms, heartbeats: req.heartbeats, + // Non-agent reconcile path (push/platform-api) doesn't carry + // the agent self-update inventory; leave it out of the + // forwarded request. + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, }, ) .await @@ -551,7 +619,6 @@ mod tests { "memory": null, "workload": null, "pods": [], - "instances": [], "events": [] } }, @@ -844,6 +911,12 @@ mod tests { created_at: now, updated_at: Some(now), error: None, + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, + target_agent_version: None, } } } @@ -888,6 +961,31 @@ async fn agent_sync( return ErrorData::forbidden("Access denied").into_response(); } + // Persist the agent self-update inventory the agent reported on this sync + // (`agent_version`, `agent_os`, `agent_arch`, `regime`). Runs on every + // sync regardless of whether the agent reported a state change, so the + // manager has a fleet-wide view of which version each host is on. Old + // agents that don't send these fields are no-ops. + if let Err(e) = state + .deployment_store + .update_agent_metadata( + &subject, + &req.deployment_id, + req.agent_version.as_deref(), + req.agent_os.as_deref(), + req.agent_arch.as_deref(), + req.regime.as_deref(), + req.agent_image_repository.as_deref(), + ) + .await + { + tracing::warn!( + deployment_id = %req.deployment_id, + error = %e, + "Failed to persist agent self-update inventory; continuing sync" + ); + } + // If the agent reported its current state, persist it to the deployment record. // This is how pull-mode agents propagate status changes (e.g. Pending → Running) // back to the manager so that API consumers can observe deployment progress. @@ -923,6 +1021,15 @@ async fn agent_sync( update_heartbeat: true, heartbeats: vec![], suggested_delay_ms: None, + // Forward the agent self-update inventory the + // agent reported on this sync so multi-tenant + // embedders can persist it in their own + // deployment row. + agent_version: req.agent_version.clone(), + agent_os: req.agent_os.clone(), + agent_arch: req.agent_arch.clone(), + regime: req.regime.clone(), + agent_image_repository: req.agent_image_repository.clone(), }, ) .await @@ -1100,6 +1207,13 @@ async fn agent_sync( None }; + // Agent upgrade decision: if the deployment has a pinned target version + // that differs from what the agent just reported, drive an upgrade via + // `agent_target` in the response. + let agent_target = + build_agent_target(&deployment, req.agent_version.as_deref(), req.regime.as_deref()) + .and_then(|t| serde_json::to_value(t).ok()); + Json(AgentSyncResponse { current_state, target: match target.map(|t| serde_json::to_value(&t)).transpose() { @@ -1111,10 +1225,55 @@ async fn agent_sync( } }, commands_url: Some(state.config.commands_base_url()), + agent_target, }) .into_response() } +/// Build `AgentTarget` when `deployment.target_agent_version` is set AND +/// differs from what the agent just reported. The regime field controls +/// which sub-target (`binary` for os-service, `helm` for kubernetes) gets +/// populated. +/// +/// k8s-only MVP: only the helm path is wired. chart_repo / chart_version are +/// emitted as empty strings — the agent re-uses its current chart_ref (from +/// the existing helm release metadata) and only the values overlay flips the +/// `runtime.image.tag`. This avoids per-version chart re-publication. +fn build_agent_target( + deployment: &crate::traits::DeploymentRecord, + reported_version: Option<&str>, + regime: Option<&str>, +) -> Option { + let target_version = deployment.target_agent_version.as_deref()?; + if reported_version == Some(target_version) { + return None; + } + let helm = (regime == Some("kubernetes")).then(|| alien_core::sync::AgentHelmTarget { + // Agent reads chart_repo/chart_version directly; when empty it falls + // back to its `ALIEN_AGENT_CHART_REF` / `ALIEN_AGENT_CHART_VERSION` + // env vars (injected by the chart at install time). Leaving blank + // here keeps the manager out of the per-project chart catalog — + // upgrade follow-on can plumb explicit refs when chart shape changes + // between agent versions, which it doesn't today. + chart_repo: String::new(), + chart_version: String::new(), + values: serde_json::json!({ + "runtime": { "image": { "tag": target_version } } + }), + sensitive_values: Default::default(), + }); + if helm.is_none() { + // os-service path not in this MVP — skip without emitting. + return None; + } + Some(alien_core::sync::AgentTarget { + version: target_version.to_string(), + min_supported_version: target_version.to_string(), + binary: None, + helm, + }) +} + fn release_stack_platform(platform: Platform) -> Platform { platform } @@ -1310,6 +1469,82 @@ fn release_info_from_record( }) } +/// `POST /v1/rejoin` — re-acquire a deployment-scoped sync token for an +/// existing deployment by name. The OSS handler is intentionally lean: +/// the dg-token caller specifies the name, the store looks up the row, +/// and a fresh `Deployment` token is minted and returned. Returns +/// `404 Deployment not found` when no row matches — agents should fall +/// back to `/v1/initialize` in that case. +/// +/// Distinct from `/v1/initialize`'s idempotency branch because the agent +/// wants an explicit, distinguishable code path for "I lost local state, +/// please re-attach me" vs "I'm a brand-new pod claiming a name". The +/// platform-mode override forwards this to the SaaS rejoin endpoint +/// where audit / event semantics differ. +#[cfg_attr(feature = "openapi", utoipa::path( + post, + path = "/v1/rejoin", + tag = "sync", + request_body = RejoinRequest, + responses( + (status = 200, description = "Existing deployment rejoined; fresh token returned", body = RejoinResponse), + (status = 404, description = "No deployment with that name in caller's deployment group"), + ), + security( + ("bearer" = []) + ) +))] +async fn rejoin( + State(state): State, + headers: HeaderMap, + Json(req): Json, +) -> Response { + let subject = match auth::require_auth(&state, &headers).await { + Ok(s) => s, + Err(e) => return e.into_response(), + }; + + let dg_id = match subject.scope.clone() { + crate::auth::Scope::DeploymentGroup { + deployment_group_id, + .. + } => deployment_group_id, + _ => { + return ErrorData::forbidden("Rejoin requires a deployment-group token").into_response(); + } + }; + + let existing = match state + .deployment_store + .get_deployment_by_name(&subject, &dg_id, &req.name) + .await + { + Ok(Some(d)) => d, + Ok(None) => return ErrorData::not_found_deployment(&req.name).into_response(), + Err(e) => return e.into_response(), + }; + + let (raw_token, key_prefix, key_hash) = ids::generate_token(TokenType::Deployment.prefix()); + match state + .token_store + .create_token(CreateTokenParams { + token_type: TokenType::Deployment, + key_prefix, + key_hash, + deployment_group_id: Some(dg_id), + deployment_id: Some(existing.id.clone()), + }) + .await + { + Ok(_) => Json(RejoinResponse { + deployment_id: existing.id, + token: raw_token, + }) + .into_response(), + Err(e) => e.into_response(), + } +} + /// `POST /v1/initialize` — Inbound: deployment-group bearer (typical), /// or workspace bearer for self-hosted operator workflows. New deployments /// are created via `DeploymentStore::create_deployment(caller, …)` so diff --git a/crates/alien-manager/src/stores/sqlite/deployment.rs b/crates/alien-manager/src/stores/sqlite/deployment.rs index 8be417014..6a3aa0b54 100644 --- a/crates/alien-manager/src/stores/sqlite/deployment.rs +++ b/crates/alien-manager/src/stores/sqlite/deployment.rs @@ -118,7 +118,7 @@ impl SqliteDeploymentStore { } /// All columns needed for deployment queries (must match parse_deployment order). - const DEPLOYMENT_COLUMNS: [Deployments; 27] = [ + const DEPLOYMENT_COLUMNS: [Deployments; 33] = [ Deployments::Id, Deployments::Name, Deployments::DeploymentGroupId, @@ -146,6 +146,14 @@ impl SqliteDeploymentStore { Deployments::Error, Deployments::WorkspaceId, Deployments::ProjectId, + // Agent self-update inventory: + Deployments::AgentVersion, + Deployments::AgentOs, + Deployments::AgentArch, + Deployments::Regime, + Deployments::AgentImageRepository, + // Manager-driven upgrade target: + Deployments::TargetAgentVersion, ]; fn parse_deployment(row: &turso::Row) -> Result { @@ -216,6 +224,13 @@ impl SqliteDeploymentStore { project_id: p .optional_string(26, "project_id")? .unwrap_or_else(|| "default".to_string()), + // Agent self-update inventory; indices match DEPLOYMENT_COLUMNS order. + agent_version: p.optional_string(27, "agent_version")?, + agent_os: p.optional_string(28, "agent_os")?, + agent_arch: p.optional_string(29, "agent_arch")?, + regime: p.optional_string(30, "regime")?, + agent_image_repository: p.optional_string(31, "agent_image_repository")?, + target_agent_version: p.optional_string(32, "target_agent_version")?, }) } @@ -343,6 +358,12 @@ mod tests { created_at: now, updated_at: Some(now), error: None, + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, + target_agent_version: None, } } } @@ -476,6 +497,13 @@ impl DeploymentStore for SqliteDeploymentStore { created_at: now, updated_at: None, error: None, + // Agent self-update inventory — NULL until the agent's first sync. + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, + target_agent_version: None, }) } @@ -639,6 +667,13 @@ impl DeploymentStore for SqliteDeploymentStore { created_at: now, updated_at: None, error: None, + // Agent self-update inventory — NULL until the agent's first sync. + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, + target_agent_version: None, }) } @@ -895,6 +930,52 @@ impl DeploymentStore for SqliteDeploymentStore { self.db.execute(&sql).await } + async fn update_agent_metadata( + &self, + _caller: &crate::auth::Subject, + id: &str, + agent_version: Option<&str>, + agent_os: Option<&str>, + agent_arch: Option<&str>, + regime: Option<&str>, + agent_image_repository: Option<&str>, + ) -> Result<(), AlienError> { + // Nothing to do if the agent didn't report any of these fields + // (e.g. an older agent on the wire). + if agent_version.is_none() + && agent_os.is_none() + && agent_arch.is_none() + && regime.is_none() + && agent_image_repository.is_none() + { + return Ok(()); + } + // Build the SQL string in a sub-scope so the non-Send sea_query + // `UpdateStatement` is dropped before the await. + let sql = { + let mut q = Query::update(); + q.table(Deployments::Table); + if let Some(v) = agent_version { + q.value(Deployments::AgentVersion, v); + } + if let Some(v) = agent_os { + q.value(Deployments::AgentOs, v); + } + if let Some(v) = agent_arch { + q.value(Deployments::AgentArch, v); + } + if let Some(v) = regime { + q.value(Deployments::Regime, v); + } + if let Some(v) = agent_image_repository { + q.value(Deployments::AgentImageRepository, v); + } + q.and_where(Expr::col(Deployments::Id).eq(id)) + .to_string(SqliteQueryBuilder) + }; + self.db.execute(&sql).await + } + async fn set_redeploy( &self, _caller: &crate::auth::Subject, @@ -908,6 +989,26 @@ impl DeploymentStore for SqliteDeploymentStore { self.db.execute(&sql).await } + async fn set_target_agent_version( + &self, + _caller: &crate::auth::Subject, + id: &str, + target_agent_version: Option<&str>, + ) -> Result<(), AlienError> { + let sql = { + let mut q = Query::update(); + q.table(Deployments::Table); + match target_agent_version { + Some(v) => q.value(Deployments::TargetAgentVersion, v), + // sea_query treats `Option::<&str>::None` as SQL NULL. + None => q.value(Deployments::TargetAgentVersion, Option::<&str>::None), + }; + q.and_where(Expr::col(Deployments::Id).eq(id)) + .to_string(SqliteQueryBuilder) + }; + self.db.execute(&sql).await + } + async fn set_deployment_desired_release( &self, _caller: &crate::auth::Subject, diff --git a/crates/alien-manager/src/stores/sqlite/migrations.rs b/crates/alien-manager/src/stores/sqlite/migrations.rs index 78861ccd9..758f355de 100644 --- a/crates/alien-manager/src/stores/sqlite/migrations.rs +++ b/crates/alien-manager/src/stores/sqlite/migrations.rs @@ -42,6 +42,22 @@ pub(crate) enum Deployments { WorkspaceId, /// Project this deployment belongs to. Always `"default"` in this store. ProjectId, + // Agent self-update inventory. Populated by the sync handler from the + // matching SyncRequest fields on every /v1/sync. + /// Agent binary version (e.g. `"1.3.5"`). NULL until first sync. + AgentVersion, + /// `linux` / `macos` / `windows`. NULL until first sync. + AgentOs, + /// `x86_64` / `aarch64`. NULL until first sync. + AgentArch, + /// Supervisor regime — `os-service` / `kubernetes`. NULL until first sync. + Regime, + /// Image repository the agent was pulled from (no tag), reported on + /// each sync. Drives the dashboard's pin-version registry display. + AgentImageRepository, + /// Pinned target agent version. NULL = no pin. When set ≠ AgentVersion, + /// sync handler emits `agent_target` to drive an upgrade. + TargetAgentVersion, } #[derive(Iden, Clone, Copy)] @@ -321,6 +337,19 @@ pub async fn run_migrations(db: &SqliteDatabase) -> Result<(), AlienError> { "ALTER TABLE releases ADD COLUMN project_id TEXT NOT NULL DEFAULT 'default'", "ALTER TABLE deployment_groups ADD COLUMN workspace_id TEXT NOT NULL DEFAULT 'default'", "ALTER TABLE deployment_groups ADD COLUMN project_id TEXT NOT NULL DEFAULT 'default'", + // Agent self-update inventory: populated by the sync handler from + // the new SyncRequest fields on every /v1/sync. + "ALTER TABLE deployments ADD COLUMN agent_version TEXT", + "ALTER TABLE deployments ADD COLUMN agent_os TEXT", + "ALTER TABLE deployments ADD COLUMN agent_arch TEXT", + "ALTER TABLE deployments ADD COLUMN regime TEXT", + // Image repository the agent was pulled from, reported on sync. + // Surfaced in the dashboard pin-version UI so admins see the registry. + "ALTER TABLE deployments ADD COLUMN agent_image_repository TEXT", + // Pinned target agent version. Sync handler reads this on every + // request and emits agent_target when it differs from the agent's + // reported version. Drives the manager-directed upgrade flow. + "ALTER TABLE deployments ADD COLUMN target_agent_version TEXT", ]; for sql in alter_statements { if let Err(e) = conn.execute(sql, ()).await { diff --git a/crates/alien-manager/src/traits/deployment_store.rs b/crates/alien-manager/src/traits/deployment_store.rs index a0635468d..20ffe7a94 100644 --- a/crates/alien-manager/src/traits/deployment_store.rs +++ b/crates/alien-manager/src/traits/deployment_store.rs @@ -73,6 +73,26 @@ pub struct DeploymentRecord { pub created_at: DateTime, pub updated_at: Option>, pub error: Option, + // Agent self-update inventory, written by the sync handler. + // All four are NULL until the agent has actually reported in. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub agent_version: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub agent_os: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub agent_arch: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub regime: Option, + // Image repository the agent was pulled from, reported on sync. + // Surfaced in the dashboard pin-version UI so admins see the registry. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub agent_image_repository: Option, + + // Desired agent version. When set AND ≠ `agent_version`, the sync + // handler emits `agent_target` in the response so the agent triggers + // an upgrade. NULL = no pin, no upgrade. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub target_agent_version: Option, } impl std::fmt::Debug for DeploymentRecord { @@ -228,6 +248,16 @@ pub struct ReconcileData { pub update_heartbeat: bool, pub suggested_delay_ms: Option, pub heartbeats: Vec, + /// Agent self-update inventory the agent reported on this sync. Forwarded + /// by multi-tenant embedders into their platform-side reconcile request so + /// the SaaS dashboard can show fleet inventory. Each `None` means "leave + /// the existing column untouched" rather than "blank it" — important for + /// back-compat with agents that don't report these fields. + pub agent_version: Option, + pub agent_os: Option, + pub agent_arch: Option, + pub regime: Option, + pub agent_image_repository: Option, } /// Persistence for deployments and deployment groups. @@ -331,6 +361,37 @@ pub trait DeploymentStore: Send + Sync { id: &str, ) -> Result<(), AlienError>; + /// Persist the agent self-update inventory reported on a `SyncRequest` + /// (`agent_version`, `agent_os`, `agent_arch`, `regime`, image repo). + /// Called on every agent sync — alongside the heartbeat update — so the + /// manager has a fleet-wide view of which version + registry each host + /// is on and can decide whether to send an `agent_target` in the + /// response. A field of `None` leaves the corresponding column + /// untouched. + async fn update_agent_metadata( + &self, + caller: &crate::auth::Subject, + id: &str, + agent_version: Option<&str>, + agent_os: Option<&str>, + agent_arch: Option<&str>, + regime: Option<&str>, + agent_image_repository: Option<&str>, + ) -> Result<(), AlienError>; + + /// Set (or clear with `None`) the deployment's target agent version. + /// When set AND different from the agent's reported `agent_version` the + /// sync handler emits `agent_target` on every /v1/sync until the agent + /// catches up. This is the admin-side knob behind the dashboard's + /// "Set target version" control and the standalone manager's + /// `PUT /v1/deployments/:id/target-agent-version` endpoint. + async fn set_target_agent_version( + &self, + caller: &crate::auth::Subject, + id: &str, + target_agent_version: Option<&str>, + ) -> Result<(), AlienError>; + async fn set_redeploy(&self, caller: &crate::auth::Subject, id: &str) -> Result<(), AlienError>; diff --git a/crates/alien-manager/src/transports/manager.rs b/crates/alien-manager/src/transports/manager.rs index aa357dc92..c7ddca1de 100644 --- a/crates/alien-manager/src/transports/manager.rs +++ b/crates/alien-manager/src/transports/manager.rs @@ -81,6 +81,13 @@ impl DeploymentLoopTransport for ManagerTransport { update_heartbeat, suggested_delay_ms, heartbeats, + // Background reconciliation from inside the manager — no + // agent self-update inventory in this code path. + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, }, ) .await?; diff --git a/crates/alien-manager/tests/registry_proxy_cloud_test.rs b/crates/alien-manager/tests/registry_proxy_cloud_test.rs index 1657404cf..497a5f0f5 100644 --- a/crates/alien-manager/tests/registry_proxy_cloud_test.rs +++ b/crates/alien-manager/tests/registry_proxy_cloud_test.rs @@ -453,6 +453,11 @@ impl CloudProxyTest { update_heartbeat: false, heartbeats: vec![], suggested_delay_ms: None, + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, }, ) .await diff --git a/crates/alien-manager/tests/registry_proxy_test.rs b/crates/alien-manager/tests/registry_proxy_test.rs index 6ef52cff3..d04d6cf7c 100644 --- a/crates/alien-manager/tests/registry_proxy_test.rs +++ b/crates/alien-manager/tests/registry_proxy_test.rs @@ -343,6 +343,11 @@ async fn setup() -> TestSetup { update_heartbeat: false, heartbeats: vec![], suggested_delay_ms: None, + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, }, ) .await @@ -816,6 +821,11 @@ async fn test_proxy_push_then_pull() { update_heartbeat: false, heartbeats: vec![], suggested_delay_ms: None, + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, }, ) .await diff --git a/crates/alien-manager/tests/sqlite_store_tests.rs b/crates/alien-manager/tests/sqlite_store_tests.rs index e31f004a8..57c734696 100644 --- a/crates/alien-manager/tests/sqlite_store_tests.rs +++ b/crates/alien-manager/tests/sqlite_store_tests.rs @@ -693,6 +693,11 @@ async fn reconcile_succeeds_under_other_session_lock() { update_heartbeat: false, heartbeats: vec![], suggested_delay_ms: None, + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, }, ) .await @@ -757,6 +762,11 @@ async fn reconcile_refreshes_owned_lock_lease() { update_heartbeat: false, heartbeats: vec![], suggested_delay_ms: None, + agent_version: None, + agent_os: None, + agent_arch: None, + regime: None, + agent_image_repository: None, }, ) .await @@ -1223,3 +1233,154 @@ async fn release_not_found() { .unwrap(); assert!(result.is_none()); } + +// ---------- Agent self-update inventory ---------------------------------- + +/// A freshly-created deployment has no agent inventory until the first sync. +#[tokio::test] +async fn agent_metadata_is_null_until_first_sync_report() { + let db = fresh_db().await; + let store = SqliteDeploymentStore::new(db.clone()); + let group_id = create_test_group(&store).await; + let dep = + create_test_deployment(&store, &group_id, "fresh", Platform::Kubernetes).await; + + let fetched = store + .get_deployment(&test_subject(), &dep.id) + .await + .unwrap() + .expect("deployment exists"); + assert!(fetched.agent_version.is_none(), "agent_version must be NULL pre-sync"); + assert!(fetched.agent_os.is_none()); + assert!(fetched.agent_arch.is_none()); + assert!(fetched.regime.is_none()); +} + +/// The agent reports its full inventory on a sync; the manager writes +/// all four columns. A subsequent read sees the persisted values. +#[tokio::test] +async fn update_agent_metadata_persists_full_inventory() { + let db = fresh_db().await; + let store = SqliteDeploymentStore::new(db.clone()); + let group_id = create_test_group(&store).await; + let dep = + create_test_deployment(&store, &group_id, "k8s", Platform::Kubernetes).await; + + store + .update_agent_metadata( + &test_subject(), + &dep.id, + Some("1.4.0"), + Some("linux"), + Some("aarch64"), + Some("kubernetes"), + Some("ghcr.io/alien-dev/alien-agent"), + ) + .await + .unwrap(); + + let fetched = store + .get_deployment(&test_subject(), &dep.id) + .await + .unwrap() + .unwrap(); + assert_eq!(fetched.agent_version.as_deref(), Some("1.4.0")); + assert_eq!(fetched.agent_os.as_deref(), Some("linux")); + assert_eq!(fetched.agent_arch.as_deref(), Some("aarch64")); + assert_eq!(fetched.regime.as_deref(), Some("kubernetes")); + assert_eq!( + fetched.agent_image_repository.as_deref(), + Some("ghcr.io/alien-dev/alien-agent") + ); +} + +/// An old agent that doesn't send any of the new fields is a no-op: +/// previously-persisted values must be preserved (the call must not +/// blank existing inventory). +#[tokio::test] +async fn update_agent_metadata_with_all_none_is_a_noop() { + let db = fresh_db().await; + let store = SqliteDeploymentStore::new(db.clone()); + let group_id = create_test_group(&store).await; + let dep = + create_test_deployment(&store, &group_id, "k8s", Platform::Kubernetes).await; + + // First, populate. + store + .update_agent_metadata( + &test_subject(), + &dep.id, + Some("1.4.0"), + Some("linux"), + Some("aarch64"), + Some("kubernetes"), + Some("ghcr.io/alien-dev/alien-agent"), + ) + .await + .unwrap(); + + // Then a "back-compat" old-agent sync: every field is None. + store + .update_agent_metadata(&test_subject(), &dep.id, None, None, None, None, None) + .await + .unwrap(); + + let fetched = store + .get_deployment(&test_subject(), &dep.id) + .await + .unwrap() + .unwrap(); + assert_eq!(fetched.agent_version.as_deref(), Some("1.4.0")); + assert_eq!(fetched.regime.as_deref(), Some("kubernetes")); +} + +/// A partial update only touches the specified columns — useful for +/// agents that learn about new fields over time. +#[tokio::test] +async fn update_agent_metadata_partial_update_preserves_others() { + let db = fresh_db().await; + let store = SqliteDeploymentStore::new(db.clone()); + let group_id = create_test_group(&store).await; + let dep = + create_test_deployment(&store, &group_id, "k8s", Platform::Kubernetes).await; + + store + .update_agent_metadata( + &test_subject(), + &dep.id, + Some("1.3.5"), + Some("linux"), + Some("aarch64"), + Some("kubernetes"), + Some("ghcr.io/alien-dev/alien-agent"), + ) + .await + .unwrap(); + + // Agent upgraded to 1.4.0; OS/arch/regime/repo didn't change, so the + // handler only forwards agent_version this time (hypothetically — the + // real agent always sends all fields, but the contract supports + // partial updates). + store + .update_agent_metadata( + &test_subject(), + &dep.id, + Some("1.4.0"), + None, + None, + None, + None, + ) + .await + .unwrap(); + + let fetched = store + .get_deployment(&test_subject(), &dep.id) + .await + .unwrap() + .unwrap(); + assert_eq!(fetched.agent_version.as_deref(), Some("1.4.0"), "version updated"); + assert_eq!(fetched.agent_os.as_deref(), Some("linux"), "os preserved"); + assert_eq!(fetched.agent_arch.as_deref(), Some("aarch64"), "arch preserved"); + assert_eq!(fetched.regime.as_deref(), Some("kubernetes"), "regime preserved"); +}